[PIO-163] Travis fixes Also include ASF license fixes and PSR-2
Project: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/repo Commit: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/commit/f1e33f3a Tree: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/tree/f1e33f3a Diff: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/diff/f1e33f3a Branch: refs/heads/develop Commit: f1e33f3ada31b585fddcc7dbfb9f09ef5fb13259 Parents: 2b99dcc Author: Donald Szeto <don...@apache.org> Authored: Thu Sep 13 11:19:54 2018 -0700 Committer: Donald Szeto <don...@apache.org> Committed: Thu Sep 13 11:19:54 2018 -0700 ---------------------------------------------------------------------- .travis.yml | 17 + build.xml | 15 + composer.json | 2 +- composer.lock | 404 ++++++++++++----- examples/ItemrankImport.php | 39 +- examples/ItemrankQuery.php | 22 +- examples/SampleEvent.php | 117 +++-- phpunit.xml.dist | 15 + src/predictionio/BaseClient.php | 111 +++-- src/predictionio/EngineClient.php | 56 ++- src/predictionio/EventClient.php | 509 ++++++++++++---------- src/predictionio/Exporter.php | 39 +- src/predictionio/FileExporter.php | 30 +- src/predictionio/PredictionIOAPIError.php | 22 +- tests/Unit/EngineClientTest.php | 79 ++-- tests/Unit/EventClientTest.php | 581 +++++++++++++------------ tests/Unit/ExporterTest.php | 60 ++- tests/Unit/FileExporterTest.php | 47 +- 18 files changed, 1346 insertions(+), 819 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/.travis.yml ---------------------------------------------------------------------- diff --git a/.travis.yml b/.travis.yml index d8c9e70..b10fe09 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,17 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. language: php php: - 7.2 @@ -9,3 +23,6 @@ before_script: - pear install phing/phing - phpenv rehash - phing + - composer install +script: + - phing test http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/build.xml ---------------------------------------------------------------------- diff --git a/build.xml b/build.xml index fdb6fcf..309634f 100644 --- a/build.xml +++ b/build.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> + <project name="predictionio" default="install-dependencies"> <target name="install-dependencies"> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/composer.json ---------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 19b745d..917e5b6 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ }, "require-dev": { "symfony/class-loader": "^2.3", - "phpunit/phpunit": "^4.7", + "phpunit/phpunit": "^5", "apigen/apigen": "^4.1.2" }, "autoload": { http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/composer.lock ---------------------------------------------------------------------- diff --git a/composer.lock b/composer.lock index 518a120..09c15f2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4a82d4080e44a89330d5e6268a08e601", + "content-hash": "bae15d857f4a61c45b8021628d1b2f72", "packages": [ { "name": "guzzlehttp/guzzle", @@ -464,32 +464,32 @@ }, { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=5.3,<8.0-DEV" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -514,7 +514,7 @@ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "herrera-io/json", @@ -978,6 +978,51 @@ "time": "2018-01-15T00:49:33+00:00" }, { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-10-19T19:58:43+00:00" + }, + { "name": "nette/application", "version": "v2.4.12", "source": { @@ -1604,21 +1649,21 @@ }, { "name": "nette/php-generator", - "version": "v3.0.5", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff" + "reference": "c1f6b2163c5471c4d94cd94b93362f12bceef183" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/ea90209c2e8a7cd087b2742ca553c047a8df5eff", - "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff", + "url": "https://api.github.com/repos/nette/php-generator/zipball/c1f6b2163c5471c4d94cd94b93362f12bceef183", + "reference": "c1f6b2163c5471c4d94cd94b93362f12bceef183", "shasum": "" }, "require": { "nette/utils": "^2.4.2 || ~3.0.0", - "php": ">=7.0" + "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" @@ -1630,7 +1675,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -1654,7 +1699,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "ð Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.2 features.", + "description": "ð Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.1 features.", "homepage": "https://nette.org", "keywords": [ "code", @@ -1662,7 +1707,7 @@ "php", "scaffolding" ], - "time": "2018-08-09T14:32:27+00:00" + "time": "2018-04-26T16:47:39+00:00" }, { "name": "nette/reflection", @@ -1993,35 +2038,29 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", "shasum": "" }, "require": { - "php": "^7.0", + "php": "^5.6 || ^7.0", "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -2040,7 +2079,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2017-11-10T14:09:06+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -2154,39 +2193,40 @@ }, { "name": "phpunit/php-code-coverage", - "version": "2.2.4", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" + "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" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-xdebug": "^2.5.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -2212,7 +2252,7 @@ "testing", "xunit" ], - "time": "2015-10-06T15:47:00+00:00" + "time": "2017-04-02T07:44:40+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2402,40 +2442,50 @@ }, { "name": "phpunit/phpunit", - "version": "4.8.36", + "version": "5.7.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", "shasum": "" }, "require": { "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~2.1", + "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": "~2.3", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "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.6|^2.0.1", + "symfony/yaml": "~2.1|~3.0|~4.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" }, "suggest": { + "ext-xdebug": "*", "phpunit/php-invoker": "~1.1" }, "bin": [ @@ -2444,7 +2494,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.8.x-dev" + "dev-master": "5.7.x-dev" } }, "autoload": { @@ -2470,30 +2520,33 @@ "testing", "xunit" ], - "time": "2017-06-21T08:07:12+00:00" + "time": "2018-02-01T05:50:59+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.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": "~4.4" + "phpunit/phpunit": "^5.4" }, "suggest": { "ext-soap": "*" @@ -2501,7 +2554,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { @@ -2526,7 +2579,7 @@ "mock", "xunit" ], - "time": "2015-10-02T06:51:40+00:00" + "time": "2017-06-30T09:13:00+00:00" }, { "name": "psr/log", @@ -2576,6 +2629,51 @@ "time": "2016-10-10T12:19:37+00:00" }, { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebast...@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { "name": "sebastian/comparator", "version": "1.2.4", "source": { @@ -2693,28 +2791,28 @@ }, { "name": "sebastian/environment", - "version": "1.3.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "phpunit/phpunit": "^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2739,25 +2837,25 @@ "environment", "hhvm" ], - "time": "2016-08-18T05:49:44+00:00" + "time": "2016-11-26T07:53:53+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "sebastian/recursion-context": "~2.0" }, "require-dev": { "ext-mbstring": "*", @@ -2766,7 +2864,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2806,7 +2904,7 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2016-11-19T08:54:04+00:00" }, { "name": "sebastian/global-state", @@ -2860,17 +2958,63 @@ "time": "2015-10-12T03:26:01+00:00" }, { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebast...@phpunit.de" + } + ], + "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" + }, + { "name": "sebastian/recursion-context", - "version": "1.0.5", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "shasum": "" }, "require": { @@ -2882,7 +3026,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2910,23 +3054,73 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03T07:41:43+00:00" + "time": "2016-11-19T07:33:16+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebast...@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" }, { "name": "sebastian/version", - "version": "1.0.6", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, + "require": { + "php": ">=5.6" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2945,7 +3139,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "seld/jsonlint", http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/examples/ItemrankImport.php ---------------------------------------------------------------------- diff --git a/examples/ItemrankImport.php b/examples/ItemrankImport.php index 4266a7f..4bdd0e5 100644 --- a/examples/ItemrankImport.php +++ b/examples/ItemrankImport.php @@ -1,4 +1,20 @@ <?php + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + require_once("vendor/autoload.php"); use predictionio\EventClient; @@ -10,24 +26,21 @@ echo($response); // set user - generate 10 users for ($u=1; $u<=10; $u++) { - $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M')); - print_r($response); + $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M')); + print_r($response); } // set item - generate 50 items for ($i=1; $i<=50; $i++) { - $response=$client->setItem($i, array('itypes'=>array('1'))); - print_r($response); + $response=$client->setItem($i, array('itypes'=>array('1'))); + print_r($response); } // record event - each user randomly views 10 items for ($u=1; $u<=10; $u++) { - for ($count=0; $count<10; $count++) { - $i = rand(1,50); - $response=$client->recordUserActionOnItem('view', $u, $i); - print_r($response); - } -} - - -?> + for ($count=0; $count<10; $count++) { + $i = rand(1, 50); + $response=$client->recordUserActionOnItem('view', $u, $i); + print_r($response); + } +} http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/examples/ItemrankQuery.php ---------------------------------------------------------------------- diff --git a/examples/ItemrankQuery.php b/examples/ItemrankQuery.php index 2d06346..0598a51 100644 --- a/examples/ItemrankQuery.php +++ b/examples/ItemrankQuery.php @@ -1,4 +1,20 @@ <?php + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + require_once("vendor/autoload.php"); use predictionio\EngineClient; @@ -9,8 +25,6 @@ $response=$client->getStatus(); // Rank item 1 to 5 for each user for ($i=1; $i<=10; $i++) { - $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5))); - print_r($response); + $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5))); + print_r($response); } - -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/examples/SampleEvent.php ---------------------------------------------------------------------- diff --git a/examples/SampleEvent.php b/examples/SampleEvent.php index b41fc07..f813a45 100644 --- a/examples/SampleEvent.php +++ b/examples/SampleEvent.php @@ -1,68 +1,89 @@ <?php + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + require_once("vendor/autoload.php"); use predictionio\EventClient; use predictionio\PredictionIOAPIError; try { - // check Event Server status - $client = new EventClient( - "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O"); - $response=$client->getStatus(); - echo($response); + // check Event Server status + $client = new EventClient( + "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O" + ); + $response=$client->getStatus(); + echo($response); - // set user with event time - $response=$client->setUser(9, array('age'=>10), - '2014-01-01T10:20:30.400+08:00'); - print_r($response); + // set user with event time + $response=$client->setUser( + 9, + array('age'=>10), + '2014-01-01T10:20:30.400+08:00' + ); + print_r($response); - // set user - $response=$client->setUser(8, array('age'=>20, 'gender'=>'M')); - print_r($response); + // set user + $response=$client->setUser(8, array('age'=>20, 'gender'=>'M')); + print_r($response); - // unset user - $response=$client->unsetUser(8, array('age'=>20)); - print_r($response); + // unset user + $response=$client->unsetUser(8, array('age'=>20)); + print_r($response); - // delete user - $response=$client->deleteUser(9); - print_r($response); - - // set item with event time - $response=$client->setItem(3, array('itypes'=>array('1')), - '2013-12-20T05:15:25.350+08:00'); - print_r($response); + // delete user + $response=$client->deleteUser(9); + print_r($response); - // set item - $response=$client->setItem(2, array('itypes'=>array('1'))); - print_r($response); + // set item with event time + $response=$client->setItem( + 3, + array('itypes'=>array('1')), + '2013-12-20T05:15:25.350+08:00' + ); + print_r($response); - // unset item - $response=$client->unsetItem(2, array('itypes'=>array('1'))); - print_r($response); + // set item + $response=$client->setItem(2, array('itypes'=>array('1'))); + print_r($response); - // delete item - $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00'); - print_r($response); + // unset item + $response=$client->unsetItem(2, array('itypes'=>array('1'))); + print_r($response); - // record user action on item - $response=$client->recordUserActionOnItem('view', 8, 2); - print_r($response); + // delete item + $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00'); + print_r($response); - // create event - $response=$client->createEvent(array( - 'event' => 'my_event', - 'entityType' => 'user', - 'entityId' => '8', - 'properties' => array('prop1'=>1, 'prop2'=>2), - )); - print_r($response); + // record user action on item + $response=$client->recordUserActionOnItem('view', 8, 2); + print_r($response); - // get event - $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo'); - print_r($response); + // create event + $response=$client->createEvent(array( + 'event' => 'my_event', + 'entityType' => 'user', + 'entityId' => '8', + 'properties' => array('prop1'=>1, 'prop2'=>2), + )); + print_r($response); + // get event + $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo'); + print_r($response); } catch (PredictionIOAPIError $e) { - echo $e->getMessage(); + echo $e->getMessage(); } -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/phpunit.xml.dist ---------------------------------------------------------------------- diff --git a/phpunit.xml.dist b/phpunit.xml.dist index d313305..80c60eb 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> + <phpunit colors="true" verbose="false" convertErrorsToExceptions="true" http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/src/predictionio/BaseClient.php ---------------------------------------------------------------------- diff --git a/src/predictionio/BaseClient.php b/src/predictionio/BaseClient.php index ecec355..83da150 100644 --- a/src/predictionio/BaseClient.php +++ b/src/predictionio/BaseClient.php @@ -1,5 +1,20 @@ <?php +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace predictionio; use GuzzleHttp\Client; @@ -9,59 +24,61 @@ use GuzzleHttp\Exception\ClientException; * Base client for Event and Engine client * */ -abstract class BaseClient { - private $baseUrl; - public $client; +abstract class BaseClient +{ + private $baseUrl; + public $client; - /** - * @param string $baseUrl Base URL to the server - * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely - * @param float $connectTimeout Number of seconds to wait while trying to connect to a server - */ - public function __construct($baseUrl, $timeout, $connectTimeout) { - $this->baseUrl = $baseUrl; - $this->client = new Client([ + /** + * @param string $baseUrl Base URL to the server + * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely + * @param float $connectTimeout Number of seconds to wait while trying to connect to a server + */ + public function __construct($baseUrl, $timeout, $connectTimeout) + { + $this->baseUrl = $baseUrl; + $this->client = new Client([ 'base_uri' => $this->baseUrl, 'timeout' => $timeout, 'connect_timeout' => $connectTimeout - ]); - - } + ]); + } - /** - * Get the status of the Event Server or Engine Instance - * - * @return string status - */ - public function getStatus() { - return $this->client->get('/')->getBody(); - } + /** + * Get the status of the Event Server or Engine Instance + * + * @return string status + */ + public function getStatus() + { + return $this->client->get('/')->getBody(); + } - /** - * Send a HTTP request to the server - * - * @param string $method HTTP request method - * @param string $url Relative or absolute url - * @param string $body HTTP request body - * - * @return array JSON response - * @throws PredictionIOAPIError Request error - */ - protected function sendRequest($method, $url, $body) { - $options = [ - 'headers' => [ - 'Accept-Encoding' => 'gzip', - 'Content-Type' => 'application/json', - ], - 'body' => $body, - ]; + /** + * Send a HTTP request to the server + * + * @param string $method HTTP request method + * @param string $url Relative or absolute url + * @param string $body HTTP request body + * + * @return array JSON response + * @throws PredictionIOAPIError Request error + */ + protected function sendRequest($method, $url, $body) + { + $options = [ + 'headers' => [ + 'Accept-Encoding' => 'gzip', + 'Content-Type' => 'application/json', + ], + 'body' => $body, + ]; - try { - $response = $this->client->request($method, $url, $options); - return json_decode($response->getBody(), true); - } catch (ClientException $e) { - throw new PredictionIOAPIError($e->getMessage()); + try { + $response = $this->client->request($method, $url, $options); + return json_decode($response->getBody(), true); + } catch (ClientException $e) { + throw new PredictionIOAPIError($e->getMessage()); + } } - } } -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/src/predictionio/EngineClient.php ---------------------------------------------------------------------- diff --git a/src/predictionio/EngineClient.php b/src/predictionio/EngineClient.php index f45ac35..7355937 100644 --- a/src/predictionio/EngineClient.php +++ b/src/predictionio/EngineClient.php @@ -1,12 +1,28 @@ <?php +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace predictionio; /** * Client for connecting to an Engine Instance * */ -class EngineClient extends BaseClient { +class EngineClient extends BaseClient +{ /** * @param string Base URL to the Engine Instance. Default is localhost:8000. @@ -15,23 +31,25 @@ class EngineClient extends BaseClient { * @param float Number of seconds to wait while trying to connect to a server. * Default is 5. */ - public function __construct($baseUrl="http://localhost:8000", - $timeout=0, $connectTimeout=5 ) { - parent::__construct($baseUrl, $timeout, $connectTimeout); - } + public function __construct( + $baseUrl="http://localhost:8000", + $timeout=0, + $connectTimeout=5 + ) { + parent::__construct($baseUrl, $timeout, $connectTimeout); + } - /** - * Send prediction query to an Engine Instance - * - * @param array Query - * - * @return array JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function sendQuery(array $query) { - return $this->sendRequest("POST", "/queries.json", json_encode($query)); - } + /** + * Send prediction query to an Engine Instance + * + * @param array Query + * + * @return array JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function sendQuery(array $query) + { + return $this->sendRequest("POST", "/queries.json", json_encode($query)); + } } - -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/src/predictionio/EventClient.php ---------------------------------------------------------------------- diff --git a/src/predictionio/EventClient.php b/src/predictionio/EventClient.php index df4286f..7a31bc7 100644 --- a/src/predictionio/EventClient.php +++ b/src/predictionio/EventClient.php @@ -1,267 +1,310 @@ <?php +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace predictionio; + use GuzzleHttp\Client; use \DateTime; - + /** * Client for connecting to an Event Server * */ -class EventClient extends BaseClient { - const DATE_TIME_FORMAT = DateTime::ISO8601; - private $accessKey; - private $eventUrl; +class EventClient extends BaseClient +{ + const DATE_TIME_FORMAT = DateTime::ISO8601; + private $accessKey; + private $eventUrl; - /** - * @param string Access Key - * @param string Base URL to the Event Server. Default is localhost:7070. - * @param float Timeout of the request in seconds. Use 0 to wait indefinitely - * Default is 0. - * @param float Number of seconds to wait while trying to connect to a server. - * Default is 5. - */ - public function __construct($accessKey, $baseUrl='http://localhost:7070', - $timeout=0, $connectTimeout=5 ) { - parent::__construct($baseUrl, $timeout, $connectTimeout); - $this->accessKey = $accessKey; - $this->eventUrl = "/events.json?accessKey=$this->accessKey"; - } + /** + * @param string Access Key + * @param string Base URL to the Event Server. Default is localhost:7070. + * @param float Timeout of the request in seconds. Use 0 to wait indefinitely + * Default is 0. + * @param float Number of seconds to wait while trying to connect to a server. + * Default is 5. + */ + public function __construct( + $accessKey, + $baseUrl='http://localhost:7070', + $timeout=0, + $connectTimeout=5 + ) { + parent::__construct($baseUrl, $timeout, $connectTimeout); + $this->accessKey = $accessKey; + $this->eventUrl = "/events.json?accessKey=$this->accessKey"; + } - private function getEventTime($eventTime) { - $result = $eventTime; - if (!isset($eventTime)) { - $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT); - } + private function getEventTime($eventTime) + { + $result = $eventTime; + if (!isset($eventTime)) { + $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT); + } - return $result; - } + return $result; + } - /** - * Set a user entity - * - * @param int|string User Id - * @param array Properties of the user entity to set - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function setUser($uid, array $properties=array(), $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); + /** + * Set a user entity + * + * @param int|string User Id + * @param array Properties of the user entity to set + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function setUser($uid, array $properties=array(), $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); - // casting to object so that an empty array would be represented as {} - if (empty($properties)) $properties = (object)$properties; + // casting to object so that an empty array would be represented as {} + if (empty($properties)) { + $properties = (object)$properties; + } - $json = json_encode([ - 'event' => '$set', - 'entityType' => 'user', - 'entityId' => $uid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + $json = json_encode([ + 'event' => '$set', + 'entityType' => 'user', + 'entityId' => $uid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Unset a user entity - * - * @param int|string User Id - * @param array Properties of the user entity to unset - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function unsetUser($uid, array $properties, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) - throw new PredictionIOAPIError('Specify at least one property'); + /** + * Unset a user entity + * + * @param int|string User Id + * @param array Properties of the user entity to unset + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function unsetUser($uid, array $properties, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + throw new PredictionIOAPIError('Specify at least one property'); + } - $json = json_encode([ - 'event' => '$unset', - 'entityType' => 'user', - 'entityId' => $uid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + $json = json_encode([ + 'event' => '$unset', + 'entityType' => 'user', + 'entityId' => $uid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Delete a user entity - * - * @param int|string User Id - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function deleteUser($uid, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); + /** + * Delete a user entity + * + * @param int|string User Id + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function deleteUser($uid, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); - $json = json_encode([ - 'event' => '$delete', - 'entityType' => 'user', - 'entityId' => $uid, - 'eventTime' => $eventTime, - ]); + $json = json_encode([ + 'event' => '$delete', + 'entityType' => 'user', + 'entityId' => $uid, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } - - /** - * Set an item entity - * - * @param int|string Item Id - * @param array Properties of the item entity to set - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function setItem($iid, array $properties=array(), $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) $properties = (object)$properties; - $json = json_encode([ - 'event' => '$set', - 'entityType' => 'item', - 'entityId' => $iid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + return $this->sendRequest('POST', $this->eventUrl, $json); + } - return $this->sendRequest('POST', $this->eventUrl, $json); - } + /** + * Set an item entity + * + * @param int|string Item Id + * @param array Properties of the item entity to set + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function setItem($iid, array $properties=array(), $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + $properties = (object)$properties; + } + $json = json_encode([ + 'event' => '$set', + 'entityType' => 'item', + 'entityId' => $iid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - /** - * Unset an item entity - * - * @param int|string Item Id - * @param array Properties of the item entity to unset - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function unsetItem($iid, array $properties, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) - throw new PredictionIOAPIError('Specify at least one property'); - $json = json_encode([ - 'event' => '$unset', - 'entityType' => 'item', - 'entityId' => $iid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + return $this->sendRequest('POST', $this->eventUrl, $json); + } - return $this->sendRequest('POST', $this->eventUrl, $json); - } + /** + * Unset an item entity + * + * @param int|string Item Id + * @param array Properties of the item entity to unset + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function unsetItem($iid, array $properties, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + throw new PredictionIOAPIError('Specify at least one property'); + } + $json = json_encode([ + 'event' => '$unset', + 'entityType' => 'item', + 'entityId' => $iid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - /** - * Delete an item entity - * - * @param int|string Item Id - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function deleteItem($iid, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); + return $this->sendRequest('POST', $this->eventUrl, $json); + } - $json = json_encode([ - 'event' => '$delete', - 'entityType' => 'item', - 'entityId' => $iid, - 'eventTime' => $eventTime, - ]); + /** + * Delete an item entity + * + * @param int|string Item Id + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function deleteItem($iid, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + $json = json_encode([ + 'event' => '$delete', + 'entityType' => 'item', + 'entityId' => $iid, + 'eventTime' => $eventTime, + ]); - /** - * Record a user action on an item - * - * @param string Event name - * @param int|string User Id - * @param int|string Item Id - * @param array Properties of the event - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function recordUserActionOnItem($event, $uid, $iid, - array $properties=array(), - $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) $properties = (object)$properties; - $json = json_encode([ - 'event' => $event, - 'entityType' => 'user', - 'entityId' => $uid, - 'targetEntityType' => 'item', - 'targetEntityId' => $iid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + return $this->sendRequest('POST', $this->eventUrl, $json); + } - return $this->sendRequest('POST', $this->eventUrl, $json); - } + /** + * Record a user action on an item + * + * @param string Event name + * @param int|string User Id + * @param int|string Item Id + * @param array Properties of the event + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function recordUserActionOnItem( + $event, + $uid, + $iid, + array $properties=array(), + $eventTime=null + ) { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + $properties = (object)$properties; + } + $json = json_encode([ + 'event' => $event, + 'entityType' => 'user', + 'entityId' => $uid, + 'targetEntityType' => 'item', + 'targetEntityId' => $iid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - /** - * Create an event - * - * @param array An array describing the event - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function createEvent(array $data) { - $json = json_encode($data); + return $this->sendRequest('POST', $this->eventUrl, $json); + } - return $this->sendRequest('POST', $this->eventUrl, $json); - } + /** + * Create an event + * + * @param array An array describing the event + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function createEvent(array $data) + { + $json = json_encode($data); - /** - * Retrieve an event - * - * @param string Event ID - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function getEvent($eventId) { - return $this->sendRequest('GET', - "/events/$eventId.json?accessKey=$this->accessKey", ''); - } -} + return $this->sendRequest('POST', $this->eventUrl, $json); + } -?> + /** + * Retrieve an event + * + * @param string Event ID + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function getEvent($eventId) + { + return $this->sendRequest( + 'GET', + "/events/$eventId.json?accessKey=$this->accessKey", + '' + ); + } +} http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/src/predictionio/Exporter.php ---------------------------------------------------------------------- diff --git a/src/predictionio/Exporter.php b/src/predictionio/Exporter.php index 35b7a03..c965dc7 100644 --- a/src/predictionio/Exporter.php +++ b/src/predictionio/Exporter.php @@ -1,13 +1,28 @@ <?php -namespace predictionio; - +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ -trait Exporter { +namespace predictionio; +trait Exporter +{ abstract public function export($json); - public function jsonEncode($data) { + public function jsonEncode($data) + { return json_encode($data); } @@ -24,10 +39,15 @@ trait Exporter { * @param array $properties * @param $eventTime */ - public function createEvent($event, $entityType, $entityId, - $targetEntityType=null, $targetEntityId=null, array $properties=null, - $eventTime=null) { - + public function createEvent( + $event, + $entityType, + $entityId, + $targetEntityType=null, + $targetEntityId=null, + array $properties=null, + $eventTime=null + ) { if (!isset($eventTime)) { $eventTime = new \DateTime(); } elseif (!($eventTime instanceof \DateTime)) { @@ -58,5 +78,4 @@ trait Exporter { $this->export($json); } - -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/src/predictionio/FileExporter.php ---------------------------------------------------------------------- diff --git a/src/predictionio/FileExporter.php b/src/predictionio/FileExporter.php index d0ee711..8e820dc 100644 --- a/src/predictionio/FileExporter.php +++ b/src/predictionio/FileExporter.php @@ -1,5 +1,20 @@ <?php +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace predictionio; /** @@ -7,21 +22,24 @@ namespace predictionio; * * @package predictionio */ -class FileExporter { - +class FileExporter +{ use Exporter; private $file; - public function __construct($fileName) { + public function __construct($fileName) + { $this->file = fopen($fileName, 'w'); } - public function export($json) { + public function export($json) + { fwrite($this->file, "$json\n"); } - public function close() { + public function close() + { fclose($this->file); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/src/predictionio/PredictionIOAPIError.php ---------------------------------------------------------------------- diff --git a/src/predictionio/PredictionIOAPIError.php b/src/predictionio/PredictionIOAPIError.php index ca4cacd..b51414f 100644 --- a/src/predictionio/PredictionIOAPIError.php +++ b/src/predictionio/PredictionIOAPIError.php @@ -1,9 +1,25 @@ <?php + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace predictionio; + /** * Thrown when there is an error with the request. */ -class PredictionIOAPIError extends \Exception { - +class PredictionIOAPIError extends \Exception +{ } -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/f1e33f3a/tests/Unit/EngineClientTest.php ---------------------------------------------------------------------- diff --git a/tests/Unit/EngineClientTest.php b/tests/Unit/EngineClientTest.php index 66c43b9..2f5fbbf 100644 --- a/tests/Unit/EngineClientTest.php +++ b/tests/Unit/EngineClientTest.php @@ -1,4 +1,20 @@ <?php + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + namespace predictionio\tests\Unit; use GuzzleHttp\Middleware; @@ -9,36 +25,35 @@ use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Psr7\Response; - -class EngineClientTest extends \PHPUnit_Framework_TestCase { - /** @var EngineClient $engineClient */ - protected $engineClient; - protected $container = []; - - protected function setUp() { - $history=Middleware::History($this->container); - $mock=new MockHandler([new Response(200)]); - $handler=HandlerStack::create($mock); - $handler->push($history); - $this->engineClient=new EngineClient(); - $existingOptions = $this->engineClient->client->getConfig(); - $existingOptions['handler'] = $handler; - $mockClient=new Client($existingOptions); - $this->engineClient->client = $mockClient; - } - - public function testSendQuery() { - $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3))); - $result=array_shift($this->container); - /** @var Request[] $result['request'] */ - $body=json_decode($result['request']->getBody(), true); - - $this->assertEquals(5,$body['uid']); - $this->assertEquals(array(1,2,3),$body['iids']); - $this->assertEquals('POST',$result['request']->getMethod()); - $this->assertEquals('http://localhost:8000/queries.json',$result['request']->getUri()); - } - +class EngineClientTest extends \PHPUnit_Framework_TestCase +{ + /** @var EngineClient $engineClient */ + protected $engineClient; + protected $container = []; + + protected function setUp() + { + $history=Middleware::History($this->container); + $mock=new MockHandler([new Response(200)]); + $handler=HandlerStack::create($mock); + $handler->push($history); + $this->engineClient=new EngineClient(); + $existingOptions = $this->engineClient->client->getConfig(); + $existingOptions['handler'] = $handler; + $mockClient=new Client($existingOptions); + $this->engineClient->client = $mockClient; + } + + public function testSendQuery() + { + $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3))); + $result=array_shift($this->container); + /** @var Request[] $result['request'] */ + $body=json_decode($result['request']->getBody(), true); + + $this->assertEquals(5, $body['uid']); + $this->assertEquals(array(1,2,3), $body['iids']); + $this->assertEquals('POST', $result['request']->getMethod()); + $this->assertEquals('http://localhost:8000/queries.json', $result['request']->getUri()); + } } - -?>