From d198ea4c24ad99e966d08fa85a099f3e9efc805f Mon Sep 17 00:00:00 2001 From: Mike van Goor Date: Thu, 26 Jan 2017 22:51:16 +0100 Subject: [PATCH 1/6] Implement ssl context configuration and hand it over to react --- composer.json | 2 +- src/Client.php | 54 +++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 46 insertions(+), 10 deletions(-) mode change 100644 => 100755 src/Client.php diff --git a/composer.json b/composer.json index 23deec9..0c1e9e9 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "phergie/phergie-irc-connection": "~2.0", "react/event-loop": "~0.4.0", "react/stream": "~0.4.2", - "react/socket-client": "~0.4.2", + "react/socket-client": "~0.5.0", "react/dns": "~0.4.0", "react/promise": "~2.0", "psr/log": "~1.0", diff --git a/src/Client.php b/src/Client.php old mode 100644 new mode 100755 index a26f73c..1d32a4e --- a/src/Client.php +++ b/src/Client.php @@ -258,6 +258,28 @@ protected function getForceIpv4Flag(ConnectionInterface $connection) return (boolean) $connection->getOption('force-ipv4') ?: false; } + /** + * Extracts the value of the allow-selfsigned option from a given connection. + * + * @param \Phergie\Irc\ConnectionInterface $connection + * @return boolean TRUE to allow self signed certificates, FALSE otherwise + */ + protected function getAllowSelfSignedFlag(ConnectionInterface $connection) + { + return (boolean) $connection->getOption('allow-selfsigned') ?: false; + } + + /** + * Extracts the value of the verify_peer option from a given connection. + * + * @param \Phergie\Irc\ConnectionInterface $connection + * @return boolean TRUE to verify peer, FALSE otherwise + */ + protected function getVerifyPeerFlag(ConnectionInterface $connection) + { + return (boolean) $connection->getOption('allow-verify_peer') ?: false; + } + /** * Derives a remote for a given connection. * @@ -300,6 +322,28 @@ protected function getContext(ConnectionInterface $connection) return $context; } + /** + * Derives a set of socket context options for a given secure connection. + * + * @param \Phergie\Irc\ConnectionInterface $connection + * @return array Associative array of context option key-value pairs + */ + protected function getSecureContext(ConnectionInterface $connection) + { + $context = array(); + if ($this->getForceIpv4Flag($connection)) { + $context['bindto'] = '0.0.0.0:0'; + } + if ($this->getVerifyPeerFlag($connection)) { + $context['verify_peer'] = false; + } + if ($this->getAllowSelfSignedFlag($connection)) { + $context['allow_self_signed'] = true; + } + //$context = array('socket' => $context); + return $context; + } + /** * Returns a stream for a socket connection. * @@ -601,7 +645,7 @@ protected function getSecureConnector() if (!$this->secureConnector) { $loop = $this->getLoop(); $connector = new \React\SocketClient\Connector($loop, $this->getResolver()); - $this->secureConnector = new \React\SocketClient\SecureConnector($connector, $loop); + $this->secureConnector = new \React\SocketClient\SecureConnector($connector, $loop, $this->getSecureContext($connection)); } return $this->secureConnector; } @@ -615,14 +659,6 @@ protected function getSecureConnector() */ protected function addSecureConnection(ConnectionInterface $connection) { - // @see https://github.com/reactphp/socket-client/issues/4 - if ($this->getForceIpv4Flag($connection)) { - throw new Exception( - 'Using the SSL transport and IPv4 together is not currently supported', - Exception::ERR_CONNECTION_STATE_UNSUPPORTED - ); - } - $hostname = $connection->getServerHostname(); $port = $connection->getServerPort(); From 56170002b4d11989520cdd55d312a4a432dd4dc8 Mon Sep 17 00:00:00 2001 From: Mike van Goor Date: Thu, 2 Feb 2017 21:38:55 +0100 Subject: [PATCH 2/6] Update socket-client dependency version to 0.5.0 This adds the ability to parse along a secure context This also resolved issue #25 Additionally added 2 new socket options for ssl: allow-selfsigned allow-verify_peer If you set these 2 you should be able to connect to self-signed certificate enabled ssl irc servers. Obviously only use this for developing and testing, in production you should always connect properly signed ssl enabled irc server. --- composer.lock | 859 +++++++++++++++++++++++++++++++------------ src/Client.php | 4 +- tests/ClientTest.php | 12 +- 3 files changed, 635 insertions(+), 240 deletions(-) diff --git a/composer.lock b/composer.lock index 007af17..619af25 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "c38446c0b5dece82b3ad6cb9ec5931c2", - "content-hash": "6f01fbb3e6e17957ea27377241ee2b05", + "content-hash": "de8b686396778df8c4c5fe326ccd90e6", "packages": [ { "name": "evenement/evenement", @@ -51,20 +50,20 @@ "event-dispatcher", "event-emitter" ], - "time": "2012-11-02 14:49:47" + "time": "2012-11-02T14:49:47+00:00" }, { "name": "monolog/monolog", - "version": "1.17.2", + "version": "1.22.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24" + "reference": "bad29cb8d18ab0315e6c477751418a82c850d558" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24", - "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bad29cb8d18ab0315e6c477751418a82c850d558", + "reference": "bad29cb8d18ab0315e6c477751418a82c850d558", "shasum": "" }, "require": { @@ -75,17 +74,17 @@ "psr/log-implementation": "1.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9", + "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", "phpunit/phpunit": "~4.5", "phpunit/phpunit-mock-objects": "2.3.0", - "raven/raven": "^0.13", "ruflin/elastica": ">=0.90 <3.0", - "swiftmailer/swiftmailer": "~5.3", - "videlalvaro/php-amqplib": "~2.4" + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -93,16 +92,17 @@ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", "ext-mongo": "Allow sending log messages to a MongoDB server", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", - "raven/raven": "Allow sending log messages to a Sentry server", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" + "sentry/sentry": "Allow sending log messages to a Sentry server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.16.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -128,7 +128,7 @@ "logging", "psr-3" ], - "time": "2015-10-14 12:51:02" + "time": "2016-11-26T00:15:39+00:00" }, { "name": "phergie/phergie-irc-connection", @@ -167,7 +167,7 @@ "irc", "server" ], - "time": "2015-05-26 15:14:31" + "time": "2015-05-26T15:14:31+00:00" }, { "name": "phergie/phergie-irc-generator", @@ -204,27 +204,27 @@ "generator", "irc" ], - "time": "2015-07-16 16:26:11" + "time": "2015-07-16T16:26:11+00:00" }, { "name": "phergie/phergie-irc-parser", - "version": "2.1.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/phergie/phergie-irc-parser.git", - "reference": "29fd291f93b0881c5fc47ae6e5e41b96e7824805" + "reference": "2bf9e629d91276cb654e2ed270ea05030372032c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phergie/phergie-irc-parser/zipball/29fd291f93b0881c5fc47ae6e5e41b96e7824805", - "reference": "29fd291f93b0881c5fc47ae6e5e41b96e7824805", + "url": "https://api.github.com/repos/phergie/phergie-irc-parser/zipball/2bf9e629d91276cb654e2ed270ea05030372032c", + "reference": "2bf9e629d91276cb654e2ed270ea05030372032c", "shasum": "" }, "require": { - "php": ">=5.4.2" + "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "~4.6" + "phergie/phergie-irc-bot-react-development": "~1.0.0" }, "type": "library", "autoload": { @@ -241,7 +241,7 @@ "irc", "parser" ], - "time": "2015-07-16 16:26:41" + "time": "2016-03-07T14:49:25+00:00" }, { "name": "psr/log", @@ -279,35 +279,30 @@ "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2012-12-21T11:40:51+00:00" }, { "name": "react/cache", - "version": "v0.4.0", + "version": "v0.4.1", "source": { "type": "git", "url": "https://github.com/reactphp/cache.git", - "reference": "9882ab5d8b00617baae83c6996f5a34668c11beb" + "reference": "558f614891341b1d817a8cdf9a358948ec49638f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/9882ab5d8b00617baae83c6996f5a34668c11beb", - "reference": "9882ab5d8b00617baae83c6996f5a34668c11beb", + "url": "https://api.github.com/repos/reactphp/cache/zipball/558f614891341b1d817a8cdf9a358948ec49638f", + "reference": "558f614891341b1d817a8cdf9a358948ec49638f", "shasum": "" }, "require": { - "php": ">=5.4.0", - "react/promise": "~2.0" + "php": ">=5.3.0", + "react/promise": "~2.0|~1.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.4-dev" - } - }, "autoload": { "psr-4": { - "React\\Cache\\": "" + "React\\Cache\\": "src\\" } }, "notification-url": "https://packagist.org/downloads/", @@ -318,37 +313,32 @@ "keywords": [ "cache" ], - "time": "2014-02-02 01:11:26" + "time": "2016-02-25T18:17:16+00:00" }, { "name": "react/dns", - "version": "v0.4.1", + "version": "v0.4.3", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "8c5ccc35dcb4b06b70eb9201842363fac7b0f3cf" + "reference": "751b3129556e04944f164e3556a20ca6e201e459" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/8c5ccc35dcb4b06b70eb9201842363fac7b0f3cf", - "reference": "8c5ccc35dcb4b06b70eb9201842363fac7b0f3cf", + "url": "https://api.github.com/repos/reactphp/dns/zipball/751b3129556e04944f164e3556a20ca6e201e459", + "reference": "751b3129556e04944f164e3556a20ca6e201e459", "shasum": "" }, "require": { - "php": ">=5.4.0", - "react/cache": "0.4.*", - "react/promise": "~2.0", - "react/socket": "0.4.*" + "php": ">=5.3.0", + "react/cache": "~0.4.0|~0.3.0", + "react/promise": "~2.1|~1.2", + "react/socket": "~0.4.0|~0.3.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.4-dev" - } - }, "autoload": { "psr-4": { - "React\\Dns\\": "" + "React\\Dns\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -360,20 +350,20 @@ "dns", "dns-resolver" ], - "time": "2014-04-12 14:09:10" + "time": "2016-08-01T10:09:07+00:00" }, { "name": "react/event-loop", - "version": "v0.4.1", + "version": "v0.4.2", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "18c5297087ca01de85518e2b55078f444144aa1b" + "reference": "164799f73175e1c80bba92a220ea35df6ca371dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/18c5297087ca01de85518e2b55078f444144aa1b", - "reference": "18c5297087ca01de85518e2b55078f444144aa1b", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/164799f73175e1c80bba92a220ea35df6ca371dd", + "reference": "164799f73175e1c80bba92a220ea35df6ca371dd", "shasum": "" }, "require": { @@ -387,12 +377,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "0.4-dev" + "dev-master": "0.5-dev" } }, "autoload": { "psr-4": { - "React\\EventLoop\\": "" + "React\\EventLoop\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -401,33 +391,29 @@ ], "description": "Event loop abstraction layer that libraries can use for evented I/O.", "keywords": [ + "asynchronous", "event-loop" ], - "time": "2014-02-26 17:36:58" + "time": "2016-03-08T02:09:32+00:00" }, { "name": "react/promise", - "version": "v2.2.1", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "3b6fca09c7d56321057fa8867c8dbe1abf648627" + "reference": "2760f3898b7e931aa71153852dcd48a75c9b95db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/3b6fca09c7d56321057fa8867c8dbe1abf648627", - "reference": "3b6fca09c7d56321057fa8867c8dbe1abf648627", + "url": "https://api.github.com/repos/reactphp/promise/zipball/2760f3898b7e931aa71153852dcd48a75c9b95db", + "reference": "2760f3898b7e931aa71153852dcd48a75c9b95db", "shasum": "" }, "require": { "php": ">=5.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { "psr-4": { "React\\Promise\\": "src/" @@ -447,34 +433,89 @@ } ], "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "time": "2015-07-03 13:48:55" + "keywords": [ + "promise", + "promises" + ], + "time": "2016-12-22T14:09:01+00:00" }, { - "name": "react/socket", - "version": "v0.4.2", + "name": "react/promise-timer", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "a6acf405ca53fc6cfbfe7c77778ededff46aa7cc" + "url": "https://github.com/reactphp/promise-timer.git", + "reference": "ddedc67bfd7f579fc83e66ff67e3564b179297dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/a6acf405ca53fc6cfbfe7c77778ededff46aa7cc", - "reference": "a6acf405ca53fc6cfbfe7c77778ededff46aa7cc", + "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/ddedc67bfd7f579fc83e66ff67e3564b179297dd", + "reference": "ddedc67bfd7f579fc83e66ff67e3564b179297dd", "shasum": "" }, "require": { - "evenement/evenement": "~2.0", - "php": ">=5.4.0", - "react/event-loop": "0.4.*", - "react/stream": "0.4.*" + "php": ">=5.3", + "react/event-loop": "~0.4.0|~0.3.0", + "react/promise": "~2.1|~1.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.4-dev" + "autoload": { + "psr-4": { + "React\\Promise\\Timer\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@lueck.tv" } + ], + "description": "Trivial timeout implementation for Promises", + "homepage": "https://github.com/react/promise-timer", + "keywords": [ + "async", + "event-loop", + "promise", + "reactphp", + "timeout", + "timer" + ], + "time": "2016-12-27T08:12:19+00:00" + }, + { + "name": "react/socket", + "version": "v0.4.6", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "cf074e53c974df52388ebd09710a9018894745d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/cf074e53c974df52388ebd09710a9018894745d2", + "reference": "cf074e53c974df52388ebd09710a9018894745d2", + "shasum": "" }, + "require": { + "evenement/evenement": "~2.0|~1.0", + "php": ">=5.3.0", + "react/event-loop": "0.4.*|0.3.*", + "react/promise": "^2.0 || ^1.1", + "react/stream": "^0.4.5" + }, + "require-dev": { + "clue/block-react": "^1.1", + "phpunit/phpunit": "~4.8", + "react/socket-client": "^0.5.1" + }, + "type": "library", "autoload": { "psr-4": { "React\\Socket\\": "src" @@ -484,39 +525,38 @@ "license": [ "MIT" ], - "description": "Library for building an evented socket server.", + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server for React PHP", "keywords": [ "Socket" ], - "time": "2014-05-25 17:02:16" + "time": "2017-01-26T09:23:38+00:00" }, { "name": "react/socket-client", - "version": "v0.4.4", + "version": "v0.5.3", "source": { "type": "git", "url": "https://github.com/reactphp/socket-client.git", - "reference": "3ca814d7e03e2a5bffeaa5773423107957a8aece" + "reference": "5570838d436f056695e9a5eaf01dd5f80386dd26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket-client/zipball/3ca814d7e03e2a5bffeaa5773423107957a8aece", - "reference": "3ca814d7e03e2a5bffeaa5773423107957a8aece", + "url": "https://api.github.com/repos/reactphp/socket-client/zipball/5570838d436f056695e9a5eaf01dd5f80386dd26", + "reference": "5570838d436f056695e9a5eaf01dd5f80386dd26", "shasum": "" }, "require": { - "php": ">=5.4.0", - "react/dns": "0.4.*", - "react/event-loop": "0.4.*", - "react/promise": "~2.0", - "react/stream": "0.4.*" + "php": ">=5.3.0", + "react/dns": "0.4.*|0.3.*", + "react/event-loop": "0.4.*|0.3.*", + "react/promise": "^2.1 || ^1.2", + "react/promise-timer": "~1.0", + "react/stream": "^0.4.5" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.4-dev" - } + "require-dev": { + "clue/block-react": "^1.1" }, + "type": "library", "autoload": { "psr-4": { "React\\SocketClient\\": "src" @@ -530,20 +570,20 @@ "keywords": [ "Socket" ], - "time": "2015-09-23 22:40:04" + "time": "2016-12-24T11:19:15+00:00" }, { "name": "react/stream", - "version": "v0.4.3", + "version": "v0.4.6", "source": { "type": "git", "url": "https://github.com/reactphp/stream.git", - "reference": "305b2328d2a2e157bc13b61a0f5c6e41b666b188" + "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/305b2328d2a2e157bc13b61a0f5c6e41b666b188", - "reference": "305b2328d2a2e157bc13b61a0f5c6e41b666b188", + "url": "https://api.github.com/repos/reactphp/stream/zipball/44dc7f51ea48624110136b535b9ba44fd7d0c1ee", + "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee", "shasum": "" }, "require": { @@ -551,6 +591,7 @@ "php": ">=5.3.8" }, "require-dev": { + "clue/stream-filter": "~1.2", "react/event-loop": "^0.4|^0.3", "react/promise": "^2.0|^1.0" }, @@ -559,11 +600,6 @@ "react/promise": "^2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5-dev" - } - }, "autoload": { "psr-4": { "React\\Stream\\": "src" @@ -578,7 +614,7 @@ "pipe", "stream" ], - "time": "2015-10-07 18:32:58" + "time": "2017-01-25T14:44:14+00:00" } ], "packages-dev": [ @@ -638,7 +674,7 @@ "codeclimate", "coverage" ], - "time": "2015-09-08 14:22:33" + "time": "2015-09-08T14:22:33+00:00" }, { "name": "doctrine/instantiator", @@ -692,7 +728,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "guzzle/guzzle", @@ -787,20 +823,20 @@ "rest", "web service" ], - "time": "2015-03-18 18:23:50" + "time": "2015-03-18T18:23:50+00:00" }, { "name": "phake/phake", - "version": "v2.2.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/mlively/Phake.git", - "reference": "9c3c287ef3f23d5ca438917ab1a4f8c47b654b4b" + "reference": "2202d361d34f2712dcc257afdedc6c30060dc9bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mlively/Phake/zipball/9c3c287ef3f23d5ca438917ab1a4f8c47b654b4b", - "reference": "9c3c287ef3f23d5ca438917ab1a4f8c47b654b4b", + "url": "https://api.github.com/repos/mlively/Phake/zipball/2202d361d34f2712dcc257afdedc6c30060dc9bd", + "reference": "2202d361d34f2712dcc257afdedc6c30060dc9bd", "shasum": "" }, "require": { @@ -845,20 +881,20 @@ "mock", "testing" ], - "time": "2015-11-30 17:02:04" + "time": "2016-03-04T18:49:33+00:00" }, { "name": "phergie/phergie-irc-bot-react-development", - "version": "1.0.0", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/phergie/phergie-irc-bot-react-development.git", - "reference": "ee56a406c4bedab97621a3113652210f39aa961c" + "reference": "a2a077dbe4cea47d477659233c181e154c4e831f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phergie/phergie-irc-bot-react-development/zipball/ee56a406c4bedab97621a3113652210f39aa961c", - "reference": "ee56a406c4bedab97621a3113652210f39aa961c", + "url": "https://api.github.com/repos/phergie/phergie-irc-bot-react-development/zipball/a2a077dbe4cea47d477659233c181e154c4e831f", + "reference": "a2a077dbe4cea47d477659233c181e154c4e831f", "shasum": "" }, "require": { @@ -866,10 +902,12 @@ "phake/phake": "~2.0", "phpunit/phpunit": "~4.6", "satooshi/php-coveralls": "0.6.1", + "squizlabs/php_codesniffer": "^1.5.3", "symfony/config": "~2.0", "symfony/console": "~2.0", "symfony/filesystem": "~2.0", - "symfony/stopwatch": "~2.0" + "symfony/stopwatch": "~2.0", + "vectorface/dunit": "^2.0" }, "type": "library", "notification-url": "https://packagist.org/downloads/", @@ -882,41 +920,138 @@ "irc", "react" ], - "time": "2015-11-10 00:38:33" + "time": "2015-11-10T03:33:26+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27T11:43:31+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30T07:12:33+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "phpDocumentor": [ + "psr-4": { + "phpDocumentor\\Reflection\\": [ "src/" ] } @@ -928,37 +1063,40 @@ "authors": [ { "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "email": "me@mikevanriel.com" } ], - "time": "2015-02-03 12:10:50" + "time": "2016-11-25T06:54:22+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.5.0", + "version": "v1.6.2", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", - "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", - "phpdocumentor/reflection-docblock": "~2.0", - "sebastian/comparator": "~1.1" + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0|^2.0" }, "require-dev": { - "phpspec/phpspec": "~2.0" + "phpspec/phpspec": "^2.0", + "phpunit/phpunit": "^4.8 || ^5.6.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { @@ -991,7 +1129,7 @@ "spy", "stub" ], - "time": "2015-08-13 10:07:40" + "time": "2016-11-21T14:58:47+00:00" }, { "name": "phpunit/php-code-coverage", @@ -1053,20 +1191,20 @@ "testing", "xunit" ], - "time": "2015-10-06 15:47:00" + "time": "2015-10-06T15:47:00+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", "shasum": "" }, "require": { @@ -1100,7 +1238,7 @@ "filesystem", "iterator" ], - "time": "2015-06-21 13:08:43" + "time": "2016-10-03T07:40:28+00:00" }, { "name": "phpunit/php-text-template", @@ -1141,25 +1279,28 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", - "version": "1.0.7", + "version": "1.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "require-dev": { + "phpunit/phpunit": "~4|~5" + }, "type": "library", "autoload": { "classmap": [ @@ -1182,20 +1323,20 @@ "keywords": [ "timer" ], - "time": "2015-06-21 08:01:12" + "time": "2016-05-12T18:03:57+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.8", + "version": "1.4.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", "shasum": "" }, "require": { @@ -1231,20 +1372,20 @@ "keywords": [ "tokenizer" ], - "time": "2015-09-15 10:49:45" + "time": "2016-11-15T14:06:22+00:00" }, { "name": "phpunit/phpunit", - "version": "4.8.21", + "version": "4.8.34", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ea76b17bced0500a28098626b84eda12dbcf119c" + "reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea76b17bced0500a28098626b84eda12dbcf119c", - "reference": "ea76b17bced0500a28098626b84eda12dbcf119c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7eb45205d27edd94bd2b3614085ea158bd1e2bca", + "reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca", "shasum": "" }, "require": { @@ -1258,9 +1399,9 @@ "phpunit/php-code-coverage": "~2.1", "phpunit/php-file-iterator": "~1.4", "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": ">=1.0.6", + "phpunit/php-timer": "^1.0.6", "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.1", + "sebastian/comparator": "~1.2.2", "sebastian/diff": "~1.2", "sebastian/environment": "~1.3", "sebastian/exporter": "~1.2", @@ -1303,7 +1444,7 @@ "testing", "xunit" ], - "time": "2015-12-12 07:45:58" + "time": "2017-01-26T16:15:36+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -1359,7 +1500,7 @@ "mock", "xunit" ], - "time": "2015-10-02 06:51:40" + "time": "2015-10-02T06:51:40+00:00" }, { "name": "satooshi/php-coveralls", @@ -1427,26 +1568,26 @@ "github", "test" ], - "time": "2013-05-04 08:07:33" + "time": "2013-05-04T08:07:33+00:00" }, { "name": "sebastian/comparator", - "version": "1.2.0", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", "shasum": "" }, "require": { "php": ">=5.3.3", "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" + "sebastian/exporter": "~1.2 || ~2.0" }, "require-dev": { "phpunit/phpunit": "~4.4" @@ -1491,7 +1632,7 @@ "compare", "equality" ], - "time": "2015-07-26 15:48:44" + "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", @@ -1543,27 +1684,27 @@ "keywords": [ "diff" ], - "time": "2015-12-08 07:14:41" + "time": "2015-12-08T07:14:41+00:00" }, { "name": "sebastian/environment", - "version": "1.3.3", + "version": "1.3.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6e7133793a8e5a5714a551a8324337374be209df" + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e7133793a8e5a5714a551a8324337374be209df", - "reference": "6e7133793a8e5a5714a551a8324337374be209df", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.3.3 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^4.8 || ^5.0" }, "type": "library", "extra": { @@ -1593,20 +1734,20 @@ "environment", "hhvm" ], - "time": "2015-12-02 08:37:27" + "time": "2016-08-18T05:49:44+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e" + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", - "reference": "7ae5513327cb536431847bcc0c10edba2701064e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", "shasum": "" }, "require": { @@ -1614,12 +1755,13 @@ "sebastian/recursion-context": "~1.0" }, "require-dev": { + "ext-mbstring": "*", "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -1659,7 +1801,7 @@ "export", "exporter" ], - "time": "2015-06-21 07:55:53" + "time": "2016-06-17T09:04:28+00:00" }, { "name": "sebastian/global-state", @@ -1710,7 +1852,7 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/recursion-context", @@ -1763,7 +1905,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-11-11 19:50:13" + "time": "2015-11-11T19:50:13+00:00" }, { "name": "sebastian/version", @@ -1798,26 +1940,107 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21 13:59:46" + "time": "2015-06-21T13:59:46+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "1.5.6", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "6f3e42d311b882b25b4d409d23a289f4d3b803d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6f3e42d311b882b25b4d409d23a289f4d3b803d5", + "reference": "6f3e42d311b882b25b4d409d23a289f4d3b803d5", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.1.2" + }, + "suggest": { + "phpunit/php-timer": "dev-master" + }, + "bin": [ + "scripts/phpcs" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-phpcs-fixer": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "CodeSniffer.php", + "CodeSniffer/CLI.php", + "CodeSniffer/Exception.php", + "CodeSniffer/File.php", + "CodeSniffer/Report.php", + "CodeSniffer/Reporting.php", + "CodeSniffer/Sniff.php", + "CodeSniffer/Tokens.php", + "CodeSniffer/Reports/", + "CodeSniffer/CommentParser/", + "CodeSniffer/Tokenizers/", + "CodeSniffer/DocGenerators/", + "CodeSniffer/Standards/AbstractPatternSniff.php", + "CodeSniffer/Standards/AbstractScopeSniff.php", + "CodeSniffer/Standards/AbstractVariableSniff.php", + "CodeSniffer/Standards/IncorrectPatternException.php", + "CodeSniffer/Standards/Generic/Sniffs/", + "CodeSniffer/Standards/MySource/Sniffs/", + "CodeSniffer/Standards/PEAR/Sniffs/", + "CodeSniffer/Standards/PSR1/Sniffs/", + "CodeSniffer/Standards/PSR2/Sniffs/", + "CodeSniffer/Standards/Squiz/Sniffs/", + "CodeSniffer/Standards/Zend/Sniffs/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2014-12-04T22:32:15+00:00" }, { "name": "symfony/config", - "version": "v2.8.0", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "f21c97aec1b5302d2dc0d17047ea8f4e4ff93aae" + "reference": "4537f2413348fe271c2c4b09da219ed615d79f9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f21c97aec1b5302d2dc0d17047ea8f4e4ff93aae", - "reference": "f21c97aec1b5302d2dc0d17047ea8f4e4ff93aae", + "url": "https://api.github.com/repos/symfony/config/zipball/4537f2413348fe271c2c4b09da219ed615d79f9c", + "reference": "4537f2413348fe271c2c4b09da219ed615d79f9c", "shasum": "" }, "require": { "php": ">=5.3.9", "symfony/filesystem": "~2.3|~3.0.0" }, + "require-dev": { + "symfony/yaml": "~2.7|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, "type": "library", "extra": { "branch-alias": { @@ -1848,24 +2071,25 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2015-11-23 20:38:01" + "time": "2017-01-02T20:30:24+00:00" }, { "name": "symfony/console", - "version": "v2.8.0", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41" + "reference": "2e18b8903d9c498ba02e1dfa73f64d4894bb6912" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41", - "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41", + "url": "https://api.github.com/repos/symfony/console/zipball/2e18b8903d9c498ba02e1dfa73f64d4894bb6912", + "reference": "2e18b8903d9c498ba02e1dfa73f64d4894bb6912", "shasum": "" }, "require": { "php": ">=5.3.9", + "symfony/debug": "~2.7,>=2.7.2|~3.0.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { @@ -1908,20 +2132,77 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2015-11-30 12:35:10" + "time": "2017-01-08T20:43:03+00:00" + }, + { + "name": "symfony/debug", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", + "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2016-07-30T07:22:48+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.0", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc" + "reference": "74877977f90fb9c3e46378d5764217c55f32df34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a5eb815363c0388e83247e7e9853e5dbc14999cc", - "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74877977f90fb9c3e46378d5764217c55f32df34", + "reference": "74877977f90fb9c3e46378d5764217c55f32df34", "shasum": "" }, "require": { @@ -1968,20 +2249,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2015-10-30 20:15:42" + "time": "2017-01-02T20:30:24+00:00" }, { "name": "symfony/filesystem", - "version": "v2.8.0", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3e661a0d521ac67496515fa6e6704bd61bcfff60" + "reference": "5b77d49ab76e5b12743b359ef4b4a712e6f5360d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3e661a0d521ac67496515fa6e6704bd61bcfff60", - "reference": "3e661a0d521ac67496515fa6e6704bd61bcfff60", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/5b77d49ab76e5b12743b359ef4b4a712e6f5360d", + "reference": "5b77d49ab76e5b12743b359ef4b4a712e6f5360d", "shasum": "" }, "require": { @@ -2017,29 +2298,32 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2015-11-23 10:19:46" + "time": "2017-01-08T20:43:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.0.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0b6a8940385311a24e060ec1fe35680e17c74497" + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497", - "reference": "0b6a8940385311a24e060ec1fe35680e17c74497", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "suggest": { + "ext-mbstring": "For best performance" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -2073,20 +2357,20 @@ "portable", "shim" ], - "time": "2015-11-04 20:28:58" + "time": "2016-11-14T01:06:16+00:00" }, { "name": "symfony/stopwatch", - "version": "v2.8.0", + "version": "v2.8.16", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5f1e2ebd1044da542d2b9510527836e8be92b1cb" + "reference": "e8bb9de52febc4ee9922b33b1f04ba5feed457b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5f1e2ebd1044da542d2b9510527836e8be92b1cb", - "reference": "5f1e2ebd1044da542d2b9510527836e8be92b1cb", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/e8bb9de52febc4ee9922b33b1f04ba5feed457b8", + "reference": "e8bb9de52febc4ee9922b33b1f04ba5feed457b8", "shasum": "" }, "require": { @@ -2122,29 +2406,35 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2015-10-30 20:15:42" + "time": "2017-01-02T20:30:24+00:00" }, { "name": "symfony/yaml", - "version": "v3.0.0", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "177a015cb0e19ff4a49e0e2e2c5fc1c1bee07002" + "reference": "50eadbd7926e31842893c957eca362b21592a97d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/177a015cb0e19ff4a49e0e2e2c5fc1c1bee07002", - "reference": "177a015cb0e19ff4a49e0e2e2c5fc1c1bee07002", + "url": "https://api.github.com/repos/symfony/yaml/zipball/50eadbd7926e31842893c957eca362b21592a97d", + "reference": "50eadbd7926e31842893c957eca362b21592a97d", "shasum": "" }, "require": { "php": ">=5.5.9" }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2171,7 +2461,110 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2015-11-30 12:36:17" + "time": "2017-01-03T13:51:32+00:00" + }, + { + "name": "vectorface/dunit", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/Vectorface/dunit.git", + "reference": "3f04c7a8bef5ff100666e92db96e93f80a6640bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Vectorface/dunit/zipball/3f04c7a8bef5ff100666e92db96e93f80a6640bf", + "reference": "3f04c7a8bef5ff100666e92db96e93f80a6640bf", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "~4.3", + "symfony/console": "~2.5" + }, + "bin": [ + "bin/dunit" + ], + "type": "library", + "autoload": { + "psr-4": { + "Vectorface\\Dunit\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bruce", + "email": "dbruce@vectorface.com", + "role": "Developer" + }, + { + "name": "Cory Darby", + "email": "ckdarby@vectorface.com", + "role": "Developer" + } + ], + "description": "Test code against multiple versions of PHP with the help of docker", + "homepage": "https://github.com/Vectorface/dunit", + "keywords": [ + "docker", + "php", + "phpunit", + "testing" + ], + "time": "2015-03-31T19:30:02+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" } ], "aliases": [], diff --git a/src/Client.php b/src/Client.php index 1d32a4e..b76cc25 100755 --- a/src/Client.php +++ b/src/Client.php @@ -640,7 +640,7 @@ function($error) use($connection) { * * @return \React\SocketClient\SecureConnector */ - protected function getSecureConnector() + protected function getSecureConnector($connection) { if (!$this->secureConnector) { $loop = $this->getLoop(); @@ -662,7 +662,7 @@ protected function addSecureConnection(ConnectionInterface $connection) $hostname = $connection->getServerHostname(); $port = $connection->getServerPort(); - $this->getSecureConnector() + $this->getSecureConnector($connection) ->create($hostname, $port) ->then( function(DuplexStreamInterface $stream) use ($connection) { diff --git a/tests/ClientTest.php b/tests/ClientTest.php index 23b8dfb..f588c29 100644 --- a/tests/ClientTest.php +++ b/tests/ClientTest.php @@ -332,11 +332,12 @@ public function testAddConnectionWithConcreteWriteStream() /** * Tests that adding a connection configured to use the SSL transport and - * force use of IPv4 throws an exception. + * force use of IPv4 does not throw an exception. * * @see https://github.com/reactphp/socket-client/issues/4 */ - public function testAddConnectionWithSslTransportAndForceIpv4ThrowsException() +/* + public function testAddConnectionWithSslTransportAndForceIpv4Works() { $connection = $this->getMockConnectionForAddConnection(); Phake::when($connection)->getOption('transport')->thenReturn('ssl'); @@ -345,11 +346,12 @@ public function testAddConnectionWithSslTransportAndForceIpv4ThrowsException() try { $this->client->addConnection($connection); - $this->fail('Expected exception was not thrown'); - } catch (Exception $e) { $this->assertSame(Exception::ERR_CONNECTION_STATE_UNSUPPORTED, $e->getCode()); + } catch (Exception $e) { + $this->fail('Unexpected exception was thrown'); } } +*/ /** * Tests that a connect.error event is emitted if a stream initialized @@ -366,7 +368,7 @@ public function testAddConnectionWithStreamInitializationError() $exception = new Exception('message'); Phake::when($this->client)->identifyUser($connection, $writeStream)->thenThrow($exception); - Phake::when($this->client)->getSecureConnector()->thenReturn($this->getMockSecureConnector()); + Phake::when($this->client)->getSecureConnector($connection)->thenReturn($this->getMockSecureConnector()); $logger = $this->getMockLogger(); From 71bac148f758f3c930fa0a8c32f006dbd40b9a55 Mon Sep 17 00:00:00 2001 From: Mike van Goor Date: Fri, 3 Feb 2017 07:16:43 +0100 Subject: [PATCH 3/6] Elazar pointed out some inconsistencies and this should resolve those --- composer.lock | 761 ++++++++++++------------------------------- src/Client.php | 5 +- tests/ClientTest.php | 15 +- 3 files changed, 218 insertions(+), 563 deletions(-) mode change 100644 => 100755 tests/ClientTest.php diff --git a/composer.lock b/composer.lock index 619af25..c51051c 100644 --- a/composer.lock +++ b/composer.lock @@ -54,16 +54,16 @@ }, { "name": "monolog/monolog", - "version": "1.22.0", + "version": "1.17.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "bad29cb8d18ab0315e6c477751418a82c850d558" + "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bad29cb8d18ab0315e6c477751418a82c850d558", - "reference": "bad29cb8d18ab0315e6c477751418a82c850d558", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24", + "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24", "shasum": "" }, "require": { @@ -74,17 +74,17 @@ "psr/log-implementation": "1.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^2.4.9", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", "phpunit/phpunit": "~4.5", "phpunit/phpunit-mock-objects": "2.3.0", + "raven/raven": "^0.13", "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "~5.3" + "swiftmailer/swiftmailer": "~5.3", + "videlalvaro/php-amqplib": "~2.4" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -92,17 +92,16 @@ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", "ext-mongo": "Allow sending log messages to a MongoDB server", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", + "raven/raven": "Allow sending log messages to a Sentry server", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.16.x-dev" } }, "autoload": { @@ -128,7 +127,7 @@ "logging", "psr-3" ], - "time": "2016-11-26T00:15:39+00:00" + "time": "2015-10-14T12:51:02+00:00" }, { "name": "phergie/phergie-irc-connection", @@ -208,23 +207,23 @@ }, { "name": "phergie/phergie-irc-parser", - "version": "2.3.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phergie/phergie-irc-parser.git", - "reference": "2bf9e629d91276cb654e2ed270ea05030372032c" + "reference": "29fd291f93b0881c5fc47ae6e5e41b96e7824805" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phergie/phergie-irc-parser/zipball/2bf9e629d91276cb654e2ed270ea05030372032c", - "reference": "2bf9e629d91276cb654e2ed270ea05030372032c", + "url": "https://api.github.com/repos/phergie/phergie-irc-parser/zipball/29fd291f93b0881c5fc47ae6e5e41b96e7824805", + "reference": "29fd291f93b0881c5fc47ae6e5e41b96e7824805", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=5.4.2" }, "require-dev": { - "phergie/phergie-irc-bot-react-development": "~1.0.0" + "phpunit/phpunit": "~4.6" }, "type": "library", "autoload": { @@ -241,7 +240,7 @@ "irc", "parser" ], - "time": "2016-03-07T14:49:25+00:00" + "time": "2015-07-16T16:26:41+00:00" }, { "name": "psr/log", @@ -283,26 +282,31 @@ }, { "name": "react/cache", - "version": "v0.4.1", + "version": "v0.4.0", "source": { "type": "git", "url": "https://github.com/reactphp/cache.git", - "reference": "558f614891341b1d817a8cdf9a358948ec49638f" + "reference": "9882ab5d8b00617baae83c6996f5a34668c11beb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/558f614891341b1d817a8cdf9a358948ec49638f", - "reference": "558f614891341b1d817a8cdf9a358948ec49638f", + "url": "https://api.github.com/repos/reactphp/cache/zipball/9882ab5d8b00617baae83c6996f5a34668c11beb", + "reference": "9882ab5d8b00617baae83c6996f5a34668c11beb", "shasum": "" }, "require": { - "php": ">=5.3.0", - "react/promise": "~2.0|~1.1" + "php": ">=5.4.0", + "react/promise": "~2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, "autoload": { "psr-4": { - "React\\Cache\\": "src\\" + "React\\Cache\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -313,32 +317,37 @@ "keywords": [ "cache" ], - "time": "2016-02-25T18:17:16+00:00" + "time": "2014-02-02T01:11:26+00:00" }, { "name": "react/dns", - "version": "v0.4.3", + "version": "v0.4.1", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "751b3129556e04944f164e3556a20ca6e201e459" + "reference": "8c5ccc35dcb4b06b70eb9201842363fac7b0f3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/751b3129556e04944f164e3556a20ca6e201e459", - "reference": "751b3129556e04944f164e3556a20ca6e201e459", + "url": "https://api.github.com/repos/reactphp/dns/zipball/8c5ccc35dcb4b06b70eb9201842363fac7b0f3cf", + "reference": "8c5ccc35dcb4b06b70eb9201842363fac7b0f3cf", "shasum": "" }, "require": { - "php": ">=5.3.0", - "react/cache": "~0.4.0|~0.3.0", - "react/promise": "~2.1|~1.2", - "react/socket": "~0.4.0|~0.3.0" + "php": ">=5.4.0", + "react/cache": "0.4.*", + "react/promise": "~2.0", + "react/socket": "0.4.*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, "autoload": { "psr-4": { - "React\\Dns\\": "src" + "React\\Dns\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -350,20 +359,20 @@ "dns", "dns-resolver" ], - "time": "2016-08-01T10:09:07+00:00" + "time": "2014-04-12T14:09:10+00:00" }, { "name": "react/event-loop", - "version": "v0.4.2", + "version": "v0.4.1", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "164799f73175e1c80bba92a220ea35df6ca371dd" + "reference": "18c5297087ca01de85518e2b55078f444144aa1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/164799f73175e1c80bba92a220ea35df6ca371dd", - "reference": "164799f73175e1c80bba92a220ea35df6ca371dd", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/18c5297087ca01de85518e2b55078f444144aa1b", + "reference": "18c5297087ca01de85518e2b55078f444144aa1b", "shasum": "" }, "require": { @@ -377,12 +386,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "0.5-dev" + "dev-master": "0.4-dev" } }, "autoload": { "psr-4": { - "React\\EventLoop\\": "src" + "React\\EventLoop\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -391,29 +400,33 @@ ], "description": "Event loop abstraction layer that libraries can use for evented I/O.", "keywords": [ - "asynchronous", "event-loop" ], - "time": "2016-03-08T02:09:32+00:00" + "time": "2014-02-26T17:36:58+00:00" }, { "name": "react/promise", - "version": "v2.5.0", + "version": "v2.2.1", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "2760f3898b7e931aa71153852dcd48a75c9b95db" + "reference": "3b6fca09c7d56321057fa8867c8dbe1abf648627" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/2760f3898b7e931aa71153852dcd48a75c9b95db", - "reference": "2760f3898b7e931aa71153852dcd48a75c9b95db", + "url": "https://api.github.com/repos/reactphp/promise/zipball/3b6fca09c7d56321057fa8867c8dbe1abf648627", + "reference": "3b6fca09c7d56321057fa8867c8dbe1abf648627", "shasum": "" }, "require": { "php": ">=5.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "psr-4": { "React\\Promise\\": "src/" @@ -433,11 +446,7 @@ } ], "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "time": "2016-12-22T14:09:01+00:00" + "time": "2015-07-03T13:48:55+00:00" }, { "name": "react/promise-timer", @@ -491,31 +500,30 @@ }, { "name": "react/socket", - "version": "v0.4.6", + "version": "v0.4.2", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "cf074e53c974df52388ebd09710a9018894745d2" + "reference": "a6acf405ca53fc6cfbfe7c77778ededff46aa7cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/cf074e53c974df52388ebd09710a9018894745d2", - "reference": "cf074e53c974df52388ebd09710a9018894745d2", + "url": "https://api.github.com/repos/reactphp/socket/zipball/a6acf405ca53fc6cfbfe7c77778ededff46aa7cc", + "reference": "a6acf405ca53fc6cfbfe7c77778ededff46aa7cc", "shasum": "" }, "require": { - "evenement/evenement": "~2.0|~1.0", - "php": ">=5.3.0", - "react/event-loop": "0.4.*|0.3.*", - "react/promise": "^2.0 || ^1.1", - "react/stream": "^0.4.5" - }, - "require-dev": { - "clue/block-react": "^1.1", - "phpunit/phpunit": "~4.8", - "react/socket-client": "^0.5.1" + "evenement/evenement": "~2.0", + "php": ">=5.4.0", + "react/event-loop": "0.4.*", + "react/stream": "0.4.*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, "autoload": { "psr-4": { "React\\Socket\\": "src" @@ -525,24 +533,24 @@ "license": [ "MIT" ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server for React PHP", + "description": "Library for building an evented socket server.", "keywords": [ "Socket" ], - "time": "2017-01-26T09:23:38+00:00" + "time": "2014-05-25T17:02:16+00:00" }, { "name": "react/socket-client", - "version": "v0.5.3", + "version": "v0.5.1", "source": { "type": "git", "url": "https://github.com/reactphp/socket-client.git", - "reference": "5570838d436f056695e9a5eaf01dd5f80386dd26" + "reference": "3cb406a14008c092207d95a63ebe7739f74843bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket-client/zipball/5570838d436f056695e9a5eaf01dd5f80386dd26", - "reference": "5570838d436f056695e9a5eaf01dd5f80386dd26", + "url": "https://api.github.com/repos/reactphp/socket-client/zipball/3cb406a14008c092207d95a63ebe7739f74843bf", + "reference": "3cb406a14008c092207d95a63ebe7739f74843bf", "shasum": "" }, "require": { @@ -551,10 +559,10 @@ "react/event-loop": "0.4.*|0.3.*", "react/promise": "^2.1 || ^1.2", "react/promise-timer": "~1.0", - "react/stream": "^0.4.5" + "react/stream": "0.4.*|0.3.*" }, "require-dev": { - "clue/block-react": "^1.1" + "clue/block-react": "~1.0" }, "type": "library", "autoload": { @@ -570,20 +578,20 @@ "keywords": [ "Socket" ], - "time": "2016-12-24T11:19:15+00:00" + "time": "2016-11-20T00:11:24+00:00" }, { "name": "react/stream", - "version": "v0.4.6", + "version": "v0.4.3", "source": { "type": "git", "url": "https://github.com/reactphp/stream.git", - "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee" + "reference": "305b2328d2a2e157bc13b61a0f5c6e41b666b188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/44dc7f51ea48624110136b535b9ba44fd7d0c1ee", - "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee", + "url": "https://api.github.com/repos/reactphp/stream/zipball/305b2328d2a2e157bc13b61a0f5c6e41b666b188", + "reference": "305b2328d2a2e157bc13b61a0f5c6e41b666b188", "shasum": "" }, "require": { @@ -591,7 +599,6 @@ "php": ">=5.3.8" }, "require-dev": { - "clue/stream-filter": "~1.2", "react/event-loop": "^0.4|^0.3", "react/promise": "^2.0|^1.0" }, @@ -600,6 +607,11 @@ "react/promise": "^2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5-dev" + } + }, "autoload": { "psr-4": { "React\\Stream\\": "src" @@ -614,7 +626,7 @@ "pipe", "stream" ], - "time": "2017-01-25T14:44:14+00:00" + "time": "2015-10-07T18:32:58+00:00" } ], "packages-dev": [ @@ -827,16 +839,16 @@ }, { "name": "phake/phake", - "version": "v2.3.0", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/mlively/Phake.git", - "reference": "2202d361d34f2712dcc257afdedc6c30060dc9bd" + "reference": "9c3c287ef3f23d5ca438917ab1a4f8c47b654b4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mlively/Phake/zipball/2202d361d34f2712dcc257afdedc6c30060dc9bd", - "reference": "2202d361d34f2712dcc257afdedc6c30060dc9bd", + "url": "https://api.github.com/repos/mlively/Phake/zipball/9c3c287ef3f23d5ca438917ab1a4f8c47b654b4b", + "reference": "9c3c287ef3f23d5ca438917ab1a4f8c47b654b4b", "shasum": "" }, "require": { @@ -881,20 +893,20 @@ "mock", "testing" ], - "time": "2016-03-04T18:49:33+00:00" + "time": "2015-11-30T17:02:04+00:00" }, { "name": "phergie/phergie-irc-bot-react-development", - "version": "1.0.2", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/phergie/phergie-irc-bot-react-development.git", - "reference": "a2a077dbe4cea47d477659233c181e154c4e831f" + "reference": "ee56a406c4bedab97621a3113652210f39aa961c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phergie/phergie-irc-bot-react-development/zipball/a2a077dbe4cea47d477659233c181e154c4e831f", - "reference": "a2a077dbe4cea47d477659233c181e154c4e831f", + "url": "https://api.github.com/repos/phergie/phergie-irc-bot-react-development/zipball/ee56a406c4bedab97621a3113652210f39aa961c", + "reference": "ee56a406c4bedab97621a3113652210f39aa961c", "shasum": "" }, "require": { @@ -902,12 +914,10 @@ "phake/phake": "~2.0", "phpunit/phpunit": "~4.6", "satooshi/php-coveralls": "0.6.1", - "squizlabs/php_codesniffer": "^1.5.3", "symfony/config": "~2.0", "symfony/console": "~2.0", "symfony/filesystem": "~2.0", - "symfony/stopwatch": "~2.0", - "vectorface/dunit": "^2.0" + "symfony/stopwatch": "~2.0" }, "type": "library", "notification-url": "https://packagist.org/downloads/", @@ -920,138 +930,41 @@ "irc", "react" ], - "time": "2015-11-10T03:33:26+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2015-11-10T00:38:33+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", - "webmozart/assert": "^1.0" + "php": ">=5.3.3" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30T07:12:33+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.2.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "shasum": "" - }, - "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0" + "phpunit/phpunit": "~4.0" }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ + "psr-0": { + "phpDocumentor": [ "src/" ] } @@ -1063,40 +976,37 @@ "authors": [ { "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "email": "mike.vanriel@naenius.com" } ], - "time": "2016-11-25T06:54:22+00:00" + "time": "2015-02-03T12:10:50+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.6.2", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", - "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", - "sebastian/comparator": "^1.1", - "sebastian/recursion-context": "^1.0|^2.0" + "phpdocumentor/reflection-docblock": "~2.0", + "sebastian/comparator": "~1.1" }, "require-dev": { - "phpspec/phpspec": "^2.0", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpspec/phpspec": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -1129,7 +1039,7 @@ "spy", "stub" ], - "time": "2016-11-21T14:58:47+00:00" + "time": "2015-08-13T10:07:40+00:00" }, { "name": "phpunit/php-code-coverage", @@ -1195,16 +1105,16 @@ }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", "shasum": "" }, "require": { @@ -1238,7 +1148,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2015-06-21T13:08:43+00:00" }, { "name": "phpunit/php-text-template", @@ -1283,24 +1193,21 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.8", + "version": "1.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", - "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "~4|~5" - }, "type": "library", "autoload": { "classmap": [ @@ -1323,20 +1230,20 @@ "keywords": [ "timer" ], - "time": "2016-05-12T18:03:57+00:00" + "time": "2015-06-21T08:01:12+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.9", + "version": "1.4.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", - "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", "shasum": "" }, "require": { @@ -1372,20 +1279,20 @@ "keywords": [ "tokenizer" ], - "time": "2016-11-15T14:06:22+00:00" + "time": "2015-09-15T10:49:45+00:00" }, { "name": "phpunit/phpunit", - "version": "4.8.34", + "version": "4.8.21", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca" + "reference": "ea76b17bced0500a28098626b84eda12dbcf119c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7eb45205d27edd94bd2b3614085ea158bd1e2bca", - "reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea76b17bced0500a28098626b84eda12dbcf119c", + "reference": "ea76b17bced0500a28098626b84eda12dbcf119c", "shasum": "" }, "require": { @@ -1399,9 +1306,9 @@ "phpunit/php-code-coverage": "~2.1", "phpunit/php-file-iterator": "~1.4", "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", + "phpunit/php-timer": ">=1.0.6", "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.2.2", + "sebastian/comparator": "~1.1", "sebastian/diff": "~1.2", "sebastian/environment": "~1.3", "sebastian/exporter": "~1.2", @@ -1444,7 +1351,7 @@ "testing", "xunit" ], - "time": "2017-01-26T16:15:36+00:00" + "time": "2015-12-12T07:45:58+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -1572,22 +1479,22 @@ }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", "shasum": "" }, "require": { "php": ">=5.3.3", "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "sebastian/exporter": "~1.2" }, "require-dev": { "phpunit/phpunit": "~4.4" @@ -1632,7 +1539,7 @@ "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2015-07-26T15:48:44+00:00" }, { "name": "sebastian/diff", @@ -1688,23 +1595,23 @@ }, { "name": "sebastian/environment", - "version": "1.3.8", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + "reference": "6e7133793a8e5a5714a551a8324337374be209df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e7133793a8e5a5714a551a8324337374be209df", + "reference": "6e7133793a8e5a5714a551a8324337374be209df", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { @@ -1734,20 +1641,20 @@ "environment", "hhvm" ], - "time": "2016-08-18T05:49:44+00:00" + "time": "2015-12-02T08:37:27+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.2", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "reference": "7ae5513327cb536431847bcc0c10edba2701064e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e", "shasum": "" }, "require": { @@ -1755,13 +1662,12 @@ "sebastian/recursion-context": "~1.0" }, "require-dev": { - "ext-mbstring": "*", "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1801,7 +1707,7 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2015-06-21T07:55:53+00:00" }, { "name": "sebastian/global-state", @@ -1942,105 +1848,24 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2015-06-21T13:59:46+00:00" }, - { - "name": "squizlabs/php_codesniffer", - "version": "1.5.6", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "6f3e42d311b882b25b4d409d23a289f4d3b803d5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6f3e42d311b882b25b4d409d23a289f4d3b803d5", - "reference": "6f3e42d311b882b25b4d409d23a289f4d3b803d5", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.1.2" - }, - "suggest": { - "phpunit/php-timer": "dev-master" - }, - "bin": [ - "scripts/phpcs" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-phpcs-fixer": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "CodeSniffer.php", - "CodeSniffer/CLI.php", - "CodeSniffer/Exception.php", - "CodeSniffer/File.php", - "CodeSniffer/Report.php", - "CodeSniffer/Reporting.php", - "CodeSniffer/Sniff.php", - "CodeSniffer/Tokens.php", - "CodeSniffer/Reports/", - "CodeSniffer/CommentParser/", - "CodeSniffer/Tokenizers/", - "CodeSniffer/DocGenerators/", - "CodeSniffer/Standards/AbstractPatternSniff.php", - "CodeSniffer/Standards/AbstractScopeSniff.php", - "CodeSniffer/Standards/AbstractVariableSniff.php", - "CodeSniffer/Standards/IncorrectPatternException.php", - "CodeSniffer/Standards/Generic/Sniffs/", - "CodeSniffer/Standards/MySource/Sniffs/", - "CodeSniffer/Standards/PEAR/Sniffs/", - "CodeSniffer/Standards/PSR1/Sniffs/", - "CodeSniffer/Standards/PSR2/Sniffs/", - "CodeSniffer/Standards/Squiz/Sniffs/", - "CodeSniffer/Standards/Zend/Sniffs/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", - "keywords": [ - "phpcs", - "standards" - ], - "time": "2014-12-04T22:32:15+00:00" - }, { "name": "symfony/config", - "version": "v2.8.16", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "4537f2413348fe271c2c4b09da219ed615d79f9c" + "reference": "f21c97aec1b5302d2dc0d17047ea8f4e4ff93aae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4537f2413348fe271c2c4b09da219ed615d79f9c", - "reference": "4537f2413348fe271c2c4b09da219ed615d79f9c", + "url": "https://api.github.com/repos/symfony/config/zipball/f21c97aec1b5302d2dc0d17047ea8f4e4ff93aae", + "reference": "f21c97aec1b5302d2dc0d17047ea8f4e4ff93aae", "shasum": "" }, "require": { "php": ">=5.3.9", "symfony/filesystem": "~2.3|~3.0.0" }, - "require-dev": { - "symfony/yaml": "~2.7|~3.0.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, "type": "library", "extra": { "branch-alias": { @@ -2071,25 +1896,24 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:30:24+00:00" + "time": "2015-11-23T20:38:01+00:00" }, { "name": "symfony/console", - "version": "v2.8.16", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2e18b8903d9c498ba02e1dfa73f64d4894bb6912" + "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2e18b8903d9c498ba02e1dfa73f64d4894bb6912", - "reference": "2e18b8903d9c498ba02e1dfa73f64d4894bb6912", + "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41", + "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41", "shasum": "" }, "require": { "php": ">=5.3.9", - "symfony/debug": "~2.7,>=2.7.2|~3.0.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { @@ -2132,77 +1956,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-01-08T20:43:03+00:00" - }, - { - "name": "symfony/debug", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/class-loader": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2016-07-30T07:22:48+00:00" + "time": "2015-11-30T12:35:10+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.16", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "74877977f90fb9c3e46378d5764217c55f32df34" + "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74877977f90fb9c3e46378d5764217c55f32df34", - "reference": "74877977f90fb9c3e46378d5764217c55f32df34", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a5eb815363c0388e83247e7e9853e5dbc14999cc", + "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc", "shasum": "" }, "require": { @@ -2249,20 +2016,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:30:24+00:00" + "time": "2015-10-30T20:15:42+00:00" }, { "name": "symfony/filesystem", - "version": "v2.8.16", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "5b77d49ab76e5b12743b359ef4b4a712e6f5360d" + "reference": "3e661a0d521ac67496515fa6e6704bd61bcfff60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/5b77d49ab76e5b12743b359ef4b4a712e6f5360d", - "reference": "5b77d49ab76e5b12743b359ef4b4a712e6f5360d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3e661a0d521ac67496515fa6e6704bd61bcfff60", + "reference": "3e661a0d521ac67496515fa6e6704bd61bcfff60", "shasum": "" }, "require": { @@ -2298,32 +2065,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-01-08T20:43:03+00:00" + "time": "2015-11-23T10:19:46+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.3.0", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" + "reference": "0b6a8940385311a24e060ec1fe35680e17c74497" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497", + "reference": "0b6a8940385311a24e060ec1fe35680e17c74497", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "suggest": { - "ext-mbstring": "For best performance" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -2357,20 +2121,20 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2015-11-04T20:28:58+00:00" }, { "name": "symfony/stopwatch", - "version": "v2.8.16", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "e8bb9de52febc4ee9922b33b1f04ba5feed457b8" + "reference": "5f1e2ebd1044da542d2b9510527836e8be92b1cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/e8bb9de52febc4ee9922b33b1f04ba5feed457b8", - "reference": "e8bb9de52febc4ee9922b33b1f04ba5feed457b8", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5f1e2ebd1044da542d2b9510527836e8be92b1cb", + "reference": "5f1e2ebd1044da542d2b9510527836e8be92b1cb", "shasum": "" }, "require": { @@ -2406,35 +2170,29 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:30:24+00:00" + "time": "2015-10-30T20:15:42+00:00" }, { "name": "symfony/yaml", - "version": "v3.2.2", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "50eadbd7926e31842893c957eca362b21592a97d" + "reference": "177a015cb0e19ff4a49e0e2e2c5fc1c1bee07002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/50eadbd7926e31842893c957eca362b21592a97d", - "reference": "50eadbd7926e31842893c957eca362b21592a97d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/177a015cb0e19ff4a49e0e2e2c5fc1c1bee07002", + "reference": "177a015cb0e19ff4a49e0e2e2c5fc1c1bee07002", "shasum": "" }, "require": { "php": ">=5.5.9" }, - "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2461,110 +2219,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-01-03T13:51:32+00:00" - }, - { - "name": "vectorface/dunit", - "version": "v2.1.0", - "source": { - "type": "git", - "url": "https://github.com/Vectorface/dunit.git", - "reference": "3f04c7a8bef5ff100666e92db96e93f80a6640bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Vectorface/dunit/zipball/3f04c7a8bef5ff100666e92db96e93f80a6640bf", - "reference": "3f04c7a8bef5ff100666e92db96e93f80a6640bf", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4.3", - "symfony/console": "~2.5" - }, - "bin": [ - "bin/dunit" - ], - "type": "library", - "autoload": { - "psr-4": { - "Vectorface\\Dunit\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bruce", - "email": "dbruce@vectorface.com", - "role": "Developer" - }, - { - "name": "Cory Darby", - "email": "ckdarby@vectorface.com", - "role": "Developer" - } - ], - "description": "Test code against multiple versions of PHP with the help of docker", - "homepage": "https://github.com/Vectorface/dunit", - "keywords": [ - "docker", - "php", - "phpunit", - "testing" - ], - "time": "2015-03-31T19:30:02+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2015-11-30T12:36:17+00:00" } ], "aliases": [], diff --git a/src/Client.php b/src/Client.php index b76cc25..5b4c265 100755 --- a/src/Client.php +++ b/src/Client.php @@ -266,7 +266,7 @@ protected function getForceIpv4Flag(ConnectionInterface $connection) */ protected function getAllowSelfSignedFlag(ConnectionInterface $connection) { - return (boolean) $connection->getOption('allow-selfsigned') ?: false; + return (boolean) $connection->getOption('allow-self-signed') ?: false; } /** @@ -277,7 +277,7 @@ protected function getAllowSelfSignedFlag(ConnectionInterface $connection) */ protected function getVerifyPeerFlag(ConnectionInterface $connection) { - return (boolean) $connection->getOption('allow-verify_peer') ?: false; + return (boolean) $connection->getOption('allow-verify-peer') ?: false; } /** @@ -340,7 +340,6 @@ protected function getSecureContext(ConnectionInterface $connection) if ($this->getAllowSelfSignedFlag($connection)) { $context['allow_self_signed'] = true; } - //$context = array('socket' => $context); return $context; } diff --git a/tests/ClientTest.php b/tests/ClientTest.php old mode 100644 new mode 100755 index f588c29..c68ed47 --- a/tests/ClientTest.php +++ b/tests/ClientTest.php @@ -337,19 +337,20 @@ public function testAddConnectionWithConcreteWriteStream() * @see https://github.com/reactphp/socket-client/issues/4 */ /* - public function testAddConnectionWithSslTransportAndForceIpv4Works() + public function testAddConnectionWithSslTransportAndForceIpv4() { $connection = $this->getMockConnectionForAddConnection(); Phake::when($connection)->getOption('transport')->thenReturn('ssl'); Phake::when($connection)->getOption('force-ipv4')->thenReturn(true); + $writeStream = $this->getMockWriteStream(); + Phake::when($this->client)->getWriteStream($connection)->thenReturn($writeStream); + + $this->client->setLogger($this->getMockLogger()); $this->client->setResolver($this->getMockResolver()); + $this->client->addConnection($connection); - try { - $this->client->addConnection($connection); - $this->assertSame(Exception::ERR_CONNECTION_STATE_UNSUPPORTED, $e->getCode()); - } catch (Exception $e) { - $this->fail('Unexpected exception was thrown'); - } + print_r(stream_context_get_options($connection->getData('stream'))); + //print_r($actual); } */ From f4294d3f2a6392c8c6e357cf089ef794003d78ea Mon Sep 17 00:00:00 2001 From: Mike van Goor Date: Sat, 4 Feb 2017 11:32:02 +0100 Subject: [PATCH 4/6] Update composer.json to make sure we get latest version of socket-client --- composer.json | 2 +- composer.lock | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 0c1e9e9..e4d8dae 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "phergie/phergie-irc-connection": "~2.0", "react/event-loop": "~0.4.0", "react/stream": "~0.4.2", - "react/socket-client": "~0.5.0", + "react/socket-client": "^0.5", "react/dns": "~0.4.0", "react/promise": "~2.0", "psr/log": "~1.0", diff --git a/composer.lock b/composer.lock index c51051c..77e7ab7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "de8b686396778df8c4c5fe326ccd90e6", + "content-hash": "0c7fd26e27ee86a153ae480d255ba20c", "packages": [ { "name": "evenement/evenement", @@ -835,6 +835,7 @@ "rest", "web service" ], + "abandoned": "guzzlehttp/guzzle", "time": "2015-03-18T18:23:50+00:00" }, { From a3ebea2213588862ce443568d686c25fc3290e86 Mon Sep 17 00:00:00 2001 From: Mike van Goor Date: Sun, 5 Feb 2017 21:38:00 +0100 Subject: [PATCH 5/6] Remove option to set peer validation as no proper way of testing could be found as of yet Finally fix the commented test and make sure we can now add a ssl connection with ipv4 binding --- src/Client.php | 16 +--------------- tests/ClientTest.php | 7 +------ 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/src/Client.php b/src/Client.php index 5b4c265..74642ef 100755 --- a/src/Client.php +++ b/src/Client.php @@ -259,7 +259,7 @@ protected function getForceIpv4Flag(ConnectionInterface $connection) } /** - * Extracts the value of the allow-selfsigned option from a given connection. + * Extracts the value of the allow-self-signed option from a given connection. * * @param \Phergie\Irc\ConnectionInterface $connection * @return boolean TRUE to allow self signed certificates, FALSE otherwise @@ -269,17 +269,6 @@ protected function getAllowSelfSignedFlag(ConnectionInterface $connection) return (boolean) $connection->getOption('allow-self-signed') ?: false; } - /** - * Extracts the value of the verify_peer option from a given connection. - * - * @param \Phergie\Irc\ConnectionInterface $connection - * @return boolean TRUE to verify peer, FALSE otherwise - */ - protected function getVerifyPeerFlag(ConnectionInterface $connection) - { - return (boolean) $connection->getOption('allow-verify-peer') ?: false; - } - /** * Derives a remote for a given connection. * @@ -334,9 +323,6 @@ protected function getSecureContext(ConnectionInterface $connection) if ($this->getForceIpv4Flag($connection)) { $context['bindto'] = '0.0.0.0:0'; } - if ($this->getVerifyPeerFlag($connection)) { - $context['verify_peer'] = false; - } if ($this->getAllowSelfSignedFlag($connection)) { $context['allow_self_signed'] = true; } diff --git a/tests/ClientTest.php b/tests/ClientTest.php index c68ed47..000e43d 100755 --- a/tests/ClientTest.php +++ b/tests/ClientTest.php @@ -332,11 +332,10 @@ public function testAddConnectionWithConcreteWriteStream() /** * Tests that adding a connection configured to use the SSL transport and - * force use of IPv4 does not throw an exception. + * force use of IPv4 does not throw an exception * * @see https://github.com/reactphp/socket-client/issues/4 */ -/* public function testAddConnectionWithSslTransportAndForceIpv4() { $connection = $this->getMockConnectionForAddConnection(); @@ -348,11 +347,7 @@ public function testAddConnectionWithSslTransportAndForceIpv4() $this->client->setLogger($this->getMockLogger()); $this->client->setResolver($this->getMockResolver()); $this->client->addConnection($connection); - - print_r(stream_context_get_options($connection->getData('stream'))); - //print_r($actual); } -*/ /** * Tests that a connect.error event is emitted if a stream initialized From 1766b3e623a6cd20066a7a3c163b7b442ec52632 Mon Sep 17 00:00:00 2001 From: Mike van Goor Date: Mon, 6 Feb 2017 16:54:07 +0100 Subject: [PATCH 6/6] Include the new connection option in the README --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 37ead8d..8e83e37 100644 --- a/README.md +++ b/README.md @@ -298,6 +298,15 @@ Connection sockets will use IPv6 by default where available. If you need to forc $connection->setOption('force-ipv4', true); ``` +### allow-self-signed + +By default all ssl connections only accept officially signed certificates. Sometimes you need to connect to a irc server that uses a self signed certificate. If you need to allow connections to servers using a self signed certificate, set this option to `true`. + +```php +setOption('allow-self-signed', true); +``` + ### transport By default, a standard TCP socket is used. For IRC servers that support TLS or SSL, specify an [appropriate transport](http://www.php.net/manual/en/transports.inet.php).