From 331c1842dff566638099fe197cd054598418f39e Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 27 Sep 2016 13:18:59 -0700 Subject: [PATCH 01/20] Add Pub/Sub quickstart sample. --- bigquery/quickstart/composer.json | 6 + bigquery/quickstart/composer.lock | 631 ++++++++++++++++++++++++++++ bigquery/quickstart/quickstart.php | 22 + datastore/quickstart/composer.json | 6 + datastore/quickstart/composer.lock | 631 ++++++++++++++++++++++++++++ datastore/quickstart/quickstart.php | 26 ++ pubsub/quickstart/composer.json | 6 + pubsub/quickstart/composer.lock | 631 ++++++++++++++++++++++++++++ pubsub/quickstart/quickstart.php | 22 + storage/quickstart/composer.json | 6 + storage/quickstart/composer.lock | 631 ++++++++++++++++++++++++++++ storage/quickstart/quickstart.php | 22 + translate/quickstart/composer.json | 6 + translate/quickstart/composer.lock | 631 ++++++++++++++++++++++++++++ translate/quickstart/quickstart.php | 26 ++ 15 files changed, 3303 insertions(+) create mode 100644 bigquery/quickstart/composer.json create mode 100644 bigquery/quickstart/composer.lock create mode 100644 bigquery/quickstart/quickstart.php create mode 100644 datastore/quickstart/composer.json create mode 100644 datastore/quickstart/composer.lock create mode 100644 datastore/quickstart/quickstart.php create mode 100644 pubsub/quickstart/composer.json create mode 100644 pubsub/quickstart/composer.lock create mode 100644 pubsub/quickstart/quickstart.php create mode 100644 storage/quickstart/composer.json create mode 100644 storage/quickstart/composer.lock create mode 100644 storage/quickstart/quickstart.php create mode 100644 translate/quickstart/composer.json create mode 100644 translate/quickstart/composer.lock create mode 100644 translate/quickstart/quickstart.php diff --git a/bigquery/quickstart/composer.json b/bigquery/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/bigquery/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/bigquery/quickstart/composer.lock b/bigquery/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/bigquery/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/bigquery/quickstart/quickstart.php b/bigquery/quickstart/quickstart.php new file mode 100644 index 0000000000..3feec6f402 --- /dev/null +++ b/bigquery/quickstart/quickstart.php @@ -0,0 +1,22 @@ + $projectId +]); + +# The name for the new dataset +$datasetName = 'my_new_dataset'; + +# Creates the new dataset +$dataset = $bigqueryClient->createDataset($datasetName); +# [END bigquery_quickstart] diff --git a/datastore/quickstart/composer.json b/datastore/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/datastore/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/datastore/quickstart/composer.lock b/datastore/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/datastore/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php new file mode 100644 index 0000000000..b1975c0533 --- /dev/null +++ b/datastore/quickstart/quickstart.php @@ -0,0 +1,26 @@ + $projectId +]); + +# The kind of the entity to retrieve +$kind = 'Task'; +# The id of the entity to retrieve +$id = 1234567890; +# The Datastore key for the entity +$taskKey = $datastoreClient->key($kind, $id); + +# Retrieves the entity +$dataset = $datastoreClient->lookup($taskKey); +# [END datastore_quickstart] diff --git a/pubsub/quickstart/composer.json b/pubsub/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/pubsub/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/pubsub/quickstart/composer.lock b/pubsub/quickstart/composer.lock new file mode 100644 index 0000000000..0adcf71631 --- /dev/null +++ b/pubsub/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "5b49961998c16c462aa252267ce720cb", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/pubsub/quickstart/quickstart.php b/pubsub/quickstart/quickstart.php new file mode 100644 index 0000000000..2ba2ce4fbe --- /dev/null +++ b/pubsub/quickstart/quickstart.php @@ -0,0 +1,22 @@ + $projectId +]); + +# The name for the new topic +$topicName = 'my-new-topic'; + +# Creates the new topic +$topic = $pubsubClient->createTopic($topicName); +# [END pubsub_quickstart] diff --git a/storage/quickstart/composer.json b/storage/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/storage/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/storage/quickstart/composer.lock b/storage/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/storage/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/storage/quickstart/quickstart.php b/storage/quickstart/quickstart.php new file mode 100644 index 0000000000..7fcacfa9a1 --- /dev/null +++ b/storage/quickstart/quickstart.php @@ -0,0 +1,22 @@ + $projectId +]); + +# The name for the new bucket +$bucketName = 'my-new-bucket'; + +# Creates the new bucket +$bucket = $storageClient->createBucket($bucketName); +# [END storage_quickstart] diff --git a/translate/quickstart/composer.json b/translate/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/translate/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/translate/quickstart/composer.lock b/translate/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/translate/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/translate/quickstart/quickstart.php b/translate/quickstart/quickstart.php new file mode 100644 index 0000000000..80db7625a8 --- /dev/null +++ b/translate/quickstart/quickstart.php @@ -0,0 +1,26 @@ + $apiKey +]); + +# The text to translate +$text = 'Hello, world!'; +# The target language +$target = 'ru'; + +# Translates some text into Russian +$translation = $translateClient->translate($text, [ + 'target' => $target +]); +# [END translate_quickstart] From 78c821baec39753839e11b854d08f7cd6b6c0f4b Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Thu, 29 Sep 2016 17:33:37 -0700 Subject: [PATCH 02/20] adds tests for quickstarts, adds logging quickstart, and fixes review comments --- bigquery/quickstart/phpunit.xml.dist | 31 + bigquery/quickstart/quickstart.php | 10 +- bigquery/quickstart/test/bootstrap.php | 3 + bigquery/quickstart/test/quickstartTest.php | 39 ++ datastore/quickstart/phpunit.xml.dist | 31 + datastore/quickstart/quickstart.php | 12 +- datastore/quickstart/test/bootstrap.php | 3 + datastore/quickstart/test/quickstartTest.php | 41 ++ logging/quickstart/composer.json | 6 + logging/quickstart/composer.lock | 631 +++++++++++++++++++ logging/quickstart/phpunit.xml.dist | 31 + logging/quickstart/quickstart.php | 20 + logging/quickstart/test/bootstrap.php | 3 + logging/quickstart/test/quickstartTest.php | 42 ++ pubsub/quickstart/phpunit.xml.dist | 31 + pubsub/quickstart/quickstart.php | 8 +- pubsub/quickstart/test/bootstrap.php | 3 + pubsub/quickstart/test/quickstartTest.php | 39 ++ storage/quickstart/phpunit.xml.dist | 31 + storage/quickstart/quickstart.php | 10 +- storage/quickstart/test/bootstrap.php | 3 + storage/quickstart/test/quickstartTest.php | 39 ++ translate/quickstart/phpunit.xml.dist | 31 + translate/quickstart/quickstart.php | 5 +- translate/quickstart/test/bootstrap.php | 3 + translate/quickstart/test/quickstartTest.php | 46 ++ 26 files changed, 1122 insertions(+), 30 deletions(-) create mode 100644 bigquery/quickstart/phpunit.xml.dist create mode 100644 bigquery/quickstart/test/bootstrap.php create mode 100644 bigquery/quickstart/test/quickstartTest.php create mode 100644 datastore/quickstart/phpunit.xml.dist create mode 100644 datastore/quickstart/test/bootstrap.php create mode 100644 datastore/quickstart/test/quickstartTest.php create mode 100644 logging/quickstart/composer.json create mode 100644 logging/quickstart/composer.lock create mode 100644 logging/quickstart/phpunit.xml.dist create mode 100644 logging/quickstart/quickstart.php create mode 100644 logging/quickstart/test/bootstrap.php create mode 100644 logging/quickstart/test/quickstartTest.php create mode 100644 pubsub/quickstart/phpunit.xml.dist create mode 100644 pubsub/quickstart/test/bootstrap.php create mode 100644 pubsub/quickstart/test/quickstartTest.php create mode 100644 storage/quickstart/phpunit.xml.dist create mode 100644 storage/quickstart/test/bootstrap.php create mode 100644 storage/quickstart/test/quickstartTest.php create mode 100644 translate/quickstart/phpunit.xml.dist create mode 100644 translate/quickstart/test/bootstrap.php create mode 100644 translate/quickstart/test/quickstartTest.php diff --git a/bigquery/quickstart/phpunit.xml.dist b/bigquery/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..4cb0382a76 --- /dev/null +++ b/bigquery/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/bigquery/quickstart/quickstart.php b/bigquery/quickstart/quickstart.php index 3feec6f402..b1ebe75d83 100644 --- a/bigquery/quickstart/quickstart.php +++ b/bigquery/quickstart/quickstart.php @@ -6,17 +6,13 @@ # Imports the Google Cloud client library use Google\Cloud\BigQuery\BigQueryClient; -# Your Google Cloud Platform project ID -$projectId = 'YOUR_PROJECT_ID'; - # Instantiates a client -$bigqueryClient = new BigQueryClient([ - 'projectId' => $projectId -]); +$bigquery = new BigQueryClient(); # The name for the new dataset $datasetName = 'my_new_dataset'; # Creates the new dataset -$dataset = $bigqueryClient->createDataset($datasetName); +$dataset = $bigquery->createDataset($datasetName); # [END bigquery_quickstart] +return $dataset; diff --git a/bigquery/quickstart/test/bootstrap.php b/bigquery/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/bigquery/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +assertInstanceOf('Google\Cloud\BigQuery\Dataset', $dataset); + $this->assertEquals($datasetId, $dataset->id()); + $dataset->delete(); + } +} diff --git a/datastore/quickstart/phpunit.xml.dist b/datastore/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..d8fd1e26a4 --- /dev/null +++ b/datastore/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php index b1975c0533..09b36ed8d2 100644 --- a/datastore/quickstart/quickstart.php +++ b/datastore/quickstart/quickstart.php @@ -6,21 +6,17 @@ # Imports the Google Cloud client library use Google\Cloud\Datastore\DatastoreClient; -# Your Google Cloud Platform project ID -$projectId = 'YOUR_PROJECT_ID'; - # Instantiates a client -$datastoreClient = new DatastoreClient([ - 'projectId' => $projectId -]); +$datastore = new DatastoreClient(); # The kind of the entity to retrieve $kind = 'Task'; # The id of the entity to retrieve $id = 1234567890; # The Datastore key for the entity -$taskKey = $datastoreClient->key($kind, $id); +$taskKey = $datastore->key($kind, $id); # Retrieves the entity -$dataset = $datastoreClient->lookup($taskKey); +$entity = $datastore->entity($taskKey); # [END datastore_quickstart] +return $entity; diff --git a/datastore/quickstart/test/bootstrap.php b/datastore/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/datastore/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +assertInstanceOf('Google\Cloud\Datastore\Entity', $entity); + + $key = $entity->key(); + $path = $key->path(); + $this->assertEquals('Task', $path[0]['kind']); + $this->assertEquals(1234567890, $path[0]['id']); + } +} diff --git a/logging/quickstart/composer.json b/logging/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/logging/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/logging/quickstart/composer.lock b/logging/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/logging/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/logging/quickstart/phpunit.xml.dist b/logging/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..fd6299216c --- /dev/null +++ b/logging/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/logging/quickstart/quickstart.php b/logging/quickstart/quickstart.php new file mode 100644 index 0000000000..52087c7e94 --- /dev/null +++ b/logging/quickstart/quickstart.php @@ -0,0 +1,20 @@ + $projectId +]); + +# List logging entries +$entries = $logging->entries(); +# [END logging_quickstart] +return $entries; diff --git a/logging/quickstart/test/bootstrap.php b/logging/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/logging/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +markTestSkipped('GOOGLE_PROJECT_ID must be set.'); + } + + $file = sys_get_temp_dir() . '/logging_quickstart.php'; + $contents = file_get_contents(__DIR__ . '/../quickstart.php'); + $contents = str_replace( + ['YOUR_PROJECT_ID', '__DIR__'], + [$projectId, sprintf('"%s/.."', __DIR__)], + $contents + ); + file_put_contents($file, $contents); + + // Invoke quickstart.php + $entries = include $file; + + // Make sure it looks correct + $this->assertInstanceOf('Generator', $entries); + $entry = $entries->current(); + $this->assertInstanceOf('Google\Cloud\Logging\Entry', $entry); + } +} diff --git a/pubsub/quickstart/phpunit.xml.dist b/pubsub/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..6b7a8dde21 --- /dev/null +++ b/pubsub/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/pubsub/quickstart/quickstart.php b/pubsub/quickstart/quickstart.php index 2ba2ce4fbe..4ce4b1e7a1 100644 --- a/pubsub/quickstart/quickstart.php +++ b/pubsub/quickstart/quickstart.php @@ -6,13 +6,8 @@ # Imports the Google Cloud client library use Google\Cloud\PubSub\PubSubClient; -# Your Google Cloud Platform project ID -$projectId = 'YOUR_PROJECT_ID'; - # Instantiates a client -$pubsubClient = new PubSubClient([ - 'projectId' => $projectId -]); +$pubsubClient = new PubSubClient(); # The name for the new topic $topicName = 'my-new-topic'; @@ -20,3 +15,4 @@ # Creates the new topic $topic = $pubsubClient->createTopic($topicName); # [END pubsub_quickstart] +return $topic; diff --git a/pubsub/quickstart/test/bootstrap.php b/pubsub/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/pubsub/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +assertInstanceOf('Google\Cloud\PubSub\Topic', $topic); + $this->assertContains($topicName, $topic->name()); + $topic->delete(); + } +} diff --git a/storage/quickstart/phpunit.xml.dist b/storage/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..fa95ce2d8d --- /dev/null +++ b/storage/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/storage/quickstart/quickstart.php b/storage/quickstart/quickstart.php index 7fcacfa9a1..3a0b7d42fa 100644 --- a/storage/quickstart/quickstart.php +++ b/storage/quickstart/quickstart.php @@ -6,17 +6,13 @@ # Imports the Google Cloud client library use Google\Cloud\Storage\StorageClient; -# Your Google Cloud Platform project ID -$projectId = 'YOUR_PROJECT_ID'; - # Instantiates a client -$storageClient = new StorageClient([ - 'projectId' => $projectId -]); +$storage = new StorageClient(); # The name for the new bucket $bucketName = 'my-new-bucket'; # Creates the new bucket -$bucket = $storageClient->createBucket($bucketName); +$bucket = $storage->createBucket($bucketName); # [END storage_quickstart] +return $bucket; diff --git a/storage/quickstart/test/bootstrap.php b/storage/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/storage/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +assertInstanceOf('Google\Cloud\Storage\Bucket', $bucket); + $this->assertEquals($bucketName, $bucket->name()); + $bucket->delete(); + } +} diff --git a/translate/quickstart/phpunit.xml.dist b/translate/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..1b0c6343b5 --- /dev/null +++ b/translate/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/translate/quickstart/quickstart.php b/translate/quickstart/quickstart.php index 80db7625a8..efbe98d4a3 100644 --- a/translate/quickstart/quickstart.php +++ b/translate/quickstart/quickstart.php @@ -10,7 +10,7 @@ $apiKey = 'YOUR_API_KEY'; # Instantiates a client -$translateClient = new TranslateClient([ +$translate = new TranslateClient([ 'key' => $apiKey ]); @@ -20,7 +20,8 @@ $target = 'ru'; # Translates some text into Russian -$translation = $translateClient->translate($text, [ +$translation = $translate->translate($text, [ 'target' => $target ]); # [END translate_quickstart] +return $translation; diff --git a/translate/quickstart/test/bootstrap.php b/translate/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/translate/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +markTestSkipped('GOOGLE_API_KEY must be set.'); + } + + $file = sys_get_temp_dir() . '/translate_quickstart.php'; + $contents = file_get_contents(__DIR__ . '/../quickstart.php'); + $contents = str_replace( + ['YOUR_API_KEY', '__DIR__'], + [$key, sprintf('"%s/.."', __DIR__)], + $contents + ); + file_put_contents($file, $contents); + + // Invoke quickstart.php + $translation = include $file; + + // Make sure it looks correct + $this->assertTrue(is_array($translation)); + $this->assertArrayHasKey('source', $translation); + $this->assertArrayHasKey('input', $translation); + $this->assertArrayHasKey('text', $translation); + $this->assertEquals('en', $translation['source']); + $this->assertEquals('Hello, world!', $translation['input']); + $this->assertEquals('Привет мир!', $translation['text']); + } +} From 16982ac0649a3b1fe13d90fcf73e23897e9f4b4b Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Thu, 29 Sep 2016 18:59:32 -0700 Subject: [PATCH 03/20] updates logging quickstart to log entry --- logging/quickstart/quickstart.php | 20 +++++++++++++++++--- logging/quickstart/test/quickstartTest.php | 8 +++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/logging/quickstart/quickstart.php b/logging/quickstart/quickstart.php index 52087c7e94..2d109e5aa4 100644 --- a/logging/quickstart/quickstart.php +++ b/logging/quickstart/quickstart.php @@ -14,7 +14,21 @@ 'projectId' => $projectId ]); -# List logging entries -$entries = $logging->entries(); +# The name of the log to write to +$logName = 'my-log'; + +# Selects the log to write to +$logger = $logging->logger($logName); + +# The data to log +$text = 'Hello, world!'; + +# Creates the log entry +$entry = $logger->entry($text, [ + 'type' => 'global' +]); + +# Writes the log entry +$logger->write($entry); # [END logging_quickstart] -return $entries; +return $entry; diff --git a/logging/quickstart/test/quickstartTest.php b/logging/quickstart/test/quickstartTest.php index 3a655ea857..f5e2a1b2be 100644 --- a/logging/quickstart/test/quickstartTest.php +++ b/logging/quickstart/test/quickstartTest.php @@ -32,11 +32,13 @@ public function testQuickstart() file_put_contents($file, $contents); // Invoke quickstart.php - $entries = include $file; + $entry = include $file; // Make sure it looks correct - $this->assertInstanceOf('Generator', $entries); - $entry = $entries->current(); $this->assertInstanceOf('Google\Cloud\Logging\Entry', $entry); + $info = $entry->info(); + $this->assertEquals('Hello, world!', $info['textPayload']); + $this->assertContains('my-log', $info['logName']); + $this->assertEquals('global', $info['resource']['type']); } } From 0158ed9ba23bdce3057552bc30d84844daf38438 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Mon, 3 Oct 2016 18:22:44 -0700 Subject: [PATCH 04/20] moves logging to api subdirectory --- logging/{ => api}/README.md | 0 logging/{ => api}/composer.json | 0 logging/{ => api}/composer.lock | 0 logging/{ => api}/logging.php | 0 logging/{ => api}/phpunit.xml.dist | 0 logging/{ => api}/src/BaseCommand.php | 0 logging/{ => api}/src/CreateSinkCommand.php | 0 logging/{ => api}/src/DeleteLoggerCommand.php | 0 logging/{ => api}/src/DeleteSinkCommand.php | 0 logging/{ => api}/src/ListEntriesCommand.php | 0 logging/{ => api}/src/ListSinksCommand.php | 0 logging/{ => api}/src/UpdateSinkCommand.php | 0 logging/{ => api}/src/WriteCommand.php | 0 logging/{ => api}/src/functions/log_entry_functions.php | 0 logging/{ => api}/src/functions/sink_functions.php | 0 logging/{ => api}/test/CreateSinkCommandTest.php | 0 logging/{ => api}/test/DeleteLoggerCommandTest.php | 0 logging/{ => api}/test/DeleteSinkCommandTest.php | 0 logging/{ => api}/test/ListEntriesCommandTest.php | 0 logging/{ => api}/test/ListSinksCommandTest.php | 0 logging/{ => api}/test/UpdateSinkCommandTest.php | 0 logging/{ => api}/test/WriteCommandTest.php | 0 logging/{ => api}/test/bootstrap.php | 0 23 files changed, 0 insertions(+), 0 deletions(-) rename logging/{ => api}/README.md (100%) rename logging/{ => api}/composer.json (100%) rename logging/{ => api}/composer.lock (100%) rename logging/{ => api}/logging.php (100%) rename logging/{ => api}/phpunit.xml.dist (100%) rename logging/{ => api}/src/BaseCommand.php (100%) rename logging/{ => api}/src/CreateSinkCommand.php (100%) rename logging/{ => api}/src/DeleteLoggerCommand.php (100%) rename logging/{ => api}/src/DeleteSinkCommand.php (100%) rename logging/{ => api}/src/ListEntriesCommand.php (100%) rename logging/{ => api}/src/ListSinksCommand.php (100%) rename logging/{ => api}/src/UpdateSinkCommand.php (100%) rename logging/{ => api}/src/WriteCommand.php (100%) rename logging/{ => api}/src/functions/log_entry_functions.php (100%) rename logging/{ => api}/src/functions/sink_functions.php (100%) rename logging/{ => api}/test/CreateSinkCommandTest.php (100%) rename logging/{ => api}/test/DeleteLoggerCommandTest.php (100%) rename logging/{ => api}/test/DeleteSinkCommandTest.php (100%) rename logging/{ => api}/test/ListEntriesCommandTest.php (100%) rename logging/{ => api}/test/ListSinksCommandTest.php (100%) rename logging/{ => api}/test/UpdateSinkCommandTest.php (100%) rename logging/{ => api}/test/WriteCommandTest.php (100%) rename logging/{ => api}/test/bootstrap.php (100%) diff --git a/logging/README.md b/logging/api/README.md similarity index 100% rename from logging/README.md rename to logging/api/README.md diff --git a/logging/composer.json b/logging/api/composer.json similarity index 100% rename from logging/composer.json rename to logging/api/composer.json diff --git a/logging/composer.lock b/logging/api/composer.lock similarity index 100% rename from logging/composer.lock rename to logging/api/composer.lock diff --git a/logging/logging.php b/logging/api/logging.php similarity index 100% rename from logging/logging.php rename to logging/api/logging.php diff --git a/logging/phpunit.xml.dist b/logging/api/phpunit.xml.dist similarity index 100% rename from logging/phpunit.xml.dist rename to logging/api/phpunit.xml.dist diff --git a/logging/src/BaseCommand.php b/logging/api/src/BaseCommand.php similarity index 100% rename from logging/src/BaseCommand.php rename to logging/api/src/BaseCommand.php diff --git a/logging/src/CreateSinkCommand.php b/logging/api/src/CreateSinkCommand.php similarity index 100% rename from logging/src/CreateSinkCommand.php rename to logging/api/src/CreateSinkCommand.php diff --git a/logging/src/DeleteLoggerCommand.php b/logging/api/src/DeleteLoggerCommand.php similarity index 100% rename from logging/src/DeleteLoggerCommand.php rename to logging/api/src/DeleteLoggerCommand.php diff --git a/logging/src/DeleteSinkCommand.php b/logging/api/src/DeleteSinkCommand.php similarity index 100% rename from logging/src/DeleteSinkCommand.php rename to logging/api/src/DeleteSinkCommand.php diff --git a/logging/src/ListEntriesCommand.php b/logging/api/src/ListEntriesCommand.php similarity index 100% rename from logging/src/ListEntriesCommand.php rename to logging/api/src/ListEntriesCommand.php diff --git a/logging/src/ListSinksCommand.php b/logging/api/src/ListSinksCommand.php similarity index 100% rename from logging/src/ListSinksCommand.php rename to logging/api/src/ListSinksCommand.php diff --git a/logging/src/UpdateSinkCommand.php b/logging/api/src/UpdateSinkCommand.php similarity index 100% rename from logging/src/UpdateSinkCommand.php rename to logging/api/src/UpdateSinkCommand.php diff --git a/logging/src/WriteCommand.php b/logging/api/src/WriteCommand.php similarity index 100% rename from logging/src/WriteCommand.php rename to logging/api/src/WriteCommand.php diff --git a/logging/src/functions/log_entry_functions.php b/logging/api/src/functions/log_entry_functions.php similarity index 100% rename from logging/src/functions/log_entry_functions.php rename to logging/api/src/functions/log_entry_functions.php diff --git a/logging/src/functions/sink_functions.php b/logging/api/src/functions/sink_functions.php similarity index 100% rename from logging/src/functions/sink_functions.php rename to logging/api/src/functions/sink_functions.php diff --git a/logging/test/CreateSinkCommandTest.php b/logging/api/test/CreateSinkCommandTest.php similarity index 100% rename from logging/test/CreateSinkCommandTest.php rename to logging/api/test/CreateSinkCommandTest.php diff --git a/logging/test/DeleteLoggerCommandTest.php b/logging/api/test/DeleteLoggerCommandTest.php similarity index 100% rename from logging/test/DeleteLoggerCommandTest.php rename to logging/api/test/DeleteLoggerCommandTest.php diff --git a/logging/test/DeleteSinkCommandTest.php b/logging/api/test/DeleteSinkCommandTest.php similarity index 100% rename from logging/test/DeleteSinkCommandTest.php rename to logging/api/test/DeleteSinkCommandTest.php diff --git a/logging/test/ListEntriesCommandTest.php b/logging/api/test/ListEntriesCommandTest.php similarity index 100% rename from logging/test/ListEntriesCommandTest.php rename to logging/api/test/ListEntriesCommandTest.php diff --git a/logging/test/ListSinksCommandTest.php b/logging/api/test/ListSinksCommandTest.php similarity index 100% rename from logging/test/ListSinksCommandTest.php rename to logging/api/test/ListSinksCommandTest.php diff --git a/logging/test/UpdateSinkCommandTest.php b/logging/api/test/UpdateSinkCommandTest.php similarity index 100% rename from logging/test/UpdateSinkCommandTest.php rename to logging/api/test/UpdateSinkCommandTest.php diff --git a/logging/test/WriteCommandTest.php b/logging/api/test/WriteCommandTest.php similarity index 100% rename from logging/test/WriteCommandTest.php rename to logging/api/test/WriteCommandTest.php diff --git a/logging/test/bootstrap.php b/logging/api/test/bootstrap.php similarity index 100% rename from logging/test/bootstrap.php rename to logging/api/test/bootstrap.php From 09e2cb1bd4b6c67c4f3dbabf13f87924ee654755 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 4 Oct 2016 10:54:06 -0700 Subject: [PATCH 05/20] moves dataset->delete to teardown --- bigquery/quickstart/test/quickstartTest.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/bigquery/quickstart/test/quickstartTest.php b/bigquery/quickstart/test/quickstartTest.php index 0eb87a30c7..124976828c 100644 --- a/bigquery/quickstart/test/quickstartTest.php +++ b/bigquery/quickstart/test/quickstartTest.php @@ -16,6 +16,8 @@ */ class quickstartTest extends PHPUnit_Framework_TestCase { + private $dataset; + public function testQuickstart() { $datasetId = 'my_new_dataset_' . time(); @@ -29,11 +31,17 @@ public function testQuickstart() file_put_contents($file, $contents); // Invoke quickstart.php - $dataset = include $file; + $this->dataset = include $file; // Make sure it looks correct - $this->assertInstanceOf('Google\Cloud\BigQuery\Dataset', $dataset); - $this->assertEquals($datasetId, $dataset->id()); - $dataset->delete(); + $this->assertInstanceOf('Google\Cloud\BigQuery\Dataset', $this->dataset); + $this->assertEquals($datasetId, $this->dataset->id()); + } + + public function tearDown() + { + if ($this->dataset) { + $this->dataset->delete(); + } } } From 9340a8ba2ee3f0a9b54b33ab524b07cd9240e883 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 4 Oct 2016 14:04:35 -0700 Subject: [PATCH 06/20] adds composer autoloading to quickstarts --- bigquery/quickstart/quickstart.php | 3 ++- datastore/quickstart/quickstart.php | 3 ++- logging/quickstart/quickstart.php | 3 ++- pubsub/quickstart/quickstart.php | 7 ++++--- storage/quickstart/quickstart.php | 3 ++- translate/quickstart/quickstart.php | 3 ++- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/bigquery/quickstart/quickstart.php b/bigquery/quickstart/quickstart.php index b1ebe75d83..9c0565acfc 100644 --- a/bigquery/quickstart/quickstart.php +++ b/bigquery/quickstart/quickstart.php @@ -1,8 +1,9 @@ createTopic($topicName); +$topic = $pubsub->createTopic($topicName); # [END pubsub_quickstart] return $topic; diff --git a/storage/quickstart/quickstart.php b/storage/quickstart/quickstart.php index 3a0b7d42fa..245bad1220 100644 --- a/storage/quickstart/quickstart.php +++ b/storage/quickstart/quickstart.php @@ -1,8 +1,9 @@ Date: Tue, 4 Oct 2016 16:37:08 -0700 Subject: [PATCH 07/20] updates datastore quickstart to use query instead of entity --- datastore/quickstart/quickstart.php | 15 ++++++----- datastore/quickstart/test/quickstartTest.php | 26 ++++++++------------ 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php index 24e0b90354..40208af120 100644 --- a/datastore/quickstart/quickstart.php +++ b/datastore/quickstart/quickstart.php @@ -11,13 +11,12 @@ $datastore = new DatastoreClient(); # The kind of the entity to retrieve -$kind = 'Task'; -# The id of the entity to retrieve -$id = 1234567890; -# The Datastore key for the entity -$taskKey = $datastore->key($kind, $id); +$kind = 'Person'; -# Retrieves the entity -$entity = $datastore->entity($taskKey); +# Creates a Datastore query +$query = $datastore->gqlQuery("Select * from $kind"); + +# Runs the query +$results = $datastore->runQuery($query); # [END datastore_quickstart] -return $entity; +return $results; diff --git a/datastore/quickstart/test/quickstartTest.php b/datastore/quickstart/test/quickstartTest.php index cf34990989..a677cbb4fc 100644 --- a/datastore/quickstart/test/quickstartTest.php +++ b/datastore/quickstart/test/quickstartTest.php @@ -14,28 +14,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -class quickstartTest extends PHPUnit_Framework_TestCase + +namespace Google\Cloud\Samples\Datastore; + +use Google\Cloud\Datastore\DatastoreClient; + +class quickstartTest extends \PHPUnit_Framework_TestCase { public function testQuickstart() { - $file = sys_get_temp_dir() . '/datastore_quickstart.php'; - $contents = file_get_contents(__DIR__ . '/../quickstart.php'); - $contents = str_replace( - ['__DIR__'], - [sprintf('"%s/.."', __DIR__)], - $contents - ); - file_put_contents($file, $contents); + $file = __DIR__ . '/../quickstart.php'; // Invoke quickstart.php - $entity = include $file; + $results = include $file; // Make sure it looks correct - $this->assertInstanceOf('Google\Cloud\Datastore\Entity', $entity); - - $key = $entity->key(); - $path = $key->path(); - $this->assertEquals('Task', $path[0]['kind']); - $this->assertEquals(1234567890, $path[0]['id']); + $this->assertInstanceOf('Generator', $results); + $this->assertTrue(count($results) > 0); } } From 27e54e513550abe19344e28390b26573363fc415 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 4 Oct 2016 17:32:16 -0700 Subject: [PATCH 08/20] updates datastore sample to use lookup --- bigquery/quickstart/test/quickstartTest.php | 2 +- datastore/quickstart/quickstart.php | 13 ++++++++----- datastore/quickstart/test/quickstartTest.php | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/bigquery/quickstart/test/quickstartTest.php b/bigquery/quickstart/test/quickstartTest.php index 124976828c..1f11888b01 100644 --- a/bigquery/quickstart/test/quickstartTest.php +++ b/bigquery/quickstart/test/quickstartTest.php @@ -21,7 +21,7 @@ class quickstartTest extends PHPUnit_Framework_TestCase public function testQuickstart() { $datasetId = 'my_new_dataset_' . time(); - $file = sys_get_temp_dir() . '/quickstart_quickstart.php'; + $file = sys_get_temp_dir() . '/bigquery_quickstart.php'; $contents = file_get_contents(__DIR__ . '/../quickstart.php'); $contents = str_replace( ['my_new_dataset', '__DIR__'], diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php index 40208af120..842ea0908b 100644 --- a/datastore/quickstart/quickstart.php +++ b/datastore/quickstart/quickstart.php @@ -13,10 +13,13 @@ # The kind of the entity to retrieve $kind = 'Person'; -# Creates a Datastore query -$query = $datastore->gqlQuery("Select * from $kind"); +# The name/ID of the entity to retrieve +$name = 'Bob'; -# Runs the query -$results = $datastore->runQuery($query); +# The Datastore key for the entity +$taskKey = $datastore->key($kind, $name); + +# Retrieves the entity +$entity = $datastore->lookup($taskKey); # [END datastore_quickstart] -return $results; +return $entity; diff --git a/datastore/quickstart/test/quickstartTest.php b/datastore/quickstart/test/quickstartTest.php index a677cbb4fc..b957dd858c 100644 --- a/datastore/quickstart/test/quickstartTest.php +++ b/datastore/quickstart/test/quickstartTest.php @@ -26,10 +26,10 @@ public function testQuickstart() $file = __DIR__ . '/../quickstart.php'; // Invoke quickstart.php - $results = include $file; + $entity = include $file; // Make sure it looks correct - $this->assertInstanceOf('Generator', $results); - $this->assertTrue(count($results) > 0); + $this->assertInstanceOf('Google\Cloud\Datastore\Entity', $entity); + $this->assertEquals('Bob', $entity->key()->path()[0]['name']); } } From fd64f8b1fb9d0f38dd772b160b214c6d626b8289 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 4 Oct 2016 17:38:06 -0700 Subject: [PATCH 09/20] removes project ID from logging, skips tests if ADC is not set --- bigquery/quickstart/test/quickstartTest.php | 4 ++++ datastore/quickstart/test/quickstartTest.php | 4 ++++ logging/quickstart/quickstart.php | 7 +------ logging/quickstart/test/quickstartTest.php | 13 +++---------- pubsub/quickstart/test/quickstartTest.php | 4 ++++ storage/quickstart/test/quickstartTest.php | 4 ++++ 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/bigquery/quickstart/test/quickstartTest.php b/bigquery/quickstart/test/quickstartTest.php index 1f11888b01..5f8bc1c632 100644 --- a/bigquery/quickstart/test/quickstartTest.php +++ b/bigquery/quickstart/test/quickstartTest.php @@ -20,6 +20,10 @@ class quickstartTest extends PHPUnit_Framework_TestCase public function testQuickstart() { + if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { + $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + } + $datasetId = 'my_new_dataset_' . time(); $file = sys_get_temp_dir() . '/bigquery_quickstart.php'; $contents = file_get_contents(__DIR__ . '/../quickstart.php'); diff --git a/datastore/quickstart/test/quickstartTest.php b/datastore/quickstart/test/quickstartTest.php index b957dd858c..572b6625d2 100644 --- a/datastore/quickstart/test/quickstartTest.php +++ b/datastore/quickstart/test/quickstartTest.php @@ -23,6 +23,10 @@ class quickstartTest extends \PHPUnit_Framework_TestCase { public function testQuickstart() { + if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { + $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + } + $file = __DIR__ . '/../quickstart.php'; // Invoke quickstart.php diff --git a/logging/quickstart/quickstart.php b/logging/quickstart/quickstart.php index 72b5d8f29b..0748e9207d 100644 --- a/logging/quickstart/quickstart.php +++ b/logging/quickstart/quickstart.php @@ -7,13 +7,8 @@ # Imports the Google Cloud client library use Google\Cloud\Logging\LoggingClient; -# Your Google Cloud Platform project ID -$projectId = 'YOUR_PROJECT_ID'; - # Instantiates a client -$logging = new LoggingClient([ - 'projectId' => $projectId -]); +$logging = new LoggingClient(); # The name of the log to write to $logName = 'my-log'; diff --git a/logging/quickstart/test/quickstartTest.php b/logging/quickstart/test/quickstartTest.php index f5e2a1b2be..8188eff014 100644 --- a/logging/quickstart/test/quickstartTest.php +++ b/logging/quickstart/test/quickstartTest.php @@ -18,18 +18,11 @@ class quickstartTest extends PHPUnit_Framework_TestCase { public function testQuickstart() { - if (!$projectId = getenv('GOOGLE_PROJECT_ID')) { - $this->markTestSkipped('GOOGLE_PROJECT_ID must be set.'); + if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { + $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); } - $file = sys_get_temp_dir() . '/logging_quickstart.php'; - $contents = file_get_contents(__DIR__ . '/../quickstart.php'); - $contents = str_replace( - ['YOUR_PROJECT_ID', '__DIR__'], - [$projectId, sprintf('"%s/.."', __DIR__)], - $contents - ); - file_put_contents($file, $contents); + $file = __DIR__ . '/../quickstart.php'; // Invoke quickstart.php $entry = include $file; diff --git a/pubsub/quickstart/test/quickstartTest.php b/pubsub/quickstart/test/quickstartTest.php index 25c388d6a7..7f09ffcf78 100644 --- a/pubsub/quickstart/test/quickstartTest.php +++ b/pubsub/quickstart/test/quickstartTest.php @@ -18,6 +18,10 @@ class quickstartTest extends PHPUnit_Framework_TestCase { public function testQuickstart() { + if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { + $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + } + $topicName = 'my-new-topic-' . time(); $file = sys_get_temp_dir() . '/pubsub_quickstart.php'; $contents = file_get_contents(__DIR__ . '/../quickstart.php'); diff --git a/storage/quickstart/test/quickstartTest.php b/storage/quickstart/test/quickstartTest.php index 4b67fd10da..78ef37b27e 100644 --- a/storage/quickstart/test/quickstartTest.php +++ b/storage/quickstart/test/quickstartTest.php @@ -18,6 +18,10 @@ class quickstartTest extends PHPUnit_Framework_TestCase { public function testQuickstart() { + if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { + $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + } + $bucketName = 'my-new-bucket-' . time(); $file = sys_get_temp_dir() . '/storage_quickstart.php'; $contents = file_get_contents(__DIR__ . '/../quickstart.php'); From 124566c3581ca1fa9742f7ecf0c8848f251f1245 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 4 Oct 2016 17:40:09 -0700 Subject: [PATCH 10/20] moves topic deletion to teardown --- pubsub/quickstart/test/quickstartTest.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pubsub/quickstart/test/quickstartTest.php b/pubsub/quickstart/test/quickstartTest.php index 7f09ffcf78..9432bd2c9f 100644 --- a/pubsub/quickstart/test/quickstartTest.php +++ b/pubsub/quickstart/test/quickstartTest.php @@ -16,6 +16,7 @@ */ class quickstartTest extends PHPUnit_Framework_TestCase { + private $topic; public function testQuickstart() { if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { @@ -33,11 +34,17 @@ public function testQuickstart() file_put_contents($file, $contents); // Invoke quickstart.php - $topic = include $file; + $this->topic = include $file; // Make sure it looks correct - $this->assertInstanceOf('Google\Cloud\PubSub\Topic', $topic); - $this->assertContains($topicName, $topic->name()); - $topic->delete(); + $this->assertInstanceOf('Google\Cloud\PubSub\Topic', $this->topic); + $this->assertContains($topicName, $this->topic->name()); + } + + public function tearDown() + { + if ($this->topic) { + $this->topic->delete(); + } } } From 59f9085e5adf555f472270f9202a2e2cd4081e08 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 4 Oct 2016 17:44:44 -0700 Subject: [PATCH 11/20] fixes cs --- datastore/api/src/functions/concepts.php | 1 - datastore/quickstart/test/quickstartTest.php | 2 -- pubsub/quickstart/test/quickstartTest.php | 1 + 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/datastore/api/src/functions/concepts.php b/datastore/api/src/functions/concepts.php index 6511737ee1..83816cbc8a 100644 --- a/datastore/api/src/functions/concepts.php +++ b/datastore/api/src/functions/concepts.php @@ -19,7 +19,6 @@ // [START datastore_use ] use Google\Cloud\Datastore\DatastoreClient; - // [END datastore_use ] use Google\Cloud\Datastore\Key; diff --git a/datastore/quickstart/test/quickstartTest.php b/datastore/quickstart/test/quickstartTest.php index 572b6625d2..91abb0c776 100644 --- a/datastore/quickstart/test/quickstartTest.php +++ b/datastore/quickstart/test/quickstartTest.php @@ -17,8 +17,6 @@ namespace Google\Cloud\Samples\Datastore; -use Google\Cloud\Datastore\DatastoreClient; - class quickstartTest extends \PHPUnit_Framework_TestCase { public function testQuickstart() diff --git a/pubsub/quickstart/test/quickstartTest.php b/pubsub/quickstart/test/quickstartTest.php index 9432bd2c9f..dd03bc7be1 100644 --- a/pubsub/quickstart/test/quickstartTest.php +++ b/pubsub/quickstart/test/quickstartTest.php @@ -17,6 +17,7 @@ class quickstartTest extends PHPUnit_Framework_TestCase { private $topic; + public function testQuickstart() { if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { From 21eaaa699222901ff73eb3b0437230dce74fe5cd Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Wed, 5 Oct 2016 00:23:24 -0700 Subject: [PATCH 12/20] adds project ID and tests to pubsub sample --- pubsub/quickstart/quickstart.php | 7 ++++++- pubsub/quickstart/test/quickstartTest.php | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pubsub/quickstart/quickstart.php b/pubsub/quickstart/quickstart.php index a9515e87a5..b9232a2280 100644 --- a/pubsub/quickstart/quickstart.php +++ b/pubsub/quickstart/quickstart.php @@ -7,8 +7,13 @@ # Imports the Google Cloud client library use Google\Cloud\PubSub\PubSubClient; +# Your Google Cloud Platform project ID +$projectId = "YOUR_PROJECT_ID"; + # Instantiates a client -$pubsub = new PubSubClient(); +$pubsub = new PubSubClient([ + 'projectId' => $projectId +]); # The name for the new topic $topicName = 'my-new-topic'; diff --git a/pubsub/quickstart/test/quickstartTest.php b/pubsub/quickstart/test/quickstartTest.php index dd03bc7be1..1e1c5d2e46 100644 --- a/pubsub/quickstart/test/quickstartTest.php +++ b/pubsub/quickstart/test/quickstartTest.php @@ -20,7 +20,7 @@ class quickstartTest extends PHPUnit_Framework_TestCase public function testQuickstart() { - if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { + if (!$projectId = getenv('GOOGLE_PROJECT_ID')) { $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); } @@ -28,8 +28,8 @@ public function testQuickstart() $file = sys_get_temp_dir() . '/pubsub_quickstart.php'; $contents = file_get_contents(__DIR__ . '/../quickstart.php'); $contents = str_replace( - ['my-new-topic', '__DIR__'], - [$topicName, sprintf('"%s/.."', __DIR__)], + ['my-new-topic', 'YOUR_PROJECT_ID', '__DIR__'], + [$topicName, $projectId, sprintf('"%s/.."', __DIR__)], $contents ); file_put_contents($file, $contents); From d187637358aa745888ba3cd06e6198dcdb36a325 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Wed, 5 Oct 2016 15:50:58 -0700 Subject: [PATCH 13/20] changes datastore entity back to Task --- datastore/quickstart/quickstart.php | 4 ++-- datastore/quickstart/test/quickstartTest.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php index 842ea0908b..b642b4d979 100644 --- a/datastore/quickstart/quickstart.php +++ b/datastore/quickstart/quickstart.php @@ -11,10 +11,10 @@ $datastore = new DatastoreClient(); # The kind of the entity to retrieve -$kind = 'Person'; +$kind = 'Task'; # The name/ID of the entity to retrieve -$name = 'Bob'; +$name = 'sampletask1'; # The Datastore key for the entity $taskKey = $datastore->key($kind, $name); diff --git a/datastore/quickstart/test/quickstartTest.php b/datastore/quickstart/test/quickstartTest.php index 91abb0c776..da41e353a8 100644 --- a/datastore/quickstart/test/quickstartTest.php +++ b/datastore/quickstart/test/quickstartTest.php @@ -32,6 +32,6 @@ public function testQuickstart() // Make sure it looks correct $this->assertInstanceOf('Google\Cloud\Datastore\Entity', $entity); - $this->assertEquals('Bob', $entity->key()->path()[0]['name']); + $this->assertEquals('sampletask1', $entity->key()->path()[0]['name']); } } From 8850d2953c4697c260b4a5d4212fc3bc829267ab Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 6 Oct 2016 10:33:56 -0700 Subject: [PATCH 14/20] Added missing print statements. Added Language, Speech, and Vision quickstart samples. --- bigquery/quickstart/quickstart.php | 2 + datastore/quickstart/quickstart.php | 8 +- language/quickstart/composer.json | 6 + language/quickstart/composer.lock | 631 ++++++++++++++++++++++ language/quickstart/quickstart.php | 28 + logging/quickstart/quickstart.php | 2 + pubsub/quickstart/quickstart.php | 4 +- speech/quickstart/composer.json | 6 + speech/quickstart/composer.lock | 631 ++++++++++++++++++++++ speech/quickstart/quickstart.php | 32 ++ speech/quickstart/resources/audio.raw | Bin 0 -> 57958 bytes translate/quickstart/quickstart.php | 3 + vision/quickstart/composer.json | 6 + vision/quickstart/composer.lock | 631 ++++++++++++++++++++++ vision/quickstart/quickstart.php | 34 ++ vision/quickstart/resources/wakeupcat.jpg | Bin 0 -> 64892 bytes 16 files changed, 2020 insertions(+), 4 deletions(-) create mode 100644 language/quickstart/composer.json create mode 100644 language/quickstart/composer.lock create mode 100644 language/quickstart/quickstart.php create mode 100644 speech/quickstart/composer.json create mode 100644 speech/quickstart/composer.lock create mode 100644 speech/quickstart/quickstart.php create mode 100644 speech/quickstart/resources/audio.raw create mode 100644 vision/quickstart/composer.json create mode 100644 vision/quickstart/composer.lock create mode 100644 vision/quickstart/quickstart.php create mode 100644 vision/quickstart/resources/wakeupcat.jpg diff --git a/bigquery/quickstart/quickstart.php b/bigquery/quickstart/quickstart.php index 9c0565acfc..96af0c1aca 100644 --- a/bigquery/quickstart/quickstart.php +++ b/bigquery/quickstart/quickstart.php @@ -15,5 +15,7 @@ # Creates the new dataset $dataset = $bigquery->createDataset($datasetName); + +echo 'Dataset ' . $dataset->id() . ' created.'; # [END bigquery_quickstart] return $dataset; diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php index b642b4d979..39351282f2 100644 --- a/datastore/quickstart/quickstart.php +++ b/datastore/quickstart/quickstart.php @@ -19,7 +19,9 @@ # The Datastore key for the entity $taskKey = $datastore->key($kind, $name); -# Retrieves the entity -$entity = $datastore->lookup($taskKey); +# Retrieves the task +$task = $datastore->lookup($taskKey); + +echo 'Fetched task: ' . $task->key(); # [END datastore_quickstart] -return $entity; +return $task; diff --git a/language/quickstart/composer.json b/language/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/language/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/language/quickstart/composer.lock b/language/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/language/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/language/quickstart/quickstart.php b/language/quickstart/quickstart.php new file mode 100644 index 0000000000..7742e9bce6 --- /dev/null +++ b/language/quickstart/quickstart.php @@ -0,0 +1,28 @@ + $projectId +]); + +# The text to analyze +$text = 'Hello, world!'; + +# Detects the sentiment of the text +$annotation = $language->analyzeSentiment($text); +$sentiment = $annotation->sentiment(); + +echo 'Text: ' . $text . ' +Sentiment: ' . $sentiment['polarity'] . ', ' . $sentiment['magnitude']; +# [END language_quickstart] +return $sentiment; diff --git a/logging/quickstart/quickstart.php b/logging/quickstart/quickstart.php index 0748e9207d..acf4f61aae 100644 --- a/logging/quickstart/quickstart.php +++ b/logging/quickstart/quickstart.php @@ -26,5 +26,7 @@ # Writes the log entry $logger->write($entry); + +echo 'Logged ' . $text; # [END logging_quickstart] return $entry; diff --git a/pubsub/quickstart/quickstart.php b/pubsub/quickstart/quickstart.php index b9232a2280..bb7138dc6f 100644 --- a/pubsub/quickstart/quickstart.php +++ b/pubsub/quickstart/quickstart.php @@ -8,7 +8,7 @@ use Google\Cloud\PubSub\PubSubClient; # Your Google Cloud Platform project ID -$projectId = "YOUR_PROJECT_ID"; +$projectId = 'YOUR_PROJECT_ID'; # Instantiates a client $pubsub = new PubSubClient([ @@ -20,5 +20,7 @@ # Creates the new topic $topic = $pubsub->createTopic($topicName); + +echo 'Topic ' . $topic->name() . ' created.'; # [END pubsub_quickstart] return $topic; diff --git a/speech/quickstart/composer.json b/speech/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/speech/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/speech/quickstart/composer.lock b/speech/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/speech/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/speech/quickstart/quickstart.php b/speech/quickstart/quickstart.php new file mode 100644 index 0000000000..bb721b8be4 --- /dev/null +++ b/speech/quickstart/quickstart.php @@ -0,0 +1,32 @@ + $projectId +]); + +# The name of the audio file to transcribe +$fileName = '/resources/audio.raw'; + +# The audio file's encoding and sample rate +$options = [ + 'encoding' => 'LINEAR16', + 'sampleRate' => 16000, +]; + +# Detects speech in the audio file +$results = $speech->recognize(fopen(__DIR__ . $fileName, 'r'), $options); + +echo 'Transcription: '.$results[0]['transcript']; +# [END speech_quickstart] +return $results; diff --git a/speech/quickstart/resources/audio.raw b/speech/quickstart/resources/audio.raw new file mode 100644 index 0000000000000000000000000000000000000000..5ebf79d3c9c548f3d08c36e790059f3c2915af37 GIT binary patch literal 57958 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
  • ?dZ^!ab%qlspp&C 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 literal 0 HcmV?d00001 diff --git a/translate/quickstart/quickstart.php b/translate/quickstart/quickstart.php index aa5b320e8c..070a0fc0a5 100644 --- a/translate/quickstart/quickstart.php +++ b/translate/quickstart/quickstart.php @@ -24,5 +24,8 @@ $translation = $translate->translate($text, [ 'target' => $target ]); + +echo 'Text: ' . $text . ' +Translation: ' . $translation['text']; # [END translate_quickstart] return $translation; diff --git a/vision/quickstart/composer.json b/vision/quickstart/composer.json new file mode 100644 index 0000000000..8ed14228fe --- /dev/null +++ b/vision/quickstart/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "php": ">=5.4", + "google/cloud": "0.9" + } +} diff --git a/vision/quickstart/composer.lock b/vision/quickstart/composer.lock new file mode 100644 index 0000000000..a1206fa15c --- /dev/null +++ b/vision/quickstart/composer.lock @@ -0,0 +1,631 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "961be53cdb568c9c0c19f48f55b0fa66", + "content-hash": "52daf6d8a20f698e105309ea10a69031", + "packages": [ + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22 18:31:08" + }, + { + "name": "google/auth", + "version": "v0.10", + "source": { + "type": "git", + "url": "https://github.com/google/google-auth-library-php.git", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/760e3fbe4064c0525c22e27e5374eada3c103da8", + "reference": "760e3fbe4064c0525c22e27e5374eada3c103da8", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0", + "guzzlehttp/guzzle": "~5.3|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ], + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2016-08-02 22:00:48" + }, + { + "name": "google/cloud", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", + "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "shasum": "" + }, + "require": { + "google/auth": "0.10", + "guzzlehttp/guzzle": "~5.2|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "~1", + "php": ">=5.5", + "psr/http-message": "1.0.*", + "rize/uri-template": "~0.3" + }, + "require-dev": { + "erusev/parsedown": "^1.6", + "james-heinrich/getid3": "^1.9", + "league/json-guard": "^0.3", + "phpdocumentor/reflection": "^3.0", + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^3.0" + }, + "suggest": { + "google/gax": "Required to support gRPC", + "google/proto-client-php": "Required to support gRPC", + "james-heinrich/getid3": "Allows the Google Cloud Speech client to determine sample rate and encoding of audio inputs" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Cloud\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "John Pedrie", + "email": "john@pedrie.com" + }, + { + "name": "Dave Supplee", + "email": "dwsupplee@gmail.com" + } + ], + "description": "Google Cloud Client Library", + "homepage": "http://github.com/GoogleCloudPlatform/google-cloud-php", + "keywords": [ + "big query", + "bigquery", + "cloud", + "datastore", + "gcs", + "google", + "google api", + "google api client", + "google apis", + "google apis client", + "google cloud", + "google cloud platform", + "natural language", + "pub sub", + "pubsub", + "speech", + "stackdriver logging", + "storage", + "translate", + "vision" + ], + "time": "2016-09-26 15:59:01" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427", + "reference": "3f808fba627f2c5b69e2501217bf31af349c1427", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2016-07-15 17:22:37" + }, + { + "name": "guzzlehttp/promises", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-05-18 16:56:05" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2016-06-24 23:00:38" + }, + { + "name": "monolog/monolog", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-07-29 03:23:52" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06 20:24:11" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06 14:39:51" + }, + { + "name": "psr/log", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0", + "reference": "5277094ed527a1c4477177d102fe4c53551953e0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-09-19 16:02:08" + }, + { + "name": "rize/uri-template", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/rize/UriTemplate.git", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rize/UriTemplate/zipball/2496aa674438f1c48fce122ffc44291ad7014717", + "reference": "2496aa674438f1c48fce122ffc44291ad7014717", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Rize\\UriTemplate": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marut K", + "homepage": "http://twitter.com/rezigned" + } + ], + "description": "PHP URI Template (RFC 6570) supports both expansion & extraction", + "keywords": [ + "RFC 6570", + "template", + "uri" + ], + "time": "2015-04-17 16:12:22" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/vision/quickstart/quickstart.php b/vision/quickstart/quickstart.php new file mode 100644 index 0000000000..bde1a4544f --- /dev/null +++ b/vision/quickstart/quickstart.php @@ -0,0 +1,34 @@ + $projectId +]); + +# The name of the image file to annotate +$fileName = '/resources/wakeupcat.jpg'; + +# Prepare the image to be annotated +$image = $vision->image(fopen(__DIR__ . $fileName, 'r'), [ + 'LABEL_DETECTION' +]); + +# Performs label detection on the image file +$labels = $vision->annotate($image)->labels(); + +echo "Labels:\n"; +foreach ($labels as $label) { + echo $label->description() . "\n"; +} +# [END vision_quickstart] +return $labels; diff --git a/vision/quickstart/resources/wakeupcat.jpg b/vision/quickstart/resources/wakeupcat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..139cf461ecae99515d8ff5c8f4d06a656d6f050e GIT binary patch literal 64892 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 literal 0 HcmV?d00001 From dc00f2791670d3e92fad3c00794d42999297e574 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 6 Oct 2016 12:51:51 -0700 Subject: [PATCH 15/20] Address comments. --- speech/quickstart/quickstart.php | 6 +++--- vision/quickstart/quickstart.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/speech/quickstart/quickstart.php b/speech/quickstart/quickstart.php index bb721b8be4..0f94585582 100644 --- a/speech/quickstart/quickstart.php +++ b/speech/quickstart/quickstart.php @@ -16,7 +16,7 @@ ]); # The name of the audio file to transcribe -$fileName = '/resources/audio.raw'; +$fileName = __DIR__ . '/resources/audio.raw'; # The audio file's encoding and sample rate $options = [ @@ -25,8 +25,8 @@ ]; # Detects speech in the audio file -$results = $speech->recognize(fopen(__DIR__ . $fileName, 'r'), $options); +$results = $speech->recognize(fopen($fileName, 'r'), $options); -echo 'Transcription: '.$results[0]['transcript']; +echo 'Transcription: ' . $results[0]['transcript']; # [END speech_quickstart] return $results; diff --git a/vision/quickstart/quickstart.php b/vision/quickstart/quickstart.php index bde1a4544f..5a6918ab58 100644 --- a/vision/quickstart/quickstart.php +++ b/vision/quickstart/quickstart.php @@ -16,10 +16,10 @@ ]); # The name of the image file to annotate -$fileName = '/resources/wakeupcat.jpg'; +$fileName = __DIR__ . '/resources/wakeupcat.jpg'; # Prepare the image to be annotated -$image = $vision->image(fopen(__DIR__ . $fileName, 'r'), [ +$image = $vision->image(fopen($fileName, 'r'), [ 'LABEL_DETECTION' ]); From b7bda054c2f0c019c4a12abe2d62bd6953174544 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 6 Oct 2016 15:20:51 -0700 Subject: [PATCH 16/20] Change datastore quickstart sample to create a task. --- datastore/quickstart/quickstart.php | 15 +++++++++------ datastore/quickstart/test/quickstartTest.php | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php index 39351282f2..663bb70f2f 100644 --- a/datastore/quickstart/quickstart.php +++ b/datastore/quickstart/quickstart.php @@ -10,18 +10,21 @@ # Instantiates a client $datastore = new DatastoreClient(); -# The kind of the entity to retrieve +# The kind for the new entity $kind = 'Task'; -# The name/ID of the entity to retrieve +# The name/ID for the new entity $name = 'sampletask1'; -# The Datastore key for the entity +# The Cloud Datastore key for the new entity $taskKey = $datastore->key($kind, $name); -# Retrieves the task -$task = $datastore->lookup($taskKey); +# Prepares the new entity +$task = $datastore->entity($taskKey, ['description' => 'Buy milk']); -echo 'Fetched task: ' . $task->key(); +# Saves the entity +$datastore->upsert($task); + +echo 'Saved ' . $task->key() . ': ' . $task['description']; # [END datastore_quickstart] return $task; diff --git a/datastore/quickstart/test/quickstartTest.php b/datastore/quickstart/test/quickstartTest.php index da41e353a8..dc75637baa 100644 --- a/datastore/quickstart/test/quickstartTest.php +++ b/datastore/quickstart/test/quickstartTest.php @@ -33,5 +33,6 @@ public function testQuickstart() // Make sure it looks correct $this->assertInstanceOf('Google\Cloud\Datastore\Entity', $entity); $this->assertEquals('sampletask1', $entity->key()->path()[0]['name']); + $this->assertEquals('Buy milk', $entity['description']); } } From a772cd1d786007b7635928c18671113bebcb2f00 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 7 Oct 2016 10:29:40 -0700 Subject: [PATCH 17/20] Add missing print statment. --- storage/quickstart/quickstart.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/storage/quickstart/quickstart.php b/storage/quickstart/quickstart.php index 245bad1220..00db8ff6bf 100644 --- a/storage/quickstart/quickstart.php +++ b/storage/quickstart/quickstart.php @@ -15,5 +15,7 @@ # Creates the new bucket $bucket = $storage->createBucket($bucketName); + +echo 'Bucket ' . $bucket->name() . ' created.'; # [END storage_quickstart] return $bucket; From ff6a9c475bd8bb5eb393c344c4138808cf87c356 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Fri, 7 Oct 2016 16:32:37 -0700 Subject: [PATCH 18/20] adds tests for language/speech/vision quickstarts --- language/quickstart/phpunit.xml.dist | 31 ++++++++++++ language/quickstart/test/bootstrap.php | 3 ++ language/quickstart/test/quickstartTest.php | 51 ++++++++++++++++++++ speech/quickstart/phpunit.xml.dist | 31 ++++++++++++ speech/quickstart/test/bootstrap.php | 3 ++ speech/quickstart/test/quickstartTest.php | 51 ++++++++++++++++++++ vision/quickstart/phpunit.xml.dist | 31 ++++++++++++ vision/quickstart/test/bootstrap.php | 3 ++ vision/quickstart/test/quickstartTest.php | 53 +++++++++++++++++++++ 9 files changed, 257 insertions(+) create mode 100644 language/quickstart/phpunit.xml.dist create mode 100644 language/quickstart/test/bootstrap.php create mode 100644 language/quickstart/test/quickstartTest.php create mode 100644 speech/quickstart/phpunit.xml.dist create mode 100644 speech/quickstart/test/bootstrap.php create mode 100644 speech/quickstart/test/quickstartTest.php create mode 100644 vision/quickstart/phpunit.xml.dist create mode 100644 vision/quickstart/test/bootstrap.php create mode 100644 vision/quickstart/test/quickstartTest.php diff --git a/language/quickstart/phpunit.xml.dist b/language/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..fc16fb68da --- /dev/null +++ b/language/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/language/quickstart/test/bootstrap.php b/language/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/language/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +markTestSkipped('GOOGLE_PROJECT_ID must be set.'); + } + + $file = sys_get_temp_dir() . '/language_quickstart.php'; + $contents = file_get_contents(__DIR__ . '/../quickstart.php'); + $contents = str_replace( + ['YOUR_PROJECT_ID', '__DIR__'], + [$projectId, sprintf('"%s/.."', __DIR__)], + $contents + ); + file_put_contents($file, $contents); + + // Invoke quickstart.php + $sentiment = include $file; + + // Make sure it looks correct + $this->assertTrue(is_array($sentiment)); + $this->assertArrayHasKey('polarity', $sentiment); + $this->assertArrayHasKey('magnitude', $sentiment); + $this->assertEquals(1, $sentiment['polarity']); + $this->assertEquals(.6, $sentiment['magnitude']); + + $expectedOutput = <<expectOutputString($expectedOutput); + } +} diff --git a/speech/quickstart/phpunit.xml.dist b/speech/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..f60f7eb980 --- /dev/null +++ b/speech/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/speech/quickstart/test/bootstrap.php b/speech/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/speech/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +markTestSkipped('GOOGLE_PROJECT_ID must be set.'); + } + + $file = sys_get_temp_dir() . '/speech_quickstart.php'; + $contents = file_get_contents(__DIR__ . '/../quickstart.php'); + $contents = str_replace( + ['YOUR_PROJECT_ID', '__DIR__'], + [$projectId, sprintf('"%s/.."', __DIR__)], + $contents + ); + file_put_contents($file, $contents); + + // Invoke quickstart.php + $results = include $file; + + // Make sure it looks correct + $this->assertTrue(is_array($results)); + $this->assertEquals(1, count($results)); + $this->assertArrayHasKey('transcript', $results[0]); + $this->assertArrayHasKey('confidence', $results[0]); + $this->assertEquals('how old is the Brooklyn Bridge', $results[0]['transcript']); + $this->assertTrue($results[0]['confidence'] > .9); + + $expectedOutput = <<expectOutputString($expectedOutput); + } +} diff --git a/vision/quickstart/phpunit.xml.dist b/vision/quickstart/phpunit.xml.dist new file mode 100644 index 0000000000..cbec789b35 --- /dev/null +++ b/vision/quickstart/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + test + + + + + + + + quickstart.php + + + diff --git a/vision/quickstart/test/bootstrap.php b/vision/quickstart/test/bootstrap.php new file mode 100644 index 0000000000..6c8c4f51b9 --- /dev/null +++ b/vision/quickstart/test/bootstrap.php @@ -0,0 +1,3 @@ +markTestSkipped('GOOGLE_PROJECT_ID must be set.'); + } + + $file = sys_get_temp_dir() . '/vision_quickstart.php'; + $contents = file_get_contents(__DIR__ . '/../quickstart.php'); + $contents = str_replace( + ['YOUR_PROJECT_ID', '__DIR__'], + [$projectId, sprintf('"%s/.."', __DIR__)], + $contents + ); + file_put_contents($file, $contents); + + // Invoke quickstart.php + $labels = include $file; + + // Make sure it looks correct + $this->assertTrue(is_array($labels)); + $this->assertEquals(5, count($labels)); + + $expectedOutput = <<expectOutputString($expectedOutput); + } +} From eda129ea37baec36fc41a1eafda9e57f74da964d Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Fri, 7 Oct 2016 16:32:48 -0700 Subject: [PATCH 19/20] updates all quickstarts to use google-cloud 0.10 --- bigquery/quickstart/composer.json | 2 +- bigquery/quickstart/composer.lock | 17 +++++++++-------- datastore/quickstart/composer.json | 2 +- language/quickstart/composer.json | 2 +- language/quickstart/composer.lock | 17 +++++++++-------- logging/quickstart/composer.json | 2 +- logging/quickstart/composer.lock | 17 +++++++++-------- pubsub/quickstart/composer.json | 2 +- pubsub/quickstart/composer.lock | 17 +++++++++-------- speech/quickstart/composer.json | 2 +- speech/quickstart/composer.lock | 17 +++++++++-------- storage/quickstart/composer.json | 2 +- translate/quickstart/composer.json | 2 +- translate/quickstart/composer.lock | 17 +++++++++-------- vision/quickstart/composer.json | 2 +- vision/quickstart/composer.lock | 17 +++++++++-------- 16 files changed, 72 insertions(+), 65 deletions(-) diff --git a/bigquery/quickstart/composer.json b/bigquery/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/bigquery/quickstart/composer.json +++ b/bigquery/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/bigquery/quickstart/composer.lock b/bigquery/quickstart/composer.lock index a1206fa15c..0b6d1c4b50 100644 --- a/bigquery/quickstart/composer.lock +++ b/bigquery/quickstart/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "961be53cdb568c9c0c19f48f55b0fa66", - "content-hash": "52daf6d8a20f698e105309ea10a69031", + "hash": "f75b529e9f42e9c698da7cbb22ae4f13", + "content-hash": "4c7836060be1fc699affa599c19eb06d", "packages": [ { "name": "firebase/php-jwt", @@ -100,16 +100,16 @@ }, { "name": "google/cloud", - "version": "v0.9.0", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/ad867d788e855b3423fb8866b15ea23fbe844cbe", + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe", "shasum": "" }, "require": { @@ -128,7 +128,8 @@ "phpdocumentor/reflection": "^3.0", "phpunit/phpunit": "4.8.*", "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^3.0" + "symfony/console": "^3.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "google/gax": "Required to support gRPC", @@ -179,7 +180,7 @@ "translate", "vision" ], - "time": "2016-09-26 15:59:01" + "time": "2016-10-05 15:18:51" }, { "name": "guzzlehttp/guzzle", diff --git a/datastore/quickstart/composer.json b/datastore/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/datastore/quickstart/composer.json +++ b/datastore/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/language/quickstart/composer.json b/language/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/language/quickstart/composer.json +++ b/language/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/language/quickstart/composer.lock b/language/quickstart/composer.lock index a1206fa15c..0b6d1c4b50 100644 --- a/language/quickstart/composer.lock +++ b/language/quickstart/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "961be53cdb568c9c0c19f48f55b0fa66", - "content-hash": "52daf6d8a20f698e105309ea10a69031", + "hash": "f75b529e9f42e9c698da7cbb22ae4f13", + "content-hash": "4c7836060be1fc699affa599c19eb06d", "packages": [ { "name": "firebase/php-jwt", @@ -100,16 +100,16 @@ }, { "name": "google/cloud", - "version": "v0.9.0", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/ad867d788e855b3423fb8866b15ea23fbe844cbe", + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe", "shasum": "" }, "require": { @@ -128,7 +128,8 @@ "phpdocumentor/reflection": "^3.0", "phpunit/phpunit": "4.8.*", "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^3.0" + "symfony/console": "^3.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "google/gax": "Required to support gRPC", @@ -179,7 +180,7 @@ "translate", "vision" ], - "time": "2016-09-26 15:59:01" + "time": "2016-10-05 15:18:51" }, { "name": "guzzlehttp/guzzle", diff --git a/logging/quickstart/composer.json b/logging/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/logging/quickstart/composer.json +++ b/logging/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/logging/quickstart/composer.lock b/logging/quickstart/composer.lock index a1206fa15c..0b6d1c4b50 100644 --- a/logging/quickstart/composer.lock +++ b/logging/quickstart/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "961be53cdb568c9c0c19f48f55b0fa66", - "content-hash": "52daf6d8a20f698e105309ea10a69031", + "hash": "f75b529e9f42e9c698da7cbb22ae4f13", + "content-hash": "4c7836060be1fc699affa599c19eb06d", "packages": [ { "name": "firebase/php-jwt", @@ -100,16 +100,16 @@ }, { "name": "google/cloud", - "version": "v0.9.0", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/ad867d788e855b3423fb8866b15ea23fbe844cbe", + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe", "shasum": "" }, "require": { @@ -128,7 +128,8 @@ "phpdocumentor/reflection": "^3.0", "phpunit/phpunit": "4.8.*", "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^3.0" + "symfony/console": "^3.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "google/gax": "Required to support gRPC", @@ -179,7 +180,7 @@ "translate", "vision" ], - "time": "2016-09-26 15:59:01" + "time": "2016-10-05 15:18:51" }, { "name": "guzzlehttp/guzzle", diff --git a/pubsub/quickstart/composer.json b/pubsub/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/pubsub/quickstart/composer.json +++ b/pubsub/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/pubsub/quickstart/composer.lock b/pubsub/quickstart/composer.lock index 0adcf71631..0b6d1c4b50 100644 --- a/pubsub/quickstart/composer.lock +++ b/pubsub/quickstart/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "5b49961998c16c462aa252267ce720cb", - "content-hash": "52daf6d8a20f698e105309ea10a69031", + "hash": "f75b529e9f42e9c698da7cbb22ae4f13", + "content-hash": "4c7836060be1fc699affa599c19eb06d", "packages": [ { "name": "firebase/php-jwt", @@ -100,16 +100,16 @@ }, { "name": "google/cloud", - "version": "v0.9.0", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/ad867d788e855b3423fb8866b15ea23fbe844cbe", + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe", "shasum": "" }, "require": { @@ -128,7 +128,8 @@ "phpdocumentor/reflection": "^3.0", "phpunit/phpunit": "4.8.*", "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^3.0" + "symfony/console": "^3.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "google/gax": "Required to support gRPC", @@ -179,7 +180,7 @@ "translate", "vision" ], - "time": "2016-09-26 15:59:01" + "time": "2016-10-05 15:18:51" }, { "name": "guzzlehttp/guzzle", diff --git a/speech/quickstart/composer.json b/speech/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/speech/quickstart/composer.json +++ b/speech/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/speech/quickstart/composer.lock b/speech/quickstart/composer.lock index a1206fa15c..0b6d1c4b50 100644 --- a/speech/quickstart/composer.lock +++ b/speech/quickstart/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "961be53cdb568c9c0c19f48f55b0fa66", - "content-hash": "52daf6d8a20f698e105309ea10a69031", + "hash": "f75b529e9f42e9c698da7cbb22ae4f13", + "content-hash": "4c7836060be1fc699affa599c19eb06d", "packages": [ { "name": "firebase/php-jwt", @@ -100,16 +100,16 @@ }, { "name": "google/cloud", - "version": "v0.9.0", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/ad867d788e855b3423fb8866b15ea23fbe844cbe", + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe", "shasum": "" }, "require": { @@ -128,7 +128,8 @@ "phpdocumentor/reflection": "^3.0", "phpunit/phpunit": "4.8.*", "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^3.0" + "symfony/console": "^3.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "google/gax": "Required to support gRPC", @@ -179,7 +180,7 @@ "translate", "vision" ], - "time": "2016-09-26 15:59:01" + "time": "2016-10-05 15:18:51" }, { "name": "guzzlehttp/guzzle", diff --git a/storage/quickstart/composer.json b/storage/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/storage/quickstart/composer.json +++ b/storage/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/translate/quickstart/composer.json b/translate/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/translate/quickstart/composer.json +++ b/translate/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/translate/quickstart/composer.lock b/translate/quickstart/composer.lock index a1206fa15c..0b6d1c4b50 100644 --- a/translate/quickstart/composer.lock +++ b/translate/quickstart/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "961be53cdb568c9c0c19f48f55b0fa66", - "content-hash": "52daf6d8a20f698e105309ea10a69031", + "hash": "f75b529e9f42e9c698da7cbb22ae4f13", + "content-hash": "4c7836060be1fc699affa599c19eb06d", "packages": [ { "name": "firebase/php-jwt", @@ -100,16 +100,16 @@ }, { "name": "google/cloud", - "version": "v0.9.0", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/ad867d788e855b3423fb8866b15ea23fbe844cbe", + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe", "shasum": "" }, "require": { @@ -128,7 +128,8 @@ "phpdocumentor/reflection": "^3.0", "phpunit/phpunit": "4.8.*", "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^3.0" + "symfony/console": "^3.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "google/gax": "Required to support gRPC", @@ -179,7 +180,7 @@ "translate", "vision" ], - "time": "2016-09-26 15:59:01" + "time": "2016-10-05 15:18:51" }, { "name": "guzzlehttp/guzzle", diff --git a/vision/quickstart/composer.json b/vision/quickstart/composer.json index 8ed14228fe..c41b6683f5 100644 --- a/vision/quickstart/composer.json +++ b/vision/quickstart/composer.json @@ -1,6 +1,6 @@ { "require": { "php": ">=5.4", - "google/cloud": "0.9" + "google/cloud": "0.10" } } diff --git a/vision/quickstart/composer.lock b/vision/quickstart/composer.lock index a1206fa15c..0b6d1c4b50 100644 --- a/vision/quickstart/composer.lock +++ b/vision/quickstart/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "961be53cdb568c9c0c19f48f55b0fa66", - "content-hash": "52daf6d8a20f698e105309ea10a69031", + "hash": "f75b529e9f42e9c698da7cbb22ae4f13", + "content-hash": "4c7836060be1fc699affa599c19eb06d", "packages": [ { "name": "firebase/php-jwt", @@ -100,16 +100,16 @@ }, { "name": "google/cloud", - "version": "v0.9.0", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/GoogleCloudPlatform/google-cloud-php.git", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323" + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/a972770d8f36687dbb34f23df7d6d76027bf2323", - "reference": "a972770d8f36687dbb34f23df7d6d76027bf2323", + "url": "https://api.github.com/repos/GoogleCloudPlatform/google-cloud-php/zipball/ad867d788e855b3423fb8866b15ea23fbe844cbe", + "reference": "ad867d788e855b3423fb8866b15ea23fbe844cbe", "shasum": "" }, "require": { @@ -128,7 +128,8 @@ "phpdocumentor/reflection": "^3.0", "phpunit/phpunit": "4.8.*", "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^3.0" + "symfony/console": "^3.0", + "vierbergenlars/php-semver": "^3.0" }, "suggest": { "google/gax": "Required to support gRPC", @@ -179,7 +180,7 @@ "translate", "vision" ], - "time": "2016-09-26 15:59:01" + "time": "2016-10-05 15:18:51" }, { "name": "guzzlehttp/guzzle", From 4a2c81f61911f83539a57a35190453b7a6ee739e Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Fri, 7 Oct 2016 19:11:04 -0700 Subject: [PATCH 20/20] adds projectId back to bigquery, storage, logging, and datastore quickstarts --- bigquery/quickstart/quickstart.php | 7 ++++++- bigquery/quickstart/test/quickstartTest.php | 8 ++++---- datastore/quickstart/quickstart.php | 7 ++++++- datastore/quickstart/test/quickstartTest.php | 13 ++++++++++--- logging/quickstart/quickstart.php | 7 ++++++- logging/quickstart/test/quickstartTest.php | 13 ++++++++++--- storage/quickstart/quickstart.php | 7 ++++++- storage/quickstart/test/quickstartTest.php | 8 ++++---- 8 files changed, 52 insertions(+), 18 deletions(-) diff --git a/bigquery/quickstart/quickstart.php b/bigquery/quickstart/quickstart.php index 96af0c1aca..2a02598a60 100644 --- a/bigquery/quickstart/quickstart.php +++ b/bigquery/quickstart/quickstart.php @@ -7,8 +7,13 @@ # Imports the Google Cloud client library use Google\Cloud\BigQuery\BigQueryClient; +# Your Google Cloud Platform project ID +$projectId = 'YOUR_PROJECT_ID'; + # Instantiates a client -$bigquery = new BigQueryClient(); +$bigquery = new BigQueryClient([ + 'projectId' => $projectId +]); # The name for the new dataset $datasetName = 'my_new_dataset'; diff --git a/bigquery/quickstart/test/quickstartTest.php b/bigquery/quickstart/test/quickstartTest.php index 5f8bc1c632..ddcb7f6c4c 100644 --- a/bigquery/quickstart/test/quickstartTest.php +++ b/bigquery/quickstart/test/quickstartTest.php @@ -20,16 +20,16 @@ class quickstartTest extends PHPUnit_Framework_TestCase public function testQuickstart() { - if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { - $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + if (!$projectId = getenv('GOOGLE_PROJECT_ID')) { + $this->markTestSkipped('GOOGLE_PROJECT_ID must be set.'); } $datasetId = 'my_new_dataset_' . time(); $file = sys_get_temp_dir() . '/bigquery_quickstart.php'; $contents = file_get_contents(__DIR__ . '/../quickstart.php'); $contents = str_replace( - ['my_new_dataset', '__DIR__'], - [$datasetId, sprintf('"%s/.."', __DIR__)], + ['YOUR_PROJECT_ID', 'my_new_dataset', '__DIR__'], + [$projectId, $datasetId, sprintf('"%s/.."', __DIR__)], $contents ); file_put_contents($file, $contents); diff --git a/datastore/quickstart/quickstart.php b/datastore/quickstart/quickstart.php index 663bb70f2f..b5c8b1b919 100644 --- a/datastore/quickstart/quickstart.php +++ b/datastore/quickstart/quickstart.php @@ -7,8 +7,13 @@ # Imports the Google Cloud client library use Google\Cloud\Datastore\DatastoreClient; +# Your Google Cloud Platform project ID +$projectId = 'YOUR_PROJECT_ID'; + # Instantiates a client -$datastore = new DatastoreClient(); +$datastore = new DatastoreClient([ + 'projectId' => $projectId +]); # The kind for the new entity $kind = 'Task'; diff --git a/datastore/quickstart/test/quickstartTest.php b/datastore/quickstart/test/quickstartTest.php index dc75637baa..505b413d4f 100644 --- a/datastore/quickstart/test/quickstartTest.php +++ b/datastore/quickstart/test/quickstartTest.php @@ -21,11 +21,18 @@ class quickstartTest extends \PHPUnit_Framework_TestCase { public function testQuickstart() { - if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { - $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + if (!$projectId = getenv('GOOGLE_PROJECT_ID')) { + $this->markTestSkipped('GOOGLE_PROJECT_ID must be set.'); } - $file = __DIR__ . '/../quickstart.php'; + $file = sys_get_temp_dir() . '/datastore_quickstart.php'; + $contents = file_get_contents(__DIR__ . '/../quickstart.php'); + $contents = str_replace( + ['YOUR_PROJECT_ID', '__DIR__'], + [$projectId, sprintf('"%s/.."', __DIR__)], + $contents + ); + file_put_contents($file, $contents); // Invoke quickstart.php $entity = include $file; diff --git a/logging/quickstart/quickstart.php b/logging/quickstart/quickstart.php index acf4f61aae..cac421c4de 100644 --- a/logging/quickstart/quickstart.php +++ b/logging/quickstart/quickstart.php @@ -7,8 +7,13 @@ # Imports the Google Cloud client library use Google\Cloud\Logging\LoggingClient; +# Your Google Cloud Platform project ID +$projectId = 'YOUR_PROJECT_ID'; + # Instantiates a client -$logging = new LoggingClient(); +$logging = new LoggingClient([ + 'projectId' => $projectId +]); # The name of the log to write to $logName = 'my-log'; diff --git a/logging/quickstart/test/quickstartTest.php b/logging/quickstart/test/quickstartTest.php index 8188eff014..f5e2a1b2be 100644 --- a/logging/quickstart/test/quickstartTest.php +++ b/logging/quickstart/test/quickstartTest.php @@ -18,11 +18,18 @@ class quickstartTest extends PHPUnit_Framework_TestCase { public function testQuickstart() { - if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { - $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + if (!$projectId = getenv('GOOGLE_PROJECT_ID')) { + $this->markTestSkipped('GOOGLE_PROJECT_ID must be set.'); } - $file = __DIR__ . '/../quickstart.php'; + $file = sys_get_temp_dir() . '/logging_quickstart.php'; + $contents = file_get_contents(__DIR__ . '/../quickstart.php'); + $contents = str_replace( + ['YOUR_PROJECT_ID', '__DIR__'], + [$projectId, sprintf('"%s/.."', __DIR__)], + $contents + ); + file_put_contents($file, $contents); // Invoke quickstart.php $entry = include $file; diff --git a/storage/quickstart/quickstart.php b/storage/quickstart/quickstart.php index 00db8ff6bf..3b46ff0e50 100644 --- a/storage/quickstart/quickstart.php +++ b/storage/quickstart/quickstart.php @@ -7,8 +7,13 @@ # Imports the Google Cloud client library use Google\Cloud\Storage\StorageClient; +# Your Google Cloud Platform project ID +$projectId = 'YOUR_PROJECT_ID'; + # Instantiates a client -$storage = new StorageClient(); +$storage = new StorageClient([ + 'projectId' => $projectId +]); # The name for the new bucket $bucketName = 'my-new-bucket'; diff --git a/storage/quickstart/test/quickstartTest.php b/storage/quickstart/test/quickstartTest.php index 78ef37b27e..a45e38b666 100644 --- a/storage/quickstart/test/quickstartTest.php +++ b/storage/quickstart/test/quickstartTest.php @@ -18,16 +18,16 @@ class quickstartTest extends PHPUnit_Framework_TestCase { public function testQuickstart() { - if (!getenv('GOOGLE_APPLICATION_CREDENTIALS')) { - $this->markTestSkipped('GOOGLE_APPLICATION_CREDENTIALS must be set.'); + if (!$projectId = getenv('GOOGLE_PROJECT_ID')) { + $this->markTestSkipped('GOOGLE_PROJECT_ID must be set.'); } $bucketName = 'my-new-bucket-' . time(); $file = sys_get_temp_dir() . '/storage_quickstart.php'; $contents = file_get_contents(__DIR__ . '/../quickstart.php'); $contents = str_replace( - ['my-new-bucket', '__DIR__'], - [$bucketName, sprintf('"%s/.."', __DIR__)], + ['YOUR_PROJECT_ID', 'my-new-bucket', '__DIR__'], + [$projectId, $bucketName, sprintf('"%s/.."', __DIR__)], $contents ); file_put_contents($file, $contents);