diff --git a/.gitignore b/.gitignore index 76cf2b9..1f75a27 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /logs /temp -/vendor -.env \ No newline at end of file +/vendor \ No newline at end of file diff --git a/composer.json b/composer.json index a1ac143..1eac1b8 100644 --- a/composer.json +++ b/composer.json @@ -28,6 +28,7 @@ }, "require": { "php": "~8.0", +<<<<<<< HEAD "psr/log": "^1.0", "monolog/monolog": "^1.6", "jasny/error-handler": "^0.2.0", @@ -37,6 +38,16 @@ "require-dev": { "phpdocumentor/phpdocumentor": ">=2.9", "phpunit/phpunit": "^9" +======= + "psr/log": "~1.0", + "hood/accounts": "~0.1.x-dev", + "monolog/monolog": "~1.6", + "jasny/error-handler": "~0.2", + "guzzlehttp/guzzle": "~7.2" + }, + "require-dev": { + "phpunit/phpunit": "~9.5" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index c6d4d96..3084fcb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,11 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], +<<<<<<< HEAD "content-hash": "6bfb42640d4d673c945e4d28222eb67a", +======= + "content-hash": "fb52a74dd40d0ceeb0c3745e52fe6a94", +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 "packages": [ { "name": "guzzlehttp/guzzle", @@ -91,6 +95,17 @@ }, { "url": "https://github.com/Nyholm", +<<<<<<< HEAD +======= + "type": "github" + }, + { + "url": "https://github.com/alexeyshockov", + "type": "github" + }, + { + "url": "https://github.com/gmponos", +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 "type": "github" }, { @@ -275,7 +290,183 @@ "type": "Hood" } ], +<<<<<<< HEAD "time": "2020-10-25T06:14:50+00:00" +======= + "time": "2020-10-10T11:47:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "60d379c243457e073cff02bc323a2a86cb355631" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", + "reference": "60d379c243457e073cff02bc323a2a86cb355631", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "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": "2020-09-30T07:37:28+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-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", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2020-09-30T07:37:11+00:00" + }, + { + "name": "hood/accounts", + "version": "0.1.x-dev", + "source": { + "type": "git", + "url": "https://git.hood.su/hood/accounts", + "reference": "3fdf607e094d50902f612588c34ebca7a4e245bf" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "guzzlehttp/guzzle": "^7.2", + "php": "~8.0" + }, + "require-dev": { + "phpunit/phpunit": "~9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "hood\\accounts\\": "hood/accounts/system" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Arsen Mirzaev Tatyano-Muradovich", + "email": "red@hood.su", + "homepage": "https://hood.su/mirzaev", + "role": "Programmer" + } + ], + "description": "Менеджер аккаунтов", + "homepage": "https://git.hood.su/hood/accounts", + "keywords": [ + "accounts", + "hood", + "vk" + ], + "funding": [ + { + "url": "https://git.hood.su/hood/accounts/thanks", + "type": "Hood" + } + ], + "time": "2021-01-28T11:59:37+00:00" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 }, { "name": "jasny/error-handler", @@ -328,6 +519,7 @@ }, { "name": "monolog/monolog", +<<<<<<< HEAD "version": "1.25.5", "source": { "type": "git", @@ -338,6 +530,18 @@ "type": "zip", "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1817faadd1846cd08be9a49e905dc68823bc38c0", "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0", +======= + "version": "1.26.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33", + "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33", +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 "shasum": "" }, "require": { @@ -353,7 +557,7 @@ "graylog2/gelf-php": "~1.0", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", - "php-parallel-lint/php-parallel-lint": "^1.0", + "phpstan/phpstan": "^0.12.59", "phpunit/phpunit": "~4.5", "ruflin/elastica": ">=0.90 <3.0", "sentry/sentry": "^0.13", @@ -373,11 +577,6 @@ "sentry/sentry": "Allow sending log messages to a Sentry server" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -411,7 +610,11 @@ "type": "tidelift" } ], +<<<<<<< HEAD "time": "2020-07-23T08:35:51+00:00" +======= + "time": "2020-12-14T12:56:38+00:00" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 }, { "name": "psr/http-client", @@ -559,6 +762,51 @@ ], "time": "2020-03-23T09:12:05+00:00" }, +<<<<<<< HEAD + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" + } + ], + "packages-dev": [ +======= +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 { "name": "ralouphie/getallheaders", "version": "3.0.3", @@ -601,328 +849,33 @@ } ], "packages-dev": [ - { - "name": "cilex/cilex", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/Cilex/Cilex.git", - "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Cilex/Cilex/zipball/7acd965a609a56d0345e8b6071c261fbdb926cb5", - "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5", - "shasum": "" - }, - "require": { - "cilex/console-service-provider": "1.*", - "php": ">=5.3.3", - "pimple/pimple": "~1.0", - "symfony/finder": "~2.1", - "symfony/process": "~2.1" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*", - "symfony/validator": "~2.1" - }, - "suggest": { - "monolog/monolog": ">=1.0.0", - "symfony/validator": ">=1.0.0", - "symfony/yaml": ">=1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-0": { - "Cilex": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "description": "The PHP micro-framework for Command line tools based on the Symfony2 Components", - "homepage": "http://cilex.github.com", - "keywords": [ - "cli", - "microframework" - ], - "time": "2014-03-29T14:03:13+00:00" - }, - { - "name": "cilex/console-service-provider", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/Cilex/console-service-provider.git", - "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Cilex/console-service-provider/zipball/25ee3d1875243d38e1a3448ff94bdf944f70d24e", - "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "pimple/pimple": "1.*@dev", - "symfony/console": "~2.1" - }, - "require-dev": { - "cilex/cilex": "1.*@dev", - "silex/silex": "1.*@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-0": { - "Cilex\\Provider\\Console": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "description": "Console Service Provider", - "keywords": [ - "cilex", - "console", - "pimple", - "service-provider", - "silex" - ], - "time": "2012-12-19T10:50:58+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.2.8", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "8a7ecad675253e4654ea05505233285377405215" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215", - "reference": "8a7ecad675253e4654ea05505233285377405215", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2020-08-23T12:54:47+00:00" - }, - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "abandoned": "psr/container", - "time": "2017-02-14T19:40:03+00:00" - }, - { - "name": "doctrine/annotations", - "version": "1.10.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "bfe91e31984e2ba76df1c1339681770401ec262f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/bfe91e31984e2ba76df1c1339681770401ec262f", - "reference": "bfe91e31984e2ba76df1c1339681770401ec262f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^9.1.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "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": "2020-08-10T19:35:50+00:00" - }, { "name": "doctrine/instantiator", - "version": "1.3.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", - "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.0", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -936,7 +889,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", @@ -959,311 +912,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T17:27:14+00:00" + "time": "2020-11-10T18:47:58+00:00" }, { - "name": "doctrine/lexer", - "version": "1.2.1", +<<<<<<< HEAD + "name": "composer/ca-bundle", + "version": "1.2.8", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "url": "https://github.com/composer/ca-bundle.git", + "reference": "8a7ecad675253e4654ea05505233285377405215" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2020-05-25T17:44:05+00:00" - }, - { - "name": "erusev/parsedown", - "version": "1.7.4", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2019-12-30T22:54:17+00:00" - }, - { - "name": "jms/metadata", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/metadata.git", - "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/e5854ab1aa643623dc64adde718a8eec32b957a8", - "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8", - "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": [ - "MIT" - ], - "authors": [ - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - }, - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Class/method/property metadata management in PHP", - "keywords": [ - "annotations", - "metadata", - "xml", - "yaml" - ], - "time": "2018-10-26T12:40:10+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": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/serializer.git", - "reference": "4fad8bbbe76e05de3b79ffa3db027058ed3813ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/4fad8bbbe76e05de3b79ffa3db027058ed3813ff", - "reference": "4fad8bbbe76e05de3b79ffa3db027058ed3813ff", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/instantiator": "^1.0.3", - "jms/metadata": "~1.1", - "jms/parser-lib": "1.*", - "php": ">=5.5.0", - "phpcollection/phpcollection": "~0.1", - "phpoption/phpoption": "^1.1" - }, - "conflict": { - "jms/serializer-bundle": "<1.2.1", - "twig/twig": "<1.12" - }, - "require-dev": { - "doctrine/orm": "~2.1", - "doctrine/phpcr-odm": "^1.3|^2.0", - "ext-pdo_sqlite": "*", - "jackalope/jackalope-doctrine-dbal": "^1.1.5", - "phpunit/phpunit": "^4.8|^5.0", - "propel/propel1": "~1.7", - "symfony/expression-language": "^2.6|^3.0", - "symfony/filesystem": "^2.1", - "symfony/form": "~2.1|^3.0", - "symfony/translation": "^2.1|^3.0", - "symfony/validator": "^2.2|^3.0", - "symfony/yaml": "^2.1|^3.0", - "twig/twig": "~1.12|~2.0" - }, - "suggest": { - "doctrine/cache": "Required if you like to use cache functionality.", - "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", - "symfony/yaml": "Required if you'd like to serialize data to YAML format." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-0": { - "JMS\\Serializer": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "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": "2017-05-15T08:35:42+00:00" - }, - { + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215", + "reference": "8a7ecad675253e4654ea05505233285377405215", +======= "name": "myclabs/deep-copy", - "version": "1.10.1", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", - "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 "shasum": "" }, "require": { @@ -1300,6 +976,608 @@ ], "funding": [ { +<<<<<<< HEAD + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-08-23T12:54:47+00:00" +======= + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + { + "name": "nikic/php-parser", + "version": "v4.10.4", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2020-12-20T10:01:03+00:00" + }, + { +<<<<<<< HEAD + "name": "doctrine/annotations", + "version": "1.10.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "bfe91e31984e2ba76df1c1339681770401ec262f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/bfe91e31984e2ba76df1c1339681770401ec262f", + "reference": "bfe91e31984e2ba76df1c1339681770401ec262f", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^9.1.5" +======= + "name": "phar-io/manifest", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + "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": "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" + } + ], +<<<<<<< HEAD + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2020-08-10T19:35:50+00:00" +======= + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2020-06-27T14:33:11+00:00" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + { + "name": "phar-io/version", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "e4782611070e50613683d2b9a57730e9a3ba5451" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451", + "reference": "e4782611070e50613683d2b9a57730e9a3ba5451", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.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": "2020-12-13T23:18:30+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.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": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2020-09-03T19:13:55+00:00" + }, + { +<<<<<<< HEAD + "name": "jms/metadata", + "version": "1.7.0", +======= + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.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": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-09-17T18:55:26+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.12.2", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "245710e971a030f42e08f4912863805570f23d39" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39", + "reference": "245710e971a030f42e08f4912863805570f23d39", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "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": "2020-12-19T10:15:11+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.10.2", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-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" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:44:49+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "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", + "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" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { +<<<<<<< HEAD + "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" + ], + "funding": [ + { "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", "type": "tidelift" } @@ -3751,6 +4029,1368 @@ }, "require": { "php": ">=5.3.3" +======= + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { +<<<<<<< HEAD + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" +======= + "dev-master": "3.1-dev" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], +<<<<<<< HEAD + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", +======= + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { +<<<<<<< HEAD + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" +======= + "dev-master": "2.0-dev" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + } + }, + "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" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], +<<<<<<< HEAD + "time": "2020-07-14T12:35:20+00:00" +======= + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + { + "name": "phpunit/phpunit", + "version": "9.5.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4", + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "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" + ], + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-02-02T14:45:58+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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 for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "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": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { +<<<<<<< HEAD + "name": "theseer/tokenizer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" +======= + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], +<<<<<<< HEAD + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" + }, + { + "name": "twig/twig", + "version": "v1.43.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "2311602f6a208715252febe682fa7c38e56a3373" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/2311602f6a208715252febe682fa7c38e56a3373", + "reference": "2311602f6a208715252febe682fa7c38e56a3373", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" +======= + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + "type": "library", + "extra": { + "branch-alias": { +<<<<<<< HEAD + "dev-master": "1.43-dev" +======= + "dev-master": "2.0-dev" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + } + }, + "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 for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], +<<<<<<< HEAD + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2020-08-05T15:05:05+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" +======= + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-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" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], +<<<<<<< HEAD + "time": "2020-07-08T17:02:28+00:00" +======= + "time": "2020-09-28T05:52:38+00:00" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:55:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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 for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "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": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { +<<<<<<< HEAD + "name": "zendframework/zend-i18n", + "version": "2.10.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-i18n.git", + "reference": "84038e6a1838b611dcc491b1c40321fa4c3a123c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/84038e6a1838b611dcc491b1c40321fa4c3a123c", + "reference": "84038e6a1838b611dcc491b1c40321fa4c3a123c", + "shasum": "" + }, + "require": { + "ext-intl": "*", + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" +======= + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + "conflict": { + "phpspec/prophecy": "<1.9.0" + }, + "require-dev": { +<<<<<<< HEAD + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.16", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6", + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", + "zendframework/zend-filter": "^2.6.1", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-validator": "^2.6", + "zendframework/zend-view": "^2.6.3" + }, + "suggest": { + "zendframework/zend-cache": "Zend\\Cache component", + "zendframework/zend-config": "Zend\\Config component", + "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", + "zendframework/zend-filter": "You should install this package to use the provided filters", + "zendframework/zend-i18n-resources": "Translation resources", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-validator": "You should install this package to use the provided validators", + "zendframework/zend-view": "You should install this package to use the provided view helpers" +======= + "phpunit/phpunit": "^9.3" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + "type": "library", + "extra": { + "branch-alias": { +<<<<<<< HEAD + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" + }, + "zf": { + "component": "Zend\\I18n", + "config-provider": "Zend\\I18n\\ConfigProvider" +======= + "dev-master": "4.0-dev" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], +<<<<<<< HEAD + "abandoned": "laminas/laminas-i18n", + "time": "2019-12-12T14:08:22+00:00" +======= + "time": "2020-10-26T13:17:30+00:00" +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.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": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-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": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:18:59+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "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", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "shasum": "" + }, + "require": { + "php": ">=7.1" }, "suggest": { "ext-ctype": "For best performance" @@ -3758,7 +5398,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3809,320 +5449,7 @@ "type": "tidelift" } ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "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" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/process", - "version": "v2.8.52", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c3591a09c78639822b0b290d44edb69bf9f05dc8", - "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "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 Process Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T11:18:13+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v2.8.52", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "752586c80af8a85aeb74d1ae8202411c68836663" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/752586c80af8a85aeb74d1ae8202411c68836663", - "reference": "752586c80af8a85aeb74d1ae8202411c68836663", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-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": "2018-11-11T11:18:13+00:00" - }, - { - "name": "symfony/translation", - "version": "v3.0.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/eee6c664853fd0576f21ae25725cfffeafe83f26", - "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.8" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/intl": "~2.8|~3.0", - "symfony/yaml": "~2.8|~3.0" - }, - "suggest": { - "psr/log": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-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": "2016-07-30T07:22:48+00:00" - }, - { - "name": "symfony/validator", - "version": "v2.8.52", - "source": { - "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "d5d2090bba3139d8ddb79959fbf516e87238fe3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/d5d2090bba3139d8ddb79959fbf516e87238fe3a", - "reference": "d5d2090bba3139d8ddb79959fbf516e87238fe3a", - "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-11-14T14:06:48+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "theseer/tokenizer", @@ -4170,91 +5497,17 @@ ], "time": "2020-07-12T23:59:07+00:00" }, - { - "name": "twig/twig", - "version": "v1.43.1", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "2311602f6a208715252febe682fa7c38e56a3373" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/2311602f6a208715252febe682fa7c38e56a3373", - "reference": "2311602f6a208715252febe682fa7c38e56a3373", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "^1.8" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.43-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2020-08-05T15:05:05+00:00" - }, { "name": "webmozart/assert", "version": "1.9.1", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", + "url": "https://github.com/webmozarts/assert.git", "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", "shasum": "" }, @@ -4292,745 +5545,17 @@ "validate" ], "time": "2020-07-08T17:02:28+00:00" - }, - { - "name": "zendframework/zend-cache", - "version": "2.8.3", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-cache.git", - "reference": "edde41f1ee5c28e01701a032f434d03751b65df4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/edde41f1ee5c28e01701a032f434d03751b65df4", - "reference": "edde41f1ee5c28e01701a032f434d03751b65df4", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0", - "zendframework/zend-eventmanager": "^2.6.3 || ^3.2", - "zendframework/zend-servicemanager": "^2.7.8 || ^3.3", - "zendframework/zend-stdlib": "^2.7.7 || ^3.1" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" - }, - "require-dev": { - "cache/integration-tests": "^0.16", - "phpbench/phpbench": "^0.13", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-serializer": "^2.6", - "zendframework/zend-session": "^2.7.4" - }, - "suggest": { - "ext-apc": "APC or compatible extension, to use the APC storage adapter", - "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter", - "ext-dba": "DBA, to use the DBA storage adapter", - "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", - "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", - "ext-mongo": "Mongo, to use MongoDb storage adapter", - "ext-mongodb": "MongoDB, to use the ExtMongoDb storage adapter", - "ext-redis": "Redis, to use Redis storage adapter", - "ext-wincache": "WinCache, to use the WinCache storage adapter", - "ext-xcache": "XCache, to use the XCache storage adapter", - "mongodb/mongodb": "Required for use with the ext-mongodb adapter", - "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement", - "zendframework/zend-serializer": "Zend\\Serializer component", - "zendframework/zend-session": "Zend\\Session component" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8.x-dev", - "dev-develop": "2.9.x-dev" - }, - "zf": { - "component": "Zend\\Cache", - "config-provider": "Zend\\Cache\\ConfigProvider" - } - }, - "autoload": { - "files": [ - "autoload/patternPluginManagerPolyfill.php" - ], - "psr-4": { - "Zend\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output", - "keywords": [ - "ZendFramework", - "cache", - "psr-16", - "psr-6", - "zf" - ], - "abandoned": "laminas/laminas-cache", - "time": "2019-08-28T21:34:32+00:00" - }, - { - "name": "zendframework/zend-config", - "version": "2.6.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-config.git", - "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-config/zipball/2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", - "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-filter": "^2.6", - "zendframework/zend-i18n": "^2.5", - "zendframework/zend-json": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" - }, - "suggest": { - "zendframework/zend-filter": "Zend\\Filter component", - "zendframework/zend-i18n": "Zend\\I18n component", - "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes", - "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Config\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides a nested object property based user interface for accessing this configuration data within application code", - "homepage": "https://github.com/zendframework/zend-config", - "keywords": [ - "config", - "zf2" - ], - "abandoned": "laminas/laminas-config", - "time": "2016-02-04T23:01:10+00:00" - }, - { - "name": "zendframework/zend-eventmanager", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "a5e2583a211f73604691586b8406ff7296a946dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", - "reference": "a5e2583a211f73604691586b8406ff7296a946dd", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "^0.1", - "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0" - }, - "suggest": { - "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev", - "dev-develop": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\EventManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://github.com/zendframework/zend-eventmanager", - "keywords": [ - "event", - "eventmanager", - "events", - "zf2" - ], - "abandoned": "laminas/laminas-eventmanager", - "time": "2018-04-25T15:33:34+00:00" - }, - { - "name": "zendframework/zend-filter", - "version": "2.9.2", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-filter.git", - "reference": "d78f2cdde1c31975e18b2a0753381ed7b61118ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/d78f2cdde1c31975e18b2a0753381ed7b61118ef", - "reference": "d78f2cdde1c31975e18b2a0753381ed7b61118ef", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-stdlib": "^2.7.7 || ^3.1" - }, - "conflict": { - "zendframework/zend-validator": "<2.10.1" - }, - "require-dev": { - "pear/archive_tar": "^1.4.3", - "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "psr/http-factory": "^1.0", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-crypt": "^3.2.1", - "zendframework/zend-servicemanager": "^2.7.8 || ^3.3", - "zendframework/zend-uri": "^2.6" - }, - "suggest": { - "psr/http-factory-implementation": "psr/http-factory-implementation, for creating file upload instances when consuming PSR-7 in file upload filters", - "zendframework/zend-crypt": "Zend\\Crypt component, for encryption filters", - "zendframework/zend-i18n": "Zend\\I18n component for filters depending on i18n functionality", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for using the filter chain functionality", - "zendframework/zend-uri": "Zend\\Uri component, for the UriNormalize filter" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.9.x-dev", - "dev-develop": "2.10.x-dev" - }, - "zf": { - "component": "Zend\\Filter", - "config-provider": "Zend\\Filter\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Filter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Programmatically filter and normalize data and files", - "keywords": [ - "ZendFramework", - "filter", - "zf" - ], - "abandoned": "laminas/laminas-filter", - "time": "2019-08-19T07:08:04+00:00" - }, - { - "name": "zendframework/zend-hydrator", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-hydrator.git", - "reference": "22652e1661a5a10b3f564cf7824a2206cf5a4a65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/22652e1661a5a10b3f564cf7824a2206cf5a4a65", - "reference": "22652e1661a5a10b3f564cf7824a2206cf5a4a65", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.0@dev", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-filter": "^2.6", - "zendframework/zend-inputfilter": "^2.6", - "zendframework/zend-serializer": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" - }, - "suggest": { - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0, to support aggregate hydrator usage", - "zendframework/zend-filter": "^2.6, to support naming strategy hydrator usage", - "zendframework/zend-serializer": "^2.6.1, to use the SerializableStrategy", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3, to support hydrator plugin manager usage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-release-1.0": "1.0-dev", - "dev-release-1.1": "1.1-dev", - "dev-master": "2.0-dev", - "dev-develop": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Hydrator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-hydrator", - "keywords": [ - "hydrator", - "zf2" - ], - "abandoned": "laminas/laminas-hydrator", - "time": "2016-02-18T22:38:26+00:00" - }, - { - "name": "zendframework/zend-i18n", - "version": "2.10.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-i18n.git", - "reference": "84038e6a1838b611dcc491b1c40321fa4c3a123c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/84038e6a1838b611dcc491b1c40321fa4c3a123c", - "reference": "84038e6a1838b611dcc491b1c40321fa4c3a123c", - "shasum": "" - }, - "require": { - "ext-intl": "*", - "php": "^5.6 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.16", - "zendframework/zend-cache": "^2.6.1", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-config": "^2.6", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-filter": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-validator": "^2.6", - "zendframework/zend-view": "^2.6.3" - }, - "suggest": { - "zendframework/zend-cache": "Zend\\Cache component", - "zendframework/zend-config": "Zend\\Config component", - "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", - "zendframework/zend-filter": "You should install this package to use the provided filters", - "zendframework/zend-i18n-resources": "Translation resources", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component", - "zendframework/zend-validator": "You should install this package to use the provided validators", - "zendframework/zend-view": "You should install this package to use the provided view helpers" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "2.11.x-dev" - }, - "zf": { - "component": "Zend\\I18n", - "config-provider": "Zend\\I18n\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\I18n\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Provide translations for your application, and filter and validate internationalized values", - "keywords": [ - "ZendFramework", - "i18n", - "zf" - ], - "abandoned": "laminas/laminas-i18n", - "time": "2019-12-12T14:08:22+00:00" - }, - { - "name": "zendframework/zend-json", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-json.git", - "reference": "e9ddb1192d93fe7fff846ac895249c39db75132b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-json/zipball/e9ddb1192d93fe7fff846ac895249c39db75132b", - "reference": "e9ddb1192d93fe7fff846ac895249c39db75132b", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-stdlib": "^2.7.7 || ^3.1" - }, - "suggest": { - "zendframework/zend-json-server": "For implementing JSON-RPC servers", - "zendframework/zend-xml2json": "For converting XML documents to JSON" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev", - "dev-develop": "3.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Json\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", - "keywords": [ - "ZendFramework", - "json", - "zf" - ], - "abandoned": "laminas/laminas-json", - "time": "2019-10-09T13:56:13+00:00" - }, - { - "name": "zendframework/zend-serializer", - "version": "2.9.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-serializer.git", - "reference": "6fb7ae016cfdf0cfcdfa2b989e6a65f351170e21" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/6fb7ae016cfdf0cfcdfa2b989e6a65f351170e21", - "reference": "6fb7ae016cfdf0cfcdfa2b989e6a65f351170e21", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-json": "^2.5 || ^3.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.16", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-math": "^2.6 || ^3.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" - }, - "suggest": { - "zendframework/zend-math": "(^2.6 || ^3.0) To support Python Pickle serialization", - "zendframework/zend-servicemanager": "(^2.7.5 || ^3.0.3) To support plugin manager support" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.9.x-dev", - "dev-develop": "2.10.x-dev" - }, - "zf": { - "component": "Zend\\Serializer", - "config-provider": "Zend\\Serializer\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Serializer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Serialize and deserialize PHP structures to a variety of representations", - "keywords": [ - "ZendFramework", - "serializer", - "zf" - ], - "abandoned": "laminas/laminas-serializer", - "time": "2019-10-19T08:06:30+00:00" - }, - { - "name": "zendframework/zend-servicemanager", - "version": "2.7.11", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "99ec9ed5d0f15aed9876433c74c2709eb933d4c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/99ec9ed5d0f15aed9876433c74c2709eb933d4c7", - "reference": "99ec9ed5d0f15aed9876433c74c2709eb933d4c7", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "~1.0", - "php": "^5.5 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "dev-master", - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-di": "~2.5", - "zendframework/zend-mvc": "~2.5" - }, - "suggest": { - "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", - "zendframework/zend-di": "Zend\\Di component" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\ServiceManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-servicemanager", - "keywords": [ - "servicemanager", - "zf2" - ], - "abandoned": "laminas/laminas-servicemanager", - "time": "2018-06-22T14:49:54+00:00" - }, - { - "name": "zendframework/zend-stdlib", - "version": "2.7.7", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/0e44eb46788f65e09e077eb7f44d2659143bcc1f", - "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-hydrator": "~1.1" - }, - "require-dev": { - "athletic/athletic": "~0.1", - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-config": "~2.5", - "zendframework/zend-eventmanager": "~2.5", - "zendframework/zend-filter": "~2.5", - "zendframework/zend-inputfilter": "~2.5", - "zendframework/zend-serializer": "~2.5", - "zendframework/zend-servicemanager": "~2.5" - }, - "suggest": { - "zendframework/zend-eventmanager": "To support aggregate hydrator usage", - "zendframework/zend-filter": "To support naming strategy hydrator usage", - "zendframework/zend-serializer": "Zend\\Serializer component", - "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-release-2.7": "2.7-dev", - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Stdlib\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-stdlib", - "keywords": [ - "stdlib", - "zf2" - ], - "abandoned": "laminas/laminas-stdlib", - "time": "2016-04-12T21:17:31+00:00" - }, - { - "name": "zetacomponents/base", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/zetacomponents/Base.git", - "reference": "489e20235989ddc97fdd793af31ac803972454f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zetacomponents/Base/zipball/489e20235989ddc97fdd793af31ac803972454f1", - "reference": "489e20235989ddc97fdd793af31ac803972454f1", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "zetacomponents/unit-test": "*" - }, - "type": "library", - "autoload": { - "classmap": [ - "src" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sergey Alexeev" - }, - { - "name": "Sebastian Bergmann" - }, - { - "name": "Jan Borsodi" - }, - { - "name": "Raymond Bosman" - }, - { - "name": "Frederik Holljen" - }, - { - "name": "Kore Nordmann" - }, - { - "name": "Derick Rethans" - }, - { - "name": "Vadym Savchuk" - }, - { - "name": "Tobias Schlitt" - }, - { - "name": "Alexandru Stanoi" - } - ], - "description": "The Base package provides the basic infrastructure that all packages rely on. Therefore every component relies on this package.", - "homepage": "https://github.com/zetacomponents", - "time": "2017-11-28T11:30:00+00:00" - }, - { - "name": "zetacomponents/document", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/zetacomponents/Document.git", - "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zetacomponents/Document/zipball/688abfde573cf3fe0730f82538fbd7aa9fc95bc8", - "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8", - "shasum": "" - }, - "require": { - "zetacomponents/base": "*" - }, - "require-dev": { - "zetacomponents/unit-test": "dev-master" - }, - "type": "library", - "autoload": { - "classmap": [ - "src" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sebastian Bergmann" - }, - { - "name": "Kore Nordmann" - }, - { - "name": "Derick Rethans" - }, - { - "name": "Tobias Schlitt" - }, - { - "name": "Alexandru Stanoi" - } - ], - "description": "The Document components provides a general conversion framework for different semantic document markup languages like XHTML, Docbook, RST and similar.", - "homepage": "https://github.com/zetacomponents", - "time": "2013-12-19T11:40:00+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "hood/accounts": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.4.0" + "php": "~8.0" }, "platform-dev": [], "plugin-api-version": "1.1.0" diff --git a/hood/vk/system/api/api.php b/hood/vk/system/api/api.php new file mode 100644 index 0000000..c4f14a6 --- /dev/null +++ b/hood/vk/system/api/api.php @@ -0,0 +1,202 @@ +_init(); + } + } + + /** + * Инициализация (безопасная) + */ + public function init(): array + { + if (!isset($blocked)) { + // Нет блокировки (запуск в первый раз) + + // Блокировка + static $blocked = true; + + try { + $this->_init(); + } catch (Throwable $t) { + throw new Exception('Не удалось инициализировать API', $t->getCode(), $t->getPrevious()); + } + } + + return $this->settings; + } + + /** + * Реинициализация + */ + public function reinit(): array + { + // Реинициализация + //unset($this->settings); + $this->settings = []; + + try { + $this->_init(); + } catch (Throwable $t) { + throw new Exception('Не удалось инициализировать API', $t->getCode(), $t->getPrevious()); + } + + return $this->settings; + } + + /** + * Инициализация + */ + protected function _init(): void + { + // Ключ + $this->settings['access_token'] = $this->robot->key; + + // Версия API + $this->settings['v'] = $this->version; + } + + /** + * Выбрать получателя + * + * Определяет получателей по входным параметрам + * + * @see hood\vk\api\methods\messages Сообщения + */ + public function chooseDestination(string|array|int $destination): void + { + if (is_int($destination)) { + // Идентификатор + + $this->settings['peer_id'] = $destination; + } else if (is_array($destination)) { + // Идентификаторы + + $this->settings['user_ids'] = $destination; + } else { + // Домен + + $this->settings['domain'] = $destination; + } + } + + /** + * Записать свойство + * + * @param string $name Название + * @param mixed $value Значение + */ + public function __set(string $name, mixed $value): void + { + match ($name) { + 'robot' => !isset($this->robot) ? $this->robot = $value : throw new Exception('Запрещено перезаписывать робота'), + 'settings' => !isset($this->settings) ? $this->settings = $value : throw new Exception('Запрещено перезаписывать настройки'), + default => $this->settings[$name] = $value + }; + } + + /** + * Прочитать свойство + * + * @param string $name Название + */ + public function __get(string $name): mixed + { + return match ($name) { + 'robot' => $this->robot ?? throw new Exception('Робот не инициализирован'), + 'settings' => $this->settings ?? throw new Exception('Настройки не инициализированы'), + default => $this->settings[$name] ?? throw new Exception('Параметр не найден: settings[\'' . $name . '\']') + }; + } + + /** + * Записать по смещению + */ + public function offsetSet(mixed $offset, mixed $value): void + { + if ($offset == 'settings') { + !isset($this->settings) ? $this->settings = $value : throw new Exception('Запрещено перезаписывать настройки'); + } else if (isset($this->settings)) { + $this->settings[$offset] = $value; + } else { + throw new Exception('Настройки не инициализированы'); + } + } + + /** + * Прочитать по смещению + */ + public function offsetGet(mixed $offset): mixed + { + if ($offset == 'settings' && isset($this->settings)) { + return $this->settings; + } else if (isset($this->settings)) { + if (isset($this->settings[$offset])) { + return $this->settings[$offset]; + } else { + throw new Exception('Не найдено: settings[\'' . $offset . '\']'); + } + } else { + throw new Exception('Настройки не инициализированы'); + } + } + + /** + * Проверка существования смещения + */ + public function offsetExists(mixed $offset): bool + { + if ($offset == 'settings' && isset($this->settings)) { + return isset($this->settings); + } else if (isset($this->settings)) { + return isset($this->settings[$offset]); + } else { + throw new Exception('Настройки не инициализированы'); + } + } + + /** + * Удалить по смещению + */ + public function offsetUnset(mixed $offset): void + { + if ($offset == 'settings' && isset($this->settings)) { + unset($this->settings); + } else if (isset($this->settings)) { + unset($this->settings[$offset]); + } else { + throw new Exception('Настройки не инициализированы'); + } + } +} diff --git a/hood/vk/system/api/attachments.php b/hood/vk/system/api/attachments.php new file mode 100644 index 0000000..566f1e7 --- /dev/null +++ b/hood/vk/system/api/attachments.php @@ -0,0 +1,75 @@ +attachments) + count($attachments) > 10) { + throw new Exception('Превышен лимит вложений (10)'); + } + + // Запись вложений + $this->attachments = array_merge($this->attachments, $attachments); + + return $this; + } + + /** + * Очистить вложения + */ + public function Clear(): self + { + // Очистка вложений + $this->attachments = []; + + return $this; + } + + /** + * Прочитать свойство + * + * @param string $name Название + * + * @return mixed + */ + public function __get(string $name): mixed + { + return match ($name) { + 'attachments' => $this->attachments, + default => throw new Exception('Свойство не найдено: ' . $name) + }; + } +} diff --git a/hood/vk/system/api/methods/messages.php b/hood/vk/system/api/methods/messages.php index 5db7728..824fe99 100644 --- a/hood/vk/system/api/methods/messages.php +++ b/hood/vk/system/api/methods/messages.php @@ -4,14 +4,26 @@ declare(strict_types=1); namespace hood\vk\api\methods; +<<<<<<< HEAD use hood\vk\robots\robot, hood\vk\robots\group, hood\vk\robots\user; +======= +use Exception; + +use hood\accounts\vk; +use hood\vk\robots\robot; +use hood\vk\api\attachments; +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 /** * Сообщение * +<<<<<<< HEAD * public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2) Отправить сообщение +======= + * @method public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2) Отправить сообщение +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @see https://vk.com/dev/messages.send * @see https://vk.com/dev/messages.getById @@ -24,11 +36,16 @@ use hood\vk\robots\robot, final class messages extends method { /** +<<<<<<< HEAD * $mode Режим отправки +======= + * @param int $mode Режим отправки +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ protected int $mode = 1; /** +<<<<<<< HEAD * Создать сообщение * * Если переданы все параметры, то сразу отправляет @@ -48,16 +65,114 @@ final class messages extends method ) { // Отправка, если все параметры инициализированы return $this->send($destination); +======= + * @param string|null $text Текст + */ + protected string|null $text = null; + + /** + * @var array Массив вложений + */ + protected array $attachments; + + /** + * @var attachments Вложения + */ + protected attachments $attachment; + + /** + * Создать сообщение + * + * @param robot $robot Робот + */ + public function __construct( + protected robot $robot + ) { + } + + /** + * Записать текст + * + * @param string $text Текст + * + * @return self + */ + public function text(string $text): self + { + // Записать текст + if (!isset($this->text)) { + $this->text = $text; + } else { + $this->text .= $text; + } + + return $this; + } + + /** + * Записать фото + * + * @param $img Фото + * + * @return self + */ + public function image(...$imgs): self + { + // Перебор фото + foreach ($imgs as $img) { + + // Загрузить фото + $id = $this->robot->photo->getPhoto($img); + + // Записать к вложениям + $this->attachment($id); + } + + return $this; + } + + /** + * Записать вложение + * + * @param $attachments Вложения + */ + public function attachment(string ...$attachments): self + { + if (isset($this->attachment)) { + // Если вложения инициализированны + + // Записать вложение + $this->attachment->attachment(...$attachments); + } else { + // Если вложения не инициализированны + + // Инициализация вложений + $this->attachment = new attachments($this->robot); + + // Записать вложение + $this->attachment->attachment(...$attachments); + } + + return $this; +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } /** * Отправить сообщение * +<<<<<<< HEAD * $destination Получатель * * @see https://vk.com/dev/messages.send * * Ответ сервера +======= + * @param int|string|array $destination Получатель + * + * @see https://vk.com/dev/messages.send + * + * @return array Ответ сервера +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function send(int|string|array $destination): array { @@ -69,6 +184,7 @@ final class messages extends method $random_id *= rand(); } +<<<<<<< HEAD # Ключ match (true) { // Робот-группа @@ -125,6 +241,49 @@ final class messages extends method // Очистка unset($settings); +======= + // Реиницилазиция + $this->robot->api->reinit(); + + // Цель отправки + $this->robot->api->chooseDestination($destination); + + // Текст сообщения + $this->robot->api['message'] = $this->text; + + // Идентификатор сообщения + $this->robot->api['random_id'] = $random_id; + + // Фильтрация вложений, если они инициализированны + if (isset($this->attachments)) { + $forward_messages = []; + foreach ($this->attachments as &$attachment) { + if (iconv_substr($attachment, 0, 7, "UTF-8") === 'message') { + + // Если среди вложений найдено сообщение для пересылки + $forward_messages[] = $attachment; + unset($attachment); + } + } + + if (!empty($forward_messages)) { + // Если есть пересылаемые сообщения + $this->robot->api['forward_messages'] = implode(',', $forward_messages); + } + + if (!empty($this->attachments)) { + // Если есть вложения + $this->robot->api['attachment'] = implode(',', $this->attachments); + } + } + + + // Запрос + $request = $this->robot->browser->request(method: 'POST', uri: 'messages.send', options: ['form_params' => $this->robot->api['settings']]); + + // Очистка + //unset($settings); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 if ($this->mode >= 2) { // Если установлен режим 2 (усиленная проверка отправленного сообщения) @@ -132,6 +291,7 @@ final class messages extends method if (!empty($request["response"])) { // Если пришел ID сообщения +<<<<<<< HEAD // Ключ match (true) { // Робот-группа @@ -148,6 +308,16 @@ final class messages extends method // Запрос if ($this->robot->browser->post(uri: 'https://api.vk.com/method/messages.getById', options: $settings)['response']['count'] === 0) { +======= + // Реиницилазиция + $this->robot->api->reinit(); + + // Запрашиваемые сообщения + $this->robot->api['message_ids'] = $request["response"]; + + // Запрос + if ($this->robot->browser->post(uri: 'https://api.vk.com/method/messages.getById', options: $this->robot->api['settings'])['response']['count'] === 0) { +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 // Если сообщения не существует, то повторить отправку $this->send($destination); } @@ -160,6 +330,7 @@ final class messages extends method } /** +<<<<<<< HEAD * Получить информацию о сообщении * * Информация о сообщении @@ -192,12 +363,70 @@ final class messages extends method // Режим отправки $settings['mode'] = $this->mode; +======= + * Записать свойство + * + * @param string $name Название + * @param mixed $value Значение + * + * @return void + */ + public function __set(string $name, mixed $value): void + { + match ($name) { + 'attachment' => !isset($this->attachments) ? $this->attachments = $value : throw new Exception('Запрещено перезаписывать вложения'), + 'attachments' => !isset($this->attachments) ? $this->attachments = $value : throw new Exception('Запрещено перезаписывать массив вложений'), + default => throw new Exception('Свойство не найдено: ' . $name) + }; + } + + /** + * Прочитать свойство + * + * @param string $name Название + * + * @return mixed + */ + public function __get(string $name): mixed + { + return match ($name) { + 'text' => $this->text ?? throw new Exception('Текст не задан'), + 'attachment' => $this->attachment->attachments ?? $this->attachment = new attachments($this->robot), + 'attachments' => isset($this->attachment) ? $this->attachment->attachments : throw new Exception('Вложения не инициализированны'), + default => throw new Exception('Свойство не найдено: ' . $name) + }; + } + + /** + * Получить информацию о сообщении + * + * @return array Информация о сообщении + */ + public function info(): array + { + //Инициализация + //$settings = $this->init(); + $this->robot->api->init(); + + // Цель отправки + $this->robot->api->chooseDestination($this->destination); + + // Сообщение + $this->robot->api['message'] = $this->message; + + // Режим отправки + $this->robot->api['mode'] = $this->mode; +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 // Фильтрация вложений $forward_messages = []; foreach ($this->attachments as &$attachment) { if (iconv_substr(str: $attachment, offset: 0, length: 7, charset: "UTF-8") === 'message') { // Если среди вложений найдено сообщение для пересылки +<<<<<<< HEAD +======= + +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 $forward_messages[] = $attachment; unset($attachment); } @@ -205,14 +434,28 @@ final class messages extends method if (!empty($forward_messages)) { // Если есть пересылаемые сообщения +<<<<<<< HEAD $settings['forward_messages'] = implode(',', $forward_messages); +======= + + $this->robot->api['forward_messages'] = implode(',', $forward_messages); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } if (!empty($attachments)) { // Если есть вложения +<<<<<<< HEAD $settings['attachment'] = implode(',', $attachments); } return $settings; +======= + + $this->robot->api['attachment'] = implode(',', $this->attachments); + } + + /////////////////////////////////////////////////............................ Что это? + return $settings ?? []; +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } } diff --git a/hood/vk/system/api/methods/photos.php b/hood/vk/system/api/methods/photos.php index b88c258..a05b1d4 100644 --- a/hood/vk/system/api/methods/photos.php +++ b/hood/vk/system/api/methods/photos.php @@ -14,7 +14,11 @@ use Exception; /** * Фотографии (изображения) * +<<<<<<< HEAD * public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2) Отправить сообщение +======= + * @method public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2) Отправить сообщение +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @see https://vk.com/dev/photos.getUploadServer * @see https://vk.com/dev/messages.getById @@ -32,6 +36,7 @@ final class photos extends method protected $url; /** +<<<<<<< HEAD * Сохранить * * $robot Робот @@ -40,6 +45,26 @@ final class photos extends method * $caption Описание * $latitude Географическая широта (-90, 90) * $longitude Географическая долгота (-180, 180) +======= + * Создать сообщение + * + * @param robot $robot Робот + */ + public function __construct( + protected robot $robot + ) { + } + + /** + * Сохранить + * + * @param robot $robot Робот + * @param int $album_id Альбом + * @param int|null $group_id Группа + * @param string|null $caption Описание + * @param float|null $latitude Географическая широта (-90, 90) + * @param float|null $longitude Географическая долгота (-180, 180) +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @see https://vk.com/dev/photos.save * @@ -103,6 +128,10 @@ final class photos extends method * Загрузить * * @param Type $var +<<<<<<< HEAD +======= + * @return void +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public static function upload(string ...$images): void { @@ -122,9 +151,15 @@ final class photos extends method /** * Получить сервер для загрузки изображений * +<<<<<<< HEAD * $robot Робот * $album_id Альбом * $group_id Группа +======= + * @param robot $robot Робот + * @param int|null $album_id Альбом + * @param int|group|null $group_id Группа +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @see https://vk.com/dev/photos.getUploadServer * @@ -164,6 +199,7 @@ final class photos extends method /** * Получить альбомы * +<<<<<<< HEAD * $robot Робот * $album_ids = null Идентификаторы альбомов * $offset = null Смещение для выборки подмножества @@ -175,6 +211,19 @@ final class photos extends method * @see https://vk.com/dev/photos.getUploadServer * * Ответ сервера +======= + * @param robot $robot Робот + * @param array $album_ids = null Идентификаторы альбомов + * @param int $offset = null Смещение для выборки подмножества + * @param int $count = null Количество для возврата + * @param bool $need_system = null Активация возврата системных альбомов + * @param bool $need_covers = null Активация возврата поля с обложкой альбома + * @param bool $photo_sizes = null Активация специального формата размеров фотографий + * + * @see https://vk.com/dev/photos.getUploadServer + * + * @return array Ответ сервера +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public static function getAlbums(robot $robot, array $album_ids = null, int $offset = null, int $count = null, bool $need_system = null, bool $need_covers = null, bool $photo_sizes = null): array { @@ -208,6 +257,7 @@ final class photos extends method } /** +<<<<<<< HEAD * загрузить фото и получить его id * * $robot робот @@ -232,6 +282,33 @@ final class photos extends method //загрузить $response = json_decode($robot->browser->request('POST', $this->url, [ +======= + * Загрузить фото и получить его id + * + * $robot робот + * + * $img фото + */ + + public function getPhoto($img) + { + // Реиницилазиция + $this->robot->api->reinit(); + + // Идентификатор группы + $this->robot->api['group_id'] = $this->robot->id; + + // Идентификатор назначения (0 Для ботов) + $this->robot->api['peer_id'] = 0; + + // Получить адрес сервера для загрузки фотографии в личное сообщение + $url = json_decode($this->robot->browser->request('POST', 'photos.getMessagesUploadServer', [ + 'form_params' => $this->robot->api['settings'] + ])->getBody()->getContents())->response->upload_url; + + // Загрузить фото + $response = json_decode($this->robot->browser->request('POST', $url, [ +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 'multipart' => [ [ 'Content-type' => 'multipart/form-data', @@ -241,6 +318,7 @@ final class photos extends method ] ])->getBody()->getContents()); +<<<<<<< HEAD //сохранить $response = json_decode($robot->browser->request('POST', 'photos.saveMessagesPhoto', [ 'form_params' => [ @@ -255,4 +333,36 @@ final class photos extends method return 'photo' . $response->response[0]->owner_id . '_' . $response->response[0]->id; } -} \ No newline at end of file +} +======= + + // Реинициализация + $this->robot->api->reinit(); + + // Идентификатор группы + $this->robot->api['group_id'] = $this->robot->id; + + + // Сервер + $this->robot->api['server'] = $response->server; + + // Фото + $this->robot->api['photo'] = $response->photo; + + // Хэш + $this->robot->api['hash'] = $response->hash; + + // Сохранить фото + $response = json_decode($this->robot->browser->request('POST', 'photos.saveMessagesPhoto', [ + 'form_params' => $this->robot->api['settings'] + ])->getBody()->getContents()); + + // Ссылка на фото + if (isset($response->response)) { + return 'photo' . $response->response[0]->owner_id . '_' . $response->response[0]->id; + } else { + throw new Exception('Фото не загружено'); + } + } +} +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 diff --git a/hood/vk/system/core.php b/hood/vk/system/core.php index 556f776..39cc2fc 100644 --- a/hood/vk/system/core.php +++ b/hood/vk/system/core.php @@ -12,6 +12,7 @@ use hood\vk\loggers\jasmo, /** * Ядро * +<<<<<<< HEAD * $robots Количество роботов * $timezone Временная зона (журналирование) * $path Пути (архитектура проекта) @@ -21,6 +22,17 @@ use hood\vk\loggers\jasmo, * public public function build() Сборщик * public function set($id, $value) Запись в реестр * public function get($id = null) Чтение из реестра +======= + * @property-read int $robots Количество роботов + * @property string $timezone Временная зона (журналирование) + * @property array $path Пути (архитектура проекта) + * + * @method protected static function __construct() Инициализация + * @method public static function init() Запуск инициализации или получение инстанции + * @method public public function build() Сборщик + * @method public function set($id, $value) Запись в реестр + * @method public function get($id = null) Чтение из реестра +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @package VK * @author Арсен Мирзаев @@ -29,13 +41,25 @@ final class core { use singleton; +<<<<<<< HEAD /** * Счётчик роботов +======= + /** + * Счётчик роботов + * + * @var int +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private int $robots = 0; /** * Реестр роботов +<<<<<<< HEAD +======= + * + * @var array +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private array $registry = []; @@ -43,28 +67,54 @@ final class core * Временная зона * * Используется в логировании +<<<<<<< HEAD +======= + * + * @var string +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $timezone; /** * Путь до корня проекта +<<<<<<< HEAD +======= + * + * @var string +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $path_root; /** * Путь до папки журналов +<<<<<<< HEAD +======= + * + * @var string +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $path_logs; /** * Путь до временной папки +<<<<<<< HEAD +======= + * + * @var string +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $path_temp; /** * Журналист * +<<<<<<< HEAD * $file Файл для журналирования +======= + * @param string $file Файл для журналирования + * + * @return self +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @todo Добавить установку иного журналиста по спецификации PSR-3 * @todo Более гибкое журналирование @@ -80,10 +130,19 @@ final class core /** * Записать в реестр * +<<<<<<< HEAD * $id Идентификатор * $robot робот * * @see hood\vk\traits\registry Модификация метода +======= + * @param int $id + * @param robot $robot + * + * @see hood\vk\traits\registry Модификация метода + * + * @return void +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function set(int $id, robot $robot): void { @@ -101,10 +160,19 @@ final class core * * Если не передать идентификатор, то вернёт все значения * +<<<<<<< HEAD * $id Идентификатор * $session Сессия * * @see hood\vk\traits\registry Модификация метода +======= + * @param int|null $id Идентификатор + * @param int|null $session Сессия + * + * @see hood\vk\traits\registry Модификация метода + * + * @return mixed +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function get(int|null $id = null, int|null $session = null): mixed { @@ -122,10 +190,19 @@ final class core /** * Удалить из реестра * +<<<<<<< HEAD * $id Идентификатор * $session Сессия * * @see hood\vk\traits\registry Модификация метода +======= + * @param int|null $id Идентификатор + * @param int|null $session Сессия + * + * @see hood\vk\traits\registry Модификация метода + * + * @return void +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function delete(int|null $id = null, int|null $session = null): void { @@ -168,8 +245,15 @@ final class core /** * Записать свойство * +<<<<<<< HEAD * $name Название * $value Значение +======= + * @param mixed $name Название + * @param mixed $value Значение + * + * @return void +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __set(mixed $name, mixed $value): void { @@ -183,10 +267,17 @@ final class core /** * Прочитать свойство +<<<<<<< HEAD * * Значение по умолчанию, есле не задано * * $name Название +======= + * + * @param mixed $name Название + * + * @return mixed +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __get(mixed $name): mixed { @@ -206,8 +297,15 @@ final class core * Ищет класс описывающий робота, * создаёт и возвращает его объект * +<<<<<<< HEAD * $method Метод * $params Параметры +======= + * @param string $method Метод + * @param array $params Параметры + * + * @return robot +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __call(string $method, array $params): robot { diff --git a/hood/vk/system/robots/group.php b/hood/vk/system/robots/group.php index db0d42b..a39cfef 100644 --- a/hood/vk/system/robots/group.php +++ b/hood/vk/system/robots/group.php @@ -13,6 +13,7 @@ use Throwable, /** * Робот-группа * +<<<<<<< HEAD * $longpoll LongPoll-сессия * * public function __set($name, $value) Запись свойства @@ -21,21 +22,44 @@ use Throwable, * * hood\vk\robots * Arsen Mirzaev Tatyano-Muradovich +======= + * @property longpoll $longpoll LongPoll-сессия + * + * @method public function __set($name, $value) Запись свойства + * @method public function __get($name) Чтение свойства + * @method public function __isset($name) Проверка на инициализированность свойства + * + * @package hood\vk\robots + * @author Arsen Mirzaev Tatyano-Muradovich +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ final class group extends robot { /** +<<<<<<< HEAD * $longpoll LongPoll-сессия +======= + * @var longpoll $longpoll LongPoll-сессия +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ protected longpoll $longpoll; /** * Запись свойства * +<<<<<<< HEAD * $name Название * $value Значение * * @see hood\vk\robots\robot Наследуемый метод +======= + * @param string $name Название + * @param mixed $value Значение + * + * @see hood\vk\robots\robot Наследуемый метод + * + * @return void +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __set(string $name, mixed $value): void { @@ -54,9 +78,17 @@ final class group extends robot /** * Чтение свойства * +<<<<<<< HEAD * $name Название * * @see hood\vk\robots\robot Наследуемый метод +======= + * @param string $name Название + * + * @see hood\vk\robots\robot Наследуемый метод + * + * @return mixed +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __get(string $name): mixed { @@ -79,11 +111,19 @@ final class group extends robot /** * Проверка на инициализированность свойства * +<<<<<<< HEAD * $name Название * * @return mixed */ public function __isset(string $name) +======= + * @param string $name Название + * + * @return mixed + */ + public function __isset(string $name): bool +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 { try { return parent::__isset($name); diff --git a/hood/vk/system/robots/robot.php b/hood/vk/system/robots/robot.php index 84d3fbc..810a60c 100644 --- a/hood/vk/system/robots/robot.php +++ b/hood/vk/system/robots/robot.php @@ -8,6 +8,7 @@ use Exception; use GuzzleHttp\Client as browser; +<<<<<<< HEAD use hood\vk\core, hood\vk\api\methods\method, hood\vk\proxies\proxy, @@ -38,6 +39,40 @@ use hood\accounts\vk as account; * public function __call(string $method, array $params) Вызов метода * public static function __callStatic(string $method, array $params) Вызов статического метода * public function __toString() Конвертация в строку +======= +use hood\vk\core; +use hood\vk\proxies\proxy; +use hood\vk\captcha\captcha; +use hood\vk\api\api; +use hood\vk\api\methods\method; + +use hood\accounts\vk as account; + + +/** + * Робот + * + * @var int $id Идентификатор + * @var int $session Сессия + * @var string $key Ключ + * @var api $api API ВКонтакте + * @var account $account Аккаунт + * @var browser $browser Браузер + * @var proxy $proxy Прокси + * @var captcha $captcha Обработчик капчи + * + * @var int $messages_mode Режим отправки сообщений + * + * @method public function __construct(int $id = null, float $version = null) Конструктор + * @method public function key(string $key) Инициализация ключа + * @method public function account(account $account) Инициализация аккаунта + * @method public function __set($name, $value) Запись свойства + * @method public function __get($name) Чтение свойства + * @method public function __isset($name) Проверка на инициализированность свойства + * @method public function __call(string $method, array $params) Вызов метода + * @method public static function __callStatic(string $method, array $params) Вызов статического метода + * @method public function __toString() Конвертация в строку +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @package hood\vk\robots * @author Arsen Mirzaev Tatyano-Muradovich @@ -45,54 +80,93 @@ use hood\accounts\vk as account; abstract class robot { /** +<<<<<<< HEAD * Идентификатор */ protected int $id; /** * Сессия +======= + * @var int Сессия +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ protected int $session; /** +<<<<<<< HEAD * Ключ +======= + * @var string Ключ +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ protected string $key; /** +<<<<<<< HEAD * Версия API */ protected float $version = 5.124; /** * Аккаунт +======= + * @var string Аккаунт +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private account $account; /** +<<<<<<< HEAD * Прокси +======= + * @var proxy Прокси +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ protected proxy $proxy; /** +<<<<<<< HEAD * Обработчик капчи +======= + * @var captcha Обработчик капчи +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ protected captcha $captcha; /** +<<<<<<< HEAD * $messages_mode Режим отправки сообщений */ protected int $messages_mode = 1; +======= + * @var int Режим отправки сообщений + */ + protected int $messages_mode = 1; + + /** + * @var api API ВКонтакте + */ + protected api $api; +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 /** * Конструктор * +<<<<<<< HEAD * $id Идентификатор * $version Версия API */ public function __construct(int|null $id = null, float|null $version = null) { +======= + * @param int $id Идентификатор + */ + public function __construct( + protected int|null $id = null, + ) { +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 // Инициализация ядра $core = core::init(); @@ -104,17 +178,26 @@ abstract class robot // Идентификация сессии робота $this->session = count($core->get($this->id)); +<<<<<<< HEAD if (isset($version)) { // Инициализация версии $this->version = $version; } +======= +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } /** * Инициализация ключа * +<<<<<<< HEAD * $key Ключ +======= + * @param string $key Ключ + * + * @return self +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function key(string $key): self { @@ -130,7 +213,13 @@ abstract class robot /** * Инициализация аккаунта * +<<<<<<< HEAD * $account Аккаунт +======= + * @param account $account Аккаунт + * + * @return self +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function account(account $account): self { @@ -146,7 +235,13 @@ abstract class robot /** * Инициализация прокси * +<<<<<<< HEAD * $proxy Прокси +======= + * @param proxy $proxy Прокси + * + * @return self +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function proxy(proxy $proxy): self { @@ -158,7 +253,13 @@ abstract class robot /** * Инициализация обработчика капчи * +<<<<<<< HEAD * $captcha Обработчик капчи +======= + * @param captcha $captcha Обработчик капчи + * + * @return self +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function captcha(captcha $captcha): self { @@ -170,8 +271,15 @@ abstract class robot /** * Записать свойство * +<<<<<<< HEAD * $name Название * $value Значение +======= + * @param string $name Название + * @param mixed $value Значение + * + * @return void +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __set(string $name, mixed $value): void { @@ -179,13 +287,20 @@ abstract class robot 'id' => !isset($this->id) ? $this->id = (int) $value : throw new Exception('Запрещено перезаписывать идентификатор'), 'session' => !isset($this->session) ? $this->session = (int) $value : throw new Exception('Запрещено перезаписывать сессию'), 'key' => !isset($this->key) ? $this->key = (string) $value : throw new Exception('Запрещено перезаписывать ключ'), +<<<<<<< HEAD 'version' => !isset($this->version) ? $this->version = (float) $value : throw new Exception('Запрещено перезаписывать версию API'), +======= + 'api' => !isset($this->api) ? $this->api = $value : throw new Exception('Запрещено перезаписывать API'), +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 'account' => !isset($this->account) && $value instanceof account ? $this->account = $value : throw new Exception('Запрещено перезаписывать аккаунт'), 'browser' => !isset($this->browser) && $value instanceof browser ? $this->browser = $value : throw new Exception('Запрещено перезаписывать браузер'), 'proxy' => $this->proxy = $value, 'captcha' => $this->captcha = $value, 'messages_new' => $this->messages_new = (int) $value, +<<<<<<< HEAD // Если свойство не найдено: +======= +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 default => throw new Exception('Свойство не найдено: ' . $name) }; } @@ -193,6 +308,7 @@ abstract class robot /** * Прочитать свойство * +<<<<<<< HEAD * $name Название * * @return mixed @@ -205,6 +321,20 @@ abstract class robot 'key' => isset($this->key) ? $this->key : throw new Exception('Ключ не инициализирован'), 'version' => isset($this->version) ? $this->version : throw new Exception('Версия не инициализирована'), 'account' => isset($this->account) ? $this->account : throw new Exception('Аккаунт не инициализирован'), +======= + * @param string $name Название + * + * @return mixed + */ + public function __get(string $name): mixed + { + return match ($name) { + 'id' => $this->id ?? throw new Exception('Идентификатор не инициализирован'), + 'session' => $this->session ?? throw new Exception('Сессия не инициализирована'), + 'key' => $this->key ?? throw new Exception('Ключ не инициализирован'), + 'api' => $this->api ?? $this->api = new api($this), + 'account' => $this->account ?? throw new Exception('Аккаунт не инициализирован'), +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 'browser' => $this->browser ?? $this->browser = new browser([ 'base_uri' => 'https://api.vk.com/method/', 'cookies' => true @@ -212,7 +342,10 @@ abstract class robot 'proxy' => $this->proxy, 'captcha' => $this->captcha, 'messages_new' => $this->messages_new, +<<<<<<< HEAD // Если свойство не найдено: +======= +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 default => throw new Exception('Свойство не найдено: ' . $name) }; } @@ -220,18 +353,30 @@ abstract class robot /** * Проверить свойство на инициализированность * +<<<<<<< HEAD * $name Название * * @return mixed */ public function __isset(string $name) +======= + * @param string $name Название + * + * @return mixed + */ + public function __isset(string $name): bool +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 { return match ($name) { 'id' => isset($this->id), 'session' => isset($this->session), 'key' => isset($this->key), 'account' => isset($this->account), +<<<<<<< HEAD 'version' => isset($this->version), +======= + 'api' => isset($this->api), +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 'browser' => isset($this->browser), 'proxy' => isset($this->proxy), 'captcha' => isset($this->captcha), @@ -246,8 +391,15 @@ abstract class robot * Ищет класс описывающий метод API ВКонтакте, * создаёт и возвращает его объект * +<<<<<<< HEAD * $method Метод * $params Параметры +======= + * @param string $method Метод + * @param array $params Параметры + * + * @return method +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __call(string $method, array $params): method { @@ -265,8 +417,15 @@ abstract class robot * Ищет класс описывающий метод API ВКонтакте, * создаёт и возвращает его объект * +<<<<<<< HEAD * $method Метод * $params Параметры +======= + * @param string $method Метод + * @param array $params Параметры + * + * @return method +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public static function __callStatic(string $method, array $params): method { @@ -279,6 +438,11 @@ abstract class robot /** * Конвертировать в строку +<<<<<<< HEAD +======= + * + * @return string +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public function __toString(): string { diff --git a/hood/vk/system/traits/singleton.php b/hood/vk/system/traits/singleton.php index 90a3508..7bdc3da 100644 --- a/hood/vk/system/traits/singleton.php +++ b/hood/vk/system/traits/singleton.php @@ -27,6 +27,11 @@ trait singleton /** * Инициализация +<<<<<<< HEAD +======= + * + * @return self +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ public static function init(): self { diff --git a/hood/vk/tests/.gitignore b/hood/vk/tests/.gitignore new file mode 100644 index 0000000..7a430cd --- /dev/null +++ b/hood/vk/tests/.gitignore @@ -0,0 +1 @@ +/settings.php \ No newline at end of file diff --git a/hood/vk/tests/api/apiTest.php b/hood/vk/tests/api/apiTest.php new file mode 100644 index 0000000..31d2c07 --- /dev/null +++ b/hood/vk/tests/api/apiTest.php @@ -0,0 +1,227 @@ +ssl = self::$ssl ?? true; + + if (empty(self::$key)) { + // Если не указан ключ + + // Проверка входных данных + if (empty(self::$login)) { + self::$markTestSkipped('Не найден входной аккаунта'); + } else if (empty(self::$password)) { + self::$markTestSkipped('Не найден пароль аккаунта'); + } + + // Деаутентификация (на всякий случай) + self::$account->deauth(); + + // Аутентификация и генерация ключа + self::$key = self::$account->auth(self::$login, self::$password)->key(self::$project_id); + } + + $this->assertNotNull(self::$key, 'Ошибка при инициализации ключа аккаунта'); + } + + /** + * @testdox Деинициализация аккаунта + * @afterClass + */ + public static function testAccountDeinit(): void + { + // Инициализация аккаунта + self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); + + // Деаутентификация + self::$account->deauth(); + } + + /** + * @testdox Инициализация робота + * @before + */ + public function testRobotGroupInit(): void + { + // Инициализация ядра + self::$core = core::init(); + + // Сохранение количества роботов + $count = self::$core->robots; + + // Инициализация робота + self::$robot = self::$core->group(empty(self::$group_id) ? rand(0, 10) : self::$group_id); + + // Проверка + $this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); + } + + /** + * @testdox Деинициализация робота + * @after + */ + public function testRobotGroupDeinit(): void + { + // Очистка реестра + self::$core->delete(); + + // Проверка + $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); + } + + /** + * @testdox Инициализация (безопасная) + */ + public function testInit(): void + { + // Безопасная инициализация + self::$robot->key(self::$group_key)->api->init(); + } + + /** + * @testdox Реинициализация + */ + public function testReinit(): void + { + // Реинициализация + self::$robot->key(self::$group_key)->api->reinit(); + } + + /** + * @testdox Запись робота (повторная) + */ + public function testWriteRobot(): void + { + // Проверка выброса исключения + $this->expectExceptionMessage('Запрещено перезаписывать робота'); + + // Повторная запись робота + self::$robot->key(self::$group_key)->api->robot = 'robot'; + } + + /** + * @tesetdox Чтение робота + */ + public function testReadRobot(): void + { + // Чтение робота + $this->assertNotNull(self::$robot->key(self::$group_key)->api->robot); + } + + /** + * @testdox Запись настроек + */ + public function testWriteSettings(): void + { + // Проверка выброса исключения + $this->expectExceptionMessage('Запрещено перезаписывать настройки'); + + // Запись настроек + self::$robot->key(self::$group_key)->api['settings'] = 'settings'; + } + + /** + * @testdox Чтение элемента настроек + */ + public function testReadSettingsElement(): void + { + // Проверка выброса исключения + $this->expectExceptionMessage('Не найдено: settings[\'element\']'); + + // Чтение элемента настроек + self::$robot->key(self::$group_key)->api['element']; + } + + /** + * @testdox Запись элемента настроек + */ + public function testWriteSettingsElement(): void + { + // Запись элемента настроек + self::$robot->key(self::$group_key)->api['element'] = 'element'; + + // Проверка + $this->assertNotNull(self::$robot->api['element']); + } + + /** + * @testdox Выбор получателя по идентификатору + */ + public function testchooseDestinationById(): void + { + // Выбор получателя по идентификатору + self::$robot->key(self::$group_key)->api->chooseDestination(12345); + + // Проверка + $this->assertNotNull(self::$robot->api['peer_id']); + } + + /** + * @testdox Выбор получателей по идентификаторам + */ + public function testchooseDestinationByIds(): void + { + // Выбор получателей по идентификаторам + self::$robot->key(self::$group_key)->api->chooseDestination([12345, 12345]); + + // Проверка + $this->assertNotNull(self::$robot->api['user_ids']); + } + + /** + * @testdox Выбор получателя по домену + */ + public function testchooseDestinationByDomain(): void + { + // Выбор получателя по домену + self::$robot->key(self::$group_key)->api->chooseDestination('domain'); + + // Проверка + $this->assertNotNull(self::$robot->api['domain']); + } +} diff --git a/hood/vk/tests/api/attachmentsTest.php b/hood/vk/tests/api/attachmentsTest.php new file mode 100644 index 0000000..63fb445 --- /dev/null +++ b/hood/vk/tests/api/attachmentsTest.php @@ -0,0 +1,187 @@ +ssl = self::$ssl ?? true; + + if (empty(self::$key)) { + // Если не указан ключ + + // Проверка входных данных + if (empty(self::$login)) { + self::$markTestSkipped('Не найден входной аккаунта'); + } else if (empty(self::$password)) { + self::$markTestSkipped('Не найден пароль аккаунта'); + } + + // Деаутентификация (на всякий случай) + self::$account->deauth(); + + // Аутентификация и генерация ключа + self::$key = self::$account->auth(self::$login, self::$password)->key(self::$project_id); + } + + $this->assertNotNull(self::$key, 'Ошибка при инициализации ключа аккаунта'); + } + + /** + * @testdox Деинициализация аккаунта + * @afterClass + */ + public static function testAccountDeinit(): void + { + // Инициализация аккаунта + self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); + + // Деаутентификация + self::$account->deauth(); + } + + /** + * @testdox Инициализация робота + * @before + */ + public function testRobotGroupInit(): void + { + // Инициализация ядра + self::$core = core::init(); + + // Сохранение количества роботов + $count = self::$core->robots; + + // Инициализация робота + self::$robot = self::$core->group(empty(self::$group_id) ? rand(0, 10) : self::$group_id); + + // Проверка + $this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); + } + + /** + * @testdox Деинициализация робота + * @after + */ + public function testRobotGroupDeinit(): void + { + // Очистка реестра + self::$core->delete(); + + // Проверка + $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); + } + + /** + * @testdox Инициализация вложений + * @before + */ + public function testAttachmentsInit(): void + { + if (isset(self::$robot)) { + self::$attachments = new Attachments(self::$robot); + } + } + + /** + * @testdox Чтение вложений + */ + public function testReadAttachments(): void + { + // Проверка + $this->assertNotNull(self::$attachments->attachments); + } + + /** + * @testdox Запись вложения + */ + public function testWriteAttachment(): void + { + // Запись вложения + self::$attachments->attachment('text'); + } + + /** + * @testdox Запись вложения (повторная) + */ + public function testWriteAttachmentWhenItIsAlreadyWrited(): void + { + //Запись вложения + self::$attachments->attachment('text'); + + // Повторная запись вложения + self::$attachments->attachment('text'); + + // Проверка + $this->assertSame(['text', 'text'], self::$attachments->attachments); + } + + /** + * @testdox Запись более 10 вложений + */ + public function testWriteAttachmentWhenLimitIsExceed() + { + // Проверка выброса исключения + $this->expectExceptionMessage('Превышен лимит вложений (10)'); + + //Запись вложений + self::$attachments->attachment('text', 'text', 'text', 'text', 'text', 'text', 'text', 'text', 'text', 'text', 'text'); + } + + /** + * @testdox Очистка вложений + */ + public function testClearAttachments(): void + { + // Очистка вложений + self::$attachments->clear(); + } +} diff --git a/hood/vk/tests/api/methods/messagesTest.php b/hood/vk/tests/api/methods/messagesTest.php index e6874ea..55b8cab 100644 --- a/hood/vk/tests/api/methods/messagesTest.php +++ b/hood/vk/tests/api/methods/messagesTest.php @@ -4,14 +4,24 @@ declare(strict_types=1); use PHPUnit\Framework\TestCase; +<<<<<<< HEAD use hood\vk\core, hood\vk\robots\robot, hood\vk\tests\settings; +======= +use hood\vk\core; +use hood\vk\robots\robot; +use hood\vk\tests\settings; +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 use hood\accounts\vk as account; /** +<<<<<<< HEAD * @testdox Робот-группа +======= + * @testdox Сообщения +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ final class messagesTest extends TestCase { @@ -32,6 +42,7 @@ final class messagesTest extends TestCase */ private static robot $robot; +<<<<<<< HEAD /** * @testdox Деинициализация аккаунта @@ -46,6 +57,8 @@ final class messagesTest extends TestCase self::$account->deauth(); } +======= +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 /** * @testdox Инициализация аккаунта * @beforeClass @@ -58,7 +71,11 @@ final class messagesTest extends TestCase } // Инициализация аккаунта +<<<<<<< HEAD self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts'); +======= + self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 // Запись режима SSL-протокола self::$account->ssl = self::$ssl ?? true; @@ -84,6 +101,7 @@ final class messagesTest extends TestCase } /** +<<<<<<< HEAD * @testdox Деинициализация робота * @after */ @@ -94,6 +112,18 @@ final class messagesTest extends TestCase // Проверка $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); +======= + * @testdox Деинициализация аккаунта + * @afterClass + */ + public static function testAccountDeinit(): void + { + // Инициализация аккаунта + self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); + + // Деаутентификация + self::$account->deauth(); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } /** @@ -115,6 +145,7 @@ final class messagesTest extends TestCase $this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); } +<<<<<<< HEAD /** * @testdox Инициализация робота @@ -123,4 +154,109 @@ final class messagesTest extends TestCase { var_dump(self::$robot->message('Тестирование отправки сообщения', self::$target_id ?? 'pizba228')); } +======= + /** + * @testdox Деинициализация робота + * @after + */ + public function testRobotGroupDeinit(): void + { + // Очистка реестра + self::$core->delete(); + + // Проверка + $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); + } + + /** + * @testdox Чтение текста + */ + public function testReadText(): void + { + // Проверка выброса исключения + $this->expectExceptionMessage('Текст не задан'); + + // Чтение текста + self::$robot->message()->text; + } + + /** + * @testdox Запись текста + */ + public function testWriteText(): void + { + // Запись текста + self::$robot->message()->text('text'); + } + + /** + * @testdox Запись текста (повторная) + */ + public function testWriteTextWhenHeIsAlreadyWrited(): void + { + // Запись текста + $message = self::$robot->message()->text('text'); + + // Повторная запись текста + $message->text('text'); + + // Проверка + $this->assertSame('texttext', $message->text); + } + + /** + * @testdox Запись фото + */ + public function testWriteImage(): void + { + // Запись фото + self::$robot->message()->text('img'); + } + + /** + * @testdox Чтение Вложений + */ + public function testReadAttachments(): void + { + // Проверка выброса исключеия + $this->expectExceptionMessage('Вложения не инициализированны'); + + // Проверка + self::$robot->message()->attachments; + } + + /** + * @testdox Запись вложений + */ + public function testWriteAttachments(): void + { + // Запись вложений + self::$robot->message()->attachment('text'); + } + + /** + * @testdox Отправка сообщения + */ + public function testSend(): void + { + // Отправка сообщения + self::$robot->key(self::$group_key)->message()->send('123'); + } + + /** + * @testdox Отправка сообщеий (с вложениями) + */ + public function testSendWithAttachments(): void + { + // Запись вложений + $message = self::$robot->key(self::$group_key)->message()->attachment('text'); + + // Отправка сообщения + $message->send('123'); + } + + /** + * @t estdox Отправка сообщеий (с пересылаемым сообщением) + */ +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } diff --git a/hood/vk/tests/api/methods/photosTest.php b/hood/vk/tests/api/methods/photosTest.php new file mode 100644 index 0000000..c7647d2 --- /dev/null +++ b/hood/vk/tests/api/methods/photosTest.php @@ -0,0 +1,128 @@ +ssl = self::$ssl ?? true; + + if (empty(self::$key)) { + // Если не указан ключ + + // Проверка входных данных + if (empty(self::$login)) { + self::$markTestSkipped('Не найден входной аккаунта'); + } else if (empty(self::$password)) { + self::$markTestSkipped('Не найден пароль аккаунта'); + } + + // Деаутентификация (на всякий случай) + self::$account->deauth(); + + // Аутентификация и генерация ключа + self::$key = self::$account->auth(self::$login, self::$password)->key(self::$project_id); + } + + $this->assertNotNull(self::$key, 'Ошибка при инициализации ключа аккаунта'); + } + + /** + * @testdox Деинициализация аккаунта + * @afterClass + */ + public static function testAccountDeinit(): void + { + // Инициализация аккаунта + self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../../accounts'); + + // Деаутентификация + self::$account->deauth(); + } + + /** + * @testdox Инициализация робота + * @before + */ + public function testRobotGroupInit(): void + { + // Инициализация ядра + self::$core = core::init(); + + // Сохранение количества роботов + $count = self::$core->robots; + + // Инициализация робота + self::$robot = self::$core->group(empty(self::$group_id) ? rand(0, 10) : self::$group_id); + + // Проверка + $this->assertEquals(self::$core->robots, $count + 1, 'Ошибка при инициализации робота'); + } + + /** + * @testdox Деинициализация робота + * @after + */ + public function testRobotGroupDeinit(): void + { + // Очистка реестра + self::$core->delete(); + + // Проверка + $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); + } + + /** + * @testdox Загрузка фото и получение его id + */ + public function testGetPhoto(): void + { + // Ожидаемое исключение (это временно) + $this->expectExceptionMessage('Фото не загружено'); + + // Проверка + self::$robot->key(self::$group_key)->photo()->getPhoto('img'); + } +} diff --git a/hood/vk/tests/robots/groupTest.php b/hood/vk/tests/robots/groupTest.php index 871b573..02c5fd8 100644 --- a/hood/vk/tests/robots/groupTest.php +++ b/hood/vk/tests/robots/groupTest.php @@ -33,6 +33,7 @@ final class groupTest extends TestCase private static robot $robot; /** +<<<<<<< HEAD * @testdox Деинициализация аккаунта * @afterClass */ @@ -46,6 +47,8 @@ final class groupTest extends TestCase } /** +======= +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * @testdox Инициализация аккаунта * @beforeClass */ @@ -83,6 +86,7 @@ final class groupTest extends TestCase } /** +<<<<<<< HEAD * @testdox Деинициализация робота * @after */ @@ -93,6 +97,18 @@ final class groupTest extends TestCase // Проверка $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); +======= + * @testdox Деинициализация аккаунта + * @afterClass + */ + public static function testAccountDeinit(): void + { + // Инициализация аккаунта + self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts'); + + // Деаутентификация + self::$account->deauth(); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } /** @@ -115,6 +131,22 @@ final class groupTest extends TestCase } /** +<<<<<<< HEAD +======= + * @testdox Деинициализация робота + * @after + */ + public function testRobotGroupDeinit(): void + { + // Очистка реестра + self::$core->delete(); + + // Проверка + $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); + } + + /** +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * @testdox Запись идентификатора */ public function testRobotGroupWriteId(): void @@ -226,6 +258,7 @@ final class groupTest extends TestCase } /** +<<<<<<< HEAD * @testdox Запись версии API */ public function testRobotGroupWriteVersion(): void @@ -244,5 +277,13 @@ final class groupTest extends TestCase { // Проверка $this->assertNotNull(self::$robot->version, 'Не удалось прочитать версию'); +======= + * @testdox Чтение API + */ + public function testRobotGroupReadApi(): void + { + // Проверка + $this->assertNotNull(self::$robot->key(self::$group_key)->api); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } } diff --git a/hood/vk/tests/robots/userTest.php b/hood/vk/tests/robots/userTest.php index b3a0d74..55b3426 100644 --- a/hood/vk/tests/robots/userTest.php +++ b/hood/vk/tests/robots/userTest.php @@ -33,6 +33,7 @@ final class userTest extends TestCase private static robot $robot; /** +<<<<<<< HEAD * @testdox Деинициализация аккаунта * @afterClass */ @@ -46,6 +47,8 @@ final class userTest extends TestCase } /** +======= +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * @testdox Инициализация аккаунта * @beforeClass */ @@ -83,6 +86,7 @@ final class userTest extends TestCase } /** +<<<<<<< HEAD * @testdox Деинициализация робота * @after */ @@ -93,6 +97,18 @@ final class userTest extends TestCase // Проверка $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); +======= + * @testdox Деинициализация аккаунта + * @afterClass + */ + public static function testAccountDeinit(): void + { + // Инициализация аккаунта + self::$account = new account(empty(self::$id) ? rand(0, 10) : self::$id, __DIR__ . '../../accounts'); + + // Деаутентификация + self::$account->deauth(); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } /** @@ -115,6 +131,22 @@ final class userTest extends TestCase } /** +<<<<<<< HEAD +======= + * @testdox Деинициализация робота + * @after + */ + public function testRobotGroupDeinit(): void + { + // Очистка реестра + self::$core->delete(); + + // Проверка + $this->assertEmpty(self::$core->get(self::$robot->id), 'Ошибка при деинициализации робота'); + } + + /** +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * @testdox Запись идентификатора */ public function testRobotGroupWriteId(): void @@ -201,6 +233,7 @@ final class userTest extends TestCase } /** +<<<<<<< HEAD * @testdox Чтение ключа */ public function testRobotGroupReadKey(): void @@ -244,5 +277,13 @@ final class userTest extends TestCase { // Проверка $this->assertNotNull(self::$robot->version, 'Не удалось прочитать версию'); +======= + * @testdox Чтение API + */ + public function testRobotGroupReadApi(): void + { + // Проверка + $this->assertNotNull(self::$robot->key(self::$group_key)->api); +>>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 } } diff --git a/hood/vk/tests/settings.php.example b/hood/vk/tests/settings.php.example new file mode 100644 index 0000000..c6d8e48 --- /dev/null +++ b/hood/vk/tests/settings.php.example @@ -0,0 +1,68 @@ +