# CHANGELOG

## 1.0.0 - 2016-11-24

* Add badges to README.md
* Switch README from .rst to .md format 
* Update dependencies
* Add command to handler call to provide support for GuzzleServices

## 0.9.0 - 2016-01-30

* Updated to use Guzzle 6 and PSR-7.
* Event system has been replaced with a middleware system
    * Middleware at the command layer work the same as middleware from the
      HTTP layer, but work with `Command` and `Result` objects instead of
      `Request` and `Response` objects
    * The command middleware is in a separate `HandlerStack` instance than the
      HTTP middleware.
* `Result` objects are the result of executing a `Command` and are used to hold
  the parsed response data.
* Asynchronous code now uses the `guzzlehttp/promises` package instead of 
  `guzzlehttp/ringphp`, which means that asynchronous results are implemented
  as Promises/A+ compliant `Promise` objects, instead of futures.
* The existing `Subscriber`s were removed.
* The `ServiceClientInterface` and `ServiceClient` class now provide the basic
  foundation of a web service client.

## 0.8.0 - 2015-02-02

* Removed `setConfig` from `ServiceClientInterface`.
* Added `initTransaction` to `ServiceClientInterface`.

## 0.7.1 - 2015-01-14

* Fixed and issue where intercepting commands encapsulated by a
  CommandToRequestIterator could lead to deep recursion. These commands are
  now skipped and the iterator moves to the next element using a `goto`
  statement.

## 0.7.0 - 2014-10-12

* Updated to use Guzzle 5, and added support for asynchronous results.
* Renamed `prepare` event to `prepared`.
* Added `init` event.

## 0.6.0 - 2014-08-08

* Added a Debug subscriber that can be used to trace through the lifecycle of
  a command and how it is modified in each event.

## 0.5.0 - 2014-08-01

* Rewrote event system so that all exceptions encountered during the transfer
  of a command are emitted to the "error" event.
* No longer wrapping exceptions thrown during the execution of a command.
* Added the ability to get a CommandTransaction from events and updating
  classes to use a CommandTransaction rather than many constructor arguments.
* Fixed an issue with sending many commands in parallel
* Added `batch()` to ServiceClientInterface for sending commands in batches
* Added subscriber to easily mock commands results