Skip to content

Commit

Permalink
Prepare v1.0.0 release
Browse files Browse the repository at this point in the history
  • Loading branch information
clue committed Nov 7, 2018
1 parent 0b66596 commit 72ec7d5
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 7 deletions.
86 changes: 85 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,89 @@
# Changelog

## 1.0.0 (2018-11-07)

* First stable release, now following SemVer!

I'd like to thank [Bergfreunde GmbH](https://www.bergfreunde.de/), a German-based
online retailer for Outdoor Gear & Clothing, for sponsoring large parts of this development! 🎉
Thanks to sponsors like this, who understand the importance of open source
development, I can justify spending time and focus on open source development
instead of traditional paid work.

> Did you know that I offer custom development services and issuing invoices for
sponsorships of releases and for contributions? Contact me (@clue) for details.

* BC break / Feature: Replace `Factory` with simplified `Client` constructor,
add support for optional SOAP options and non-WSDL mode and
respect WSDL type definitions when decoding and support classmap option.
(#31, #32 and #33 by @clue)

```php
// old
$factory = new Factory($loop);
$client = $factory->createClientFromWsdl($wsdl);

// new
$browser = new Browser($loop);
$client = new Client($browser, $wsdl);
```

The `Client` constructor now accepts an array of options. All given options will
be passed through to the underlying `SoapClient`. However, not all options
make sense in this async implementation and as such may not have the desired
effect. See also [`SoapClient`](http://php.net/manual/en/soapclient.soapclient.php)
documentation for more details.

If working in WSDL mode, the `$options` parameter is optional. If working in
non-WSDL mode, the WSDL parameter must be set to `null` and the options
parameter must contain the `location` and `uri` options, where `location` is
the URL of the SOAP server to send the request to, and `uri` is the target
namespace of the SOAP service:

```php
$client = new Client($browser, null, array(
'location' => 'http://example.com',
'uri' => 'http://ping.example.com',
));
```

* BC break: Mark all classes as final and all internal APIs as `@internal`.
(#26 and #37 by @clue)

* Feature: Add new `Client::withLocation()` method.
(#38 by @floriansimon1, @pascal-hofmann and @clue)

The `withLocation(string $location): self` method can be used to
return a new `Client` with the updated location (URI) for all functions.

Note that this is not to be confused with the WSDL file location.
A WSDL file can contain any number of function definitions.
It's very common that all of these functions use the same location definition.
However, technically each function can potentially use a different location.

```php
$client = $client->withLocation('http://example.com/soap');

assert('http://example.com/soap' === $client->getLocation('echo'));
```

As an alternative to this method, you can also set the `location` option
in the `Client` constructor (such as when in non-WSDL mode).

* Feature: Properly handle SOAP error responses, accept HTTP error responses and do not follow any HTTP redirects.
(#35 by @clue)

* Improve documentation and update project homepage,
documentation for HTTP proxy servers,
support timeouts for SOAP requests (HTTP timeout option) and
add cancellation support.
(#25, #29, #30 #34 and #36 by @clue)

* Improve test suite by supporting PHPUnit 6,
optionally skip functional integration tests requiring internet and
test against PHP 7.2 and PHP 7.1 and latest ReactPHP components.
(#24 by @carusogabriel and #27 and #28 by @clue)

## 0.2.0 (2017-10-02)

* Feature: Added the possibility to use local WSDL files
Expand All @@ -15,7 +99,7 @@
(#13 by @clue)

* Feature: Forward compatibility with clue/buzz-react v2.0 and upcoming EventLoop
(#9 by floriansimon1 and #19 and #21 by @clue)
(#9 by @floriansimon1 and #19 and #21 by @clue)

* Improve test suite by adding PHPUnit to require-dev and
test PHP 5.3 through PHP 7.0 and HHVM and
Expand Down
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# clue/reactphp-soap [![Build Status](https://travis-ci.org/clue/reactphp-soap.svg?branch=master)](https://travis-ci.org/clue/reactphp-soap)

Simple, async [SOAP](http://en.wikipedia.org/wiki/SOAP) web service client library,
Simple, async [SOAP](https://en.wikipedia.org/wiki/SOAP) web service client library,
built on top of [ReactPHP](https://reactphp.org/).

Most notably, SOAP is often used for invoking
[Remote procedure calls](http://en.wikipedia.org/wiki/Remote_procedure_call) (RPCs)
[Remote procedure calls](https://en.wikipedia.org/wiki/Remote_procedure_call) (RPCs)
in distributed systems.
Internally, SOAP messages are encoded as XML and usually sent via HTTP POST requests.
For the most part, SOAP (originally *Simple Object Access protocol*) is a protocol of the past,
Expand All @@ -22,11 +22,11 @@ This project provides a *simple* API for invoking *async* RPCs to remote web ser
* **Event-driven core** -
Internally, everything uses event handlers to react to incoming events, such as an incoming RPC result.
* **Lightweight, SOLID design** -
Provides a thin abstraction that is [*just good enough*](http://en.wikipedia.org/wiki/Principle_of_good_enough)
Provides a thin abstraction that is [*just good enough*](https://en.wikipedia.org/wiki/Principle_of_good_enough)
and does not get in your way.
Built on top of tested components instead of re-inventing the wheel.
* **Good test coverage** -
Comes with an automated tests suite and is regularly tested against actual web services in the wild
Comes with an automated tests suite and is regularly tested against actual web services in the wild.

**Table of contents**

Expand Down Expand Up @@ -398,10 +398,11 @@ connection may still impose a different timeout value. See also the underlying
The recommended way to install this library is [through Composer](https://getcomposer.org).
[New to Composer?](https://getcomposer.org/doc/00-intro.md)
This project follows [SemVer](https://semver.org/).
This will install the latest supported version:
```bash
$ composer require clue/soap-react:^0.2
$ composer require clue/soap-react:^1.0
```
See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades.
Expand Down Expand Up @@ -435,4 +436,7 @@ $ php vendor/bin/phpunit --exclude-group internet

## License

MIT
This project is released under the permissive [MIT license](LICENSE).

> Did you know that I offer custom development services and issuing invoices for
sponsorships of releases and for contributions? Contact me (@clue) for details.

0 comments on commit 72ec7d5

Please sign in to comment.