├── .dunitconfig ├── .dunitconfig-nightly ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── composer.json ├── composer.lock ├── phpcs.xml └── src └── HttpClientAdapter.php /.dunitconfig: -------------------------------------------------------------------------------- 1 | // the list of docker images to run against 2 | images=" 3 | vectorface/php5.5 4 | vectorface/php5.6 5 | vectorface/hhvm"; 6 | 7 | 8 | // a flag indicating whether to run the syntax check 9 | checkSyntax="true"; 10 | // the syntax command to execute 11 | syntaxCommand="find /opt/source -type f -name \"*.php\" ! -path \"*/vendor/*\" -print0 | xargs -0 -n 1 -P 8 php -l | grep -v 'No syntax errors'" 12 | 13 | // a flag indicating whether to run the phpunit test suite 14 | runTests="true"; 15 | // the phpunit command to execute 16 | unitTestsCommand="/opt/source/vendor/bin/phpunit" 17 | -------------------------------------------------------------------------------- /.dunitconfig-nightly: -------------------------------------------------------------------------------- 1 | // the list of docker images to run against 2 | images=" 3 | vectorface/php-nightly 4 | vectorface/hhvm"; 5 | 6 | 7 | // a flag indicating whether to run the syntax check 8 | checkSyntax="true"; 9 | // the syntax command to execute 10 | syntaxCommand="find /opt/source -type f -name \"*.php\" ! -path \"*/vendor/*\" -print0 | xargs -0 -n 1 -P 8 php -l | grep -v 'No syntax errors'" 11 | 12 | // a flag indicating whether to run the phpunit test suite 13 | runTests="true"; 14 | // the phpunit command to execute 15 | unitTestsCommand="/opt/source/vendor/bin/phpunit" 16 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Pull requests are highly appreciated. Here's a quick guide. 4 | 5 | Fork, then clone the repo: 6 | 7 | git clone git@github.com:your-username/react-guzzle-psr7.git 8 | 9 | Set up your machine: 10 | 11 | composer install 12 | 13 | Make sure the tests pass: 14 | 15 | make unit 16 | 17 | Make sure the tests pass on all supported PHP versions (requires docker): 18 | 19 | make dunit 20 | 21 | Make your change. Add tests for your change. Make the tests pass: 22 | 23 | make dunit && make unit 24 | 25 | Before committing and submitting your pull request make sure it passes PSR2 coding style, unit tests pass and pass on all supported PHP versions: 26 | 27 | make contrib 28 | 29 | Push to your fork and [submit a pull request][pr]. 30 | 31 | [pr]: https://help.github.com/articles/creating-a-pull-request/ 32 | 33 | At this point you're waiting on me. I like to at least comment on pull requests 34 | within a day or two. I may suggest some changes or improvements or alternatives. 35 | 36 | Some things that will increase the chance that your pull request is accepted: 37 | 38 | * Write tests. 39 | * Follow PSR2 (travis will also check for this). 40 | * Write a [good commit message][commit]. 41 | 42 | [commit]: http://chris.beams.io/posts/git-commit/ 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Cees-Jan Kiewiet 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: cs dunit dunit-nightly unit 2 | travis: cs unit-travis 3 | contrib: cs dunit unit 4 | 5 | init: 6 | if [ ! -d vendor ]; then composer install; fi; 7 | 8 | cs: init 9 | ./vendor/bin/phpcs --standard=PSR2 src/ 10 | 11 | unit: init 12 | ./vendor/bin/phpunit --coverage-text --coverage-html covHtml 13 | 14 | unit-travis: init 15 | ./vendor/bin/phpunit --coverage-text --coverage-clover ./build/logs/clover.xml 16 | 17 | dunit: init 18 | ./vendor/bin/dunit 19 | 20 | dunit-nightly: init 21 | ./vendor/bin/dunit -c .dunitconfig-nightly 22 | 23 | travis-coverage: init 24 | if [ -f ./build/logs/clover.xml ]; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover ./build/logs/clover.xml; fi 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | react-guzzle-psr7 2 | =============== 3 | 4 | [![Build Status](https://travis-ci.org/WyriHaximus/react-guzzle-psr7.png)](https://travis-ci.org/WyriHaximus/react-guzzle-psr7) 5 | [![Latest Stable Version](https://poser.pugx.org/WyriHaximus/react-guzzle-psr7/v/stable.png)](https://packagist.org/packages/WyriHaximus/react-guzzle-psr7) 6 | [![Total Downloads](https://poser.pugx.org/WyriHaximus/react-guzzle-psr7/downloads.png)](https://packagist.org/packages/WyriHaximus/react-guzzle-psr7) 7 | [![Coverage Status](https://coveralls.io/repos/WyriHaximus/react-guzzle-psr7/badge.png)](https://coveralls.io/r/WyriHaximus/react-guzzle-psr7) 8 | [![License](https://poser.pugx.org/wyrihaximus/react-guzzle-psr7/license.png)](https://packagist.org/packages/wyrihaximus/react-guzzle-psr7) 9 | 10 | ReactPHP HttpClient Adapter for Guzzle6, for Guzzle5 check [ReactGuzzleRing](https://github.com/WyriHaximus/ReactGuzzleRing) 11 | 12 | ### Installation ### 13 | 14 | To install via [Composer](http://getcomposer.org/), use the command below, it will automatically detect the latest version and bind it with `~`. 15 | 16 | ``` 17 | composer require wyrihaximus/react-guzzle-psr7 18 | ``` 19 | 20 | ### Examples ### 21 | 22 | #### Asynchronous #### 23 | 24 | ```php 25 | \GuzzleHttp\HandlerStack::create($handler), 34 | ]); 35 | 36 | $client->getAsync('http://github.com/')->then(function ($response) { 37 | var_export($response); 38 | var_export((string) $response->getBody()); 39 | }); 40 | 41 | $client->getAsync('http://php.net/')->then(function ($response) { 42 | var_export($response); 43 | var_export((string) $response->getBody()); 44 | }); 45 | 46 | $loop->run(); 47 | ``` 48 | 49 | #### Synchronous #### 50 | 51 | ```php 52 | \GuzzleHttp\HandlerStack::create($handler), 61 | ]); 62 | 63 | var_export((string) $client->get('http://github.com/')->getBody()); 64 | ``` 65 | 66 | See the [examples](https://github.com/WyriHaximus/react-guzzle-psr7/tree/master/examples) directory for more ways to use this handler. 67 | 68 | ## Contributing ## 69 | 70 | Please see [CONTRIBUTING](CONTRIBUTING.md) for details. 71 | 72 | ## License ## 73 | 74 | Copyright 2015 [Cees-Jan Kiewiet](http://wyrihaximus.net/) 75 | 76 | Permission is hereby granted, free of charge, to any person 77 | obtaining a copy of this software and associated documentation 78 | files (the "Software"), to deal in the Software without 79 | restriction, including without limitation the rights to use, 80 | copy, modify, merge, publish, distribute, sublicense, and/or sell 81 | copies of the Software, and to permit persons to whom the 82 | Software is furnished to do so, subject to the following 83 | conditions: 84 | 85 | The above copyright notice and this permission notice shall be 86 | included in all copies or substantial portions of the Software. 87 | 88 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 89 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 90 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 91 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 92 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 93 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 94 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 95 | OTHER DEALINGS IN THE SOFTWARE. 96 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wyrihaximus/react-guzzle-psr7", 3 | "description": "Asyncronous Guzzle (PSR7) adapter powered by react/http-client", 4 | "license": "MIT", 5 | "authors": [ 6 | { 7 | "name": "Cees-Jan Kiewiet", 8 | "email": "ceesjank@gmail.com", 9 | "homepage": "http://wyrihaximus.net/" 10 | } 11 | ], 12 | "require": { 13 | "php": "^5.5|^7.0", 14 | "clue/block-react": "^1.3", 15 | "guzzlehttp/guzzle": "^6.0", 16 | "wyrihaximus/react-guzzle-http-client": "^4.0" 17 | }, 18 | "require-dev": { 19 | "phpunit/phpunit": "^4.0|^5.0", 20 | "vectorface/dunit": "^2.0", 21 | "squizlabs/php_codesniffer": "~3.4.0 || ~3.5.0", 22 | "phake/phake": "~1.0.6" 23 | }, 24 | "autoload": { 25 | "psr-4": { 26 | "WyriHaximus\\React\\GuzzlePsr7\\": "src/" 27 | } 28 | }, 29 | "autoload-dev": { 30 | "psr-4": { 31 | "WyriHaximus\\React\\Tests\\GuzzlePsr7\\": "tests/" 32 | } 33 | }, 34 | "config": { 35 | "sort-packages": true, 36 | "platform": { 37 | "php": "5.5" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "d5cc4bac27dc9a2e5ce23818b9dee51d", 8 | "packages": [ 9 | { 10 | "name": "clue/block-react", 11 | "version": "v1.3.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/clue/reactphp-block.git", 15 | "reference": "2f516b28259c203d67c4c963772dd7e9db652737" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/clue/reactphp-block/zipball/2f516b28259c203d67c4c963772dd7e9db652737", 20 | "reference": "2f516b28259c203d67c4c963772dd7e9db652737", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.3", 25 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", 26 | "react/promise": "^2.7 || ^1.2.1", 27 | "react/promise-timer": "^1.5" 28 | }, 29 | "require-dev": { 30 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 31 | }, 32 | "type": "library", 33 | "autoload": { 34 | "files": [ 35 | "src/functions_include.php" 36 | ] 37 | }, 38 | "notification-url": "https://packagist.org/downloads/", 39 | "license": [ 40 | "MIT" 41 | ], 42 | "authors": [ 43 | { 44 | "name": "Christian Lück", 45 | "email": "christian@lueck.tv" 46 | } 47 | ], 48 | "description": "Lightweight library that eases integrating async components built for ReactPHP in a traditional, blocking environment.", 49 | "homepage": "https://github.com/clue/reactphp-block", 50 | "keywords": [ 51 | "async", 52 | "await", 53 | "blocking", 54 | "event loop", 55 | "promise", 56 | "reactphp", 57 | "sleep", 58 | "synchronous" 59 | ], 60 | "time": "2019-04-09T11:45:04+00:00" 61 | }, 62 | { 63 | "name": "clue/buzz-react", 64 | "version": "v2.5.0", 65 | "source": { 66 | "type": "git", 67 | "url": "https://github.com/clue/reactphp-buzz.git", 68 | "reference": "758a731c626eac2b88bad5359431650ef7384a55" 69 | }, 70 | "dist": { 71 | "type": "zip", 72 | "url": "https://api.github.com/repos/clue/reactphp-buzz/zipball/758a731c626eac2b88bad5359431650ef7384a55", 73 | "reference": "758a731c626eac2b88bad5359431650ef7384a55", 74 | "shasum": "" 75 | }, 76 | "require": { 77 | "php": ">=5.3", 78 | "psr/http-message": "^1.0", 79 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", 80 | "react/http-client": "^0.5.8", 81 | "react/promise": "^2.2.1 || ^1.2.1", 82 | "react/promise-stream": "^1.0 || ^0.1.1", 83 | "react/promise-timer": "^1.2", 84 | "react/socket": "^1.1", 85 | "react/stream": "^1.0 || ^0.7", 86 | "ringcentral/psr7": "^1.2" 87 | }, 88 | "require-dev": { 89 | "clue/block-react": "^1.0", 90 | "clue/http-proxy-react": "^1.3", 91 | "clue/socks-react": "^0.8", 92 | "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35", 93 | "react/http": "^0.8" 94 | }, 95 | "type": "library", 96 | "autoload": { 97 | "psr-4": { 98 | "Clue\\React\\Buzz\\": "src/" 99 | } 100 | }, 101 | "notification-url": "https://packagist.org/downloads/", 102 | "license": [ 103 | "MIT" 104 | ], 105 | "authors": [ 106 | { 107 | "name": "Christian Lück", 108 | "email": "christian@lueck.tv" 109 | } 110 | ], 111 | "description": "Simple, async PSR-7 HTTP client for concurrently processing any number of HTTP requests, built on top of ReactPHP", 112 | "homepage": "https://github.com/clue/reactphp-buzz", 113 | "keywords": [ 114 | "async", 115 | "http", 116 | "http client", 117 | "psr-7", 118 | "reactphp" 119 | ], 120 | "time": "2018-10-24T07:47:33+00:00" 121 | }, 122 | { 123 | "name": "clue/http-proxy-react", 124 | "version": "v1.4.0", 125 | "source": { 126 | "type": "git", 127 | "url": "https://github.com/clue/reactphp-http-proxy.git", 128 | "reference": "5a6790443366dada996993c0a458f13e616fe10e" 129 | }, 130 | "dist": { 131 | "type": "zip", 132 | "url": "https://api.github.com/repos/clue/reactphp-http-proxy/zipball/5a6790443366dada996993c0a458f13e616fe10e", 133 | "reference": "5a6790443366dada996993c0a458f13e616fe10e", 134 | "shasum": "" 135 | }, 136 | "require": { 137 | "php": ">=5.3", 138 | "react/promise": " ^2.1 || ^1.2.1", 139 | "react/socket": "^1.1", 140 | "ringcentral/psr7": "^1.2" 141 | }, 142 | "require-dev": { 143 | "clue/block-react": "^1.1", 144 | "phpunit/phpunit": "^5.0 || ^4.8", 145 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3" 146 | }, 147 | "type": "library", 148 | "autoload": { 149 | "psr-4": { 150 | "Clue\\React\\HttpProxy\\": "src/" 151 | } 152 | }, 153 | "notification-url": "https://packagist.org/downloads/", 154 | "license": [ 155 | "MIT" 156 | ], 157 | "authors": [ 158 | { 159 | "name": "Christian Lück", 160 | "email": "christian@lueck.tv" 161 | } 162 | ], 163 | "description": "Async HTTP proxy connector, use any TCP/IP-based protocol through an HTTP CONNECT proxy server, built on top of ReactPHP", 164 | "homepage": "https://github.com/clue/reactphp-http-proxy", 165 | "keywords": [ 166 | "async", 167 | "connect", 168 | "http", 169 | "proxy", 170 | "reactphp" 171 | ], 172 | "time": "2018-10-30T14:41:14+00:00" 173 | }, 174 | { 175 | "name": "clue/socks-react", 176 | "version": "v0.8.7", 177 | "source": { 178 | "type": "git", 179 | "url": "https://github.com/clue/php-socks-react.git", 180 | "reference": "0fcd6f2f506918ff003f1b995c6e78443f26e8ea" 181 | }, 182 | "dist": { 183 | "type": "zip", 184 | "url": "https://api.github.com/repos/clue/php-socks-react/zipball/0fcd6f2f506918ff003f1b995c6e78443f26e8ea", 185 | "reference": "0fcd6f2f506918ff003f1b995c6e78443f26e8ea", 186 | "shasum": "" 187 | }, 188 | "require": { 189 | "evenement/evenement": "~3.0|~1.0|~2.0", 190 | "php": ">=5.3", 191 | "react/promise": "^2.1 || ^1.2", 192 | "react/socket": "^1.0 || ^0.8.6" 193 | }, 194 | "require-dev": { 195 | "clue/block-react": "^1.1", 196 | "clue/connection-manager-extra": "^1.0 || ^0.7", 197 | "phpunit/phpunit": "^6.0 || ^5.7 || ^4.8.35", 198 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3" 199 | }, 200 | "type": "library", 201 | "autoload": { 202 | "psr-4": { 203 | "Clue\\React\\Socks\\": "src/" 204 | } 205 | }, 206 | "notification-url": "https://packagist.org/downloads/", 207 | "license": [ 208 | "MIT" 209 | ], 210 | "authors": [ 211 | { 212 | "name": "Christian Lück", 213 | "email": "christian@lueck.tv" 214 | } 215 | ], 216 | "description": "Async SOCKS4, SOCKS4a and SOCKS5 proxy client and server implementation, built on top of ReactPHP", 217 | "homepage": "https://github.com/clue/php-socks-react", 218 | "keywords": [ 219 | "async", 220 | "proxy", 221 | "reactphp", 222 | "socks client", 223 | "socks protocol", 224 | "socks server", 225 | "tcp tunnel" 226 | ], 227 | "time": "2017-12-17T14:47:58+00:00" 228 | }, 229 | { 230 | "name": "evenement/evenement", 231 | "version": "v2.1.0", 232 | "source": { 233 | "type": "git", 234 | "url": "https://github.com/igorw/evenement.git", 235 | "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a" 236 | }, 237 | "dist": { 238 | "type": "zip", 239 | "url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a", 240 | "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a", 241 | "shasum": "" 242 | }, 243 | "require": { 244 | "php": ">=5.4.0" 245 | }, 246 | "require-dev": { 247 | "phpunit/phpunit": "^6.0||^5.7||^4.8.35" 248 | }, 249 | "type": "library", 250 | "extra": { 251 | "branch-alias": { 252 | "dev-master": "2.0-dev" 253 | } 254 | }, 255 | "autoload": { 256 | "psr-0": { 257 | "Evenement": "src" 258 | } 259 | }, 260 | "notification-url": "https://packagist.org/downloads/", 261 | "license": [ 262 | "MIT" 263 | ], 264 | "authors": [ 265 | { 266 | "name": "Igor Wiedler", 267 | "email": "igor@wiedler.ch" 268 | } 269 | ], 270 | "description": "Événement is a very simple event dispatching library for PHP", 271 | "keywords": [ 272 | "event-dispatcher", 273 | "event-emitter" 274 | ], 275 | "time": "2017-07-17T17:39:19+00:00" 276 | }, 277 | { 278 | "name": "guzzlehttp/guzzle", 279 | "version": "6.5.1", 280 | "source": { 281 | "type": "git", 282 | "url": "https://github.com/guzzle/guzzle.git", 283 | "reference": "0274c05370a7bc9bb3a33838858253418bd7d14b" 284 | }, 285 | "dist": { 286 | "type": "zip", 287 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0274c05370a7bc9bb3a33838858253418bd7d14b", 288 | "reference": "0274c05370a7bc9bb3a33838858253418bd7d14b", 289 | "shasum": "" 290 | }, 291 | "require": { 292 | "ext-json": "*", 293 | "guzzlehttp/promises": "^1.0", 294 | "guzzlehttp/psr7": "^1.6.1", 295 | "php": ">=5.5" 296 | }, 297 | "require-dev": { 298 | "ext-curl": "*", 299 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", 300 | "psr/log": "^1.1" 301 | }, 302 | "suggest": { 303 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 304 | "psr/log": "Required for using the Log middleware" 305 | }, 306 | "type": "library", 307 | "extra": { 308 | "branch-alias": { 309 | "dev-master": "6.5-dev" 310 | } 311 | }, 312 | "autoload": { 313 | "psr-4": { 314 | "GuzzleHttp\\": "src/" 315 | }, 316 | "files": [ 317 | "src/functions_include.php" 318 | ] 319 | }, 320 | "notification-url": "https://packagist.org/downloads/", 321 | "license": [ 322 | "MIT" 323 | ], 324 | "authors": [ 325 | { 326 | "name": "Michael Dowling", 327 | "email": "mtdowling@gmail.com", 328 | "homepage": "https://github.com/mtdowling" 329 | } 330 | ], 331 | "description": "Guzzle is a PHP HTTP client library", 332 | "homepage": "http://guzzlephp.org/", 333 | "keywords": [ 334 | "client", 335 | "curl", 336 | "framework", 337 | "http", 338 | "http client", 339 | "rest", 340 | "web service" 341 | ], 342 | "time": "2019-12-21T08:51:15+00:00" 343 | }, 344 | { 345 | "name": "guzzlehttp/promises", 346 | "version": "v1.3.1", 347 | "source": { 348 | "type": "git", 349 | "url": "https://github.com/guzzle/promises.git", 350 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 351 | }, 352 | "dist": { 353 | "type": "zip", 354 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 355 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 356 | "shasum": "" 357 | }, 358 | "require": { 359 | "php": ">=5.5.0" 360 | }, 361 | "require-dev": { 362 | "phpunit/phpunit": "^4.0" 363 | }, 364 | "type": "library", 365 | "extra": { 366 | "branch-alias": { 367 | "dev-master": "1.4-dev" 368 | } 369 | }, 370 | "autoload": { 371 | "psr-4": { 372 | "GuzzleHttp\\Promise\\": "src/" 373 | }, 374 | "files": [ 375 | "src/functions_include.php" 376 | ] 377 | }, 378 | "notification-url": "https://packagist.org/downloads/", 379 | "license": [ 380 | "MIT" 381 | ], 382 | "authors": [ 383 | { 384 | "name": "Michael Dowling", 385 | "email": "mtdowling@gmail.com", 386 | "homepage": "https://github.com/mtdowling" 387 | } 388 | ], 389 | "description": "Guzzle promises library", 390 | "keywords": [ 391 | "promise" 392 | ], 393 | "time": "2016-12-20T10:07:11+00:00" 394 | }, 395 | { 396 | "name": "guzzlehttp/psr7", 397 | "version": "1.6.1", 398 | "source": { 399 | "type": "git", 400 | "url": "https://github.com/guzzle/psr7.git", 401 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a" 402 | }, 403 | "dist": { 404 | "type": "zip", 405 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", 406 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a", 407 | "shasum": "" 408 | }, 409 | "require": { 410 | "php": ">=5.4.0", 411 | "psr/http-message": "~1.0", 412 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" 413 | }, 414 | "provide": { 415 | "psr/http-message-implementation": "1.0" 416 | }, 417 | "require-dev": { 418 | "ext-zlib": "*", 419 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" 420 | }, 421 | "suggest": { 422 | "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" 423 | }, 424 | "type": "library", 425 | "extra": { 426 | "branch-alias": { 427 | "dev-master": "1.6-dev" 428 | } 429 | }, 430 | "autoload": { 431 | "psr-4": { 432 | "GuzzleHttp\\Psr7\\": "src/" 433 | }, 434 | "files": [ 435 | "src/functions_include.php" 436 | ] 437 | }, 438 | "notification-url": "https://packagist.org/downloads/", 439 | "license": [ 440 | "MIT" 441 | ], 442 | "authors": [ 443 | { 444 | "name": "Michael Dowling", 445 | "email": "mtdowling@gmail.com", 446 | "homepage": "https://github.com/mtdowling" 447 | }, 448 | { 449 | "name": "Tobias Schultze", 450 | "homepage": "https://github.com/Tobion" 451 | } 452 | ], 453 | "description": "PSR-7 message implementation that also provides common utility methods", 454 | "keywords": [ 455 | "http", 456 | "message", 457 | "psr-7", 458 | "request", 459 | "response", 460 | "stream", 461 | "uri", 462 | "url" 463 | ], 464 | "time": "2019-07-01T23:21:34+00:00" 465 | }, 466 | { 467 | "name": "psr/http-message", 468 | "version": "1.0.1", 469 | "source": { 470 | "type": "git", 471 | "url": "https://github.com/php-fig/http-message.git", 472 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 473 | }, 474 | "dist": { 475 | "type": "zip", 476 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 477 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 478 | "shasum": "" 479 | }, 480 | "require": { 481 | "php": ">=5.3.0" 482 | }, 483 | "type": "library", 484 | "extra": { 485 | "branch-alias": { 486 | "dev-master": "1.0.x-dev" 487 | } 488 | }, 489 | "autoload": { 490 | "psr-4": { 491 | "Psr\\Http\\Message\\": "src/" 492 | } 493 | }, 494 | "notification-url": "https://packagist.org/downloads/", 495 | "license": [ 496 | "MIT" 497 | ], 498 | "authors": [ 499 | { 500 | "name": "PHP-FIG", 501 | "homepage": "http://www.php-fig.org/" 502 | } 503 | ], 504 | "description": "Common interface for HTTP messages", 505 | "homepage": "https://github.com/php-fig/http-message", 506 | "keywords": [ 507 | "http", 508 | "http-message", 509 | "psr", 510 | "psr-7", 511 | "request", 512 | "response" 513 | ], 514 | "time": "2016-08-06T14:39:51+00:00" 515 | }, 516 | { 517 | "name": "ralouphie/getallheaders", 518 | "version": "2.0.5", 519 | "source": { 520 | "type": "git", 521 | "url": "https://github.com/ralouphie/getallheaders.git", 522 | "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" 523 | }, 524 | "dist": { 525 | "type": "zip", 526 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", 527 | "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", 528 | "shasum": "" 529 | }, 530 | "require": { 531 | "php": ">=5.3" 532 | }, 533 | "require-dev": { 534 | "phpunit/phpunit": "~3.7.0", 535 | "satooshi/php-coveralls": ">=1.0" 536 | }, 537 | "type": "library", 538 | "autoload": { 539 | "files": [ 540 | "src/getallheaders.php" 541 | ] 542 | }, 543 | "notification-url": "https://packagist.org/downloads/", 544 | "license": [ 545 | "MIT" 546 | ], 547 | "authors": [ 548 | { 549 | "name": "Ralph Khattar", 550 | "email": "ralph.khattar@gmail.com" 551 | } 552 | ], 553 | "description": "A polyfill for getallheaders.", 554 | "time": "2016-02-11T07:05:27+00:00" 555 | }, 556 | { 557 | "name": "react/cache", 558 | "version": "v0.5.0", 559 | "source": { 560 | "type": "git", 561 | "url": "https://github.com/reactphp/cache.git", 562 | "reference": "7d7da7fb7574d471904ba357b39bbf110ccdbf66" 563 | }, 564 | "dist": { 565 | "type": "zip", 566 | "url": "https://api.github.com/repos/reactphp/cache/zipball/7d7da7fb7574d471904ba357b39bbf110ccdbf66", 567 | "reference": "7d7da7fb7574d471904ba357b39bbf110ccdbf66", 568 | "shasum": "" 569 | }, 570 | "require": { 571 | "php": ">=5.3.0", 572 | "react/promise": "~2.0|~1.1" 573 | }, 574 | "require-dev": { 575 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 576 | }, 577 | "type": "library", 578 | "autoload": { 579 | "psr-4": { 580 | "React\\Cache\\": "src/" 581 | } 582 | }, 583 | "notification-url": "https://packagist.org/downloads/", 584 | "license": [ 585 | "MIT" 586 | ], 587 | "description": "Async, Promise-based cache interface for ReactPHP", 588 | "keywords": [ 589 | "cache", 590 | "caching", 591 | "promise", 592 | "reactphp" 593 | ], 594 | "time": "2018-06-25T12:52:40+00:00" 595 | }, 596 | { 597 | "name": "react/dns", 598 | "version": "v0.4.17", 599 | "source": { 600 | "type": "git", 601 | "url": "https://github.com/reactphp/dns.git", 602 | "reference": "0f30c6ceb71504d359d51132a97e1703051f1589" 603 | }, 604 | "dist": { 605 | "type": "zip", 606 | "url": "https://api.github.com/repos/reactphp/dns/zipball/0f30c6ceb71504d359d51132a97e1703051f1589", 607 | "reference": "0f30c6ceb71504d359d51132a97e1703051f1589", 608 | "shasum": "" 609 | }, 610 | "require": { 611 | "php": ">=5.3.0", 612 | "react/cache": "^1.0 || ^0.6 || ^0.5 || ^0.4 || ^0.3", 613 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", 614 | "react/promise": "^2.1 || ^1.2.1", 615 | "react/promise-timer": "^1.2", 616 | "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.5" 617 | }, 618 | "require-dev": { 619 | "clue/block-react": "^1.2", 620 | "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" 621 | }, 622 | "type": "library", 623 | "autoload": { 624 | "psr-4": { 625 | "React\\Dns\\": "src" 626 | } 627 | }, 628 | "notification-url": "https://packagist.org/downloads/", 629 | "license": [ 630 | "MIT" 631 | ], 632 | "description": "Async DNS resolver for ReactPHP", 633 | "keywords": [ 634 | "async", 635 | "dns", 636 | "dns-resolver", 637 | "reactphp" 638 | ], 639 | "time": "2019-04-01T07:31:55+00:00" 640 | }, 641 | { 642 | "name": "react/event-loop", 643 | "version": "v1.1.0", 644 | "source": { 645 | "type": "git", 646 | "url": "https://github.com/reactphp/event-loop.git", 647 | "reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d" 648 | }, 649 | "dist": { 650 | "type": "zip", 651 | "url": "https://api.github.com/repos/reactphp/event-loop/zipball/a0ecac955c67b57c40fe4a1b88a7cca1b58c982d", 652 | "reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d", 653 | "shasum": "" 654 | }, 655 | "require": { 656 | "php": ">=5.3.0" 657 | }, 658 | "require-dev": { 659 | "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" 660 | }, 661 | "suggest": { 662 | "ext-event": "~1.0 for ExtEventLoop", 663 | "ext-pcntl": "For signal handling support when using the StreamSelectLoop", 664 | "ext-uv": "* for ExtUvLoop" 665 | }, 666 | "type": "library", 667 | "autoload": { 668 | "psr-4": { 669 | "React\\EventLoop\\": "src" 670 | } 671 | }, 672 | "notification-url": "https://packagist.org/downloads/", 673 | "license": [ 674 | "MIT" 675 | ], 676 | "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", 677 | "keywords": [ 678 | "asynchronous", 679 | "event-loop" 680 | ], 681 | "time": "2019-02-07T16:19:49+00:00" 682 | }, 683 | { 684 | "name": "react/http-client", 685 | "version": "v0.5.9", 686 | "source": { 687 | "type": "git", 688 | "url": "https://github.com/reactphp/http-client.git", 689 | "reference": "f8e81a022b61938e0b37c94c6351fc170b7d87f6" 690 | }, 691 | "dist": { 692 | "type": "zip", 693 | "url": "https://api.github.com/repos/reactphp/http-client/zipball/f8e81a022b61938e0b37c94c6351fc170b7d87f6", 694 | "reference": "f8e81a022b61938e0b37c94c6351fc170b7d87f6", 695 | "shasum": "" 696 | }, 697 | "require": { 698 | "evenement/evenement": "^3.0 || ^2.0 || ^1.0", 699 | "php": ">=5.3.0", 700 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", 701 | "react/promise": "^2.1 || ^1.2.1", 702 | "react/socket": "^1.0 || ^0.8.4", 703 | "react/stream": "^1.0 || ^0.7.1", 704 | "ringcentral/psr7": "^1.2" 705 | }, 706 | "require-dev": { 707 | "clue/block-react": "^1.2", 708 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35", 709 | "react/promise-stream": "^1.1" 710 | }, 711 | "type": "library", 712 | "autoload": { 713 | "psr-4": { 714 | "React\\HttpClient\\": "src" 715 | } 716 | }, 717 | "notification-url": "https://packagist.org/downloads/", 718 | "license": [ 719 | "MIT" 720 | ], 721 | "description": "Event-driven, streaming HTTP client for ReactPHP", 722 | "keywords": [ 723 | "http" 724 | ], 725 | "time": "2018-04-10T11:38:54+00:00" 726 | }, 727 | { 728 | "name": "react/promise", 729 | "version": "v2.7.1", 730 | "source": { 731 | "type": "git", 732 | "url": "https://github.com/reactphp/promise.git", 733 | "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" 734 | }, 735 | "dist": { 736 | "type": "zip", 737 | "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", 738 | "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", 739 | "shasum": "" 740 | }, 741 | "require": { 742 | "php": ">=5.4.0" 743 | }, 744 | "require-dev": { 745 | "phpunit/phpunit": "~4.8" 746 | }, 747 | "type": "library", 748 | "autoload": { 749 | "psr-4": { 750 | "React\\Promise\\": "src/" 751 | }, 752 | "files": [ 753 | "src/functions_include.php" 754 | ] 755 | }, 756 | "notification-url": "https://packagist.org/downloads/", 757 | "license": [ 758 | "MIT" 759 | ], 760 | "authors": [ 761 | { 762 | "name": "Jan Sorgalla", 763 | "email": "jsorgalla@gmail.com" 764 | } 765 | ], 766 | "description": "A lightweight implementation of CommonJS Promises/A for PHP", 767 | "keywords": [ 768 | "promise", 769 | "promises" 770 | ], 771 | "time": "2019-01-07T21:25:54+00:00" 772 | }, 773 | { 774 | "name": "react/promise-stream", 775 | "version": "v1.1.1", 776 | "source": { 777 | "type": "git", 778 | "url": "https://github.com/reactphp/promise-stream.git", 779 | "reference": "00e269d611e9c9a29356aef64c07f7e513e73dc9" 780 | }, 781 | "dist": { 782 | "type": "zip", 783 | "url": "https://api.github.com/repos/reactphp/promise-stream/zipball/00e269d611e9c9a29356aef64c07f7e513e73dc9", 784 | "reference": "00e269d611e9c9a29356aef64c07f7e513e73dc9", 785 | "shasum": "" 786 | }, 787 | "require": { 788 | "php": ">=5.3", 789 | "react/promise": "^2.1 || ^1.2", 790 | "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4 || ^0.3" 791 | }, 792 | "require-dev": { 793 | "clue/block-react": "^1.0", 794 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35", 795 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", 796 | "react/promise-timer": "^1.0" 797 | }, 798 | "type": "library", 799 | "autoload": { 800 | "psr-4": { 801 | "React\\Promise\\Stream\\": "src/" 802 | }, 803 | "files": [ 804 | "src/functions_include.php" 805 | ] 806 | }, 807 | "notification-url": "https://packagist.org/downloads/", 808 | "license": [ 809 | "MIT" 810 | ], 811 | "authors": [ 812 | { 813 | "name": "Christian Lück", 814 | "email": "christian@lueck.tv" 815 | } 816 | ], 817 | "description": "The missing link between Promise-land and Stream-land for ReactPHP", 818 | "homepage": "https://github.com/reactphp/promise-stream", 819 | "keywords": [ 820 | "Buffer", 821 | "async", 822 | "promise", 823 | "reactphp", 824 | "stream", 825 | "unwrap" 826 | ], 827 | "time": "2017-12-22T12:02:05+00:00" 828 | }, 829 | { 830 | "name": "react/promise-timer", 831 | "version": "v1.5.1", 832 | "source": { 833 | "type": "git", 834 | "url": "https://github.com/reactphp/promise-timer.git", 835 | "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc" 836 | }, 837 | "dist": { 838 | "type": "zip", 839 | "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/35fb910604fd86b00023fc5cda477c8074ad0abc", 840 | "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc", 841 | "shasum": "" 842 | }, 843 | "require": { 844 | "php": ">=5.3", 845 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", 846 | "react/promise": "^2.7.0 || ^1.2.1" 847 | }, 848 | "require-dev": { 849 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 850 | }, 851 | "type": "library", 852 | "autoload": { 853 | "psr-4": { 854 | "React\\Promise\\Timer\\": "src/" 855 | }, 856 | "files": [ 857 | "src/functions_include.php" 858 | ] 859 | }, 860 | "notification-url": "https://packagist.org/downloads/", 861 | "license": [ 862 | "MIT" 863 | ], 864 | "authors": [ 865 | { 866 | "name": "Christian Lück", 867 | "email": "christian@lueck.tv" 868 | } 869 | ], 870 | "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", 871 | "homepage": "https://github.com/reactphp/promise-timer", 872 | "keywords": [ 873 | "async", 874 | "event-loop", 875 | "promise", 876 | "reactphp", 877 | "timeout", 878 | "timer" 879 | ], 880 | "time": "2019-03-27T18:10:32+00:00" 881 | }, 882 | { 883 | "name": "react/socket", 884 | "version": "v1.2.0", 885 | "source": { 886 | "type": "git", 887 | "url": "https://github.com/reactphp/socket.git", 888 | "reference": "23b7372bb25cea934f6124f5bdac34e30161959e" 889 | }, 890 | "dist": { 891 | "type": "zip", 892 | "url": "https://api.github.com/repos/reactphp/socket/zipball/23b7372bb25cea934f6124f5bdac34e30161959e", 893 | "reference": "23b7372bb25cea934f6124f5bdac34e30161959e", 894 | "shasum": "" 895 | }, 896 | "require": { 897 | "evenement/evenement": "^3.0 || ^2.0 || ^1.0", 898 | "php": ">=5.3.0", 899 | "react/dns": "^0.4.13", 900 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", 901 | "react/promise": "^2.6.0 || ^1.2.1", 902 | "react/promise-timer": "^1.4.0", 903 | "react/stream": "^1.1" 904 | }, 905 | "require-dev": { 906 | "clue/block-react": "^1.2", 907 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 908 | }, 909 | "type": "library", 910 | "autoload": { 911 | "psr-4": { 912 | "React\\Socket\\": "src" 913 | } 914 | }, 915 | "notification-url": "https://packagist.org/downloads/", 916 | "license": [ 917 | "MIT" 918 | ], 919 | "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", 920 | "keywords": [ 921 | "Connection", 922 | "Socket", 923 | "async", 924 | "reactphp", 925 | "stream" 926 | ], 927 | "time": "2019-01-07T14:10:13+00:00" 928 | }, 929 | { 930 | "name": "react/stream", 931 | "version": "v1.1.0", 932 | "source": { 933 | "type": "git", 934 | "url": "https://github.com/reactphp/stream.git", 935 | "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6" 936 | }, 937 | "dist": { 938 | "type": "zip", 939 | "url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6", 940 | "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6", 941 | "shasum": "" 942 | }, 943 | "require": { 944 | "evenement/evenement": "^3.0 || ^2.0 || ^1.0", 945 | "php": ">=5.3.8", 946 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5" 947 | }, 948 | "require-dev": { 949 | "clue/stream-filter": "~1.2", 950 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 951 | }, 952 | "type": "library", 953 | "autoload": { 954 | "psr-4": { 955 | "React\\Stream\\": "src" 956 | } 957 | }, 958 | "notification-url": "https://packagist.org/downloads/", 959 | "license": [ 960 | "MIT" 961 | ], 962 | "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", 963 | "keywords": [ 964 | "event-driven", 965 | "io", 966 | "non-blocking", 967 | "pipe", 968 | "reactphp", 969 | "readable", 970 | "stream", 971 | "writable" 972 | ], 973 | "time": "2019-01-01T16:15:09+00:00" 974 | }, 975 | { 976 | "name": "ringcentral/psr7", 977 | "version": "1.2.2", 978 | "source": { 979 | "type": "git", 980 | "url": "https://github.com/ringcentral/psr7.git", 981 | "reference": "dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c" 982 | }, 983 | "dist": { 984 | "type": "zip", 985 | "url": "https://api.github.com/repos/ringcentral/psr7/zipball/dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c", 986 | "reference": "dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c", 987 | "shasum": "" 988 | }, 989 | "require": { 990 | "php": ">=5.3", 991 | "psr/http-message": "~1.0" 992 | }, 993 | "provide": { 994 | "psr/http-message-implementation": "1.0" 995 | }, 996 | "require-dev": { 997 | "phpunit/phpunit": "~4.0" 998 | }, 999 | "type": "library", 1000 | "extra": { 1001 | "branch-alias": { 1002 | "dev-master": "1.0-dev" 1003 | } 1004 | }, 1005 | "autoload": { 1006 | "psr-4": { 1007 | "RingCentral\\Psr7\\": "src/" 1008 | }, 1009 | "files": [ 1010 | "src/functions_include.php" 1011 | ] 1012 | }, 1013 | "notification-url": "https://packagist.org/downloads/", 1014 | "license": [ 1015 | "MIT" 1016 | ], 1017 | "authors": [ 1018 | { 1019 | "name": "Michael Dowling", 1020 | "email": "mtdowling@gmail.com", 1021 | "homepage": "https://github.com/mtdowling" 1022 | } 1023 | ], 1024 | "description": "PSR-7 message implementation", 1025 | "keywords": [ 1026 | "http", 1027 | "message", 1028 | "stream", 1029 | "uri" 1030 | ], 1031 | "time": "2018-01-15T21:00:49+00:00" 1032 | }, 1033 | { 1034 | "name": "wyrihaximus/react-guzzle-http-client", 1035 | "version": "4.0.2", 1036 | "source": { 1037 | "type": "git", 1038 | "url": "https://github.com/WyriHaximus/react-guzzle-http-client.git", 1039 | "reference": "328a7b8f56058d611e611f51f941aa686a2785cd" 1040 | }, 1041 | "dist": { 1042 | "type": "zip", 1043 | "url": "https://api.github.com/repos/WyriHaximus/react-guzzle-http-client/zipball/328a7b8f56058d611e611f51f941aa686a2785cd", 1044 | "reference": "328a7b8f56058d611e611f51f941aa686a2785cd", 1045 | "shasum": "" 1046 | }, 1047 | "require": { 1048 | "clue/buzz-react": "^2.0 || ^1.4", 1049 | "clue/http-proxy-react": "^1.2", 1050 | "clue/socks-react": "^0.8.5", 1051 | "guzzlehttp/psr7": "^1.0", 1052 | "php": "^5.4|^7.0", 1053 | "psr/http-message": "^1.0", 1054 | "wyrihaximus/ticking-promise": "^1.6" 1055 | }, 1056 | "require-dev": { 1057 | "clue/block-react": "^1.1", 1058 | "phake/phake": "~1.0.6", 1059 | "phpunit/phpunit": "^5.0 || ^4.8", 1060 | "squizlabs/php_codesniffer": "~3.4.0", 1061 | "vectorface/dunit": "~2" 1062 | }, 1063 | "type": "library", 1064 | "autoload": { 1065 | "psr-4": { 1066 | "WyriHaximus\\React\\Guzzle\\HttpClient\\": "src/" 1067 | } 1068 | }, 1069 | "notification-url": "https://packagist.org/downloads/", 1070 | "license": [ 1071 | "MIT" 1072 | ], 1073 | "authors": [ 1074 | { 1075 | "name": "Cees-Jan Kiewiet", 1076 | "email": "ceesjank@gmail.com", 1077 | "homepage": "http://wyrihaximus.net/" 1078 | } 1079 | ], 1080 | "description": "Asynchronous adapter for different Guzzle versions powered by react/http-client", 1081 | "time": "2019-04-02T08:22:57+00:00" 1082 | }, 1083 | { 1084 | "name": "wyrihaximus/ticking-promise", 1085 | "version": "1.6.3", 1086 | "source": { 1087 | "type": "git", 1088 | "url": "https://github.com/WyriHaximus/TickingPromise.git", 1089 | "reference": "4bb99024402bb7526de8880f3dab0c1f0858def5" 1090 | }, 1091 | "dist": { 1092 | "type": "zip", 1093 | "url": "https://api.github.com/repos/WyriHaximus/TickingPromise/zipball/4bb99024402bb7526de8880f3dab0c1f0858def5", 1094 | "reference": "4bb99024402bb7526de8880f3dab0c1f0858def5", 1095 | "shasum": "" 1096 | }, 1097 | "require": { 1098 | "php": "^7.0 || ^5.4", 1099 | "react/event-loop": "^1.0 || ^0.5 || ^0.4", 1100 | "react/promise": "~2.1" 1101 | }, 1102 | "require-dev": { 1103 | "phpunit/phpunit": "~4.4", 1104 | "squizlabs/php_codesniffer": "^1.5.6", 1105 | "vectorface/dunit": "~1.4" 1106 | }, 1107 | "type": "library", 1108 | "autoload": { 1109 | "psr-4": { 1110 | "WyriHaximus\\React\\": "src/" 1111 | }, 1112 | "files": [ 1113 | "src/functions_include.php" 1114 | ] 1115 | }, 1116 | "notification-url": "https://packagist.org/downloads/", 1117 | "license": [ 1118 | "MIT" 1119 | ], 1120 | "authors": [ 1121 | { 1122 | "name": "Cees-Jan Kiewiet", 1123 | "email": "ceesjank@gmail.com", 1124 | "homepage": "http://wyrihaximus.net/" 1125 | } 1126 | ], 1127 | "description": "Wrapping ticks into a promise", 1128 | "time": "2018-04-05T12:36:50+00:00" 1129 | } 1130 | ], 1131 | "packages-dev": [ 1132 | { 1133 | "name": "doctrine/instantiator", 1134 | "version": "1.0.5", 1135 | "source": { 1136 | "type": "git", 1137 | "url": "https://github.com/doctrine/instantiator.git", 1138 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 1139 | }, 1140 | "dist": { 1141 | "type": "zip", 1142 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 1143 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 1144 | "shasum": "" 1145 | }, 1146 | "require": { 1147 | "php": ">=5.3,<8.0-DEV" 1148 | }, 1149 | "require-dev": { 1150 | "athletic/athletic": "~0.1.8", 1151 | "ext-pdo": "*", 1152 | "ext-phar": "*", 1153 | "phpunit/phpunit": "~4.0", 1154 | "squizlabs/php_codesniffer": "~2.0" 1155 | }, 1156 | "type": "library", 1157 | "extra": { 1158 | "branch-alias": { 1159 | "dev-master": "1.0.x-dev" 1160 | } 1161 | }, 1162 | "autoload": { 1163 | "psr-4": { 1164 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 1165 | } 1166 | }, 1167 | "notification-url": "https://packagist.org/downloads/", 1168 | "license": [ 1169 | "MIT" 1170 | ], 1171 | "authors": [ 1172 | { 1173 | "name": "Marco Pivetta", 1174 | "email": "ocramius@gmail.com", 1175 | "homepage": "http://ocramius.github.com/" 1176 | } 1177 | ], 1178 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 1179 | "homepage": "https://github.com/doctrine/instantiator", 1180 | "keywords": [ 1181 | "constructor", 1182 | "instantiate" 1183 | ], 1184 | "time": "2015-06-14T21:17:01+00:00" 1185 | }, 1186 | { 1187 | "name": "phake/phake", 1188 | "version": "v1.0.8", 1189 | "source": { 1190 | "type": "git", 1191 | "url": "https://github.com/mlively/Phake.git", 1192 | "reference": "c5a3d7a75fc7431e8a5e21a922f084af95456bc6" 1193 | }, 1194 | "dist": { 1195 | "type": "zip", 1196 | "url": "https://api.github.com/repos/mlively/Phake/zipball/c5a3d7a75fc7431e8a5e21a922f084af95456bc6", 1197 | "reference": "c5a3d7a75fc7431e8a5e21a922f084af95456bc6", 1198 | "shasum": "" 1199 | }, 1200 | "require": { 1201 | "php": ">=5.2.0" 1202 | }, 1203 | "require-dev": { 1204 | "doctrine/common": "2.3.*", 1205 | "ext-soap": "*", 1206 | "hamcrest/hamcrest-php": "1.1.0", 1207 | "phpunit/phpunit": "3.7.*" 1208 | }, 1209 | "type": "library", 1210 | "autoload": { 1211 | "classmap": [ 1212 | "src" 1213 | ] 1214 | }, 1215 | "notification-url": "https://packagist.org/downloads/", 1216 | "include-path": [ 1217 | "src" 1218 | ], 1219 | "license": [ 1220 | "BSD" 1221 | ], 1222 | "authors": [ 1223 | { 1224 | "name": "Mike Lively", 1225 | "email": "m@digitalsandwich.com" 1226 | } 1227 | ], 1228 | "description": "The Phake mock testing library", 1229 | "homepage": "https://github.com/mlively/Phake", 1230 | "keywords": [ 1231 | "mock", 1232 | "testing" 1233 | ], 1234 | "time": "2015-01-27T15:48:39+00:00" 1235 | }, 1236 | { 1237 | "name": "phpdocumentor/reflection-common", 1238 | "version": "1.0.1", 1239 | "source": { 1240 | "type": "git", 1241 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1242 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 1243 | }, 1244 | "dist": { 1245 | "type": "zip", 1246 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 1247 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 1248 | "shasum": "" 1249 | }, 1250 | "require": { 1251 | "php": ">=5.5" 1252 | }, 1253 | "require-dev": { 1254 | "phpunit/phpunit": "^4.6" 1255 | }, 1256 | "type": "library", 1257 | "extra": { 1258 | "branch-alias": { 1259 | "dev-master": "1.0.x-dev" 1260 | } 1261 | }, 1262 | "autoload": { 1263 | "psr-4": { 1264 | "phpDocumentor\\Reflection\\": [ 1265 | "src" 1266 | ] 1267 | } 1268 | }, 1269 | "notification-url": "https://packagist.org/downloads/", 1270 | "license": [ 1271 | "MIT" 1272 | ], 1273 | "authors": [ 1274 | { 1275 | "name": "Jaap van Otterdijk", 1276 | "email": "opensource@ijaap.nl" 1277 | } 1278 | ], 1279 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1280 | "homepage": "http://www.phpdoc.org", 1281 | "keywords": [ 1282 | "FQSEN", 1283 | "phpDocumentor", 1284 | "phpdoc", 1285 | "reflection", 1286 | "static analysis" 1287 | ], 1288 | "time": "2017-09-11T18:02:19+00:00" 1289 | }, 1290 | { 1291 | "name": "phpdocumentor/reflection-docblock", 1292 | "version": "3.2.2", 1293 | "source": { 1294 | "type": "git", 1295 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1296 | "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" 1297 | }, 1298 | "dist": { 1299 | "type": "zip", 1300 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", 1301 | "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", 1302 | "shasum": "" 1303 | }, 1304 | "require": { 1305 | "php": ">=5.5", 1306 | "phpdocumentor/reflection-common": "^1.0@dev", 1307 | "phpdocumentor/type-resolver": "^0.3.0", 1308 | "webmozart/assert": "^1.0" 1309 | }, 1310 | "require-dev": { 1311 | "mockery/mockery": "^0.9.4", 1312 | "phpunit/phpunit": "^4.4" 1313 | }, 1314 | "type": "library", 1315 | "autoload": { 1316 | "psr-4": { 1317 | "phpDocumentor\\Reflection\\": [ 1318 | "src/" 1319 | ] 1320 | } 1321 | }, 1322 | "notification-url": "https://packagist.org/downloads/", 1323 | "license": [ 1324 | "MIT" 1325 | ], 1326 | "authors": [ 1327 | { 1328 | "name": "Mike van Riel", 1329 | "email": "me@mikevanriel.com" 1330 | } 1331 | ], 1332 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1333 | "time": "2017-08-08T06:39:58+00:00" 1334 | }, 1335 | { 1336 | "name": "phpdocumentor/type-resolver", 1337 | "version": "0.3.0", 1338 | "source": { 1339 | "type": "git", 1340 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1341 | "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" 1342 | }, 1343 | "dist": { 1344 | "type": "zip", 1345 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", 1346 | "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", 1347 | "shasum": "" 1348 | }, 1349 | "require": { 1350 | "php": "^5.5 || ^7.0", 1351 | "phpdocumentor/reflection-common": "^1.0" 1352 | }, 1353 | "require-dev": { 1354 | "mockery/mockery": "^0.9.4", 1355 | "phpunit/phpunit": "^5.2||^4.8.24" 1356 | }, 1357 | "type": "library", 1358 | "extra": { 1359 | "branch-alias": { 1360 | "dev-master": "1.0.x-dev" 1361 | } 1362 | }, 1363 | "autoload": { 1364 | "psr-4": { 1365 | "phpDocumentor\\Reflection\\": [ 1366 | "src/" 1367 | ] 1368 | } 1369 | }, 1370 | "notification-url": "https://packagist.org/downloads/", 1371 | "license": [ 1372 | "MIT" 1373 | ], 1374 | "authors": [ 1375 | { 1376 | "name": "Mike van Riel", 1377 | "email": "me@mikevanriel.com" 1378 | } 1379 | ], 1380 | "time": "2017-06-03T08:32:36+00:00" 1381 | }, 1382 | { 1383 | "name": "phpspec/prophecy", 1384 | "version": "1.8.0", 1385 | "source": { 1386 | "type": "git", 1387 | "url": "https://github.com/phpspec/prophecy.git", 1388 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" 1389 | }, 1390 | "dist": { 1391 | "type": "zip", 1392 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1393 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1394 | "shasum": "" 1395 | }, 1396 | "require": { 1397 | "doctrine/instantiator": "^1.0.2", 1398 | "php": "^5.3|^7.0", 1399 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 1400 | "sebastian/comparator": "^1.1|^2.0|^3.0", 1401 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 1402 | }, 1403 | "require-dev": { 1404 | "phpspec/phpspec": "^2.5|^3.2", 1405 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 1406 | }, 1407 | "type": "library", 1408 | "extra": { 1409 | "branch-alias": { 1410 | "dev-master": "1.8.x-dev" 1411 | } 1412 | }, 1413 | "autoload": { 1414 | "psr-0": { 1415 | "Prophecy\\": "src/" 1416 | } 1417 | }, 1418 | "notification-url": "https://packagist.org/downloads/", 1419 | "license": [ 1420 | "MIT" 1421 | ], 1422 | "authors": [ 1423 | { 1424 | "name": "Konstantin Kudryashov", 1425 | "email": "ever.zet@gmail.com", 1426 | "homepage": "http://everzet.com" 1427 | }, 1428 | { 1429 | "name": "Marcello Duarte", 1430 | "email": "marcello.duarte@gmail.com" 1431 | } 1432 | ], 1433 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1434 | "homepage": "https://github.com/phpspec/prophecy", 1435 | "keywords": [ 1436 | "Double", 1437 | "Dummy", 1438 | "fake", 1439 | "mock", 1440 | "spy", 1441 | "stub" 1442 | ], 1443 | "time": "2018-08-05T17:53:17+00:00" 1444 | }, 1445 | { 1446 | "name": "phpunit/php-code-coverage", 1447 | "version": "2.2.4", 1448 | "source": { 1449 | "type": "git", 1450 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1451 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" 1452 | }, 1453 | "dist": { 1454 | "type": "zip", 1455 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", 1456 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", 1457 | "shasum": "" 1458 | }, 1459 | "require": { 1460 | "php": ">=5.3.3", 1461 | "phpunit/php-file-iterator": "~1.3", 1462 | "phpunit/php-text-template": "~1.2", 1463 | "phpunit/php-token-stream": "~1.3", 1464 | "sebastian/environment": "^1.3.2", 1465 | "sebastian/version": "~1.0" 1466 | }, 1467 | "require-dev": { 1468 | "ext-xdebug": ">=2.1.4", 1469 | "phpunit/phpunit": "~4" 1470 | }, 1471 | "suggest": { 1472 | "ext-dom": "*", 1473 | "ext-xdebug": ">=2.2.1", 1474 | "ext-xmlwriter": "*" 1475 | }, 1476 | "type": "library", 1477 | "extra": { 1478 | "branch-alias": { 1479 | "dev-master": "2.2.x-dev" 1480 | } 1481 | }, 1482 | "autoload": { 1483 | "classmap": [ 1484 | "src/" 1485 | ] 1486 | }, 1487 | "notification-url": "https://packagist.org/downloads/", 1488 | "license": [ 1489 | "BSD-3-Clause" 1490 | ], 1491 | "authors": [ 1492 | { 1493 | "name": "Sebastian Bergmann", 1494 | "email": "sb@sebastian-bergmann.de", 1495 | "role": "lead" 1496 | } 1497 | ], 1498 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1499 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1500 | "keywords": [ 1501 | "coverage", 1502 | "testing", 1503 | "xunit" 1504 | ], 1505 | "time": "2015-10-06T15:47:00+00:00" 1506 | }, 1507 | { 1508 | "name": "phpunit/php-file-iterator", 1509 | "version": "1.4.5", 1510 | "source": { 1511 | "type": "git", 1512 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1513 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 1514 | }, 1515 | "dist": { 1516 | "type": "zip", 1517 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 1518 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 1519 | "shasum": "" 1520 | }, 1521 | "require": { 1522 | "php": ">=5.3.3" 1523 | }, 1524 | "type": "library", 1525 | "extra": { 1526 | "branch-alias": { 1527 | "dev-master": "1.4.x-dev" 1528 | } 1529 | }, 1530 | "autoload": { 1531 | "classmap": [ 1532 | "src/" 1533 | ] 1534 | }, 1535 | "notification-url": "https://packagist.org/downloads/", 1536 | "license": [ 1537 | "BSD-3-Clause" 1538 | ], 1539 | "authors": [ 1540 | { 1541 | "name": "Sebastian Bergmann", 1542 | "email": "sb@sebastian-bergmann.de", 1543 | "role": "lead" 1544 | } 1545 | ], 1546 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1547 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1548 | "keywords": [ 1549 | "filesystem", 1550 | "iterator" 1551 | ], 1552 | "time": "2017-11-27T13:52:08+00:00" 1553 | }, 1554 | { 1555 | "name": "phpunit/php-text-template", 1556 | "version": "1.2.1", 1557 | "source": { 1558 | "type": "git", 1559 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1560 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1561 | }, 1562 | "dist": { 1563 | "type": "zip", 1564 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1565 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1566 | "shasum": "" 1567 | }, 1568 | "require": { 1569 | "php": ">=5.3.3" 1570 | }, 1571 | "type": "library", 1572 | "autoload": { 1573 | "classmap": [ 1574 | "src/" 1575 | ] 1576 | }, 1577 | "notification-url": "https://packagist.org/downloads/", 1578 | "license": [ 1579 | "BSD-3-Clause" 1580 | ], 1581 | "authors": [ 1582 | { 1583 | "name": "Sebastian Bergmann", 1584 | "email": "sebastian@phpunit.de", 1585 | "role": "lead" 1586 | } 1587 | ], 1588 | "description": "Simple template engine.", 1589 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1590 | "keywords": [ 1591 | "template" 1592 | ], 1593 | "time": "2015-06-21T13:50:34+00:00" 1594 | }, 1595 | { 1596 | "name": "phpunit/php-timer", 1597 | "version": "1.0.9", 1598 | "source": { 1599 | "type": "git", 1600 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1601 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 1602 | }, 1603 | "dist": { 1604 | "type": "zip", 1605 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1606 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1607 | "shasum": "" 1608 | }, 1609 | "require": { 1610 | "php": "^5.3.3 || ^7.0" 1611 | }, 1612 | "require-dev": { 1613 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 1614 | }, 1615 | "type": "library", 1616 | "extra": { 1617 | "branch-alias": { 1618 | "dev-master": "1.0-dev" 1619 | } 1620 | }, 1621 | "autoload": { 1622 | "classmap": [ 1623 | "src/" 1624 | ] 1625 | }, 1626 | "notification-url": "https://packagist.org/downloads/", 1627 | "license": [ 1628 | "BSD-3-Clause" 1629 | ], 1630 | "authors": [ 1631 | { 1632 | "name": "Sebastian Bergmann", 1633 | "email": "sb@sebastian-bergmann.de", 1634 | "role": "lead" 1635 | } 1636 | ], 1637 | "description": "Utility class for timing", 1638 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1639 | "keywords": [ 1640 | "timer" 1641 | ], 1642 | "time": "2017-02-26T11:10:40+00:00" 1643 | }, 1644 | { 1645 | "name": "phpunit/php-token-stream", 1646 | "version": "1.4.12", 1647 | "source": { 1648 | "type": "git", 1649 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1650 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" 1651 | }, 1652 | "dist": { 1653 | "type": "zip", 1654 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", 1655 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", 1656 | "shasum": "" 1657 | }, 1658 | "require": { 1659 | "ext-tokenizer": "*", 1660 | "php": ">=5.3.3" 1661 | }, 1662 | "require-dev": { 1663 | "phpunit/phpunit": "~4.2" 1664 | }, 1665 | "type": "library", 1666 | "extra": { 1667 | "branch-alias": { 1668 | "dev-master": "1.4-dev" 1669 | } 1670 | }, 1671 | "autoload": { 1672 | "classmap": [ 1673 | "src/" 1674 | ] 1675 | }, 1676 | "notification-url": "https://packagist.org/downloads/", 1677 | "license": [ 1678 | "BSD-3-Clause" 1679 | ], 1680 | "authors": [ 1681 | { 1682 | "name": "Sebastian Bergmann", 1683 | "email": "sebastian@phpunit.de" 1684 | } 1685 | ], 1686 | "description": "Wrapper around PHP's tokenizer extension.", 1687 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1688 | "keywords": [ 1689 | "tokenizer" 1690 | ], 1691 | "time": "2017-12-04T08:55:13+00:00" 1692 | }, 1693 | { 1694 | "name": "phpunit/phpunit", 1695 | "version": "4.8.36", 1696 | "source": { 1697 | "type": "git", 1698 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1699 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" 1700 | }, 1701 | "dist": { 1702 | "type": "zip", 1703 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", 1704 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", 1705 | "shasum": "" 1706 | }, 1707 | "require": { 1708 | "ext-dom": "*", 1709 | "ext-json": "*", 1710 | "ext-pcre": "*", 1711 | "ext-reflection": "*", 1712 | "ext-spl": "*", 1713 | "php": ">=5.3.3", 1714 | "phpspec/prophecy": "^1.3.1", 1715 | "phpunit/php-code-coverage": "~2.1", 1716 | "phpunit/php-file-iterator": "~1.4", 1717 | "phpunit/php-text-template": "~1.2", 1718 | "phpunit/php-timer": "^1.0.6", 1719 | "phpunit/phpunit-mock-objects": "~2.3", 1720 | "sebastian/comparator": "~1.2.2", 1721 | "sebastian/diff": "~1.2", 1722 | "sebastian/environment": "~1.3", 1723 | "sebastian/exporter": "~1.2", 1724 | "sebastian/global-state": "~1.0", 1725 | "sebastian/version": "~1.0", 1726 | "symfony/yaml": "~2.1|~3.0" 1727 | }, 1728 | "suggest": { 1729 | "phpunit/php-invoker": "~1.1" 1730 | }, 1731 | "bin": [ 1732 | "phpunit" 1733 | ], 1734 | "type": "library", 1735 | "extra": { 1736 | "branch-alias": { 1737 | "dev-master": "4.8.x-dev" 1738 | } 1739 | }, 1740 | "autoload": { 1741 | "classmap": [ 1742 | "src/" 1743 | ] 1744 | }, 1745 | "notification-url": "https://packagist.org/downloads/", 1746 | "license": [ 1747 | "BSD-3-Clause" 1748 | ], 1749 | "authors": [ 1750 | { 1751 | "name": "Sebastian Bergmann", 1752 | "email": "sebastian@phpunit.de", 1753 | "role": "lead" 1754 | } 1755 | ], 1756 | "description": "The PHP Unit Testing framework.", 1757 | "homepage": "https://phpunit.de/", 1758 | "keywords": [ 1759 | "phpunit", 1760 | "testing", 1761 | "xunit" 1762 | ], 1763 | "time": "2017-06-21T08:07:12+00:00" 1764 | }, 1765 | { 1766 | "name": "phpunit/phpunit-mock-objects", 1767 | "version": "2.3.8", 1768 | "source": { 1769 | "type": "git", 1770 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 1771 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" 1772 | }, 1773 | "dist": { 1774 | "type": "zip", 1775 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", 1776 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", 1777 | "shasum": "" 1778 | }, 1779 | "require": { 1780 | "doctrine/instantiator": "^1.0.2", 1781 | "php": ">=5.3.3", 1782 | "phpunit/php-text-template": "~1.2", 1783 | "sebastian/exporter": "~1.2" 1784 | }, 1785 | "require-dev": { 1786 | "phpunit/phpunit": "~4.4" 1787 | }, 1788 | "suggest": { 1789 | "ext-soap": "*" 1790 | }, 1791 | "type": "library", 1792 | "extra": { 1793 | "branch-alias": { 1794 | "dev-master": "2.3.x-dev" 1795 | } 1796 | }, 1797 | "autoload": { 1798 | "classmap": [ 1799 | "src/" 1800 | ] 1801 | }, 1802 | "notification-url": "https://packagist.org/downloads/", 1803 | "license": [ 1804 | "BSD-3-Clause" 1805 | ], 1806 | "authors": [ 1807 | { 1808 | "name": "Sebastian Bergmann", 1809 | "email": "sb@sebastian-bergmann.de", 1810 | "role": "lead" 1811 | } 1812 | ], 1813 | "description": "Mock Object library for PHPUnit", 1814 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 1815 | "keywords": [ 1816 | "mock", 1817 | "xunit" 1818 | ], 1819 | "abandoned": true, 1820 | "time": "2015-10-02T06:51:40+00:00" 1821 | }, 1822 | { 1823 | "name": "sebastian/comparator", 1824 | "version": "1.2.4", 1825 | "source": { 1826 | "type": "git", 1827 | "url": "https://github.com/sebastianbergmann/comparator.git", 1828 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" 1829 | }, 1830 | "dist": { 1831 | "type": "zip", 1832 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 1833 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 1834 | "shasum": "" 1835 | }, 1836 | "require": { 1837 | "php": ">=5.3.3", 1838 | "sebastian/diff": "~1.2", 1839 | "sebastian/exporter": "~1.2 || ~2.0" 1840 | }, 1841 | "require-dev": { 1842 | "phpunit/phpunit": "~4.4" 1843 | }, 1844 | "type": "library", 1845 | "extra": { 1846 | "branch-alias": { 1847 | "dev-master": "1.2.x-dev" 1848 | } 1849 | }, 1850 | "autoload": { 1851 | "classmap": [ 1852 | "src/" 1853 | ] 1854 | }, 1855 | "notification-url": "https://packagist.org/downloads/", 1856 | "license": [ 1857 | "BSD-3-Clause" 1858 | ], 1859 | "authors": [ 1860 | { 1861 | "name": "Jeff Welch", 1862 | "email": "whatthejeff@gmail.com" 1863 | }, 1864 | { 1865 | "name": "Volker Dusch", 1866 | "email": "github@wallbash.com" 1867 | }, 1868 | { 1869 | "name": "Bernhard Schussek", 1870 | "email": "bschussek@2bepublished.at" 1871 | }, 1872 | { 1873 | "name": "Sebastian Bergmann", 1874 | "email": "sebastian@phpunit.de" 1875 | } 1876 | ], 1877 | "description": "Provides the functionality to compare PHP values for equality", 1878 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 1879 | "keywords": [ 1880 | "comparator", 1881 | "compare", 1882 | "equality" 1883 | ], 1884 | "time": "2017-01-29T09:50:25+00:00" 1885 | }, 1886 | { 1887 | "name": "sebastian/diff", 1888 | "version": "1.4.3", 1889 | "source": { 1890 | "type": "git", 1891 | "url": "https://github.com/sebastianbergmann/diff.git", 1892 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" 1893 | }, 1894 | "dist": { 1895 | "type": "zip", 1896 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", 1897 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", 1898 | "shasum": "" 1899 | }, 1900 | "require": { 1901 | "php": "^5.3.3 || ^7.0" 1902 | }, 1903 | "require-dev": { 1904 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 1905 | }, 1906 | "type": "library", 1907 | "extra": { 1908 | "branch-alias": { 1909 | "dev-master": "1.4-dev" 1910 | } 1911 | }, 1912 | "autoload": { 1913 | "classmap": [ 1914 | "src/" 1915 | ] 1916 | }, 1917 | "notification-url": "https://packagist.org/downloads/", 1918 | "license": [ 1919 | "BSD-3-Clause" 1920 | ], 1921 | "authors": [ 1922 | { 1923 | "name": "Kore Nordmann", 1924 | "email": "mail@kore-nordmann.de" 1925 | }, 1926 | { 1927 | "name": "Sebastian Bergmann", 1928 | "email": "sebastian@phpunit.de" 1929 | } 1930 | ], 1931 | "description": "Diff implementation", 1932 | "homepage": "https://github.com/sebastianbergmann/diff", 1933 | "keywords": [ 1934 | "diff" 1935 | ], 1936 | "time": "2017-05-22T07:24:03+00:00" 1937 | }, 1938 | { 1939 | "name": "sebastian/environment", 1940 | "version": "1.3.8", 1941 | "source": { 1942 | "type": "git", 1943 | "url": "https://github.com/sebastianbergmann/environment.git", 1944 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" 1945 | }, 1946 | "dist": { 1947 | "type": "zip", 1948 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", 1949 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", 1950 | "shasum": "" 1951 | }, 1952 | "require": { 1953 | "php": "^5.3.3 || ^7.0" 1954 | }, 1955 | "require-dev": { 1956 | "phpunit/phpunit": "^4.8 || ^5.0" 1957 | }, 1958 | "type": "library", 1959 | "extra": { 1960 | "branch-alias": { 1961 | "dev-master": "1.3.x-dev" 1962 | } 1963 | }, 1964 | "autoload": { 1965 | "classmap": [ 1966 | "src/" 1967 | ] 1968 | }, 1969 | "notification-url": "https://packagist.org/downloads/", 1970 | "license": [ 1971 | "BSD-3-Clause" 1972 | ], 1973 | "authors": [ 1974 | { 1975 | "name": "Sebastian Bergmann", 1976 | "email": "sebastian@phpunit.de" 1977 | } 1978 | ], 1979 | "description": "Provides functionality to handle HHVM/PHP environments", 1980 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1981 | "keywords": [ 1982 | "Xdebug", 1983 | "environment", 1984 | "hhvm" 1985 | ], 1986 | "time": "2016-08-18T05:49:44+00:00" 1987 | }, 1988 | { 1989 | "name": "sebastian/exporter", 1990 | "version": "1.2.2", 1991 | "source": { 1992 | "type": "git", 1993 | "url": "https://github.com/sebastianbergmann/exporter.git", 1994 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 1995 | }, 1996 | "dist": { 1997 | "type": "zip", 1998 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 1999 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 2000 | "shasum": "" 2001 | }, 2002 | "require": { 2003 | "php": ">=5.3.3", 2004 | "sebastian/recursion-context": "~1.0" 2005 | }, 2006 | "require-dev": { 2007 | "ext-mbstring": "*", 2008 | "phpunit/phpunit": "~4.4" 2009 | }, 2010 | "type": "library", 2011 | "extra": { 2012 | "branch-alias": { 2013 | "dev-master": "1.3.x-dev" 2014 | } 2015 | }, 2016 | "autoload": { 2017 | "classmap": [ 2018 | "src/" 2019 | ] 2020 | }, 2021 | "notification-url": "https://packagist.org/downloads/", 2022 | "license": [ 2023 | "BSD-3-Clause" 2024 | ], 2025 | "authors": [ 2026 | { 2027 | "name": "Jeff Welch", 2028 | "email": "whatthejeff@gmail.com" 2029 | }, 2030 | { 2031 | "name": "Volker Dusch", 2032 | "email": "github@wallbash.com" 2033 | }, 2034 | { 2035 | "name": "Bernhard Schussek", 2036 | "email": "bschussek@2bepublished.at" 2037 | }, 2038 | { 2039 | "name": "Sebastian Bergmann", 2040 | "email": "sebastian@phpunit.de" 2041 | }, 2042 | { 2043 | "name": "Adam Harvey", 2044 | "email": "aharvey@php.net" 2045 | } 2046 | ], 2047 | "description": "Provides the functionality to export PHP variables for visualization", 2048 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2049 | "keywords": [ 2050 | "export", 2051 | "exporter" 2052 | ], 2053 | "time": "2016-06-17T09:04:28+00:00" 2054 | }, 2055 | { 2056 | "name": "sebastian/global-state", 2057 | "version": "1.1.1", 2058 | "source": { 2059 | "type": "git", 2060 | "url": "https://github.com/sebastianbergmann/global-state.git", 2061 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 2062 | }, 2063 | "dist": { 2064 | "type": "zip", 2065 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 2066 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 2067 | "shasum": "" 2068 | }, 2069 | "require": { 2070 | "php": ">=5.3.3" 2071 | }, 2072 | "require-dev": { 2073 | "phpunit/phpunit": "~4.2" 2074 | }, 2075 | "suggest": { 2076 | "ext-uopz": "*" 2077 | }, 2078 | "type": "library", 2079 | "extra": { 2080 | "branch-alias": { 2081 | "dev-master": "1.0-dev" 2082 | } 2083 | }, 2084 | "autoload": { 2085 | "classmap": [ 2086 | "src/" 2087 | ] 2088 | }, 2089 | "notification-url": "https://packagist.org/downloads/", 2090 | "license": [ 2091 | "BSD-3-Clause" 2092 | ], 2093 | "authors": [ 2094 | { 2095 | "name": "Sebastian Bergmann", 2096 | "email": "sebastian@phpunit.de" 2097 | } 2098 | ], 2099 | "description": "Snapshotting of global state", 2100 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2101 | "keywords": [ 2102 | "global state" 2103 | ], 2104 | "time": "2015-10-12T03:26:01+00:00" 2105 | }, 2106 | { 2107 | "name": "sebastian/recursion-context", 2108 | "version": "1.0.5", 2109 | "source": { 2110 | "type": "git", 2111 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2112 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" 2113 | }, 2114 | "dist": { 2115 | "type": "zip", 2116 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 2117 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 2118 | "shasum": "" 2119 | }, 2120 | "require": { 2121 | "php": ">=5.3.3" 2122 | }, 2123 | "require-dev": { 2124 | "phpunit/phpunit": "~4.4" 2125 | }, 2126 | "type": "library", 2127 | "extra": { 2128 | "branch-alias": { 2129 | "dev-master": "1.0.x-dev" 2130 | } 2131 | }, 2132 | "autoload": { 2133 | "classmap": [ 2134 | "src/" 2135 | ] 2136 | }, 2137 | "notification-url": "https://packagist.org/downloads/", 2138 | "license": [ 2139 | "BSD-3-Clause" 2140 | ], 2141 | "authors": [ 2142 | { 2143 | "name": "Jeff Welch", 2144 | "email": "whatthejeff@gmail.com" 2145 | }, 2146 | { 2147 | "name": "Sebastian Bergmann", 2148 | "email": "sebastian@phpunit.de" 2149 | }, 2150 | { 2151 | "name": "Adam Harvey", 2152 | "email": "aharvey@php.net" 2153 | } 2154 | ], 2155 | "description": "Provides functionality to recursively process PHP variables", 2156 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2157 | "time": "2016-10-03T07:41:43+00:00" 2158 | }, 2159 | { 2160 | "name": "sebastian/version", 2161 | "version": "1.0.6", 2162 | "source": { 2163 | "type": "git", 2164 | "url": "https://github.com/sebastianbergmann/version.git", 2165 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" 2166 | }, 2167 | "dist": { 2168 | "type": "zip", 2169 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 2170 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 2171 | "shasum": "" 2172 | }, 2173 | "type": "library", 2174 | "autoload": { 2175 | "classmap": [ 2176 | "src/" 2177 | ] 2178 | }, 2179 | "notification-url": "https://packagist.org/downloads/", 2180 | "license": [ 2181 | "BSD-3-Clause" 2182 | ], 2183 | "authors": [ 2184 | { 2185 | "name": "Sebastian Bergmann", 2186 | "email": "sebastian@phpunit.de", 2187 | "role": "lead" 2188 | } 2189 | ], 2190 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2191 | "homepage": "https://github.com/sebastianbergmann/version", 2192 | "time": "2015-06-21T13:59:46+00:00" 2193 | }, 2194 | { 2195 | "name": "squizlabs/php_codesniffer", 2196 | "version": "3.5.3", 2197 | "source": { 2198 | "type": "git", 2199 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 2200 | "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" 2201 | }, 2202 | "dist": { 2203 | "type": "zip", 2204 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", 2205 | "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", 2206 | "shasum": "" 2207 | }, 2208 | "require": { 2209 | "ext-simplexml": "*", 2210 | "ext-tokenizer": "*", 2211 | "ext-xmlwriter": "*", 2212 | "php": ">=5.4.0" 2213 | }, 2214 | "require-dev": { 2215 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 2216 | }, 2217 | "bin": [ 2218 | "bin/phpcs", 2219 | "bin/phpcbf" 2220 | ], 2221 | "type": "library", 2222 | "extra": { 2223 | "branch-alias": { 2224 | "dev-master": "3.x-dev" 2225 | } 2226 | }, 2227 | "notification-url": "https://packagist.org/downloads/", 2228 | "license": [ 2229 | "BSD-3-Clause" 2230 | ], 2231 | "authors": [ 2232 | { 2233 | "name": "Greg Sherwood", 2234 | "role": "lead" 2235 | } 2236 | ], 2237 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 2238 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", 2239 | "keywords": [ 2240 | "phpcs", 2241 | "standards" 2242 | ], 2243 | "time": "2019-12-04T04:46:47+00:00" 2244 | }, 2245 | { 2246 | "name": "symfony/polyfill-ctype", 2247 | "version": "v1.10.0", 2248 | "source": { 2249 | "type": "git", 2250 | "url": "https://github.com/symfony/polyfill-ctype.git", 2251 | "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" 2252 | }, 2253 | "dist": { 2254 | "type": "zip", 2255 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", 2256 | "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", 2257 | "shasum": "" 2258 | }, 2259 | "require": { 2260 | "php": ">=5.3.3" 2261 | }, 2262 | "suggest": { 2263 | "ext-ctype": "For best performance" 2264 | }, 2265 | "type": "library", 2266 | "extra": { 2267 | "branch-alias": { 2268 | "dev-master": "1.9-dev" 2269 | } 2270 | }, 2271 | "autoload": { 2272 | "psr-4": { 2273 | "Symfony\\Polyfill\\Ctype\\": "" 2274 | }, 2275 | "files": [ 2276 | "bootstrap.php" 2277 | ] 2278 | }, 2279 | "notification-url": "https://packagist.org/downloads/", 2280 | "license": [ 2281 | "MIT" 2282 | ], 2283 | "authors": [ 2284 | { 2285 | "name": "Symfony Community", 2286 | "homepage": "https://symfony.com/contributors" 2287 | }, 2288 | { 2289 | "name": "Gert de Pagter", 2290 | "email": "BackEndTea@gmail.com" 2291 | } 2292 | ], 2293 | "description": "Symfony polyfill for ctype functions", 2294 | "homepage": "https://symfony.com", 2295 | "keywords": [ 2296 | "compatibility", 2297 | "ctype", 2298 | "polyfill", 2299 | "portable" 2300 | ], 2301 | "time": "2018-08-06T14:22:27+00:00" 2302 | }, 2303 | { 2304 | "name": "symfony/yaml", 2305 | "version": "v2.8.49", 2306 | "source": { 2307 | "type": "git", 2308 | "url": "https://github.com/symfony/yaml.git", 2309 | "reference": "02c1859112aa779d9ab394ae4f3381911d84052b" 2310 | }, 2311 | "dist": { 2312 | "type": "zip", 2313 | "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b", 2314 | "reference": "02c1859112aa779d9ab394ae4f3381911d84052b", 2315 | "shasum": "" 2316 | }, 2317 | "require": { 2318 | "php": ">=5.3.9", 2319 | "symfony/polyfill-ctype": "~1.8" 2320 | }, 2321 | "type": "library", 2322 | "extra": { 2323 | "branch-alias": { 2324 | "dev-master": "2.8-dev" 2325 | } 2326 | }, 2327 | "autoload": { 2328 | "psr-4": { 2329 | "Symfony\\Component\\Yaml\\": "" 2330 | }, 2331 | "exclude-from-classmap": [ 2332 | "/Tests/" 2333 | ] 2334 | }, 2335 | "notification-url": "https://packagist.org/downloads/", 2336 | "license": [ 2337 | "MIT" 2338 | ], 2339 | "authors": [ 2340 | { 2341 | "name": "Fabien Potencier", 2342 | "email": "fabien@symfony.com" 2343 | }, 2344 | { 2345 | "name": "Symfony Community", 2346 | "homepage": "https://symfony.com/contributors" 2347 | } 2348 | ], 2349 | "description": "Symfony Yaml Component", 2350 | "homepage": "https://symfony.com", 2351 | "time": "2018-11-11T11:18:13+00:00" 2352 | }, 2353 | { 2354 | "name": "vectorface/dunit", 2355 | "version": "v2.1.0", 2356 | "source": { 2357 | "type": "git", 2358 | "url": "https://github.com/Vectorface/dunit.git", 2359 | "reference": "3f04c7a8bef5ff100666e92db96e93f80a6640bf" 2360 | }, 2361 | "dist": { 2362 | "type": "zip", 2363 | "url": "https://api.github.com/repos/Vectorface/dunit/zipball/3f04c7a8bef5ff100666e92db96e93f80a6640bf", 2364 | "reference": "3f04c7a8bef5ff100666e92db96e93f80a6640bf", 2365 | "shasum": "" 2366 | }, 2367 | "require-dev": { 2368 | "phpunit/phpunit": "~4.3", 2369 | "symfony/console": "~2.5" 2370 | }, 2371 | "bin": [ 2372 | "bin/dunit" 2373 | ], 2374 | "type": "library", 2375 | "autoload": { 2376 | "psr-4": { 2377 | "Vectorface\\Dunit\\": "src" 2378 | } 2379 | }, 2380 | "notification-url": "https://packagist.org/downloads/", 2381 | "license": [ 2382 | "MIT" 2383 | ], 2384 | "authors": [ 2385 | { 2386 | "name": "Daniel Bruce", 2387 | "email": "dbruce@vectorface.com", 2388 | "role": "Developer" 2389 | }, 2390 | { 2391 | "name": "Cory Darby", 2392 | "email": "ckdarby@vectorface.com", 2393 | "role": "Developer" 2394 | } 2395 | ], 2396 | "description": "Test code against multiple versions of PHP with the help of docker", 2397 | "homepage": "https://github.com/Vectorface/dunit", 2398 | "keywords": [ 2399 | "docker", 2400 | "php", 2401 | "phpunit", 2402 | "testing" 2403 | ], 2404 | "time": "2015-03-31T19:30:02+00:00" 2405 | }, 2406 | { 2407 | "name": "webmozart/assert", 2408 | "version": "1.4.0", 2409 | "source": { 2410 | "type": "git", 2411 | "url": "https://github.com/webmozart/assert.git", 2412 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" 2413 | }, 2414 | "dist": { 2415 | "type": "zip", 2416 | "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", 2417 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", 2418 | "shasum": "" 2419 | }, 2420 | "require": { 2421 | "php": "^5.3.3 || ^7.0", 2422 | "symfony/polyfill-ctype": "^1.8" 2423 | }, 2424 | "require-dev": { 2425 | "phpunit/phpunit": "^4.6", 2426 | "sebastian/version": "^1.0.1" 2427 | }, 2428 | "type": "library", 2429 | "extra": { 2430 | "branch-alias": { 2431 | "dev-master": "1.3-dev" 2432 | } 2433 | }, 2434 | "autoload": { 2435 | "psr-4": { 2436 | "Webmozart\\Assert\\": "src/" 2437 | } 2438 | }, 2439 | "notification-url": "https://packagist.org/downloads/", 2440 | "license": [ 2441 | "MIT" 2442 | ], 2443 | "authors": [ 2444 | { 2445 | "name": "Bernhard Schussek", 2446 | "email": "bschussek@gmail.com" 2447 | } 2448 | ], 2449 | "description": "Assertions to validate method input/output with nice error messages.", 2450 | "keywords": [ 2451 | "assert", 2452 | "check", 2453 | "validate" 2454 | ], 2455 | "time": "2018-12-25T11:19:39+00:00" 2456 | } 2457 | ], 2458 | "aliases": [], 2459 | "minimum-stability": "stable", 2460 | "stability-flags": [], 2461 | "prefer-stable": false, 2462 | "prefer-lowest": false, 2463 | "platform": { 2464 | "php": "^5.5|^7.0" 2465 | }, 2466 | "platform-dev": [], 2467 | "platform-overrides": { 2468 | "php": "5.5" 2469 | } 2470 | } 2471 | -------------------------------------------------------------------------------- /phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Object Calisthenics 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/HttpClientAdapter.php: -------------------------------------------------------------------------------- 1 | loop = $loop; 60 | 61 | $this->setDnsResolver($dnsResolver); 62 | $this->setHttpClient($httpClient); 63 | $this->setRequestFactory($requestFactory); 64 | } 65 | 66 | /** 67 | * @param HttpClient $httpClient 68 | */ 69 | public function setHttpClient(HttpClient $httpClient = null) 70 | { 71 | if (!($httpClient instanceof HttpClient)) { 72 | $this->setDnsResolver($this->dnsResolver); 73 | 74 | if (class_exists('React\HttpClient\Factory')) { 75 | $factory = new HttpClientFactory(); 76 | $httpClient = $factory->create($this->loop, $this->dnsResolver); 77 | } else { 78 | $httpClient = new Client( 79 | $this->loop, 80 | new Connector( 81 | $this->loop, 82 | [ 83 | 'dns' => $this->dnsResolver, 84 | ] 85 | ) 86 | ); 87 | } 88 | } 89 | 90 | $this->httpClient = $httpClient; 91 | } 92 | 93 | /** 94 | * @return HttpClient 95 | */ 96 | public function getHttpClient() 97 | { 98 | return $this->httpClient; 99 | } 100 | 101 | /** 102 | * @param DnsResolver $dnsResolver 103 | */ 104 | public function setDnsResolver(DnsResolver $dnsResolver = null) 105 | { 106 | if (!($dnsResolver instanceof DnsResolver)) { 107 | $dnsResolverFactory = new DnsFactory(); 108 | $config = DnsConfig::loadSystemConfigBlocking(); 109 | $nameserver = $config->nameservers ? reset($config->nameservers) : '8.8.8.8'; 110 | $dnsResolver = $dnsResolverFactory->createCached($nameserver, $this->loop); 111 | } 112 | 113 | $this->dnsResolver = $dnsResolver; 114 | } 115 | 116 | /** 117 | * @return DnsResolver 118 | */ 119 | public function getDnsResolver() 120 | { 121 | return $this->dnsResolver; 122 | } 123 | 124 | /** 125 | * @param RequestFactory $requestFactory 126 | */ 127 | public function setRequestFactory(RequestFactory $requestFactory = null) 128 | { 129 | if (!($requestFactory instanceof RequestFactory)) { 130 | $requestFactory = new RequestFactory(); 131 | } 132 | 133 | $this->requestFactory = $requestFactory; 134 | } 135 | 136 | /** 137 | * @return RequestFactory 138 | */ 139 | public function getRequestFactory() 140 | { 141 | return $this->requestFactory; 142 | } 143 | 144 | /** 145 | * @param RequestInterface $request 146 | * @param array $options 147 | * @return Promise 148 | */ 149 | public function __invoke(RequestInterface $request, array $options) 150 | { 151 | $ready = false; 152 | $promise = new Promise(function () use (&$ready) { 153 | trigger_error( 154 | 'Using Promise::wait with the ReactPHP handler is deprecated due to incompatibilities in the latest ' . 155 | 'event loop versions. See ' . 156 | 'https://github.com/WyriHaximus/react-guzzle-psr7/wiki/Promise-wait-alternatives for alternatives.', 157 | E_USER_DEPRECATED 158 | ); 159 | do { 160 | $this->loop->stop(); 161 | $this->loop->futureTick(function () { 162 | $this->loop->stop(); 163 | }); 164 | $this->loop->run(); 165 | } while (!$ready); 166 | $this->loop->futureTick(function () { 167 | $this->loop->stop(); 168 | $this->loop->run(); 169 | }); 170 | }); 171 | 172 | $this->requestFactory->create($request, $options, $this->dnsResolver, $this->httpClient, $this->loop)-> 173 | then( 174 | function (ResponseInterface $response) use (&$ready, $promise) { 175 | $ready = true; 176 | $promise->resolve($response); 177 | 178 | $this->invokeQueue(); 179 | }, 180 | function ($error) use (&$ready, $promise, $options) { 181 | $ready = true; 182 | if (isset($options['http_errors']) && 183 | $options['http_errors'] === false && 184 | $error instanceof ResponseException 185 | ) { 186 | $promise->resolve($error->getResponse()); 187 | } else { 188 | $promise->reject($error); 189 | } 190 | 191 | $this->invokeQueue(); 192 | } 193 | ) 194 | ; 195 | 196 | /** @var TimerInterface $timer */ 197 | $timer = $this->loop->addPeriodicTimer(static::QUEUE_TIMER_INTERVAL, function () use (&$ready, &$timer) { 198 | $this->invokeQueue(); 199 | if ($ready) { 200 | $this->loop->cancelTimer($timer); 201 | self::keepInvokingQueueUntillItsDone($this->loop); 202 | } 203 | }); 204 | 205 | return $promise; 206 | } 207 | 208 | protected function invokeQueue() 209 | { 210 | $this->loop->futureTick(function () { 211 | \GuzzleHttp\Promise\queue()->run(); 212 | }); 213 | } 214 | 215 | protected static function keepInvokingQueueUntillItsDone(LoopInterface $loop) 216 | { 217 | $timer = $loop->addPeriodicTimer(static::QUEUE_TIMER_INTERVAL, function () use (&$timer, $loop) { 218 | \GuzzleHttp\Promise\queue()->run(); 219 | if (\GuzzleHttp\Promise\queue()->isEmpty()) { 220 | $loop->cancelTimer($timer); 221 | } 222 | }); 223 | } 224 | } 225 | --------------------------------------------------------------------------------