mirror of
https://github.com/nullthoughts/laravel-data-sync.git
synced 2026-02-03 02:48:11 +00:00
Initial commit
This commit is contained in:
66
vendor/php-http/guzzle6-adapter/CHANGELOG.md
vendored
Normal file
66
vendor/php-http/guzzle6-adapter/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
# Change Log
|
||||
|
||||
|
||||
## 1.1.1 - 2016-05-10
|
||||
|
||||
### Fixed
|
||||
|
||||
- Adapter can again be instantiated without a guzzle client.
|
||||
|
||||
## 1.1.0 - 2016-05-09
|
||||
|
||||
### Added
|
||||
|
||||
- Factory method Client::createWithConfig to create an adapter with custom
|
||||
configuration for the underlying guzzle client.
|
||||
|
||||
|
||||
## 1.0.0 - 2016-01-26
|
||||
|
||||
|
||||
## 0.4.1 - 2016-01-13
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated integration tests
|
||||
|
||||
### Removed
|
||||
|
||||
- Client common dependency
|
||||
|
||||
|
||||
## 0.4.0 - 2016-01-12
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated package files
|
||||
- Updated HTTPlug to RC1
|
||||
|
||||
|
||||
## 0.2.1 - 2015-12-17
|
||||
|
||||
### Added
|
||||
|
||||
- Puli configuration and bindings
|
||||
|
||||
### Changed
|
||||
|
||||
- Guzzle setup conforms to HTTPlug requirement now: Minimal functionality in client
|
||||
|
||||
|
||||
## 0.2.0 - 2015-12-15
|
||||
|
||||
### Added
|
||||
|
||||
- Async client capabalities
|
||||
|
||||
### Changed
|
||||
|
||||
- HTTPlug instead of HTTP Adapter
|
||||
|
||||
|
||||
## 0.1.0 - 2015-06-12
|
||||
|
||||
### Added
|
||||
|
||||
- Initial release
|
||||
20
vendor/php-http/guzzle6-adapter/LICENSE
vendored
Normal file
20
vendor/php-http/guzzle6-adapter/LICENSE
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
Copyright (c) 2014-2015 Eric GELOEN <geloen.eric@gmail.com>
|
||||
Copyright (c) 2015-2016 PHP HTTP Team <team@php-http.org>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
59
vendor/php-http/guzzle6-adapter/README.md
vendored
Normal file
59
vendor/php-http/guzzle6-adapter/README.md
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# Guzzle 6 HTTP Adapter
|
||||
|
||||
[](https://github.com/php-http/guzzle6-adapter/releases)
|
||||
[](LICENSE)
|
||||
[](https://travis-ci.org/php-http/guzzle6-adapter)
|
||||
[](https://scrutinizer-ci.com/g/php-http/guzzle6-adapter)
|
||||
[](https://scrutinizer-ci.com/g/php-http/guzzle6-adapter)
|
||||
[](https://packagist.org/packages/php-http/guzzle6-adapter)
|
||||
|
||||
**Guzzle 6 HTTP Adapter.**
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
Via Composer
|
||||
|
||||
``` bash
|
||||
$ composer require php-http/guzzle6-adapter
|
||||
```
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
Please see the [official documentation](http://docs.php-http.org/en/latest/clients/guzzle6-adapter.html).
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
First launch the http server:
|
||||
|
||||
```bash
|
||||
$ ./vendor/bin/http_test_server > /dev/null 2>&1 &
|
||||
```
|
||||
|
||||
Then the test suite:
|
||||
|
||||
``` bash
|
||||
$ composer test
|
||||
```
|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see our [contributing guide](http://docs.php-http.org/en/latest/development/contributing.html).
|
||||
|
||||
|
||||
## Security
|
||||
|
||||
If you discover any security related issues, please contact us at [security@php-http.org](mailto:security@php-http.org).
|
||||
|
||||
|
||||
## Credits
|
||||
|
||||
Thanks to [David de Boer](https://github.com/ddeboer) for implementing this adapter.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
The MIT License (MIT). Please see [License File](LICENSE) for more information.
|
||||
49
vendor/php-http/guzzle6-adapter/composer.json
vendored
Normal file
49
vendor/php-http/guzzle6-adapter/composer.json
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"name": "php-http/guzzle6-adapter",
|
||||
"description": "Guzzle 6 HTTP Adapter",
|
||||
"license": "MIT",
|
||||
"keywords": ["guzzle", "http"],
|
||||
"homepage": "http://httplug.io",
|
||||
"authors": [
|
||||
{
|
||||
"name": "David de Boer",
|
||||
"email": "david@ddeboer.nl"
|
||||
},
|
||||
{
|
||||
"name": "Márk Sági-Kazár",
|
||||
"email": "mark.sagikazar@gmail.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.5.0",
|
||||
"php-http/httplug": "^1.0",
|
||||
"guzzlehttp/guzzle": "^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-curl": "*",
|
||||
"php-http/adapter-integration-tests": "^0.4"
|
||||
},
|
||||
"provide": {
|
||||
"php-http/client-implementation": "1.0",
|
||||
"php-http/async-client-implementation": "1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Http\\Adapter\\Guzzle6\\": "src/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Http\\Adapter\\Guzzle6\\Tests\\": "tests/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "vendor/bin/phpunit",
|
||||
"test-ci": "vendor/bin/phpunit --coverage-text --coverage-clover=build/coverage.xml"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
16
vendor/php-http/guzzle6-adapter/puli.json
vendored
Normal file
16
vendor/php-http/guzzle6-adapter/puli.json
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"name": "php-http/guzzle6-adapter",
|
||||
"bindings": {
|
||||
"04b5a002-71a8-473d-a8df-75671551b84a": {
|
||||
"_class": "Puli\\Discovery\\Binding\\ClassBinding",
|
||||
"class": "Http\\Adapter\\Guzzle6\\Client",
|
||||
"type": "Http\\Client\\HttpClient"
|
||||
},
|
||||
"9c856476-7f6b-43df-a740-15420a5f839c": {
|
||||
"_class": "Puli\\Discovery\\Binding\\ClassBinding",
|
||||
"class": "Http\\Adapter\\Guzzle6\\Client",
|
||||
"type": "Http\\Client\\HttpAsyncClient"
|
||||
}
|
||||
}
|
||||
}
|
||||
84
vendor/php-http/guzzle6-adapter/src/Client.php
vendored
Normal file
84
vendor/php-http/guzzle6-adapter/src/Client.php
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Adapter\Guzzle6;
|
||||
|
||||
use GuzzleHttp\Client as GuzzleClient;
|
||||
use GuzzleHttp\ClientInterface;
|
||||
use GuzzleHttp\HandlerStack;
|
||||
use GuzzleHttp\Middleware;
|
||||
use Http\Client\HttpAsyncClient;
|
||||
use Http\Client\HttpClient;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* HTTP Adapter for Guzzle 6.
|
||||
*
|
||||
* @author David de Boer <david@ddeboer.nl>
|
||||
*/
|
||||
class Client implements HttpClient, HttpAsyncClient
|
||||
{
|
||||
/**
|
||||
* @var ClientInterface
|
||||
*/
|
||||
private $client;
|
||||
|
||||
/**
|
||||
* @param ClientInterface|null $client
|
||||
*/
|
||||
public function __construct(ClientInterface $client = null)
|
||||
{
|
||||
if (!$client) {
|
||||
$client = static::buildClient();
|
||||
}
|
||||
|
||||
$this->client = $client;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method to create the guzzle 6 adapter with custom configuration for guzzle.
|
||||
*
|
||||
* @param array $config Configuration to create guzzle with.
|
||||
*
|
||||
* @return Client
|
||||
*/
|
||||
public static function createWithConfig(array $config)
|
||||
{
|
||||
return new self(static::buildClient($config));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function sendRequest(RequestInterface $request)
|
||||
{
|
||||
$promise = $this->sendAsyncRequest($request);
|
||||
|
||||
return $promise->wait();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function sendAsyncRequest(RequestInterface $request)
|
||||
{
|
||||
$promise = $this->client->sendAsync($request);
|
||||
|
||||
return new Promise($promise, $request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the guzzle client instance.
|
||||
*
|
||||
* @param array $config Additional configuration
|
||||
*
|
||||
* @return GuzzleClient
|
||||
*/
|
||||
private static function buildClient(array $config = [])
|
||||
{
|
||||
$handlerStack = new HandlerStack(\GuzzleHttp\choose_handler());
|
||||
$handlerStack->push(Middleware::prepareBody(), 'prepare_body');
|
||||
$config = array_merge(['handler' => $handlerStack], $config);
|
||||
|
||||
return new GuzzleClient($config);
|
||||
}
|
||||
}
|
||||
140
vendor/php-http/guzzle6-adapter/src/Promise.php
vendored
Normal file
140
vendor/php-http/guzzle6-adapter/src/Promise.php
vendored
Normal file
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Adapter\Guzzle6;
|
||||
|
||||
use GuzzleHttp\Exception as GuzzleExceptions;
|
||||
use GuzzleHttp\Promise\PromiseInterface;
|
||||
use Http\Client\Exception as HttplugException;
|
||||
use Http\Promise\Promise as HttpPromise;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
/**
|
||||
* Wrapper around Guzzle promises.
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
*/
|
||||
class Promise implements HttpPromise
|
||||
{
|
||||
/**
|
||||
* @var PromiseInterface
|
||||
*/
|
||||
private $promise;
|
||||
|
||||
/**
|
||||
* @var string State of the promise
|
||||
*/
|
||||
private $state;
|
||||
|
||||
/**
|
||||
* @var ResponseInterface
|
||||
*/
|
||||
private $response;
|
||||
|
||||
/**
|
||||
* @var HttplugException
|
||||
*/
|
||||
private $exception;
|
||||
|
||||
/**
|
||||
* @var RequestInterface
|
||||
*/
|
||||
private $request;
|
||||
|
||||
/**
|
||||
* @param PromiseInterface $promise
|
||||
* @param RequestInterface $request
|
||||
*/
|
||||
public function __construct(PromiseInterface $promise, RequestInterface $request)
|
||||
{
|
||||
$this->request = $request;
|
||||
$this->state = self::PENDING;
|
||||
$this->promise = $promise->then(function ($response) {
|
||||
$this->response = $response;
|
||||
$this->state = self::FULFILLED;
|
||||
|
||||
return $response;
|
||||
}, function ($reason) use ($request) {
|
||||
$this->state = self::REJECTED;
|
||||
|
||||
if ($reason instanceof HttplugException) {
|
||||
$this->exception = $reason;
|
||||
} elseif ($reason instanceof GuzzleExceptions\GuzzleException) {
|
||||
$this->exception = $this->handleException($reason, $request);
|
||||
} elseif ($reason instanceof \Exception) {
|
||||
$this->exception = new \RuntimeException('Invalid exception returned from Guzzle6', 0, $reason);
|
||||
} else {
|
||||
$this->exception = new \UnexpectedValueException('Reason returned from Guzzle6 must be an Exception', 0, $reason);
|
||||
}
|
||||
|
||||
throw $this->exception;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null)
|
||||
{
|
||||
return new static($this->promise->then($onFulfilled, $onRejected), $this->request);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getState()
|
||||
{
|
||||
return $this->state;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function wait($unwrap = true)
|
||||
{
|
||||
$this->promise->wait(false);
|
||||
|
||||
if ($unwrap) {
|
||||
if ($this->getState() == self::REJECTED) {
|
||||
throw $this->exception;
|
||||
}
|
||||
|
||||
return $this->response;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a Guzzle exception into an Httplug exception.
|
||||
*
|
||||
* @param GuzzleExceptions\GuzzleException $exception
|
||||
* @param RequestInterface $request
|
||||
*
|
||||
* @return HttplugException
|
||||
*/
|
||||
private function handleException(GuzzleExceptions\GuzzleException $exception, RequestInterface $request)
|
||||
{
|
||||
if ($exception instanceof GuzzleExceptions\SeekException) {
|
||||
return new HttplugException\RequestException($exception->getMessage(), $request, $exception);
|
||||
}
|
||||
|
||||
if ($exception instanceof GuzzleExceptions\ConnectException) {
|
||||
return new HttplugException\NetworkException($exception->getMessage(), $exception->getRequest(), $exception);
|
||||
}
|
||||
|
||||
if ($exception instanceof GuzzleExceptions\RequestException) {
|
||||
// Make sure we have a response for the HttpException
|
||||
if ($exception->hasResponse()) {
|
||||
return new HttplugException\HttpException(
|
||||
$exception->getMessage(),
|
||||
$exception->getRequest(),
|
||||
$exception->getResponse(),
|
||||
$exception
|
||||
);
|
||||
}
|
||||
|
||||
return new HttplugException\RequestException($exception->getMessage(), $exception->getRequest(), $exception);
|
||||
}
|
||||
|
||||
return new HttplugException\TransferException($exception->getMessage(), 0, $exception);
|
||||
}
|
||||
}
|
||||
72
vendor/php-http/httplug/CHANGELOG.md
vendored
Normal file
72
vendor/php-http/httplug/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
# Change Log
|
||||
|
||||
## 1.1.0 - 2016-08-31
|
||||
|
||||
- Added HttpFulfilledPromise and HttpRejectedPromise which respect the HttpAsyncClient interface
|
||||
|
||||
## 1.0.0 - 2016-01-26
|
||||
|
||||
### Removed
|
||||
|
||||
- Stability configuration from composer
|
||||
|
||||
|
||||
## 1.0.0-RC1 - 2016-01-12
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated package files
|
||||
- Updated promise dependency to RC1
|
||||
|
||||
|
||||
## 1.0.0-beta - 2015-12-17
|
||||
|
||||
### Added
|
||||
|
||||
- Puli configuration and binding types
|
||||
|
||||
### Changed
|
||||
|
||||
- Exception concept
|
||||
|
||||
|
||||
## 1.0.0-alpha3 - 2015-12-13
|
||||
|
||||
### Changed
|
||||
|
||||
- Async client does not throw exceptions
|
||||
|
||||
### Removed
|
||||
|
||||
- Promise interface moved to its own repository: [php-http/promise](https://github.com/php-http/promise)
|
||||
|
||||
|
||||
## 1.0.0-alpha2 - 2015-11-16
|
||||
|
||||
### Added
|
||||
|
||||
- Async client and Promise interface
|
||||
|
||||
|
||||
## 1.0.0-alpha - 2015-10-26
|
||||
|
||||
### Added
|
||||
|
||||
- Better domain exceptions.
|
||||
|
||||
### Changed
|
||||
|
||||
- Purpose of the library: general HTTP CLient abstraction.
|
||||
|
||||
### Removed
|
||||
|
||||
- Request options: they should be configured at construction time.
|
||||
- Multiple request sending: should be done asynchronously using Async Client.
|
||||
- `getName` method
|
||||
|
||||
|
||||
## 0.1.0 - 2015-06-03
|
||||
|
||||
### Added
|
||||
|
||||
- Initial release
|
||||
20
vendor/php-http/httplug/LICENSE
vendored
Normal file
20
vendor/php-http/httplug/LICENSE
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
Copyright (c) 2014-2015 Eric GELOEN <geloen.eric@gmail.com>
|
||||
Copyright (c) 2015-2016 PHP HTTP Team <team@php-http.org>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
57
vendor/php-http/httplug/README.md
vendored
Normal file
57
vendor/php-http/httplug/README.md
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
# HTTPlug
|
||||
|
||||
[](https://github.com/php-http/httplug/releases)
|
||||
[](LICENSE)
|
||||
[](https://travis-ci.org/php-http/httplug)
|
||||
[](https://scrutinizer-ci.com/g/php-http/httplug)
|
||||
[](https://scrutinizer-ci.com/g/php-http/httplug)
|
||||
[](https://packagist.org/packages/php-http/httplug)
|
||||
|
||||
[](http://slack.httplug.io)
|
||||
[](mailto:team@httplug.io)
|
||||
|
||||
**HTTPlug, the HTTP client abstraction for PHP.**
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
Via Composer
|
||||
|
||||
``` bash
|
||||
$ composer require php-http/httplug
|
||||
```
|
||||
|
||||
|
||||
## Intro
|
||||
|
||||
This is the contract package for HTTP Client.
|
||||
Use it to create HTTP Clients which are interoperable and compatible with [PSR-7](http://www.php-fig.org/psr/psr-7/).
|
||||
|
||||
This library is the official successor of the [ivory http adapter](https://github.com/egeloen/ivory-http-adapter).
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
Please see the [official documentation](http://docs.php-http.org).
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
``` bash
|
||||
$ composer test
|
||||
```
|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see our [contributing guide](http://docs.php-http.org/en/latest/development/contributing.html).
|
||||
|
||||
|
||||
## Security
|
||||
|
||||
If you discover any security related issues, please contact us at [security@php-http.org](mailto:security@php-http.org).
|
||||
|
||||
|
||||
## License
|
||||
|
||||
The MIT License (MIT). Please see [License File](LICENSE) for more information.
|
||||
40
vendor/php-http/httplug/composer.json
vendored
Normal file
40
vendor/php-http/httplug/composer.json
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "php-http/httplug",
|
||||
"description": "HTTPlug, the HTTP client abstraction for PHP",
|
||||
"license": "MIT",
|
||||
"keywords": ["http", "client"],
|
||||
"homepage": "http://httplug.io",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Eric GELOEN",
|
||||
"email": "geloen.eric@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Márk Sági-Kazár",
|
||||
"email": "mark.sagikazar@gmail.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.4",
|
||||
"psr/http-message": "^1.0",
|
||||
"php-http/promise": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpspec/phpspec": "^2.4",
|
||||
"henrikbjorn/phpspec-code-coverage" : "^1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Http\\Client\\": "src/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "vendor/bin/phpspec run",
|
||||
"test-ci": "vendor/bin/phpspec run -c phpspec.ci.yml"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
12
vendor/php-http/httplug/puli.json
vendored
Normal file
12
vendor/php-http/httplug/puli.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"name": "php-http/httplug",
|
||||
"binding-types": {
|
||||
"Http\\Client\\HttpAsyncClient": {
|
||||
"description": "Async HTTP Client"
|
||||
},
|
||||
"Http\\Client\\HttpClient": {
|
||||
"description": "HTTP Client"
|
||||
}
|
||||
}
|
||||
}
|
||||
12
vendor/php-http/httplug/src/Exception.php
vendored
Normal file
12
vendor/php-http/httplug/src/Exception.php
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client;
|
||||
|
||||
/**
|
||||
* Every HTTP Client related Exception must implement this interface.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
interface Exception
|
||||
{
|
||||
}
|
||||
74
vendor/php-http/httplug/src/Exception/HttpException.php
vendored
Normal file
74
vendor/php-http/httplug/src/Exception/HttpException.php
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client\Exception;
|
||||
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
/**
|
||||
* Thrown when a response was received but the request itself failed.
|
||||
*
|
||||
* In addition to the request, this exception always provides access to the response object.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
class HttpException extends RequestException
|
||||
{
|
||||
/**
|
||||
* @var ResponseInterface
|
||||
*/
|
||||
protected $response;
|
||||
|
||||
/**
|
||||
* @param string $message
|
||||
* @param RequestInterface $request
|
||||
* @param ResponseInterface $response
|
||||
* @param \Exception|null $previous
|
||||
*/
|
||||
public function __construct(
|
||||
$message,
|
||||
RequestInterface $request,
|
||||
ResponseInterface $response,
|
||||
\Exception $previous = null
|
||||
) {
|
||||
parent::__construct($message, $request, $previous);
|
||||
|
||||
$this->response = $response;
|
||||
$this->code = $response->getStatusCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the response.
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function getResponse()
|
||||
{
|
||||
return $this->response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method to create a new exception with a normalized error message.
|
||||
*
|
||||
* @param RequestInterface $request
|
||||
* @param ResponseInterface $response
|
||||
* @param \Exception|null $previous
|
||||
*
|
||||
* @return HttpException
|
||||
*/
|
||||
public static function create(
|
||||
RequestInterface $request,
|
||||
ResponseInterface $response,
|
||||
\Exception $previous = null
|
||||
) {
|
||||
$message = sprintf(
|
||||
'[url] %s [http method] %s [status code] %s [reason phrase] %s',
|
||||
$request->getRequestTarget(),
|
||||
$request->getMethod(),
|
||||
$response->getStatusCode(),
|
||||
$response->getReasonPhrase()
|
||||
);
|
||||
|
||||
return new self($message, $request, $response, $previous);
|
||||
}
|
||||
}
|
||||
14
vendor/php-http/httplug/src/Exception/NetworkException.php
vendored
Normal file
14
vendor/php-http/httplug/src/Exception/NetworkException.php
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client\Exception;
|
||||
|
||||
/**
|
||||
* Thrown when the request cannot be completed because of network issues.
|
||||
*
|
||||
* There is no response object as this exception is thrown when no response has been received.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
class NetworkException extends RequestException
|
||||
{
|
||||
}
|
||||
43
vendor/php-http/httplug/src/Exception/RequestException.php
vendored
Normal file
43
vendor/php-http/httplug/src/Exception/RequestException.php
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client\Exception;
|
||||
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Exception for when a request failed, providing access to the failed request.
|
||||
*
|
||||
* This could be due to an invalid request, or one of the extending exceptions
|
||||
* for network errors or HTTP error responses.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
class RequestException extends TransferException
|
||||
{
|
||||
/**
|
||||
* @var RequestInterface
|
||||
*/
|
||||
private $request;
|
||||
|
||||
/**
|
||||
* @param string $message
|
||||
* @param RequestInterface $request
|
||||
* @param \Exception|null $previous
|
||||
*/
|
||||
public function __construct($message, RequestInterface $request, \Exception $previous = null)
|
||||
{
|
||||
$this->request = $request;
|
||||
|
||||
parent::__construct($message, 0, $previous);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the request.
|
||||
*
|
||||
* @return RequestInterface
|
||||
*/
|
||||
public function getRequest()
|
||||
{
|
||||
return $this->request;
|
||||
}
|
||||
}
|
||||
14
vendor/php-http/httplug/src/Exception/TransferException.php
vendored
Normal file
14
vendor/php-http/httplug/src/Exception/TransferException.php
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client\Exception;
|
||||
|
||||
use Http\Client\Exception;
|
||||
|
||||
/**
|
||||
* Base exception for transfer related exceptions.
|
||||
*
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
class TransferException extends \RuntimeException implements Exception
|
||||
{
|
||||
}
|
||||
27
vendor/php-http/httplug/src/HttpAsyncClient.php
vendored
Normal file
27
vendor/php-http/httplug/src/HttpAsyncClient.php
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client;
|
||||
|
||||
use Http\Promise\Promise;
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
|
||||
/**
|
||||
* Sends a PSR-7 Request in an asynchronous way by returning a Promise.
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
*/
|
||||
interface HttpAsyncClient
|
||||
{
|
||||
/**
|
||||
* Sends a PSR-7 request in an asynchronous way.
|
||||
*
|
||||
* Exceptions related to processing the request are available from the returned Promise.
|
||||
*
|
||||
* @param RequestInterface $request
|
||||
*
|
||||
* @return Promise Resolves a PSR-7 Response or fails with an Http\Client\Exception.
|
||||
*
|
||||
* @throws \Exception If processing the request is impossible (eg. bad configuration).
|
||||
*/
|
||||
public function sendAsyncRequest(RequestInterface $request);
|
||||
}
|
||||
28
vendor/php-http/httplug/src/HttpClient.php
vendored
Normal file
28
vendor/php-http/httplug/src/HttpClient.php
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client;
|
||||
|
||||
use Psr\Http\Message\RequestInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
/**
|
||||
* Sends a PSR-7 Request and returns a PSR-7 response.
|
||||
*
|
||||
* @author GeLo <geloen.eric@gmail.com>
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
* @author David Buchmann <mail@davidbu.ch>
|
||||
*/
|
||||
interface HttpClient
|
||||
{
|
||||
/**
|
||||
* Sends a PSR-7 request.
|
||||
*
|
||||
* @param RequestInterface $request
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*
|
||||
* @throws \Http\Client\Exception If an error happens during processing the request.
|
||||
* @throws \Exception If processing the request is impossible (eg. bad configuration).
|
||||
*/
|
||||
public function sendRequest(RequestInterface $request);
|
||||
}
|
||||
57
vendor/php-http/httplug/src/Promise/HttpFulfilledPromise.php
vendored
Normal file
57
vendor/php-http/httplug/src/Promise/HttpFulfilledPromise.php
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client\Promise;
|
||||
|
||||
use Http\Client\Exception;
|
||||
use Http\Promise\Promise;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
final class HttpFulfilledPromise implements Promise
|
||||
{
|
||||
/**
|
||||
* @var ResponseInterface
|
||||
*/
|
||||
private $response;
|
||||
|
||||
/**
|
||||
* @param ResponseInterface $response
|
||||
*/
|
||||
public function __construct(ResponseInterface $response)
|
||||
{
|
||||
$this->response = $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null)
|
||||
{
|
||||
if (null === $onFulfilled) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
try {
|
||||
return new self($onFulfilled($this->response));
|
||||
} catch (Exception $e) {
|
||||
return new HttpRejectedPromise($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getState()
|
||||
{
|
||||
return Promise::FULFILLED;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function wait($unwrap = true)
|
||||
{
|
||||
if ($unwrap) {
|
||||
return $this->response;
|
||||
}
|
||||
}
|
||||
}
|
||||
56
vendor/php-http/httplug/src/Promise/HttpRejectedPromise.php
vendored
Normal file
56
vendor/php-http/httplug/src/Promise/HttpRejectedPromise.php
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Client\Promise;
|
||||
|
||||
use Http\Client\Exception;
|
||||
use Http\Promise\Promise;
|
||||
|
||||
final class HttpRejectedPromise implements Promise
|
||||
{
|
||||
/**
|
||||
* @var Exception
|
||||
*/
|
||||
private $exception;
|
||||
|
||||
/**
|
||||
* @param Exception $exception
|
||||
*/
|
||||
public function __construct(Exception $exception)
|
||||
{
|
||||
$this->exception = $exception;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null)
|
||||
{
|
||||
if (null === $onRejected) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
try {
|
||||
return new HttpFulfilledPromise($onRejected($this->exception));
|
||||
} catch (Exception $e) {
|
||||
return new self($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getState()
|
||||
{
|
||||
return Promise::REJECTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function wait($unwrap = true)
|
||||
{
|
||||
if ($unwrap) {
|
||||
throw $this->exception;
|
||||
}
|
||||
}
|
||||
}
|
||||
35
vendor/php-http/promise/CHANGELOG.md
vendored
Normal file
35
vendor/php-http/promise/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# Change Log
|
||||
|
||||
|
||||
## 1.0.0 - 2016-01-26
|
||||
|
||||
### Removed
|
||||
|
||||
- PSR-7 dependency
|
||||
|
||||
|
||||
## 1.0.0-RC1 - 2016-01-12
|
||||
|
||||
### Added
|
||||
|
||||
- Tests for full coverage
|
||||
|
||||
## Changed
|
||||
|
||||
- Updated package files
|
||||
- Clarified wait method behavior
|
||||
- Contributing guide moved to the documentation
|
||||
|
||||
|
||||
## 0.1.1 - 2015-12-24
|
||||
|
||||
## Added
|
||||
|
||||
- Fulfilled and Rejected promise implementations
|
||||
|
||||
|
||||
## 0.1.0 - 2015-12-13
|
||||
|
||||
## Added
|
||||
|
||||
- Promise interface
|
||||
19
vendor/php-http/promise/LICENSE
vendored
Normal file
19
vendor/php-http/promise/LICENSE
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (c) 2015-2016 PHP HTTP Team <team@php-http.org>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
49
vendor/php-http/promise/README.md
vendored
Normal file
49
vendor/php-http/promise/README.md
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
# Promise
|
||||
|
||||
[](https://github.com/php-http/promise/releases)
|
||||
[](LICENSE)
|
||||
[](https://travis-ci.org/php-http/promise)
|
||||
[](https://scrutinizer-ci.com/g/php-http/promise)
|
||||
[](https://scrutinizer-ci.com/g/php-http/promise)
|
||||
[](https://packagist.org/packages/php-http/promise)
|
||||
|
||||
**Promise used for asynchronous HTTP requests.**
|
||||
|
||||
**Note:** This will eventually be removed/deprecated and replaced with the upcoming Promise PSR.
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
Via Composer
|
||||
|
||||
``` bash
|
||||
$ composer require php-http/promise
|
||||
```
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
Please see the [official documentation](http://docs.php-http.org).
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
``` bash
|
||||
$ composer test
|
||||
```
|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see our [contributing guide](http://docs.php-http.org/en/latest/development/contributing.html).
|
||||
|
||||
|
||||
## Security
|
||||
|
||||
If you discover any security related issues, please contact us at [security@httplug.io](mailto:security@httplug.io)
|
||||
or [security@php-http.org](mailto:security@php-http.org).
|
||||
|
||||
|
||||
## License
|
||||
|
||||
The MIT License (MIT). Please see [License File](LICENSE) for more information.
|
||||
35
vendor/php-http/promise/composer.json
vendored
Normal file
35
vendor/php-http/promise/composer.json
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "php-http/promise",
|
||||
"description": "Promise used for asynchronous HTTP requests",
|
||||
"license": "MIT",
|
||||
"keywords": ["promise"],
|
||||
"homepage": "http://httplug.io",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Joel Wurtz",
|
||||
"email": "joel.wurtz@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Márk Sági-Kazár",
|
||||
"email": "mark.sagikazar@gmail.com"
|
||||
}
|
||||
],
|
||||
"require-dev": {
|
||||
"phpspec/phpspec": "^2.4",
|
||||
"henrikbjorn/phpspec-code-coverage" : "^1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Http\\Promise\\": "src/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "vendor/bin/phpspec run",
|
||||
"test-ci": "vendor/bin/phpspec run -c phpspec.yml.ci"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
58
vendor/php-http/promise/src/FulfilledPromise.php
vendored
Normal file
58
vendor/php-http/promise/src/FulfilledPromise.php
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Promise;
|
||||
|
||||
/**
|
||||
* A promise already fulfilled.
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
*/
|
||||
final class FulfilledPromise implements Promise
|
||||
{
|
||||
/**
|
||||
* @var mixed
|
||||
*/
|
||||
private $result;
|
||||
|
||||
/**
|
||||
* @param $result
|
||||
*/
|
||||
public function __construct($result)
|
||||
{
|
||||
$this->result = $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null)
|
||||
{
|
||||
if (null === $onFulfilled) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
try {
|
||||
return new self($onFulfilled($this->result));
|
||||
} catch (\Exception $e) {
|
||||
return new RejectedPromise($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getState()
|
||||
{
|
||||
return Promise::FULFILLED;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function wait($unwrap = true)
|
||||
{
|
||||
if ($unwrap) {
|
||||
return $this->result;
|
||||
}
|
||||
}
|
||||
}
|
||||
69
vendor/php-http/promise/src/Promise.php
vendored
Normal file
69
vendor/php-http/promise/src/Promise.php
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Promise;
|
||||
|
||||
/**
|
||||
* Promise represents a value that may not be available yet, but will be resolved at some point in future.
|
||||
* It acts like a proxy to the actual value.
|
||||
*
|
||||
* This interface is an extension of the promises/a+ specification.
|
||||
*
|
||||
* @see https://promisesaplus.com/
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
interface Promise
|
||||
{
|
||||
/**
|
||||
* Promise has not been fulfilled or rejected.
|
||||
*/
|
||||
const PENDING = 'pending';
|
||||
|
||||
/**
|
||||
* Promise has been fulfilled.
|
||||
*/
|
||||
const FULFILLED = 'fulfilled';
|
||||
|
||||
/**
|
||||
* Promise has been rejected.
|
||||
*/
|
||||
const REJECTED = 'rejected';
|
||||
|
||||
/**
|
||||
* Adds behavior for when the promise is resolved or rejected (response will be available, or error happens).
|
||||
*
|
||||
* If you do not care about one of the cases, you can set the corresponding callable to null
|
||||
* The callback will be called when the value arrived and never more than once.
|
||||
*
|
||||
* @param callable $onFulfilled Called when a response will be available.
|
||||
* @param callable $onRejected Called when an exception occurs.
|
||||
*
|
||||
* @return Promise A new resolved promise with value of the executed callback (onFulfilled / onRejected).
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null);
|
||||
|
||||
/**
|
||||
* Returns the state of the promise, one of PENDING, FULFILLED or REJECTED.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getState();
|
||||
|
||||
/**
|
||||
* Wait for the promise to be fulfilled or rejected.
|
||||
*
|
||||
* When this method returns, the request has been resolved and if callables have been
|
||||
* specified, the appropriate one has terminated.
|
||||
*
|
||||
* When $unwrap is true (the default), the response is returned, or the exception thrown
|
||||
* on failure. Otherwise, nothing is returned or thrown.
|
||||
*
|
||||
* @param bool $unwrap Whether to return resolved value / throw reason or not
|
||||
*
|
||||
* @return mixed Resolved value, null if $unwrap is set to false
|
||||
*
|
||||
* @throws \Exception The rejection reason if $unwrap is set to true and the request failed.
|
||||
*/
|
||||
public function wait($unwrap = true);
|
||||
}
|
||||
58
vendor/php-http/promise/src/RejectedPromise.php
vendored
Normal file
58
vendor/php-http/promise/src/RejectedPromise.php
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Promise;
|
||||
|
||||
/**
|
||||
* A rejected promise.
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
*/
|
||||
final class RejectedPromise implements Promise
|
||||
{
|
||||
/**
|
||||
* @var \Exception
|
||||
*/
|
||||
private $exception;
|
||||
|
||||
/**
|
||||
* @param \Exception $exception
|
||||
*/
|
||||
public function __construct(\Exception $exception)
|
||||
{
|
||||
$this->exception = $exception;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null)
|
||||
{
|
||||
if (null === $onRejected) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
try {
|
||||
return new FulfilledPromise($onRejected($this->exception));
|
||||
} catch (\Exception $e) {
|
||||
return new self($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getState()
|
||||
{
|
||||
return Promise::REJECTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function wait($unwrap = true)
|
||||
{
|
||||
if ($unwrap) {
|
||||
throw $this->exception;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user