From 9233e287e4ebf15b5db883774091128fbf936f5d Mon Sep 17 00:00:00 2001 From: Alexey Chelnakov Date: Thu, 14 Jun 2018 17:14:51 +0300 Subject: [PATCH] init --- .gitignore | 2 + composer.json | 28 + composer.lock | 3888 +++++++++++++++++ src/AtolOnlineClient/AtolOnlineApi.php | 290 ++ src/AtolOnlineClient/AtolOnlineApiV4.php | 290 ++ src/AtolOnlineClient/Configuration.php | 146 + .../Configuration/Connection.php | 160 + .../ConfigurationInterface.php | 10 + .../Exception/AtolException.php | 8 + .../Request/V3/PaymentReceiptRequest.php | 129 + .../Request/V3/ReceiptAttributesRequest.php | 98 + .../Request/V3/ReceiptItemRequest.php | 163 + .../Request/V3/ReceiptPaymentRequest.php | 59 + .../Request/V3/ReceiptRequest.php | 127 + .../Request/V3/ServiceRequest.php | 106 + .../Request/V4/ClientReceiptRequest.php | 53 + .../Request/V4/CompanyReceiptRequest.php | 108 + .../Request/V4/PaymentReceiptRequest.php | 108 + .../Request/V4/ReceiptItemRequest.php | 261 ++ .../Request/V4/ReceiptPaymentRequest.php | 59 + .../Request/V4/ReceiptRequest.php | 163 + .../Request/V4/ServiceRequest.php | 33 + .../Request/V4/VatReceiptRequest.php | 63 + src/AtolOnlineClient/Response/Error.php | 96 + .../Response/OperationResponse.php | 185 + src/AtolOnlineClient/Response/Payload.php | 248 ++ 26 files changed, 6881 insertions(+) create mode 100644 .gitignore create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 src/AtolOnlineClient/AtolOnlineApi.php create mode 100644 src/AtolOnlineClient/AtolOnlineApiV4.php create mode 100644 src/AtolOnlineClient/Configuration.php create mode 100644 src/AtolOnlineClient/Configuration/Connection.php create mode 100644 src/AtolOnlineClient/ConfigurationInterface.php create mode 100644 src/AtolOnlineClient/Exception/AtolException.php create mode 100644 src/AtolOnlineClient/Request/V3/PaymentReceiptRequest.php create mode 100644 src/AtolOnlineClient/Request/V3/ReceiptAttributesRequest.php create mode 100644 src/AtolOnlineClient/Request/V3/ReceiptItemRequest.php create mode 100644 src/AtolOnlineClient/Request/V3/ReceiptPaymentRequest.php create mode 100644 src/AtolOnlineClient/Request/V3/ReceiptRequest.php create mode 100644 src/AtolOnlineClient/Request/V3/ServiceRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/ClientReceiptRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/CompanyReceiptRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/PaymentReceiptRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/ReceiptItemRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/ReceiptPaymentRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/ReceiptRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/ServiceRequest.php create mode 100644 src/AtolOnlineClient/Request/V4/VatReceiptRequest.php create mode 100644 src/AtolOnlineClient/Response/Error.php create mode 100644 src/AtolOnlineClient/Response/OperationResponse.php create mode 100644 src/AtolOnlineClient/Response/Payload.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b46b2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +./idea +/vendor diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..0a77f48 --- /dev/null +++ b/composer.json @@ -0,0 +1,28 @@ +{ + "name": "intaro/atol-online-client", + "type": "library", + "license": "proprietary", + "description": "Api client for Atol Online", + "authors": [ + { + "name": "retailCRM", + "email": "support@retailcrm.ru" + } + ], + "require": { + "php": ">=7.1", + "ext-curl": "*", + "guzzlehttp/guzzle": "~6.0", + "jms/serializer-bundle": "~0.12", + "symfony/validator": "2.8.*" + }, + "require-dev": { + "phpunit/phpunit": "7.1." + }, + "support": { + "email": "support@retailcrm.ru" + }, + "autoload": { + "psr-0": { "AtolOnlineClient\\": "src/" } + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..23306eb --- /dev/null +++ b/composer.lock @@ -0,0 +1,3888 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "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": "4a04eaf2c87d2a5efd3a17846d459114", + "packages": [ + { + "name": "doctrine/annotations", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-12-06T07:11:42+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^5.7", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2017-08-25T07:02:50+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" + }, + { + "name": "ircmaxell/password-compat", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/ircmaxell/password_compat.git", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "autoload": { + "files": [ + "lib/password.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@php.net", + "homepage": "http://blog.ircmaxell.com" + } + ], + "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", + "homepage": "https://github.com/ircmaxell/password_compat", + "keywords": [ + "hashing", + "password" + ], + "time": "2014-11-20T16:49:30+00:00" + }, + { + "name": "jms/metadata", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "symfony/cache": "~3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "time": "2016-12-05T10:18:33+00:00" + }, + { + "name": "jms/parser-lib", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "shasum": "" + }, + "require": { + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "time": "2012-11-18T18:08:43+00:00" + }, + { + "name": "jms/serializer", + "version": "0.16.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/c8a171357ca92b6706e395c757f334902d430ea9", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "jms/metadata": "~1.1", + "jms/parser-lib": "1.*", + "php": ">=5.3.2", + "phpcollection/phpcollection": "~0.1" + }, + "require-dev": { + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "~1.0.1", + "jackalope/jackalope-doctrine-dbal": "1.0.*", + "propel/propel1": "~1.7", + "symfony/filesystem": "2.*", + "symfony/form": "~2.1", + "symfony/translation": "~2.0", + "symfony/validator": "~2.0", + "symfony/yaml": "2.*", + "twig/twig": ">=1.8,<2.0-dev" + }, + "suggest": { + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.15-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\Serializer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2014-03-18T08:39:00+00:00" + }, + { + "name": "jms/serializer-bundle", + "version": "0.13.0", + "target-dir": "JMS/SerializerBundle", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/JMSSerializerBundle.git", + "reference": "bb15db3e661168f4310fad48b86915ff1ca33795" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/bb15db3e661168f4310fad48b86915ff1ca33795", + "reference": "bb15db3e661168f4310fad48b86915ff1ca33795", + "shasum": "" + }, + "require": { + "jms/serializer": "~0.11", + "php": ">=5.3.2", + "symfony/framework-bundle": "~2.1" + }, + "require-dev": { + "doctrine/doctrine-bundle": "*", + "doctrine/orm": "*", + "symfony/browser-kit": "*", + "symfony/class-loader": "*", + "symfony/css-selector": "*", + "symfony/finder": "*", + "symfony/form": "*", + "symfony/process": "*", + "symfony/twig-bundle": "*", + "symfony/validator": "*", + "symfony/yaml": "*" + }, + "suggest": { + "jms/di-extra-bundle": "Required to get lazy loading (de)serialization visitors, ~1.3" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.13-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\SerializerBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Allows you to easily serialize, and deserialize data of any complexity", + "homepage": "http://jmsyst.com/bundles/JMSSerializerBundle", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2013-12-05T14:36:11+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.15", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/10bcb46e8f3d365170f6de9d05245aa066b81f09", + "reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-06-08T15:26:40+00:00" + }, + { + "name": "phpcollection/phpcollection", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "time": "2015-05-17T12:39:23+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2015-07-25T16:39:46+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "symfony/asset", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "f844899f663285ce819c041237777140e0c061c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/f844899f663285ce819c041237777140e0c061c3", + "reference": "f844899f663285ce819c041237777140e0c061c3", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/http-foundation": "~2.8|~3.0" + }, + "suggest": { + "symfony/http-foundation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "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 Asset Component", + "homepage": "https://symfony.com", + "time": "2016-07-01T15:14:41+00:00" + }, + { + "name": "symfony/class-loader", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/class-loader.git", + "reference": "00c66ca2de5a9a367706826338df721529a07ca8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/00c66ca2de5a9a367706826338df721529a07ca8", + "reference": "00c66ca2de5a9a367706826338df721529a07ca8", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/finder": "~2.8|~3.0", + "symfony/polyfill-apcu": "~1.1" + }, + "suggest": { + "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\ClassLoader\\": "" + }, + "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 ClassLoader Component", + "homepage": "https://symfony.com", + "time": "2016-07-10T08:04:44+00:00" + }, + { + "name": "symfony/config", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "93bdf96d0e3c9b29740bf9050e7a996b443c8436" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/93bdf96d0e3c9b29740bf9050e7a996b443c8436", + "reference": "93bdf96d0e3c9b29740bf9050e7a996b443c8436", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" + }, + "require-dev": { + "symfony/yaml": "~2.7|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "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 Config Component", + "homepage": "https://symfony.com", + "time": "2018-05-01T22:52:40+00:00" + }, + { + "name": "symfony/debug", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "fe8838e11cf7dbaf324bd6f51d065d873ccf78a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/fe8838e11cf7dbaf324bd6f51d065d873ccf78a2", + "reference": "fe8838e11cf7dbaf324bd6f51d065d873ccf78a2", + "shasum": "" + }, + "require": { + "php": ">=5.3.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.2|~3.0.0", + "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-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": "2018-05-15T21:17:45+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "3d7cbf34cd75ede7f94b9b990f85bd089e15cd55" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3d7cbf34cd75ede7f94b9b990f85bd089e15cd55", + "reference": "3d7cbf34cd75ede7f94b9b990f85bd089e15cd55", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/expression-language": "<2.6" + }, + "require-dev": { + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "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 DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2018-02-19T16:23:47+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00", + "reference": "54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "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 EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2016-07-19T10:44:15+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2da5009d9bacbd91d83486aa1f44c793a8c380d", + "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "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 Filesystem Component", + "homepage": "https://symfony.com", + "time": "2016-07-20T05:43:46+00:00" + }, + { + "name": "symfony/finder", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9", + "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "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 Finder Component", + "homepage": "https://symfony.com", + "time": "2016-06-29T05:40:00+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "80fe1ba8e234b758afe814dc65556d5b0dd2db6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/80fe1ba8e234b758afe814dc65556d5b0dd2db6e", + "reference": "80fe1ba8e234b758afe814dc65556d5b0dd2db6e", + "shasum": "" + }, + "require": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "ext-xml": "*", + "php": ">=5.3.9", + "symfony/asset": "~2.7|~3.0.0", + "symfony/class-loader": "~2.1|~3.0.0", + "symfony/config": "~2.8", + "symfony/dependency-injection": "~2.8.41", + "symfony/event-dispatcher": "~2.8|~3.0.0", + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/finder": "^2.0.5|~3.0.0", + "symfony/http-foundation": "~2.7.36|^2.8.29", + "symfony/http-kernel": "^2.8.22", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "^2.8.17", + "symfony/security-core": "~2.6.13|~2.7.9|~2.8|~3.0.0", + "symfony/security-csrf": "^2.8.31|^3.3.13", + "symfony/stopwatch": "~2.3|~3.0.0", + "symfony/templating": "~2.7|~3.0.0", + "symfony/translation": "~2.8" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "require-dev": { + "phpdocumentor/reflection": "^1.0.7", + "sensio/framework-extra-bundle": "^3.0.2", + "symfony/browser-kit": "~2.4|~3.0.0", + "symfony/console": "~2.8.19|~3.2.7", + "symfony/css-selector": "^2.0.5|~3.0.0", + "symfony/dom-crawler": "^2.0.5|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/form": "^2.8.19", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^2.0.5|~3.0.0", + "symfony/property-info": "~2.8|~3.0.0", + "symfony/validator": "~2.5|~3.0.0", + "symfony/yaml": "^2.0.5|~3.0.0", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/process": "For using the server:run, server:start, server:stop, and server:status commands", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "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 FrameworkBundle", + "homepage": "https://symfony.com", + "time": "2018-05-25T07:32:23+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "445e3509473c5e05344e6aa5c45d86b9d22d4868" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/445e3509473c5e05344e6aa5c45d86b9d22d4868", + "reference": "445e3509473c5e05344e6aa5c45d86b9d22d4868", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php54": "~1.0", + "symfony/polyfill-php55": "~1.0" + }, + "require-dev": { + "symfony/expression-language": "~2.4|~3.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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 HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2018-05-25T11:00:14+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "b8c0ae53cae5d1ab4d34d8e963e30ccf6bc143df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b8c0ae53cae5d1ab4d34d8e963e30ccf6bc143df", + "reference": "b8c0ae53cae5d1ab4d34d8e963e30ccf6bc143df", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/debug": "^2.6.2", + "symfony/event-dispatcher": "^2.6.7|~3.0.0", + "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/config": "<2.7", + "twig/twig": "<1.34|<2.4,>=2" + }, + "require-dev": { + "symfony/browser-kit": "~2.3|~3.0.0", + "symfony/class-loader": "~2.1|~3.0.0", + "symfony/config": "~2.8", + "symfony/console": "~2.3|~3.0.0", + "symfony/css-selector": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.8|~3.0.0", + "symfony/dom-crawler": "^2.0.5|~3.0.0", + "symfony/expression-language": "~2.4|~3.0.0", + "symfony/finder": "^2.0.5|~3.0.0", + "symfony/process": "^2.0.5|~3.0.0", + "symfony/routing": "~2.8|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0", + "symfony/templating": "~2.2|~3.0.0", + "symfony/translation": "^2.0.5|~3.0.0", + "symfony/var-dumper": "~2.6|~3.0.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/class-loader": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "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 HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2018-05-25T12:02:50+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-04-30T19:57:29+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "3296adf6a6454a050679cde90f95350ad604b171" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", + "reference": "3296adf6a6454a050679cde90f95350ad604b171", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/polyfill-php54", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php54.git", + "reference": "6c3a2b84c6025e4ea3f6a19feac35408c64b22e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/6c3a2b84c6025e4ea3f6a19feac35408c64b22e1", + "reference": "6c3a2b84c6025e4ea3f6a19feac35408c64b22e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php54\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/polyfill-php55", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php55.git", + "reference": "a39456128377a85f2c5707fcae458678560cba46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/a39456128377a85f2c5707fcae458678560cba46", + "reference": "a39456128377a85f2c5707fcae458678560cba46", + "shasum": "" + }, + "require": { + "ircmaxell/password-compat": "~1.0", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php55\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "af98553c84912459db3f636329567809d639a8f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/af98553c84912459db3f636329567809d639a8f6", + "reference": "af98553c84912459db3f636329567809d639a8f6", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6", + "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "1a5ad95d9436cbff3296034fe9f8d586dce3fb3a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/1a5ad95d9436cbff3296034fe9f8d586dce3fb3a", + "reference": "1a5ad95d9436cbff3296034fe9f8d586dce3fb3a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/routing", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "a12693530e2b9e81017fdfb806cd915b9d1cbbb9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/a12693530e2b9e81017fdfb806cd915b9d1cbbb9", + "reference": "a12693530e2b9e81017fdfb806cd915b9d1cbbb9", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", + "psr/log": "~1.0", + "symfony/config": "~2.7|~3.0.0", + "symfony/expression-language": "~2.4|~3.0.0", + "symfony/http-foundation": "~2.3|~3.0.0", + "symfony/yaml": "^2.0.5|~3.0.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "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 Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2018-02-28T21:47:46+00:00" + }, + { + "name": "symfony/security-core", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "78a08496e6294572432240251c31f613f838e345" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/78a08496e6294572432240251c31f613f838e345", + "reference": "78a08496e6294572432240251c31f613f838e345", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-util": "~1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/http-foundation": "~2.8|~3.0", + "symfony/ldap": "~2.8|~3.0", + "symfony/validator": "~2.8|~3.0" + }, + "suggest": { + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + }, + "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 Security Component - Core Library", + "homepage": "https://symfony.com", + "time": "2016-06-29T05:40:00+00:00" + }, + { + "name": "symfony/security-csrf", + "version": "v3.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "ffa93031d9b55ad8fb9e8add07f30d963c6f7069" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/ffa93031d9b55ad8fb9e8add07f30d963c6f7069", + "reference": "ffa93031d9b55ad8fb9e8add07f30d963c6f7069", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-php70": "~1.0", + "symfony/security-core": "~2.8|~3.0|~4.0" + }, + "conflict": { + "symfony/http-foundation": "<2.8.31|~3.3,<3.3.13" + }, + "require-dev": { + "symfony/http-foundation": "^2.8.31|~3.3.13|~3.4|~4.0" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "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 Security Component - CSRF Library", + "homepage": "https://symfony.com", + "time": "2018-05-24T12:51:10+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "49c0ea2f3d3a779df4780927671332edc406ea84" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/49c0ea2f3d3a779df4780927671332edc406ea84", + "reference": "49c0ea2f3d3a779df4780927671332edc406ea84", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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 Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2016-06-29T05:40:00+00:00" + }, + { + "name": "symfony/templating", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/templating.git", + "reference": "8e5cc0417316d9fe62fb78e474f98e5f4d95dbfd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/templating/zipball/8e5cc0417316d9fe62fb78e474f98e5f4d95dbfd", + "reference": "8e5cc0417316d9fe62fb78e474f98e5f4d95dbfd", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "psr/log": "~1.0" + }, + "suggest": { + "psr/log": "For using debug logging in loaders" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Templating\\": "" + }, + "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 Templating Component", + "homepage": "https://symfony.com", + "time": "2016-07-30T07:22:48+00:00" + }, + { + "name": "symfony/translation", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "c6a27966a92fa361bf2c3a938abc6dee91f7ad67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/c6a27966a92fa361bf2c3a938abc6dee91f7ad67", + "reference": "c6a27966a92fa361bf2c3a938abc6dee91f7ad67", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/yaml": "~2.2|~3.0.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "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 Translation Component", + "homepage": "https://symfony.com", + "time": "2018-05-21T09:59:10+00:00" + }, + { + "name": "symfony/validator", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "96bbfd5534d2e07ba45255bad27ee90d3bc121a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/96bbfd5534d2e07ba45255bad27ee90d3bc121a3", + "reference": "96bbfd5534d2e07ba45255bad27ee90d3bc121a3", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation": "~2.4|~3.0.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "^1.2.1", + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.4|~3.0.0", + "symfony/http-foundation": "~2.3|~3.0.0", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/property-access": "~2.3|~3.0.0", + "symfony/yaml": "^2.0.5|~3.0.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "symfony/config": "", + "symfony/expression-language": "For using the 2.4 Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For using the 2.4 Validator API", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "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 Validator Component", + "homepage": "https://symfony.com", + "time": "2018-05-07T06:57:27+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2018-06-11T23:09:50+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "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": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "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": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "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": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.7.6", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-04-18T13:57:24+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "4cab20a326d14de7575a8e235c70d879b569a57a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4cab20a326d14de7575a8e235c70d879b569a57a", + "reference": "4cab20a326d14de7575a8e235c70d879b569a57a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-05-28T11:49:20+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2018-02-01T13:07:23+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/21ad88bbba7c3d93530d93994e0a33cd45f02ace", + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2018-02-01T13:16:43+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "fb88388dcf0a172b12e803ee26906fd39b6c311f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb88388dcf0a172b12e803ee26906fd39b6c311f", + "reference": "fb88388dcf0a172b12e803ee26906fd39b6c311f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.1", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.0", + "phpunit/phpunit-mock-objects": "^6.1", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^3.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2018-04-06T12:19:58+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "6.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "f9756fd4f43f014cb2dca98deeaaa8ce5500a36e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/f9756fd4f43f014cb2dca98deeaaa8ce5500a36e", + "reference": "f9756fd4f43f014cb2dca98deeaaa8ce5500a36e", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.5", + "php": "^7.1", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2018-05-29T13:54:20+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-02-01T13:46:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "366541b989927187c4ca70490a35615d3fef2dce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce", + "reference": "366541b989927187c4ca70490a35615d3fef2dce", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2018-06-10T07:54:39+00:00" + }, + { + "name": "sebastian/environment", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2017-07-01T08:51:00+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "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": "2018-01-29T19:49:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=7.1", + "ext-curl": "*" + }, + "platform-dev": [] +} diff --git a/src/AtolOnlineClient/AtolOnlineApi.php b/src/AtolOnlineClient/AtolOnlineApi.php new file mode 100644 index 0000000..cd540d0 --- /dev/null +++ b/src/AtolOnlineClient/AtolOnlineApi.php @@ -0,0 +1,290 @@ +client = $client; + $this->login = $connectionConfig->login; + $this->pass = $connectionConfig->pass; + $this->groupCode = $connectionConfig->group; + $this->version = $connectionConfig->version; + $this->debug = $debug; + $this->attempts = 0; + } + + /** + * Приход + * + * @param $paymentReceiptRequest + * @return string + */ + public function sell($paymentReceiptRequest) + { + if ($response = $this->sendOperationRequest('sell', $paymentReceiptRequest)) { + return $response->getBody()->__toString(); + }; + } + + /** + * Возврат прихода + * + * @param $paymentReceiptRequest + * @return string + */ + public function sellRefund($paymentReceiptRequest) + { + if ($response = $this->sendOperationRequest('sell_refund', $paymentReceiptRequest)) { + return $response->getBody()->__toString(); + }; + } + + /** + * Запрос для проверки статуса + * + * @param $uuid + * @return mixed + */ + public function checkStatus($uuid) + { + $token = $this->getToken(); + $url = $this->buildUrl('report/'.$uuid, $token); + $request = $this->client->get($url); + + $response = false; + try { + $this->attemptsCheckStatus++; + $response = $request->send(); + } catch (BadResponseException $e) { + $this->cache->delete($this->getTokenCacheKey()); + $body = json_decode($e->getResponse()->getBody()); + if ($this->isTokenExpired($body) && $this->attemptsCheckStatus <= 1) { + return $this->checkStatus($uuid); + } + $this->logDebug($url, $uuid, $e->getResponse()); + } + + if ($response) { + return $response->getBody()->__toString(); + } + + return false; + } + + /** + * @param $logger + */ + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } + + /** + * @param CacheProvider $cache + */ + public function setCache(CacheProvider $cache) + { + $this->cache = $cache; + } + + /** + * @param mixed $version + */ + public function setVersion($version): void + { + $this->version = $version; + } + + /** + * @return mixed + */ + protected function getToken() + { + $data = [ + 'login' => $this->login, + 'pass' => $this->pass, + ]; + + if ($token = $this->cache->fetch($this->getTokenCacheKey())) { + return $token; + } + + $dataJson = json_encode((object)$data, JSON_UNESCAPED_UNICODE); + $url = $this->baseApiUrl + .'/'.$this->version + .'/getToken'; + + $request = $this->client->createRequest('POST', $url, null, $dataJson); + $response = false; + try { + $response = $this->client->send($request); + } catch (BadResponseException $e) { + if ($this->logger) { + $this->logger->error($e->getResponse()->getBody()); + } + } + + if ($response) { + $response = json_decode($response->getBody()); + + if ($this->version === self::API_VERSION_V4) { + if (!isset ($response->error)) { + $this->cache->save($this->getTokenCacheKey(), $response->token, self::TOKEN_CACHE_TIME); + + return $response->token; + } else { + $this->logger->error($response->error->code . ' '. $response->error->text); + } + } else { + if (isset($response->code) && $response->code == 1 || $response->code == 0) { + $this->cache->save($this->getTokenCacheKey(), $response->token, self::TOKEN_CACHE_TIME); + + return $response->token; + } + } + + } + + + return false; + } + + /** + * @return string + */ + protected function getTokenCacheKey() + { + return self::TOKEN_CACHE_KEY.'_'.md5($this->login.$this->pass).'_'.$this->version; + } + + /** + * @param string $operation + * @param null $token + * @return string + */ + protected function buildUrl($operation, $token = null) + { + $url = $this->baseApiUrl + .'/'.$this->version + .'/'.$this->groupCode + .'/'.$operation; + + if ($token) { + if ($this->version === self::API_VERSION_V4) { + $url .= '?token='.$token; + } elseif ($this->version === self::API_VERSION_V3) { + $url .= '?tokenid='.$token; + } + } + + return $url; + } + + /** + * @param string $operation + * @param string $data + * @return Response|bool + */ + protected function sendOperationRequest($operation, $data) + { + $token = $this->getToken(); + $url = $this->buildUrl($operation, $token); + + $request = $this->client->createRequest('POST', $url, null, $data); + $response = false; + try { + $this->attempts++; + $response = $this->client->send($request); + } catch (BadResponseException $e) { + $this->cache->delete($this->getTokenCacheKey()); + $body = json_decode($e->getResponse()->getBody()); + if ($this->isTokenExpired($body) && $this->attempts <= 1) { + return $this->sendOperationRequest($operation, $data); + } + $this->logDebug($url, $data, $e->getResponse()); + } + if ($response) { + $this->logDebug($url, $data, $response); + } + + return $response; + } + + protected function logDebug($url, $data, Response $response) + { + if ($this->debug && $this->logger) { + $v = "* URL: ".$url; + $v .= "\n * POSTFILEDS: ".$data; + $v .= "\n * RESPONSE HEADERS: ".$response->getRawHeaders(); + $v .= "\n * RESPONSE BODY: ".$response->getBody(); + $v .= "\n * ATTEMPTS: ".$this->attempts; + $this->logger->debug($v); + } + } + + protected function isTokenExpiredCode($code) + { + return in_array($code, [4, 5, 6, 12, 13, 14]); + } + + private function isTokenExpired($body) + { + return isset($body->error) && $this->isTokenExpiredCode($body->error->code); + } +} diff --git a/src/AtolOnlineClient/AtolOnlineApiV4.php b/src/AtolOnlineClient/AtolOnlineApiV4.php new file mode 100644 index 0000000..b256a0c --- /dev/null +++ b/src/AtolOnlineClient/AtolOnlineApiV4.php @@ -0,0 +1,290 @@ +client = $client; + $this->login = $connectionConfig->login; + $this->pass = $connectionConfig->pass; + $this->groupCode = $connectionConfig->group; + $this->version = $connectionConfig->version; + $this->debug = + $this->attempts = 0; + } + + /** + * Приход + * + * @param $paymentReceiptRequest + * @return string + */ + public function sell($paymentReceiptRequest) + { + if ($response = $this->sendOperationRequest('sell', $paymentReceiptRequest)) { + return $response->getBody()->__toString(); + }; + } + + /** + * Возврат прихода + * + * @param $paymentReceiptRequest + * @return string + */ + public function sellRefund($paymentReceiptRequest) + { + if ($response = $this->sendOperationRequest('sell_refund', $paymentReceiptRequest)) { + return $response->getBody()->__toString(); + }; + } + + /** + * Запрос для проверки статуса + * + * @param $uuid + * @return mixed + */ + public function checkStatus($uuid) + { + $token = $this->getToken(); + $url = $this->buildUrl('report/'.$uuid, $token); + $request = $this->client->get($url); + + $response = false; + try { + $this->attemptsCheckStatus++; + $response = $request->send(); + } catch (BadResponseException $e) { + $this->cache->delete($this->getTokenCacheKey()); + $body = json_decode($e->getResponse()->getBody()); + if ($this->isTokenExpired($body) && $this->attemptsCheckStatus <= 1) { + return $this->checkStatus($uuid); + } + $this->logDebug($url, $uuid, $e->getResponse()); + } + + if ($response) { + return $response->getBody()->__toString(); + } + + return false; + } + + /** + * @param $logger + */ + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } + + /** + * @param CacheProvider $cache + */ + public function setCache(CacheProvider $cache) + { + $this->cache = $cache; + } + + /** + * @return mixed + */ + public function getVersion() + { + return $this->version; + } + + /** + * @param mixed $version + */ + public function setVersion($version): void + { + $this->version = $version; + } + + + /** + * @return mixed + */ + protected function getToken() + { + $data = [ + 'login' => $this->login, + 'pass' => $this->pass, + ]; + + if ($token = $this->cache->fetch($this->getTokenCacheKey())) { + return $token; + } + + $dataJson = json_encode((object)$data, JSON_UNESCAPED_UNICODE); + $url = $this->baseApiUrl + .'/'.$this->getVersion() + .'/getToken'; + + $request = $this->client->createRequest('POST', $url, null, $dataJson); + $response = false; + try { + $response = $this->client->send($request); + } catch (BadResponseException $e) { + if ($this->logger) { + $this->logger->error($e->getResponse()->getBody()); + } + } + + if ($response) { + $response = json_decode($response->getBody()); + + if (isset($response->code) && $response->code == 1 || $response->code == 0) { + $this->cache->save($this->getTokenCacheKey(), $response->token, self::TOKEN_CACHE_TIME); + + return $response->token; + } + } + + + return false; + } + + /** + * @param $data + * @return string + */ + protected function getTokenCacheKey() + { + return self::TOKEN_CACHE_KEY.'_'.md5($this->login.$this->pass); + } + + /** + * @param string $operation + * @param null $token + * @return string + */ + protected function buildUrl($operation, $token = null) + { + $url = $this->baseApiUrl + .'/'.$this->version + .'/'.$this->groupCode + .'/'.$operation; + + if ($token) { + if ($this->version === self::API_VERSION_V4) { + $url .= '?token='.$token; + } elseif ($this->version === self::API_VERSION_V3) { + $url .= '?tokenid='.$token; + } + } + + return $url; + } + + /** + * @param string $operation + * @param string $data + * @return Response|bool + */ + protected function sendOperationRequest($operation, $data) + { + $token = $this->getToken(); + $url = $this->buildUrl($operation, $token); + + $request = $this->client->createRequest('POST', $url, null, $data); + $response = false; + try { + $this->attempts++; + $response = $this->client->send($request); + } catch (BadResponseException $e) { + $this->cache->delete($this->getTokenCacheKey()); + $body = json_decode($e->getResponse()->getBody()); + if ($this->isTokenExpired($body) && $this->attempts <= 1) { + return $this->sendOperationRequest($operation, $data); + } + $this->logDebug($url, $data, $e->getResponse()); + } + if ($response) { + $this->logDebug($url, $data, $response); + } + + return $response; + } + + protected function logDebug($url, $data, Response $response) + { + if ($this->debug && $this->logger) { + $v = "* URL: ".$url; + $v .= "\n * POSTFILEDS: ".$data; + $v .= "\n * RESPONSE HEADERS: ".$response->getRawHeaders(); + $v .= "\n * RESPONSE BODY: ".$response->getBody(); + $v .= "\n * ATTEMPTS: ".$this->attempts; + $this->logger->debug($v); + } + } + + protected function isTokenExpiredCode($code) + { + return in_array($code, [4, 5, 6, 12, 13, 14]); + } + + private function isTokenExpired($body) + { + return isset($body->error) && $this->isTokenExpiredCode($body->error->code); + } +} diff --git a/src/AtolOnlineClient/Configuration.php b/src/AtolOnlineClient/Configuration.php new file mode 100644 index 0000000..765a06b --- /dev/null +++ b/src/AtolOnlineClient/Configuration.php @@ -0,0 +1,146 @@ +addPropertyConstraint('connections', new Assert\NotBlank()); + $metadata->addPropertyConstraint('connections', new Assert\Valid()); + } + + public function loadConnections($connections) + { + if (!$connections) { + return; + } + foreach ($connections as $connectionItem) { + $connection = new Connection(); + $connection->login = $connectionItem['login']; + $connection->pass = $connectionItem['pass']; + $connection->group = $connectionItem['group']; + $connection->legalEntity = $connectionItem['legalEntity']; + $connection->sno = $connectionItem['sno']; + $connection->enabled = (bool) $connectionItem['enabled']; + $connection->paymentTypes = $connectionItem['paymentTypes']; + $connection->paymentStatuses = $connectionItem['paymentStatuses']; + $connection->ofd = $connectionItem['ofd']; + $connection->version = $connectionItem['version']; + $this->connections[] = $connection; + } + } + + /** + * @param bool $enabled + */ + public function setEnabled($enabled) + { + $this->enabled = (bool) $enabled; + } + + /** + * @param bool $sendEmail + * + * @return $this + */ + public function setSendEmail($sendEmail) + { + $this->sendEmail = (bool) $sendEmail; + + return $this; + } + + /** + * @param bool $sendSms + * + * @return $this + */ + public function setSendSms($sendSms) + { + $this->sendSms = (bool) $sendSms; + + return $this; + } + + /** + * @param mixed $debug + */ + public function setDebug($debug) + { + $this->debug = $debug; + } + + /** + * @return bool + */ + public function isEnabled() + { + return (bool) $this->enabled; + } + + /** + * @return bool + */ + public function isSendEmail() + { + return (bool) $this->sendEmail; + } + + /** + * @return bool + */ + public function isSendSms() + { + return (bool) $this->sendSms; + } + + /** + * @return mixed + */ + public function isDebug() + { + return $this->debug; + } + + /** + * @param LegalEntity $legalentity + * @return bool|Connection + */ + public function getLegalEntityConnection(LegalEntity $legalentity) + { + if (!$this->connections || !$this->enabled) { + return false; + } + + foreach ($this->connections as $connection) { + if ($connection->enabled && $connection->legalEntity == $legalentity->getId()) { + return $connection; + } + } + + return false; + } +} diff --git a/src/AtolOnlineClient/Configuration/Connection.php b/src/AtolOnlineClient/Configuration/Connection.php new file mode 100644 index 0000000..bd9a8f2 --- /dev/null +++ b/src/AtolOnlineClient/Configuration/Connection.php @@ -0,0 +1,160 @@ +url = $url; + } + + + public function __construct() + { + $this->setUrl(''); + } + + /** + * @return bool + */ + public function isDebug(): bool + { + return $this->debug; + } + + /** + * @param bool $debug + */ + public function setDebug(bool $debug): void + { + $this->debug = $debug; + } + + /** + * @param ClassMetadata $metadata + */ + public static function loadValidatorMetadata(ClassMetadata $metadata) + { + $metadata->addPropertyConstraint('login', new Assert\NotBlank()); + $metadata->addPropertyConstraint('pass', new Assert\NotBlank()); + $metadata->addPropertyConstraint('group', new Assert\NotBlank()); + $metadata->addPropertyConstraint('legalEntity', new Assert\NotBlank()); + $metadata->addPropertyConstraints('sno', [ + new Assert\Choice([ + 'choices' => self::snoTypes, + ]) + ]); + $metadata->addPropertyConstraints('ofd', [ + new Assert\Choice([ + 'choices' => self::ofdList, + ]) + ]); + $metadata->addPropertyConstraints('version', [ + new Assert\Choice([ + 'choices' => self::versions, + ]) + ]); + $metadata->addPropertyConstraint('paymentTypes', new Assert\NotBlank()); + $metadata->addPropertyConstraint('paymentStatuses', new Assert\NotBlank()); + } + + /** + * @return string + */ + public function getOfdAddress() + { + switch ($this->ofd) { + case self::PLATFORMA_OFD: + return 'platformaofd.ru'; + case self::PERVIY_OFD: + return 'www.1-ofd.ru'; + case self::TAXCOM_OFD: + return 'taxcom.ru/ofd/'; + } + + return null; + } + + /** + * @return string + */ + public function getVersion() + { + return $this->version; + } +} diff --git a/src/AtolOnlineClient/ConfigurationInterface.php b/src/AtolOnlineClient/ConfigurationInterface.php new file mode 100644 index 0000000..692cd04 --- /dev/null +++ b/src/AtolOnlineClient/ConfigurationInterface.php @@ -0,0 +1,10 @@ +timestamp = (new \DateTime())->format('d.m.Y H:i:s'); + } + + /** + * @return string + */ + public function getTimestamp() + { + return $this->timestamp; + } + + /** + * @param string $timestamp + * + * @return $this + */ + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + + return $this; + } + + /** + * @return string + */ + public function getExternalId() + { + return $this->externalId; + } + + /** + * @param string $externalId + * + * @return $this + */ + public function setExternalId($externalId) + { + $this->externalId = $externalId; + + return $this; + } + + /** + * @return \AtolOnlineClient\Request\V3\ServiceRequest + */ + public function getService() + { + return $this->service; + } + + /** + * @param \AtolOnlineClient\Request\V3\ServiceRequest $service + * + * @return $this + */ + public function setService($service) + { + $this->service = $service; + + return $this; + } + + /** + * @return ReceiptRequest + */ + public function getReceipt() + { + return $this->receipt; + } + + /** + * @param ReceiptRequest $receipt + * + * @return $this + */ + public function setReceipt($receipt) + { + $this->receipt = $receipt; + + return $this; + } +} diff --git a/src/AtolOnlineClient/Request/V3/ReceiptAttributesRequest.php b/src/AtolOnlineClient/Request/V3/ReceiptAttributesRequest.php new file mode 100644 index 0000000..03fc56d --- /dev/null +++ b/src/AtolOnlineClient/Request/V3/ReceiptAttributesRequest.php @@ -0,0 +1,98 @@ +email = $email; + if ($email == null) { + $this->email = ''; + } + + $this->phone = $phone; + if ($phone == null) { + $this->phone = ''; + } + } + + /** + * @return string + */ + public function getSno() + { + return $this->sno; + } + + /** + * @param string $sno + * + * @return $this + */ + public function setSno($sno) + { + $this->sno = $sno; + + return $this; + } + + /** + * @return string + */ + public function getEmail() + { + return $this->email; + } + + /** + * @return string + */ + public function getPhone() + { + return $this->phone; + } +} diff --git a/src/AtolOnlineClient/Request/V3/ReceiptItemRequest.php b/src/AtolOnlineClient/Request/V3/ReceiptItemRequest.php new file mode 100644 index 0000000..ed380a8 --- /dev/null +++ b/src/AtolOnlineClient/Request/V3/ReceiptItemRequest.php @@ -0,0 +1,163 @@ +name; + } + + /** + * @param string $name + * + * @return $this + */ + public function setName($name) + { + $this->name = $name; + + return $this; + } + + /** + * @return float + */ + public function getPrice() + { + return $this->price; + } + + /** + * @param float $price + * + * @return $this + */ + public function setPrice($price) + { + $this->price = $price; + + return $this; + } + + /** + * @return integer + */ + public function getQuantity() + { + return $this->quantity; + } + + /** + * @param int $quantity + * + * @return $this + */ + public function setQuantity($quantity) + { + $this->quantity = $quantity; + + return $this; + } + + /** + * @return float + */ + public function getSum() + { + return $this->sum; + } + + /** + * @param float $sum + * + * @return $this + */ + public function setSum($sum) + { + $this->sum = $sum; + + return $this; + } + + /** + * @return string + */ + public function getTax() + { + return $this->tax; + } + + /** + * @param string $tax + * + * @return $this + */ + public function setTax($tax) + { + $this->tax = $tax; + + return $this; + } +} diff --git a/src/AtolOnlineClient/Request/V3/ReceiptPaymentRequest.php b/src/AtolOnlineClient/Request/V3/ReceiptPaymentRequest.php new file mode 100644 index 0000000..72e4ecf --- /dev/null +++ b/src/AtolOnlineClient/Request/V3/ReceiptPaymentRequest.php @@ -0,0 +1,59 @@ +type = $type; + $this->sum = $sum; + } + + + /** + * @return int + */ + public function getType() + { + return $this->type; + } + + /** + * @return float + */ + public function getSum() + { + return $this->sum; + } +} diff --git a/src/AtolOnlineClient/Request/V3/ReceiptRequest.php b/src/AtolOnlineClient/Request/V3/ReceiptRequest.php new file mode 100644 index 0000000..0fc8a16 --- /dev/null +++ b/src/AtolOnlineClient/Request/V3/ReceiptRequest.php @@ -0,0 +1,127 @@ +") + */ + private $items; + + /** + * @var float + * required + * @Serializer\Groups({"set", "get"}) + * @Serializer\SerializedName("total") + * @Serializer\Type("float") + */ + private $total; + + /** + * @var \AtolOnlineClient\Request\V3\ReceiptPaymentRequest[] + * "minItems": 1, "maxItems": 10, + * required + * @Serializer\Groups({"set", "get"}) + * @Serializer\SerializedName("payments") + * @Serializer\Type("array") + */ + private $payments; + + /** + * @return ReceiptAttributesRequest + */ + public function getAttributes() + { + return $this->attributes; + } + + /** + * @param ReceiptAttributesRequest $attributes + * + * @return $this + */ + public function setAttributes($attributes) + { + $this->attributes = $attributes; + + return $this; + } + + /** + * @return ReceiptItemRequest[] + */ + public function getItems() + { + return $this->items; + } + + /** + * @param ReceiptItemRequest[] $items + * + * @return $this + */ + public function setItems($items) + { + $this->items = $items; + + return $this; + } + + /** + * @return float + */ + public function getTotal() + { + return $this->total; + } + + /** + * @param float $total + * + * @return $this + */ + public function setTotal($total) + { + $this->total = $total; + + return $this; + } + + /** + * @return \AtolOnlineClient\Request\V3\ReceiptPaymentRequest[] + */ + public function getPayments() + { + return $this->payments; + } + + /** + * @param \AtolOnlineClient\Request\V3\ReceiptPaymentRequest[] $payments + * + * @return $this + */ + public function setPayments($payments) + { + $this->payments = $payments; + + return $this; + } +} diff --git a/src/AtolOnlineClient/Request/V3/ServiceRequest.php b/src/AtolOnlineClient/Request/V3/ServiceRequest.php new file mode 100644 index 0000000..3a90989 --- /dev/null +++ b/src/AtolOnlineClient/Request/V3/ServiceRequest.php @@ -0,0 +1,106 @@ +inn = $inn; + $this->paymentAddress = $paymentAddress; + } + + /** + * @return string + */ + public function getCallbackUrl() + { + return $this->callbackUrl; + } + + /** + * @param string $callbackUrl + * + * @return $this + */ + public function setCallbackUrl($callbackUrl) + { + $this->callbackUrl = $callbackUrl; + + return $this; + } + + /** + * @return string + */ + public function getInn() + { + return $this->inn; + } + + /** + * @param string $inn + * + * @return $this + */ + public function setInn($inn) + { + $this->inn = $inn; + + return $this; + } + + /** + * @return string + */ + public function getPaymentAddress() + { + return $this->paymentAddress; + } + + /** + * @param string $paymentAddress + * + * @return $this + */ + public function setPaymentAddress($paymentAddress) + { + $this->paymentAddress = $paymentAddress; + + return $this; + } +} diff --git a/src/AtolOnlineClient/Request/V4/ClientReceiptRequest.php b/src/AtolOnlineClient/Request/V4/ClientReceiptRequest.php new file mode 100644 index 0000000..654859a --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/ClientReceiptRequest.php @@ -0,0 +1,53 @@ +email = $email; + $this->phone = $phone; + } + + /** + * @return string + */ + public function getEmail(): string + { + return $this->email; + } + + /** + * @return string + */ + public function getPhone(): string + { + return $this->phone; + } +} diff --git a/src/AtolOnlineClient/Request/V4/CompanyReceiptRequest.php b/src/AtolOnlineClient/Request/V4/CompanyReceiptRequest.php new file mode 100644 index 0000000..4a87533 --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/CompanyReceiptRequest.php @@ -0,0 +1,108 @@ +email; + } + + /** + * @param string $email + */ + public function setEmail(string $email): void + { + $this->email = $email; + } + + /** + * @return string + */ + public function getSno(): string + { + return $this->sno; + } + + /** + * @param string $sno + */ + public function setSno(string $sno): void + { + $this->sno = $sno; + } + + /** + * @return string + */ + public function getInn(): string + { + return $this->inn; + } + + /** + * @param string $inn + */ + public function setInn(string $inn): void + { + $this->inn = $inn; + } + + /** + * @return string + */ + public function getPaymentAddress(): string + { + return $this->paymentAddress; + } + + /** + * @param string $paymentAddress + */ + public function setPaymentAddress(string $paymentAddress): void + { + $this->paymentAddress = $paymentAddress; + } +} diff --git a/src/AtolOnlineClient/Request/V4/PaymentReceiptRequest.php b/src/AtolOnlineClient/Request/V4/PaymentReceiptRequest.php new file mode 100644 index 0000000..d164044 --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/PaymentReceiptRequest.php @@ -0,0 +1,108 @@ +timestamp = (new \DateTime())->format('d.m.Y H:i:s'); + } + + /** + * @return string + */ + public function getExternalId(): string + { + return $this->externalId; + } + + /** + * @param string $externalId + */ + public function setExternalId(string $externalId): void + { + $this->externalId = $externalId; + } + + /** + * @return ReceiptRequest + */ + public function getReceipt(): ReceiptRequest + { + return $this->receipt; + } + + /** + * @param ReceiptRequest $receipt + */ + public function setReceipt(ReceiptRequest $receipt): void + { + $this->receipt = $receipt; + } + + /** + * @return string + */ + public function getTimestamp(): string + { + return $this->timestamp; + } + + /** + * @return ServiceRequest + */ + public function getService(): ServiceRequest + { + return $this->service; + } + + /** + * @param ServiceRequest $service + */ + public function setService(ServiceRequest $service): void + { + $this->service = $service; + } +} diff --git a/src/AtolOnlineClient/Request/V4/ReceiptItemRequest.php b/src/AtolOnlineClient/Request/V4/ReceiptItemRequest.php new file mode 100644 index 0000000..49cba55 --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/ReceiptItemRequest.php @@ -0,0 +1,261 @@ +name; + } + + /** + * @param string $name + */ + public function setName(string $name): void + { + $this->name = $name; + } + + /** + * @return float + */ + public function getPrice(): float + { + return $this->price; + } + + /** + * @param float $price + */ + public function setPrice(float $price): void + { + $this->price = $price; + } + + /** + * @return int + */ + public function getQuantity(): int + { + return $this->quantity; + } + + /** + * @param int $quantity + */ + public function setQuantity(int $quantity): void + { + $this->quantity = $quantity; + } + + /** + * @return float + */ + public function getSum(): float + { + return $this->sum; + } + + /** + * @param float $sum + */ + public function setSum(float $sum): void + { + $this->sum = $sum; + } + + /** + * @return string + */ + public function getMeasurementUnit(): string + { + return $this->measurementUnit; + } + + /** + * @param string $measurementUnit + */ + public function setMeasurementUnit(string $measurementUnit): void + { + $this->measurementUnit = $measurementUnit; + } + + /** + * @return string + */ + public function getPaymentMethod(): string + { + return $this->paymentMethod; + } + + /** + * @param string $paymentMethod + */ + public function setPaymentMethod(string $paymentMethod): void + { + $this->paymentMethod = $paymentMethod; + } + + /** + * @return string + */ + public function getPaymentObject(): string + { + return $this->paymentObject; + } + + /** + * @param string $paymentObject + */ + public function setPaymentObject(string $paymentObject): void + { + $this->paymentObject = $paymentObject; + } + + /** + * @return VatReceiptRequest + */ + public function getVat(): VatReceiptRequest + { + return $this->vat; + } + + /** + * @param VatReceiptRequest $vat + */ + public function setVat(VatReceiptRequest $vat): void + { + $this->vat = $vat; + } +} diff --git a/src/AtolOnlineClient/Request/V4/ReceiptPaymentRequest.php b/src/AtolOnlineClient/Request/V4/ReceiptPaymentRequest.php new file mode 100644 index 0000000..cbc7314 --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/ReceiptPaymentRequest.php @@ -0,0 +1,59 @@ +type = $type; + $this->sum = $sum; + } + + /** + * @return int + */ + public function getType() + { + return $this->type; + } + + /** + * @return float + */ + public function getSum() + { + return $this->sum; + } +} diff --git a/src/AtolOnlineClient/Request/V4/ReceiptRequest.php b/src/AtolOnlineClient/Request/V4/ReceiptRequest.php new file mode 100644 index 0000000..50cf51f --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/ReceiptRequest.php @@ -0,0 +1,163 @@ +") + */ + private $items; + + /** + * @var \AtolOnlineClient\Request\V4\ReceiptPaymentRequest[] + * "minItems": 1, "maxItems": 10, + * required + * @Serializer\Groups({"set", "get"}) + * @Serializer\SerializedName("payments") + * @Serializer\Type("array") + */ + private $payments; + + /** + * @var \AtolOnlineClient\Request\V4\VatReceiptRequest[] + * "minItems": 1, "maxItems": 6, + * required + * @Serializer\Groups({"set", "get"}) + * @Serializer\SerializedName("vats") + * @Serializer\Type("array") + */ + private $vats; + + /** + * @var float + * required + * @Serializer\Groups({"set", "get"}) + * @Serializer\SerializedName("total") + * @Serializer\Type("float") + */ + private $total; + + /** + * @return ClientReceiptRequest + */ + public function getClient(): ClientReceiptRequest + { + return $this->client; + } + + /** + * @param ClientReceiptRequest $client + */ + public function setClient(ClientReceiptRequest $client): void + { + $this->client = $client; + } + + /** + * @return CompanyReceiptRequest + */ + public function getCompany(): CompanyReceiptRequest + { + return $this->company; + } + + /** + * @param CompanyReceiptRequest $company + */ + public function setCompany(CompanyReceiptRequest $company): void + { + $this->company = $company; + } + + /** + * @return ReceiptItemRequest[] + */ + public function getItems(): array + { + return $this->items; + } + + /** + * @param ReceiptItemRequest[] $items + */ + public function setItems(array $items): void + { + $this->items = $items; + } + + /** + * @return ReceiptPaymentRequest[] + */ + public function getPayments(): array + { + return $this->payments; + } + + /** + * @param ReceiptPaymentRequest[] $payments + */ + public function setPayments(array $payments): void + { + $this->payments = $payments; + } + + /** + * @return VatReceiptRequest[] + */ + public function getVats(): array + { + return $this->vats; + } + + /** + * @param VatReceiptRequest[] $vats + */ + public function setVats(array $vats): void + { + $this->vats = $vats; + } + + /** + * @return float + */ + public function getTotal(): float + { + return $this->total; + } + + /** + * @param float $total + */ + public function setTotal(float $total): void + { + $this->total = $total; + } +} diff --git a/src/AtolOnlineClient/Request/V4/ServiceRequest.php b/src/AtolOnlineClient/Request/V4/ServiceRequest.php new file mode 100644 index 0000000..d1ef881 --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/ServiceRequest.php @@ -0,0 +1,33 @@ +callbackUrl; + } + + /** + * @param string $callbackUrl + */ + public function setCallbackUrl(string $callbackUrl): void + { + $this->callbackUrl = $callbackUrl; + } +} diff --git a/src/AtolOnlineClient/Request/V4/VatReceiptRequest.php b/src/AtolOnlineClient/Request/V4/VatReceiptRequest.php new file mode 100644 index 0000000..1df6e6b --- /dev/null +++ b/src/AtolOnlineClient/Request/V4/VatReceiptRequest.php @@ -0,0 +1,63 @@ +type = $type; + $this->sum = $sum; + } + + /** + * @return string + */ + public function getType(): string + { + return $this->type; + } + + /** + * @return float + */ + public function getSum(): string + { + return $this->sum; + } +} \ No newline at end of file diff --git a/src/AtolOnlineClient/Response/Error.php b/src/AtolOnlineClient/Response/Error.php new file mode 100644 index 0000000..173fdde --- /dev/null +++ b/src/AtolOnlineClient/Response/Error.php @@ -0,0 +1,96 @@ +code; + } + + /** + * @param int $code + * + * @return $this + */ + public function setCode($code) + { + $this->code = $code; + + return $this; + } + + /** + * @return string + */ + public function getText() + { + return $this->text; + } + + /** + * @param string $text + * + * @return $this + */ + public function setText($text) + { + $this->text = $text; + + return $this; + } + + /** + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * @param string $type + * + * @return $this + */ + public function setType($type) + { + $this->type = $type; + + return $this; + } +} diff --git a/src/AtolOnlineClient/Response/OperationResponse.php b/src/AtolOnlineClient/Response/OperationResponse.php new file mode 100644 index 0000000..bfd43d9 --- /dev/null +++ b/src/AtolOnlineClient/Response/OperationResponse.php @@ -0,0 +1,185 @@ +uuid; + } + + /** + * @param string $uuid + * + * @return $this + */ + public function setUuid($uuid) + { + $this->uuid = $uuid; + + return $this; + } + + /** + * @return string + */ + public function getTimestamp() + { + return $this->timestamp; + } + + /** + * @param string $timestamp + * + * @return $this + */ + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + + return $this; + } + + /** + * @return string + */ + public function getStatus() + { + return $this->status; + } + + /** + * @param string $status + * + * @return $this + */ + public function setStatus($status) + { + $this->status = $status; + + return $this; + } + + /** + * @return Error + */ + public function getError() + { + return $this->error; + } + + /** + * @param Error $error + * + * @return $this + */ + public function setError($error) + { + $this->error = $error; + + return $this; + } + + /** + * @return string + */ + public function getCallbackUrl() + { + return $this->callbackUrl; + } + + /** + * @param string $callbackUrl + * + * @return $this + */ + public function setCallbackUrl($callbackUrl) + { + $this->callbackUrl = $callbackUrl; + + return $this; + } + + /** + * @return Payload + */ + public function getPayload() + { + return $this->payload; + } + + /** + * @param Payload $payload + * + * @return $this + */ + public function setPayload($payload) + { + $this->payload = $payload; + + return $this; + } +} diff --git a/src/AtolOnlineClient/Response/Payload.php b/src/AtolOnlineClient/Response/Payload.php new file mode 100644 index 0000000..55d4731 --- /dev/null +++ b/src/AtolOnlineClient/Response/Payload.php @@ -0,0 +1,248 @@ +fiscalReceiptNumber; + } + + /** + * @param mixed $fiscalReceiptNumber + * + * @return $this + */ + public function setFiscalReceiptNumber($fiscalReceiptNumber) + { + $this->fiscalReceiptNumber = $fiscalReceiptNumber; + + return $this; + } + + /** + * @return mixed + */ + public function getShiftNumber() + { + return $this->shiftNumber; + } + + /** + * @param mixed $shiftNumber + * + * @return $this + */ + public function setShiftNumber($shiftNumber) + { + $this->shiftNumber = $shiftNumber; + + return $this; + } + + /** + * @return string + */ + public function getReceiptDatetime() + { + return $this->receiptDatetime; + } + + /** + * @param string $receiptDatetime + * + * @return $this + */ + public function setReceiptDatetime($receiptDatetime) + { + $this->receiptDatetime = $receiptDatetime; + + return $this; + } + + /** + * @return float + */ + public function getTotal() + { + return $this->total; + } + + /** + * @param float $total + * + * @return $this + */ + public function setTotal($total) + { + $this->total = $total; + + return $this; + } + + /** + * @return string + */ + public function getFnNumber() + { + return $this->fnNumber; + } + + /** + * @param string $fnNumber + * + * @return $this + */ + public function setFnNumber($fnNumber) + { + $this->fnNumber = $fnNumber; + + return $this; + } + + /** + * @return string + */ + public function getEcrRegistrationNumber() + { + return $this->ecrRegistrationNumber; + } + + /** + * @param string $ecrRegistrationNumber + * + * @return $this + */ + public function setEcrRegistrationNumber($ecrRegistrationNumber) + { + $this->ecrRegistrationNumber = $ecrRegistrationNumber; + + return $this; + } + + /** + * @return int + */ + public function getFiscalDocumentNumber() + { + return $this->fiscalDocumentNumber; + } + + /** + * @param int $fiscalDocumentNumber + * + * @return $this + */ + public function setFiscalDocumentNumber($fiscalDocumentNumber) + { + $this->fiscalDocumentNumber = $fiscalDocumentNumber; + + return $this; + } + + /** + * @return int + */ + public function getFiscalDocumentAttribute() + { + return $this->fiscalDocumentAttribute; + } + + /** + * @param int $fiscalDocumentAttribute + * + * @return $this + */ + public function setFiscalDocumentAttribute($fiscalDocumentAttribute) + { + $this->fiscalDocumentAttribute = $fiscalDocumentAttribute; + + return $this; + } +}