From 3331a1565e525e7f3749e31b204012921410a58f Mon Sep 17 00:00:00 2001 From: ipetresf <42373269+ipetresf@users.noreply.github.com> Date: Mon, 19 Nov 2018 21:46:33 +0200 Subject: [PATCH] User specific endpoints (#112) --- .gitignore | 5 + README.md | 11 + composer.lock | 1054 ++++++++++++++++---------- config.php.template | 2 + docs/files/ET_Asset.php.txt | 4 +- docs/files/ET_BaseObjectRest.php.txt | 8 +- docs/files/ET_CUDSupportRest.php.txt | 6 +- docs/files/ET_Campaign.php.txt | 2 +- docs/files/ET_Campaign_Asset.php.txt | 2 +- docs/files/ET_Client.php.txt | 24 +- docs/files/ET_GetSupportRest.php.txt | 2 +- docs/files/ET_Message_Guide.php.txt | 16 +- docs/files/ET_OEM_Client.php.txt | 8 +- src/ET_Asset.php | 7 +- src/ET_BaseObjectRest.php | 6 +- src/ET_CUDSupportRest.php | 16 +- src/ET_CacheService.php | 69 ++ src/ET_Campaign.php | 2 +- src/ET_Campaign_Asset.php | 2 +- src/ET_Client.php | 74 +- src/ET_GetSupportRest.php | 5 +- src/ET_Message_Guide.php | 22 +- src/ET_OEM_Client.php | 14 +- src/ET_Util.php | 2 +- 24 files changed, 863 insertions(+), 500 deletions(-) create mode 100644 src/ET_CacheService.php diff --git a/.gitignore b/.gitignore index 9c1bb1c..362fc93 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,8 @@ objsamples/sample-testing.php /objsamples/sample-asset-upload.php /tests/CampaignAssetTest.php /tests/ImportListTest.php +.vscode +phpunit-*.phar +composer.phar +.idea +.cache \ No newline at end of file diff --git a/README.md b/README.md index 7a61bef..e379048 100755 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ Salesforce Marketing Cloud Fuel SDK for PHP ## Overview ## The Fuel SDK for PHP provides easy access to Salesforce Marketic Cloud's Fuel API Family services, including a collection of REST and SOAP API. These APIs provide access to Salesforce Marketing Cloud (previously called ExactTarget) functionality via common collection types such as array/hash. +## New Features in Version 1.2.0 ## + +* Added support for your tenant’s endpoints - [More Details](https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/your-subdomain-tenant-specific-endpoints.htm) + ## New Features in Version 1.1.0 ## * **namespace :** namespace is introduced. @@ -89,6 +93,8 @@ See the ET_Client section below for details on how to specify these values at th If you have not registered your application or you need to lookup your Application Key or Application Signature values, please go to Salesforce Marketing Cloud App Center. +You can define your own REST, SOAP and Authentication base urls both in the config file and the ET_Client constructor params argument. If the REST & SOAP base urls are not defined, it should default to `https://www.exacttargetapis.com` and `https://auth.exacttargetapis.com`. + ## Example Request ## All ExactTarget objects exposed through the Fuel SDK begin with be prefixed with "ET\_". Start by working with the ET_List object: @@ -178,6 +184,11 @@ Example passing JWT: Example passing ClientID/ClientSecret: > $myclient = new ET_Client(true, array("clientid" => "3bjbc3mg4nbk64z5kzczf89n", "clientsecret"=>"ssnGAPvZg6kmm775KPj2Q4Cs")); +Example passing base urls for REST, Authentication and SOAP: +> $myclient = new ET_Client(true, array("baseUrl" => "http://rest.endpoint.com", "baseAuthUrl" => "http://auth.endpoint.com", "baseSoapUrl" => "http://soap.endpoint.com")); + + + ## Responses ## All methods on Fuel SDK objects return a generic object that follows the same structure, regardless of the type of call. This object contains a common set of properties used to display details about the request. diff --git a/composer.lock b/composer.lock index c997075..366a80d 100644 --- a/composer.lock +++ b/composer.lock @@ -1,7 +1,7 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "279d7d9b366d26fb6554dc836af1bca9", @@ -290,30 +290,30 @@ }, { "name": "doctrine/annotations", - "version": "v1.4.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", "shasum": "" }, "require": { "doctrine/lexer": "1.*", - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { @@ -354,36 +354,36 @@ "docblock", "parser" ], - "time": "2017-02-24T16:22:25+00:00" + "time": "2017-12-06T07:11:42+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -408,7 +408,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "doctrine/lexer", @@ -507,21 +507,25 @@ }, { "name": "erusev/parsedown", - "version": "1.6.3", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "728952b90a333b5c6f77f06ea9422b94b585878d" + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/728952b90a333b5c6f77f06ea9422b94b585878d", - "reference": "728952b90a333b5c6f77f06ea9422b94b585878d", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", "shasum": "" }, "require": { + "ext-mbstring": "*", "php": ">=5.3.0" }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, "type": "library", "autoload": { "psr-0": { @@ -545,7 +549,7 @@ "markdown", "parser" ], - "time": "2017-05-14T14:47:48+00:00" + "time": "2018-03-08T01:11:30+00:00" }, { "name": "herrera-io/json", @@ -1011,37 +1015,43 @@ }, { "name": "myclabs/deep-copy", - "version": "1.6.1", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" + "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", - "homepage": "https://github.com/myclabs/DeepCopy", "keywords": [ "clone", "copy", @@ -1049,7 +1059,7 @@ "object", "object graph" ], - "time": "2017-04-12T18:52:22+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { "name": "nikic/php-parser", @@ -1096,6 +1106,108 @@ ], "time": "2014-07-23T18:24:17+00:00" }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, { "name": "phenx/php-font-lib", "version": "0.2.2", @@ -1855,33 +1967,33 @@ }, { "name": "phpspec/prophecy", - "version": "v1.7.2", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -1914,44 +2026,44 @@ "spy", "stub" ], - "time": "2017-09-04T11:05:03+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "version": "6.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "reference": "865662550c384bc1db7e51d29aeda1c2c161d69a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/865662550c384bc1db7e51d29aeda1c2c161d69a", + "reference": "865662550c384bc1db7e51d29aeda1c2c161d69a", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "6.0-dev" } }, "autoload": { @@ -1966,7 +2078,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1977,29 +2089,29 @@ "testing", "xunit" ], - "time": "2017-04-02T07:44:40+00:00" + "time": "2018-06-01T07:51:50+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "cecbc684605bb0cc288828eb5d65d93d5c676d3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cecbc684605bb0cc288828eb5d65d93d5c676d3c", + "reference": "cecbc684605bb0cc288828eb5d65d93d5c676d3c", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2014,7 +2126,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2024,7 +2136,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2018-06-11T11:44:00+00:00" }, { "name": "phpunit/php-text-template", @@ -2069,28 +2181,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2105,7 +2217,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2114,33 +2226,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2018-02-01T13:07:23+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.11", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/21ad88bbba7c3d93530d93994e0a33cd45f02ace", + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2163,55 +2275,57 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27T10:12:30+00:00" + "time": "2018-02-01T13:16:43+00:00" }, { "name": "phpunit/phpunit", - "version": "5.7.23", + "version": "7.3.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "78532d5269d984660080d8e0f4c99c5c2ea65ffe" + "reference": "7b331efabbb628c518c408fdfcaf571156775de2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/78532d5269d984660080d8e0f4c99c5c2ea65ffe", - "reference": "78532d5269d984660080d8e0f4c99c5c2ea65ffe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7b331efabbb628c518c408fdfcaf571156775de2", + "reference": "7b331efabbb628c518c408fdfcaf571156775de2", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "~1.0.3|~2.0", - "symfony/yaml": "~2.1|~3.0" + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.0", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "phpunit/phpunit-mock-objects": "*" }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -2219,7 +2333,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "7.3-dev" } }, "autoload": { @@ -2245,79 +2359,66 @@ "testing", "xunit" ], - "time": "2017-10-15T06:13:55+00:00" + "time": "2018-09-08T15:14:29+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "name": "pimple/pimple", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "url": "https://github.com/silexphp/Pimple.git", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Pimple": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", + "homepage": "http://pimple.sensiolabs.org", "keywords": [ - "mock", - "xunit" + "container", + "dependency injection" ], - "time": "2017-06-30T09:13:00+00:00" + "time": "2013-11-22T08:30:29+00:00" }, { - "name": "pimple/pimple", - "version": "v1.1.1", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { @@ -2326,12 +2427,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "Pimple": "lib/" + "psr-4": { + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2340,17 +2441,17 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", - "homepage": "http://pimple.sensiolabs.org", + "description": "Common interface for caching libraries", "keywords": [ - "container", - "dependency injection" + "cache", + "psr", + "psr-6" ], - "time": "2013-11-22T08:30:29+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { "name": "psr/container", @@ -2448,6 +2549,54 @@ ], "time": "2016-10-10T12:19:37+00:00" }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" + }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", @@ -2495,30 +2644,30 @@ }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2549,38 +2698,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "366541b989927187c4ca70490a35615d3fef2dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce", + "reference": "366541b989927187c4ca70490a35615d3fef2dce", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2605,34 +2755,37 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2018-06-10T07:54:39+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -2657,34 +2810,34 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", - "version": "2.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -2724,27 +2877,27 @@ "export", "exporter" ], - "time": "2016-11-19T08:54:04+00:00" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -2752,7 +2905,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2775,33 +2928,34 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", - "version": "2.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -2821,32 +2975,77 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -2874,7 +3073,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", @@ -2963,23 +3162,23 @@ }, { "name": "seld/jsonlint", - "version": "1.6.1", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77" + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", - "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", "shasum": "" }, "require": { "php": "^5.3 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "bin": [ "bin/jsonlint" @@ -3008,25 +3207,26 @@ "parser", "validator" ], - "time": "2017-06-18T15:11:04+00:00" + "time": "2018-01-24T12:46:19+00:00" }, { "name": "symfony/config", - "version": "v2.8.28", + "version": "v2.8.45", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "1dbeaa8e2db4b29159265867efff075ad961558c" + "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/1dbeaa8e2db4b29159265867efff075ad961558c", - "reference": "1dbeaa8e2db4b29159265867efff075ad961558c", + "url": "https://api.github.com/repos/symfony/config/zipball/06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", + "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", "shasum": "" }, "require": { "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0" + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { "symfony/yaml": "~2.7|~3.0.0" @@ -3064,20 +3264,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-10-04T18:56:36+00:00" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/console", - "version": "v2.8.28", + "version": "v2.8.45", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f81549d2c5fdee8d711c9ab3c7e7362353ea5853" + "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f81549d2c5fdee8d711c9ab3c7e7362353ea5853", - "reference": "f81549d2c5fdee8d711c9ab3c7e7362353ea5853", + "url": "https://api.github.com/repos/symfony/console/zipball/0c1fcbb9afb5cff992c982ff99c0434f0146dcfc", + "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc", "shasum": "" }, "require": { @@ -3091,7 +3291,7 @@ "symfony/process": "~2.1|~3.0.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/process": "" }, @@ -3125,7 +3325,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/debug", @@ -3186,16 +3386,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v2.8.28", + "version": "v2.8.45", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186" + "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7fe089232554357efb8d4af65ce209fc6e5a2186", - "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/84ae343f39947aa084426ed1138bb96bf94d1f12", + "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12", "shasum": "" }, "require": { @@ -3242,7 +3442,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2018-07-26T09:03:18+00:00" }, { "name": "symfony/filesystem", @@ -3295,16 +3495,16 @@ }, { "name": "symfony/finder", - "version": "v2.8.28", + "version": "v2.8.45", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a945724b201f74d543e356f6059c930bb8d10c92" + "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a945724b201f74d543e356f6059c930bb8d10c92", - "reference": "a945724b201f74d543e356f6059c930bb8d10c92", + "url": "https://api.github.com/repos/symfony/finder/zipball/f0de0b51913eb2caab7dfed6413b87e14fca780e", + "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e", "shasum": "" }, "require": { @@ -3340,20 +3540,78 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2018-07-26T11:13:39+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.6.0", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", "shasum": "" }, "require": { @@ -3365,7 +3623,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -3399,20 +3657,20 @@ "portable", "shim" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/process", - "version": "v2.8.28", + "version": "v2.8.45", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "26c9fb02bf06bd6b90f661a5bd17e510810d0176" + "reference": "4be278e19064c3492095de50c9e375caae569ae1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/26c9fb02bf06bd6b90f661a5bd17e510810d0176", - "reference": "26c9fb02bf06bd6b90f661a5bd17e510810d0176", + "url": "https://api.github.com/repos/symfony/process/zipball/4be278e19064c3492095de50c9e375caae569ae1", + "reference": "4be278e19064c3492095de50c9e375caae569ae1", "shasum": "" }, "require": { @@ -3448,20 +3706,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2018-08-03T09:45:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v2.8.28", + "version": "v2.8.45", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "28ee62ea4736431ca817cdaebcb005663e9cd1cb" + "reference": "12a4b0c2a1788adf16a5548ab18ab9e8801d71d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/28ee62ea4736431ca817cdaebcb005663e9cd1cb", - "reference": "28ee62ea4736431ca817cdaebcb005663e9cd1cb", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/12a4b0c2a1788adf16a5548ab18ab9e8801d71d8", + "reference": "12a4b0c2a1788adf16a5548ab18ab9e8801d71d8", "shasum": "" }, "require": { @@ -3497,7 +3755,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2018-07-24T10:05:38+00:00" }, { "name": "symfony/translation", @@ -3565,20 +3823,21 @@ }, { "name": "symfony/validator", - "version": "v2.8.28", + "version": "v2.8.45", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "1531ddfd96efd1b2c231cbf45f22e652a8f67925" + "reference": "131ae089fb441c3bed5cda4335404b5f289f7003" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/1531ddfd96efd1b2c231cbf45f22e652a8f67925", - "reference": "1531ddfd96efd1b2c231cbf45f22e652a8f67925", + "url": "https://api.github.com/repos/symfony/validator/zipball/131ae089fb441c3bed5cda4335404b5f289f7003", + "reference": "131ae089fb441c3bed5cda4335404b5f289f7003", "shasum": "" }, "require": { "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/translation": "~2.4|~3.0.0" }, @@ -3634,84 +3893,70 @@ ], "description": "Symfony Validator Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2018-08-05T14:25:16+00:00" }, { - "name": "symfony/yaml", - "version": "v3.3.10", + "name": "theseer/tokenizer", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", - "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2017-10-05T14:43:42+00:00" + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" }, { "name": "twig/twig", - "version": "v1.35.0", + "version": "v1.35.4", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f" + "reference": "7e081e98378a1e78c29cc9eba4aefa5d78a05d2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/daa657073e55b0a78cce8fdd22682fddecc6385f", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7e081e98378a1e78c29cc9eba4aefa5d78a05d2a", + "reference": "7e081e98378a1e78c29cc9eba4aefa5d78a05d2a", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~3.3@dev" + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.3" }, "type": "library", "extra": { @@ -3745,43 +3990,50 @@ }, { "name": "Twig Team", - "homepage": "http://twig.sensiolabs.org/contributors", + "homepage": "https://twig.symfony.com/contributors", "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "http://twig.sensiolabs.org", + "homepage": "https://twig.symfony.com", "keywords": [ "templating" ], - "time": "2017-09-27T18:06:46+00:00" + "time": "2018-07-13T07:12:17+00:00" }, { "name": "zendframework/zend-cache", - "version": "2.7.2", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-cache.git", - "reference": "c98331b96d3b9d9b24cf32d02660602edb34d039" + "reference": "4983dff629956490c78b88adcc8ece4711d7d8a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/c98331b96d3b9d9b24cf32d02660602edb34d039", - "reference": "c98331b96d3b9d9b24cf32d02660602edb34d039", + "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/4983dff629956490c78b88adcc8ece4711d7d8a3", + "reference": "4983dff629956490c78b88adcc8ece4711d7d8a3", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "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": { - "phpbench/phpbench": "^0.10.0", - "phpunit/phpunit": "^4.8", + "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.6.2" + "zendframework/zend-session": "^2.7.4" }, "suggest": { "ext-apc": "APC or compatible extension, to use the APC storage adapter", @@ -3790,9 +4042,11 @@ "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" @@ -3800,8 +4054,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" + "dev-master": "2.8.x-dev", + "dev-develop": "2.9.x-dev" }, "zf": { "component": "Zend\\Cache", @@ -3809,6 +4063,9 @@ } }, "autoload": { + "files": [ + "autoload/patternPluginManagerPolyfill.php" + ], "psr-4": { "Zend\\Cache\\": "src/" } @@ -3817,13 +4074,15 @@ "license": [ "BSD-3-Clause" ], - "description": "provides a generic way to cache any data", - "homepage": "https://github.com/zendframework/zend-cache", + "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output", "keywords": [ + "ZendFramework", "cache", - "zf2" + "psr-16", + "psr-6", + "zf" ], - "time": "2016-12-16T11:35:47+00:00" + "time": "2018-05-01T21:58:00+00:00" }, { "name": "zendframework/zend-config", @@ -3883,16 +4142,16 @@ }, { "name": "zendframework/zend-eventmanager", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c" + "reference": "a5e2583a211f73604691586b8406ff7296a946dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/9d72db10ceb6e42fb92350c0cb54460da61bd79c", - "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd", "shasum": "" }, "require": { @@ -3901,7 +4160,7 @@ "require-dev": { "athletic/athletic": "^0.1", "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "^6.0.7 || ^5.7.14", + "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" }, @@ -3933,33 +4192,36 @@ "events", "zf2" ], - "time": "2017-07-11T19:17:22+00:00" + "time": "2018-04-25T15:33:34+00:00" }, { "name": "zendframework/zend-filter", - "version": "2.7.2", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-filter.git", - "reference": "b8d0ff872f126631bf63a932e33aa2d22d467175" + "reference": "7b997dbe79459f1652deccc8786d7407fb66caa9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/b8d0ff872f126631bf63a932e33aa2d22d467175", - "reference": "b8d0ff872f126631bf63a932e33aa2d22d467175", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/7b997dbe79459f1652deccc8786d7407fb66caa9", + "reference": "7b997dbe79459f1652deccc8786d7407fb66caa9", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "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", - "phpunit/phpunit": "^6.0.10 || ^5.7.17", + "pear/archive_tar": "^1.4.3", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-crypt": "^2.6 || ^3.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-uri": "^2.5" + "zendframework/zend-crypt": "^3.2.1", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3", + "zendframework/zend-uri": "^2.6" }, "suggest": { "zendframework/zend-crypt": "Zend\\Crypt component, for encryption filters", @@ -3970,8 +4232,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" + "dev-master": "2.8.x-dev", + "dev-develop": "2.9.x-dev" }, "zf": { "component": "Zend\\Filter", @@ -3988,12 +4250,12 @@ "BSD-3-Clause" ], "description": "provides a set of commonly needed data filters", - "homepage": "https://github.com/zendframework/zend-filter", "keywords": [ + "ZendFramework", "filter", - "zf2" + "zf" ], - "time": "2017-05-17T20:56:17+00:00" + "time": "2018-04-11T16:20:04+00:00" }, { "name": "zendframework/zend-hydrator", @@ -4055,24 +4317,24 @@ }, { "name": "zendframework/zend-i18n", - "version": "2.7.4", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-i18n.git", - "reference": "d3431e29cc00c2a1c6704e601d4371dbf24f6a31" + "reference": "6d69af5a04e1a4de7250043cb1322f077a0cdb7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/d3431e29cc00c2a1c6704e601d4371dbf24f6a31", - "reference": "d3431e29cc00c2a1c6704e601d4371dbf24f6a31", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/6d69af5a04e1a4de7250043cb1322f077a0cdb7f", + "reference": "6d69af5a04e1a4de7250043cb1322f077a0cdb7f", "shasum": "" }, "require": { - "php": "^7.0 || ^5.6", + "php": "^5.6 || ^7.0", "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", "zendframework/zend-cache": "^2.6.1", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-config": "^2.6", @@ -4096,8 +4358,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" + "dev-master": "2.9.x-dev", + "dev-develop": "2.10.x-dev" }, "zf": { "component": "Zend\\I18n", @@ -4113,34 +4375,35 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-i18n", + "description": "Provide translations for your application, and filter and validate internationalized values", "keywords": [ + "ZendFramework", "i18n", - "zf2" + "zf" ], - "time": "2017-05-17T17:00:12+00:00" + "time": "2018-05-16T16:39:13+00:00" }, { "name": "zendframework/zend-json", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-json.git", - "reference": "f42a1588e75c2a3e338cd94c37906231e616daab" + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-json/zipball/f42a1588e75c2a3e338cd94c37906231e616daab", - "reference": "f42a1588e75c2a3e338cd94c37906231e616daab", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.3", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "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", @@ -4149,8 +4412,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.1.x-dev", + "dev-develop": "3.2.x-dev" } }, "autoload": { @@ -4163,25 +4426,25 @@ "BSD-3-Clause" ], "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", - "homepage": "https://github.com/zendframework/zend-json", "keywords": [ + "ZendFramework", "json", - "zf2" + "zf" ], - "time": "2016-04-01T02:34:00+00:00" + "time": "2018-01-04T17:51:34+00:00" }, { "name": "zendframework/zend-serializer", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-serializer.git", - "reference": "ff74ea020f5f90866eb28365327e9bc765a61a6e" + "reference": "0172690db48d8935edaf625c4cba38b79719892c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/ff74ea020f5f90866eb28365327e9bc765a61a6e", - "reference": "ff74ea020f5f90866eb28365327e9bc765a61a6e", + "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/0172690db48d8935edaf625c4cba38b79719892c", + "reference": "0172690db48d8935edaf625c4cba38b79719892c", "shasum": "" }, "require": { @@ -4190,9 +4453,9 @@ "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "^4.5", - "squizlabs/php_codesniffer": "^2.3.1", - "zendframework/zend-math": "^2.6", + "phpunit/phpunit": "^5.7.25 || ^6.4.4", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-math": "^2.6 || ^3.0", "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" }, "suggest": { @@ -4202,8 +4465,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev", - "dev-develop": "2.9-dev" + "dev-master": "2.9.x-dev", + "dev-develop": "2.10.x-dev" }, "zf": { "component": "Zend\\Serializer", @@ -4220,25 +4483,25 @@ "BSD-3-Clause" ], "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", - "homepage": "https://github.com/zendframework/zend-serializer", "keywords": [ + "ZendFramework", "serializer", - "zf2" + "zf" ], - "time": "2016-06-21T17:01:55+00:00" + "time": "2018-05-14T18:45:18+00:00" }, { "name": "zendframework/zend-servicemanager", - "version": "2.7.8", + "version": "2.7.11", "source": { "type": "git", "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "2ae3b6e4978ec2e9ff52352e661946714ed989f9" + "reference": "99ec9ed5d0f15aed9876433c74c2709eb933d4c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/2ae3b6e4978ec2e9ff52352e661946714ed989f9", - "reference": "2ae3b6e4978ec2e9ff52352e661946714ed989f9", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/99ec9ed5d0f15aed9876433c74c2709eb933d4c7", + "reference": "99ec9ed5d0f15aed9876433c74c2709eb933d4c7", "shasum": "" }, "require": { @@ -4277,7 +4540,7 @@ "servicemanager", "zf2" ], - "time": "2016-12-19T19:14:29+00:00" + "time": "2018-06-22T14:49:54+00:00" }, { "name": "zendframework/zend-stdlib", @@ -4340,19 +4603,20 @@ }, { "name": "zetacomponents/base", - "version": "1.9", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/zetacomponents/Base.git", - "reference": "f20df24e8de3e48b6b69b2503f917e457281e687" + "reference": "489e20235989ddc97fdd793af31ac803972454f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zetacomponents/Base/zipball/f20df24e8de3e48b6b69b2503f917e457281e687", - "reference": "f20df24e8de3e48b6b69b2503f917e457281e687", + "url": "https://api.github.com/repos/zetacomponents/Base/zipball/489e20235989ddc97fdd793af31ac803972454f1", + "reference": "489e20235989ddc97fdd793af31ac803972454f1", "shasum": "" }, "require-dev": { + "phpunit/phpunit": "~5.7", "zetacomponents/unit-test": "*" }, "type": "library", @@ -4399,7 +4663,7 @@ ], "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": "2014-09-19T03:28:34+00:00" + "time": "2017-11-28T11:30:00+00:00" }, { "name": "zetacomponents/document", diff --git a/config.php.template b/config.php.template index 49a26fe..2a50be6 100755 --- a/config.php.template +++ b/config.php.template @@ -5,7 +5,9 @@ return array( 'clientsecret' => 'CCCCCCCCCCCCCCCCCCCCCCC', 'defaultwsdl' => 'https://webservice.exacttarget.com/etframework.wsdl', 'xmlloc' => '/some/path/to/cache/ExactTargetWSDL.xml', + 'baseUrl' => 'https://www.exacttargetapis.com', 'baseAuthUrl' => 'https://auth.exacttargetapis.com', + 'baseSoapUrl' => 'https://webservice.exacttarget.com/Service.asmx', 'proxyhost' => 'localhost', 'proxyport' => '8080', 'proxyusername' => '', diff --git a/docs/files/ET_Asset.php.txt b/docs/files/ET_Asset.php.txt index 4141239..2b9fce6 100644 --- a/docs/files/ET_Asset.php.txt +++ b/docs/files/ET_Asset.php.txt @@ -14,7 +14,7 @@ class ET_Asset extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/contentItems/portfolio/{id}"; + $this->path = "/guide/v1/contentItems/portfolio/{id}"; $this->urlProps = array("id"); $this->urlPropsRequired = array(); } @@ -25,7 +25,7 @@ class ET_Asset extends ET_CUDSupportRest */ public function upload() { - $completeURL = "https://www.exacttargetapis.com/guide/v1/contentItems/portfolio/fileupload?access_token=" . $this->authStub->getAuthToken(); + $completeURL = $this->authStub->baseUrl . "/guide/v1/contentItems/portfolio/fileupload?access_token=" . $this->authStub->getAuthToken(); $post = array('file_contents'=>'@'.$this->props['filePath']); diff --git a/docs/files/ET_BaseObjectRest.php.txt b/docs/files/ET_BaseObjectRest.php.txt index a56df47..da5c31b 100644 --- a/docs/files/ET_BaseObjectRest.php.txt +++ b/docs/files/ET_BaseObjectRest.php.txt @@ -22,11 +22,9 @@ class ET_BaseObjectRest */ public $organizationKey; /** - * @var string $endpoint URL of the API endpoint - * @var string[] $urlProps array of string having properties or fields name found in the endpoint URL - * @var string[] $urlPropsRequired array of string having only required fields + * @var string $path path to use when constructing the endpoint URL ($client->baseUrl.$this->path) */ - protected $endpoint; + protected $path; /** * @var string[] $urlProps array of string having properties or fields name found in the endpoint URL */ @@ -35,4 +33,4 @@ class ET_BaseObjectRest * @var string[] $urlPropsRequired array of string having only required fields*/ protected $urlPropsRequired; } -?> +?> \ No newline at end of file diff --git a/docs/files/ET_CUDSupportRest.php.txt b/docs/files/ET_CUDSupportRest.php.txt index 75b9d2d..2dd6aca 100644 --- a/docs/files/ET_CUDSupportRest.php.txt +++ b/docs/files/ET_CUDSupportRest.php.txt @@ -27,7 +27,7 @@ class ET_CUDSupportRest extends ET_GetSupportRest public function post() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; $additionalQS = array(); if (!is_null($this->props)) { @@ -66,7 +66,7 @@ class ET_CUDSupportRest extends ET_GetSupportRest public function patch() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; $additionalQS = array(); // All URL Props are required when doing Patch @@ -101,7 +101,7 @@ class ET_CUDSupportRest extends ET_GetSupportRest public function delete() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; $additionalQS = array(); // All URL Props are required when doing Delete diff --git a/docs/files/ET_Campaign.php.txt b/docs/files/ET_Campaign.php.txt index 2f73a64..dd072c8 100644 --- a/docs/files/ET_Campaign.php.txt +++ b/docs/files/ET_Campaign.php.txt @@ -14,7 +14,7 @@ class ET_Campaign extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/hub/v1/campaigns/{id}"; + $this->path = "/hub/v1/campaigns/{id}"; $this->urlProps = array("id"); $this->urlPropsRequired = array(); } diff --git a/docs/files/ET_Campaign_Asset.php.txt b/docs/files/ET_Campaign_Asset.php.txt index c5ea534..233ec5b 100644 --- a/docs/files/ET_Campaign_Asset.php.txt +++ b/docs/files/ET_Campaign_Asset.php.txt @@ -14,7 +14,7 @@ class ET_Campaign_Asset extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/hub/v1/campaigns/{id}/assets/{assetId}"; + $this->path = "/hub/v1/campaigns/{id}/assets/{assetId}"; $this->urlProps = array("id", "assetId"); $this->urlPropsRequired = array("id"); } diff --git a/docs/files/ET_Client.php.txt b/docs/files/ET_Client.php.txt index ef53e6d..273fb11 100644 --- a/docs/files/ET_Client.php.txt +++ b/docs/files/ET_Client.php.txt @@ -16,12 +16,6 @@ use \Exception; /** * Auto load method to load dependent classes */ -// spl_autoload_register( -// function($class_name) -// { -// include_once 'src/'.$class_name.'.php'; -// } -// ); /** * Defines a Client interface class which manages the authentication process. * This is the main client class which performs authentication, obtains auth token, if expired refresh auth token. @@ -62,9 +56,14 @@ class ET_Client extends SoapClient */ public $proxyPassword; + /** + * @var string APIs hostname + */ + public $baseUrl; + private $wsdlLoc, $debugSOAP, $lastHTTPCode, $clientId, $clientSecret, $appsignature, $endpoint, - $tenantTokens, $tenantKey, $xmlLoc,$baseUrl, $baseAuthUrl; + $tenantTokens, $tenantKey, $xmlLoc, $baseAuthUrl; /** * Initializes a new instance of the ET_Client class. * @@ -94,7 +93,7 @@ class ET_Client extends SoapClient $this->xmlLoc = 'ExactTargetWSDL.xml'; - if (file_exists(realpath(__DIR__ . "/config.php"))) + if (file_exists(realpath("config.php"))) $config = include 'config.php'; if ($config) @@ -171,7 +170,7 @@ class ET_Client extends SoapClient //$url = $this->baseUrl."/platform/v1/endpoints/soap?access_token=".$this->getAuthToken($this->tenantKey); $url = $this->baseUrl."/platform/v1/endpoints/soap"; - //$endpointResponse = ET_Util::restGet($url, $this); + //$endpointResponse = ET_Util::restGet($url, $this); $endpointResponse = ET_Util::restGet($url, $this, $this->getAuthToken($this->tenantKey)); //echo "endpoint: \n"; //print_r($endpointResponse); @@ -230,8 +229,8 @@ class ET_Client extends SoapClient if (is_null($this->getAuthToken($this->tenantKey)) || ($timeDiff < 5) || $forceRefresh ){ $url = $this->tenantKey == null - ? $this->baseAuthUrl."/v1/requestToken?legacy=1" - : $this->baseUrl."/provisioning/v1/tenants/{$this->tenantKey}/requestToken?legacy=1"; + ? $this->baseAuthUrl."/v1/requestToken" + : $this->baseUrl."/provisioning/v1/tenants/{$this->tenantKey}/requestToken"; $jsonRequest = new stdClass(); $jsonRequest->clientId = $this->clientId; @@ -249,7 +248,7 @@ class ET_Client extends SoapClient $dv = new DateInterval('PT'.$authObject->expiresIn.'S'); $newexpTime = new DateTime(); $this->setAuthToken($this->tenantKey, $authObject->accessToken, $newexpTime->add($dv)); - $this->setInternalAuthToken($this->tenantKey, $authObject->legacyToken); + $this->setInternalAuthToken($this->tenantKey, $authObject->accessToken); if (property_exists($authObject,'refreshToken')){ $this->setRefreshToken($this->tenantKey, $authObject->refreshToken); } @@ -763,4 +762,3 @@ class ET_Client extends SoapClient } ?> - diff --git a/docs/files/ET_GetSupportRest.php.txt b/docs/files/ET_GetSupportRest.php.txt index c42ed28..70d9ce3 100644 --- a/docs/files/ET_GetSupportRest.php.txt +++ b/docs/files/ET_GetSupportRest.php.txt @@ -21,7 +21,7 @@ class ET_GetSupportRest extends ET_BaseObjectRest public function get() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; $additionalQS = array(); if (!is_null($this->props)) { diff --git a/docs/files/ET_Message_Guide.php.txt b/docs/files/ET_Message_Guide.php.txt index 16455cc..04478fd 100644 --- a/docs/files/ET_Message_Guide.php.txt +++ b/docs/files/ET_Message_Guide.php.txt @@ -14,7 +14,7 @@ class ET_Message_Guide extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/messages/{id}"; + $this->path = "/guide/v1/messages/{id}"; $this->urlProps = array("id"); $this->urlPropsRequired = array(); } @@ -25,16 +25,16 @@ class ET_Message_Guide extends ET_CUDSupportRest */ function get() { - $origEndpoint = $this->endpoint; + $origPath = $this->path; $origProps = $this->urlProps; if (count($this->props) == 0) { - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/messages/f:@all"; + $this->path = "/guide/v1/messages/f:@all"; } elseif (array_key_exists('key',$this->props)){ - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/messages/key:{key}"; + $this->path = "/guide/v1/messages/key:{key}"; $this->urlProps = array("key"); } $response = parent::get(); - $this->endpoint = $origEndpoint; + $this->path = $origPath; $this->urlProps = $origProps; return $response; @@ -46,7 +46,7 @@ class ET_Message_Guide extends ET_CUDSupportRest */ function convert() { - $completeURL = "https://www.exacttargetapis.com/guide/v1/messages/convert?access_token=" . $this->authStub->getAuthToken(); + $completeURL = $this->authStub->baseUrl . "/guide/v1/messages/convert?access_token=" . $this->authStub->getAuthToken(); $response = new ET_PostRest($this->authStub, $completeURL, $this->props); return $response; @@ -84,10 +84,10 @@ class ET_Message_Guide extends ET_CUDSupportRest $response = null; if (is_array($this->props) && array_key_exists("id", $this->props)) { - $completeURL = "https://www.exacttargetapis.com/guide/v1/messages/render/{$this->props['id']}?access_token=" . $this->authStub->getAuthToken(); + $completeURL = $this->authStub->baseUrl . "/guide/v1/messages/render/{$this->props['id']}?access_token=" . $this->authStub->getAuthToken(); $response = new ET_GetRest($this->authStub, $completeURL, null); } else { - $completeURL = "https://www.exacttargetapis.com/guide/v1/messages/render?access_token=" . $this->authStub->getAuthToken(); + $completeURL = $this->authStub->baseUrl . "/guide/v1/messages/render?access_token=" . $this->authStub->getAuthToken(); $response = new ET_PostRest($this->authStub, $completeURL, $this->props); } return $response; diff --git a/docs/files/ET_OEM_Client.php.txt b/docs/files/ET_OEM_Client.php.txt index 3604231..62f158b 100644 --- a/docs/files/ET_OEM_Client.php.txt +++ b/docs/files/ET_OEM_Client.php.txt @@ -18,8 +18,8 @@ class ET_OEM_Client extends ET_Client unset($tenantInfo['key']); $additionalQS = array(); $additionalQS["access_token"] = $this->getAuthToken(); - $queryString = http_build_query($additionalQS); - $completeURL = "https://www.exacttargetapis.com/provisioning/v1/tenants/{$key}?{$queryString}"; + $queryString = http_build_query($additionalQS); + $completeURL = $this->baseUrl . "/provisioning/v1/tenants/{$key}?{$queryString}"; return new ET_PutRest($this, $completeURL, $tenantInfo); } @@ -30,8 +30,8 @@ class ET_OEM_Client extends ET_Client { $additionalQS = array(); $additionalQS["access_token"] = $this->getAuthToken(); - $queryString = http_build_query($additionalQS); - $completeURL = "https://www.exacttargetapis.com/provisioning/v1/tenants/?{$queryString}"; + $queryString = http_build_query($additionalQS); + $completeURL = $this->baseUrl . "/provisioning/v1/tenants/?{$queryString}"; return new ET_GetRest($this, $completeURL, $queryString); } } diff --git a/src/ET_Asset.php b/src/ET_Asset.php index 76df159..3a7c10b 100644 --- a/src/ET_Asset.php +++ b/src/ET_Asset.php @@ -14,7 +14,7 @@ class ET_Asset extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/contentItems/portfolio/{id}"; + $this->path = "/guide/v1/contentItems/portfolio/{id}"; $this->urlProps = array("id"); $this->urlPropsRequired = array(); } @@ -25,13 +25,14 @@ function __construct() */ public function upload() { - $completeURL = "https://www.exacttargetapis.com/guide/v1/contentItems/portfolio/fileupload?access_token=" . $this->authStub->getAuthToken(); + // TODO create unit test for this function + $completeURL = $this->authStub->baseUrl . "/guide/v1/contentItems/portfolio/fileupload"; $post = array('file_contents'=>'@'.$this->props['filePath']); $ch = curl_init(); - $headers = array("User-Agent: ".ET_Util::getSDKVersion()); + $headers = array("User-Agent: ".ET_Util::getSDKVersion(), "Authorization: Bearer ".$this->authStub->getAuthToken()); curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_URL, $completeURL); diff --git a/src/ET_BaseObjectRest.php b/src/ET_BaseObjectRest.php index dcd306b..da5c31b 100644 --- a/src/ET_BaseObjectRest.php +++ b/src/ET_BaseObjectRest.php @@ -22,11 +22,9 @@ class ET_BaseObjectRest */ public $organizationKey; /** - * @var string $endpoint URL of the API endpoint - * @var string[] $urlProps array of string having properties or fields name found in the endpoint URL - * @var string[] $urlPropsRequired array of string having only required fields + * @var string $path path to use when constructing the endpoint URL ($client->baseUrl.$this->path) */ - protected $endpoint; + protected $path; /** * @var string[] $urlProps array of string having properties or fields name found in the endpoint URL */ diff --git a/src/ET_CUDSupportRest.php b/src/ET_CUDSupportRest.php index 5368f33..c905bb3 100644 --- a/src/ET_CUDSupportRest.php +++ b/src/ET_CUDSupportRest.php @@ -27,7 +27,8 @@ class ET_CUDSupportRest extends ET_GetSupportRest public function post() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; + $additionalQS = array(); if (!is_null($this->props)) { @@ -49,12 +50,11 @@ public function post() $completeURL = str_replace("{{$value}}","",$completeURL); } - $additionalQS["access_token"] = $this->authStub->getAuthToken(); // echo $additionalQS["access_token"] . "\n"; // $queryString = http_build_query($additionalQS); // $completeURL = "{$completeURL}?{$queryString}"; // $response = new ET_PostRest($this->authStub, $completeURL, $this->props); - $response = new ET_PostRest($this->authStub, $completeURL, $this->props, $additionalQS["access_token"]); + $response = new ET_PostRest($this->authStub, $completeURL, $this->props, $this->authStub->getAuthToken()); return $response; } @@ -66,7 +66,7 @@ public function post() public function patch() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; $additionalQS = array(); // All URL Props are required when doing Patch @@ -84,12 +84,11 @@ public function patch() } } } - $additionalQS["access_token"] = $this->authStub->getAuthToken(); // echo $additionalQS["access_token"] . "\n"; // $queryString = http_build_query($additionalQS); // $completeURL = "{$completeURL}?{$queryString}"; // $response = new ET_PatchRest($this->authStub, $completeURL, $this->props); - $response = new ET_PatchRest($this->authStub, $completeURL, $this->props, $additionalQS["access_token"]); + $response = new ET_PatchRest($this->authStub, $completeURL, $this->props, $this->authStub->getAuthToken()); return $response; } @@ -101,7 +100,7 @@ public function patch() public function delete() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; $additionalQS = array(); // All URL Props are required when doing Delete @@ -118,12 +117,11 @@ public function delete() } } } - $additionalQS["access_token"] = $this->authStub->getAuthToken(); // echo $additionalQS["access_token"] . "\n"; // $queryString = http_build_query($additionalQS); // $completeURL = "{$completeURL}?{$queryString}"; // $response = new ET_DeleteRest($this->authStub, $completeURL); - $response = new ET_DeleteRest($this->authStub, $completeURL, $additionalQS["access_token"]); + $response = new ET_DeleteRest($this->authStub, $completeURL, $this->authStub->getAuthToken()); return $response; } diff --git a/src/ET_CacheService.php b/src/ET_CacheService.php new file mode 100644 index 0000000..b9392d1 --- /dev/null +++ b/src/ET_CacheService.php @@ -0,0 +1,69 @@ +_identifier = $clientId . "-" . $clientSecret; + } + + public function get() + { + $cache = $this->_getOrCreateFile(); + $data = $cache->{$this->_identifier}; + $now = time(); + if (!$data || !$data->expires || $data->expires < $now) { + return null; + } else { + return $data; + } + } + + public function write($url) + { + $expires = time() + $this->_cacheMinutes * 60; + $cache = $this->_getOrCreateFile(); + $data = new \stdClass(); + $data->expires = $expires; + $data->url = $url; + $cache->{$this->_identifier} = $data; + $this->_writeFile($cache); + } + + public function clear() + { + $cache = $this->_getOrCreateFile(); + unset($cache->{$this->_identifier}); + $this->_writeFile($cache); + } + + private function _getOrCreateFile() + { + if (file_exists($this->_filePath)) { + return $this->_readFile(); + } else { + $data = new \stdClass(); + $this->_writeFile($data); + return $data; + } + } + + private function _writeFile($contents) + { + file_put_contents($this->_filePath, json_encode($contents)); + } + + private function _readFile() + { + return json_decode(file_get_contents($this->_filePath)); + } + +} \ No newline at end of file diff --git a/src/ET_Campaign.php b/src/ET_Campaign.php index c2ed8de..f23e16f 100644 --- a/src/ET_Campaign.php +++ b/src/ET_Campaign.php @@ -14,7 +14,7 @@ class ET_Campaign extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/hub/v1/campaigns/{id}"; + $this->path = "/hub/v1/campaigns/{id}"; $this->urlProps = array("id"); $this->urlPropsRequired = array(); } diff --git a/src/ET_Campaign_Asset.php b/src/ET_Campaign_Asset.php index b504abe..ac495cc 100644 --- a/src/ET_Campaign_Asset.php +++ b/src/ET_Campaign_Asset.php @@ -14,7 +14,7 @@ class ET_Campaign_Asset extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/hub/v1/campaigns/{id}/assets/{assetId}"; + $this->path = "/hub/v1/campaigns/{id}/assets/{assetId}"; $this->urlProps = array("id", "assetId"); $this->urlPropsRequired = array("id"); } diff --git a/src/ET_Client.php b/src/ET_Client.php index 6d8f38f..ebcdbfc 100755 --- a/src/ET_Client.php +++ b/src/ET_Client.php @@ -56,9 +56,17 @@ class ET_Client extends SoapClient */ public $proxyPassword; + /** + * @var string APIs hostname + */ + public $baseUrl; + private $wsdlLoc, $debugSOAP, $lastHTTPCode, $clientId, $clientSecret, $appsignature, $endpoint, - $tenantTokens, $tenantKey, $xmlLoc,$baseUrl, $baseAuthUrl; + $tenantTokens, $tenantKey, $xmlLoc, $baseAuthUrl, $baseSoapUrl; + + private $defaultBaseSoapUrl = 'https://webservice.exacttarget.com/Service.asmx'; + /** * Initializes a new instance of the ET_Client class. * @@ -99,6 +107,13 @@ function __construct($getWSDL = false, $debug = false, $params = null) $this->appsignature = $config['appsignature']; $this->baseUrl = $config["baseUrl"]; $this->baseAuthUrl = $config["baseAuthUrl"]; + if (array_key_exists('baseSoapUrl', $config)) { + if (!empty($config["baseSoapUrl"])) { + $this->baseSoapUrl = $config["baseSoapUrl"]; + } else { + $this->baseSoapUrl = $this->defaultBaseSoapUrl; + } + } if (array_key_exists('xmlloc', $config)){$this->xmlLoc = $config['xmlloc'];} if(array_key_exists('proxyhost', $config)){$this->proxyHost = $config['proxyhost'];} @@ -135,10 +150,16 @@ function __construct($getWSDL = false, $debug = false, $params = null) { $this->baseAuthUrl = "https://auth.exacttargetapis.com"; } + if ($params && array_key_exists('baseSoapUrl', $params)) + { + if (!empty($params["baseSoapUrl"])) { + $this->baseSoapUrl = $params['baseSoapUrl']; + } else { + $this->baseSoapUrl = $this->defaultBaseSoapUrl; + } + } } - - $this->debugSOAP = $debug; if (!property_exists($this,'clientId') || is_null($this->clientId) || !property_exists($this,'clientSecret') || is_null($this->clientSecret)){ @@ -161,24 +182,29 @@ function __construct($getWSDL = false, $debug = false, $params = null) } $this->refreshToken(); - try { - //$url = $this->baseUrl."/platform/v1/endpoints/soap?access_token=".$this->getAuthToken($this->tenantKey); - $url = $this->baseUrl."/platform/v1/endpoints/soap"; - - //$endpointResponse = ET_Util::restGet($url, $this); - $endpointResponse = ET_Util::restGet($url, $this, $this->getAuthToken($this->tenantKey)); - //echo "endpoint: \n"; - //print_r($endpointResponse); - - $endpointObject = json_decode($endpointResponse->body); - if ($endpointObject && property_exists($endpointObject,"url")){ - $this->endpoint = $endpointObject->url; - } else { - throw new Exception('Unable to determine stack using /platform/v1/endpoints/:'.$endpointResponse->body); - } - } catch (Exception $e) { - throw new Exception('Unable to determine stack using /platform/v1/endpoints/: '.$e->getMessage()); - } + if ($this->baseSoapUrl) { + $this->endpoint = $this->baseSoapUrl; + } else { + $cache = new ET_CacheService($this->clientId, $this->clientSecret); + $cacheData = $cache->get(); + if (!is_null($cacheData) && $cacheData->url) { + $this->endpoint = $cacheData->url; + } else { + try { + $url = $this->baseUrl."/platform/v1/endpoints/soap"; + $endpointResponse = ET_Util::restGet($url, $this, $this->getAuthToken($this->tenantKey)); + $endpointObject = json_decode($endpointResponse->body); + if ($endpointObject && property_exists($endpointObject,"url")){ + $this->endpoint = $endpointObject->url; + } else { + $this->endpoint = $this->defaultBaseSoapUrl; + } + } catch (Exception $e) { + $this->endpoint = $this->defaultBaseSoapUrl; + } + $cache->write($this->endpoint); + } + } $soapOptions = array( 'trace'=>1, @@ -243,7 +269,7 @@ function refreshToken($forceRefresh = false) $dv = new DateInterval('PT'.$authObject->expiresIn.'S'); $newexpTime = new DateTime(); $this->setAuthToken($this->tenantKey, $authObject->accessToken, $newexpTime->add($dv)); - $this->setInternalAuthToken($this->tenantKey, $authObject->legacyToken); + $this->setInternalAuthToken($this->tenantKey, $authObject->legacyToken); if (property_exists($authObject,'refreshToken')){ $this->setRefreshToken($this->tenantKey, $authObject->refreshToken); } @@ -347,7 +373,7 @@ function __doRequest($request, $location, $saction, $version, $one_way = 0) $this->addOAuth($doc, $this->getInternalAuthToken($this->tenantKey)); $content = $objWSSE->saveXML(); - $content_length = strlen($content); + $content_length = strlen($content); if ($this->debugSOAP){ error_log ('FuelSDK SOAP Request: '); error_log (str_replace($this->getInternalAuthToken($this->tenantKey),"REMOVED",$content)); @@ -403,7 +429,7 @@ public function addOAuth( $doc, $token) $header = $soapDoc->createElementNS($soapNS, $soapPFX.':Header'); $envelope->insertBefore($header, $envelope->firstChild); } - + $authnode = $soapDoc->createElementNS('http://exacttarget.com', 'oAuth'); $header->appendChild($authnode); diff --git a/src/ET_GetSupportRest.php b/src/ET_GetSupportRest.php index 0376798..91c77c1 100644 --- a/src/ET_GetSupportRest.php +++ b/src/ET_GetSupportRest.php @@ -21,7 +21,7 @@ class ET_GetSupportRest extends ET_BaseObjectRest public function get() { $this->authStub->refreshToken(); - $completeURL = $this->endpoint; + $completeURL = $this->authStub->baseUrl . $this->path; $additionalQS = array(); if (!is_null($this->props)) { @@ -43,12 +43,11 @@ public function get() foreach ($this->urlProps as $value){ $completeURL = str_replace("{{$value}}","",$completeURL); } - $additionalQS["access_token"] = $this->authStub->getAuthToken(); // echo $additionalQS["access_token"] . "\n"; // $queryString = http_build_query($additionalQS); // $completeURL = "{$completeURL}?{$queryString}"; // $response = new ET_GetRest($this->authStub, $completeURL, $queryString); - $response = new ET_GetRest($this->authStub, $completeURL, $additionalQS["access_token"]); + $response = new ET_GetRest($this->authStub, $completeURL, $this->authStub->getAuthToken()); if (property_exists($response->results, 'page')){ $this->lastPageNumber = $response->results->page; diff --git a/src/ET_Message_Guide.php b/src/ET_Message_Guide.php index 5f26f01..fc66722 100644 --- a/src/ET_Message_Guide.php +++ b/src/ET_Message_Guide.php @@ -14,7 +14,7 @@ class ET_Message_Guide extends ET_CUDSupportRest */ function __construct() { - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/messages/{id}"; + $this->path = "/guide/v1/messages/{id}"; $this->urlProps = array("id"); $this->urlPropsRequired = array(); } @@ -25,16 +25,16 @@ function __construct() */ function get() { - $origEndpoint = $this->endpoint; + $origPath = $this->path; $origProps = $this->urlProps; if (count($this->props) == 0) { - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/messages/f:@all"; + $this->path = "/guide/v1/messages/f:@all"; } elseif (array_key_exists('key',$this->props)){ - $this->endpoint = "https://www.exacttargetapis.com/guide/v1/messages/key:{key}"; + $this->path = "/guide/v1/messages/key:{key}"; $this->urlProps = array("key"); } $response = parent::get(); - $this->endpoint = $origEndpoint; + $this->path = $origPath; $this->urlProps = $origProps; return $response; @@ -46,9 +46,9 @@ function get() */ function convert() { - $completeURL = "https://www.exacttargetapis.com/guide/v1/messages/convert?access_token=" . $this->authStub->getAuthToken(); + $completeURL = $this->authStub->baseUrl . "/guide/v1/messages/convert"; - $response = new ET_PostRest($this->authStub, $completeURL, $this->props); + $response = new ET_PostRest($this->authStub, $completeURL, $this->props, $this->authStub->getAuthToken()); return $response; } @@ -84,11 +84,11 @@ function render() $response = null; if (is_array($this->props) && array_key_exists("id", $this->props)) { - $completeURL = "https://www.exacttargetapis.com/guide/v1/messages/render/{$this->props['id']}?access_token=" . $this->authStub->getAuthToken(); - $response = new ET_GetRest($this->authStub, $completeURL, null); + $completeURL = $this->authStub->baseUrl . "/guide/v1/messages/render/{$this->props['id']}"; + $response = new ET_GetRest($this->authStub, $completeURL, $this->authStub->getAuthToken()); } else { - $completeURL = "https://www.exacttargetapis.com/guide/v1/messages/render?access_token=" . $this->authStub->getAuthToken(); - $response = new ET_PostRest($this->authStub, $completeURL, $this->props); + $completeURL = $this->authStub->baseUrl . "/guide/v1/messages/render"; + $response = new ET_PostRest($this->authStub, $completeURL, $this->props, $this->authStub->getAuthToken()); } return $response; } diff --git a/src/ET_OEM_Client.php b/src/ET_OEM_Client.php index e14264a..6a22f89 100644 --- a/src/ET_OEM_Client.php +++ b/src/ET_OEM_Client.php @@ -16,11 +16,8 @@ function CreateTenant($tenantInfo) { $key = $tenantInfo['key']; unset($tenantInfo['key']); - $additionalQS = array(); - $additionalQS["access_token"] = $this->getAuthToken(); - $queryString = http_build_query($additionalQS); - $completeURL = "https://www.exacttargetapis.com/provisioning/v1/tenants/{$key}?{$queryString}"; - return new ET_PutRest($this, $completeURL, $tenantInfo); + $completeURL = $this->baseUrl . "/provisioning/v1/tenants/{$key}"; + return new ET_PutRest($this, $completeURL, $tenantInfo, $this->getAuthToken()); } /** @@ -28,11 +25,8 @@ function CreateTenant($tenantInfo) */ function GetTenants() { - $additionalQS = array(); - $additionalQS["access_token"] = $this->getAuthToken(); - $queryString = http_build_query($additionalQS); - $completeURL = "https://www.exacttargetapis.com/provisioning/v1/tenants/?{$queryString}"; - return new ET_GetRest($this, $completeURL, $queryString); + $completeURL = $this->baseUrl . "/provisioning/v1/tenants/"; + return new ET_GetRest($this, $completeURL, $this->getAuthToken()); } } ?> \ No newline at end of file diff --git a/src/ET_Util.php b/src/ET_Util.php index 7fe7c6d..666b1fb 100644 --- a/src/ET_Util.php +++ b/src/ET_Util.php @@ -288,7 +288,7 @@ public static function isAssoc($array) */ public static function getSDKVersion() { - return "FuelSDK-PHP-v1.0.0"; + return "FuelSDK-PHP-v1.2.0"; } }