/
www
/
wwwroot
/
alo88.autos
/
wp-content
/
plugins
/
wp-content-crawler
/
app
/
vendor
/
google
/
cloud-core
/
src
/
Upload File
HOME
<?php /** * Copyright 2015 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Cloud\Core; use Google\Auth\HttpHandler\Guzzle5HttpHandler; use Google\Auth\HttpHandler\Guzzle6HttpHandler; use Google\Auth\HttpHandler\HttpHandlerFactory; use Google\Cloud\BigQuery\BigQueryClient; use Google\Cloud\Datastore\DatastoreClient; use Google\Cloud\Firestore\FirestoreClient; use Google\Cloud\Language\LanguageClient; use Google\Cloud\Logging\LoggingClient; use Google\Cloud\PubSub\PubSubClient; use Google\Cloud\Spanner\SpannerClient; use Google\Cloud\Speech\SpeechClient; use Google\Cloud\Storage\StorageClient; use Google\Cloud\Trace\TraceClient; use Google\Cloud\Translate\V2\TranslateClient; use Google\Cloud\Vision\VisionClient; use Psr\Cache\CacheItemPoolInterface; /** * Google Cloud Platform is a set of modular cloud-based services that allow you * to create anything from simple websites to complex applications. * * This API aims to expose access to these services in a way that is intuitive * and easy to use for PHP enthusiasts. The ServiceBuilder instance exposes * factory methods which grant access to the various services contained within * the API. * * Configuration is simple. Pass in an array of configuration options to the * constructor up front which can be shared between clients or specify the * options for the specific services you wish to access, e.g. Datastore, or * Storage. * * Please note that unless otherwise noted the examples below take advantage of * [Application Default Credentials](https://developers.google.com/identity/protocols/application-default-credentials). */ class ServiceBuilder { /** * @var array Configuration options to be used between clients. */ private $config = []; /** * Pass in an array of configuration options which will be shared between * clients. * * Example: * ``` * use Google\Cloud\Core\ServiceBuilder; * * $cloud = new ServiceBuilder([ * 'projectId' => 'myAwesomeProject' * ]); * ``` * * @param array $config [optional] { * Configuration options. * * @type string $projectId The project ID from the Google Developer's * Console. * @type CacheItemPoolInterface $authCache A cache for storing access * tokens. **Defaults to** a simple in memory implementation. * @type array $authCacheOptions Cache configuration options. * @type callable $authHttpHandler A handler used to deliver Psr7 * requests specifically for authentication. * @type callable $httpHandler A handler used to deliver Psr7 requests. * Only valid for requests sent over REST. * @type array $keyFile The contents of the service account credentials * .json file retrieved from the Google Developer's Console. * Ex: `json_decode(file_get_contents($path), true)`. * @type string $keyFilePath The full path to your service account * credentials .json file retrieved from the Google Developers * Console. * @type int $retries Number of retries for a failed request. * **Defaults to** `3`. * @type array $scopes Scopes to be used for the request. * } */ public function __construct(array $config = []) { $this->config = $this->resolveConfig($config); } /** * Google Cloud BigQuery allows you to create, manage, share and query * data. Find more information at the * [Google Cloud BigQuery Docs](https://cloud.google.com/bigquery/docs). * * Example: * ``` * $bigQuery = $cloud->bigQuery(); * ``` * * @param array $config [optional] { * Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the other available options. * * @type bool $returnInt64AsObject If true, 64 bit integers will be * returned as a {@see Google\Cloud\Core\Int64} object for 32 bit * platform compatibility. **Defaults to** false. * @type string $location If provided, determines the default geographic * location used when creating datasets and managing jobs. Please * note: This is only required for jobs started outside of the US * and EU regions. Also, if location metadata has already been * fetched over the network it will take precedent over this * setting. * } * @return BigQueryClient */ public function bigQuery(array $config = []) { return $this->createClient(BigQueryClient::class, 'bigquery', $config); } /** * Google Cloud Datastore is a highly-scalable NoSQL database for your * applications. Find more information at the * [Google Cloud Datastore docs](https://cloud.google.com/datastore/docs/). * * Example: * ``` * $datastore = $cloud->datastore(); * ``` * * @param array $config [optional] { * Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the other available options. * * @type bool $returnInt64AsObject If true, 64 bit integers will be * returned as a {@see Google\Cloud\Core\Int64} object for 32 bit * platform compatibility. **Defaults to** false. * @return DatastoreClient */ public function datastore(array $config = []) { return $this->createClient(DatastoreClient::class, 'datastore', $config); } /** * Cloud Firestore is a flexible, scalable, realtime database for mobile, * web, and server development. Find more information at the * [Google Cloud firestore docs](https://cloud.google.com/firestore/docs/). * * Example: * ``` * $firestore = $cloud->firestore(); * ``` * * @param array $config [optional] { * Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the other available options. * * @type bool $returnInt64AsObject If true, 64 bit integers will be * returned as a {@see Google\Cloud\Core\Int64} object for 32 bit * platform compatibility. **Defaults to** false. * @return FirestoreClient */ public function firestore(array $config = []) { return $this->createClient(FirestoreClient::class, 'firestore', $config); } /** * Google Stackdriver Logging allows you to store, search, analyze, monitor, * and alert on log data and events from Google Cloud Platform and Amazon * Web Services. Find more information at the * [Google Stackdriver Logging docs](https://cloud.google.com/logging/docs/). * * Example: * ``` * $logging = $cloud->logging(); * ``` * * @param array $config [optional] Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the available options. * @return LoggingClient */ public function logging(array $config = []) { return $this->createClient(LoggingClient::class, 'logging', $config); } /** * Google Cloud Natural Language provides natural language understanding * technologies to developers, including sentiment analysis, entity * recognition, and syntax analysis. Currently only English, Spanish, * and Japanese textual context are supported. Find more information at the * [Google Cloud Natural Language docs](https://cloud.google.com/natural-language/docs/). * * Example: * ``` * $language = $cloud->language(); * ``` * * @param array $config [optional] Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the available options. * @return LanguageClient */ public function language(array $config = []) { return $this->createClient(LanguageClient::class, 'language', $config); } /** * Google Cloud Pub/Sub allows you to send and receive messages between * independent applications. Find more information at the * [Google Cloud Pub/Sub docs](https://cloud.google.com/pubsub/docs/). * * Example: * ``` * $pubsub = $cloud->pubsub(); * ``` * * @param array $config [optional] { * Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the other available options. * * @type string $transport The transport type used for requests. May be * either `grpc` or `rest`. **Defaults to** `grpc` if gRPC support * is detected on the system. * @return PubSubClient */ public function pubsub(array $config = []) { return $this->createClient(PubSubClient::class, 'pubsub', $config); } /** * Google Cloud Spanner is a highly scalable, transactional, managed, NewSQL * database service. Find more information at * [Google Cloud Spanner API docs](https://cloud.google.com/spanner/). * * Example: * ``` * $spanner = $cloud->spanner(); * ``` * * @param array $config [optional] { * Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the other available options. * * @type bool $returnInt64AsObject If true, 64 bit integers will be * returned as a {@see Google\Cloud\Core\Int64} object for 32 bit * platform compatibility. **Defaults to** false. * } * @return SpannerClient */ public function spanner(array $config = []) { return $this->createClient(SpannerClient::class, 'spanner', $config); } /** * Google Cloud Speech enables easy integration of Google speech recognition * technologies into developer applications. Send audio and receive a text * transcription from the Cloud Speech API service. Find more information at * the [Google Cloud Speech API docs](https://cloud.google.com/speech/docs/). * * Example: * ``` * $speech = $cloud->speech([ * 'languageCode' => 'en-US' * ]); * ``` * * @param array $config [optional] { * Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the other available options. * * @type string $languageCode The language of the content to * be recognized. Only BCP-47 (e.g., `"en-US"`, `"es-ES"`) * language codes are accepted. See * [Language Support](https://cloud.google.com/speech/docs/languages) * for a list of the currently supported language codes. * @return SpeechClient */ public function speech(array $config = []) { return $this->createClient(SpeechClient::class, 'speech', $config); } /** * Google Cloud Storage allows you to store and retrieve data on Google's * infrastructure. Find more information at the * [Google Cloud Storage API docs](https://developers.google.com/storage). * * Example: * ``` * $storage = $cloud->storage(); * ``` * * @param array $config [optional] Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the available options. * @return StorageClient */ public function storage(array $config = []) { return $this->createClient(StorageClient::class, 'storage', $config); } /** * Google Stackdriver Trace allows you to collect latency data from your applications * and display it in the Google Cloud Platform Console. Find more information at * [Stackdriver Trace API docs](https://cloud.google.com/trace/docs/). * * Example: * ``` * $trace = $cloud->trace(); * ``` * * @param array $config [optional] Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the available options. * @return TraceClient */ public function trace(array $config = []) { return $this->createClient(TraceClient::class, 'trace', $config); } /** * Google Cloud Vision allows you to understand the content of an image, * classify images into categories, detect text, objects, faces and more. * Find more information at the * [Google Cloud Vision docs](https://cloud.google.com/vision/docs/). * * Example: * ``` * $vision = $cloud->vision(); * ``` * * @param array $config [optional] Configuration options. See * {@see Google\Cloud\Core\ServiceBuilder::__construct()} for the available options. * @return VisionClient */ public function vision(array $config = []) { return $this->createClient(VisionClient::class, 'vision', $config); } /** * Google Cloud Translation provides the ability to dynamically translate * text between thousands of language pairs and lets websites and programs * integrate with translation service programmatically. * * The Google Cloud Translation API is available as a paid * service. See the [Pricing](https://cloud.google.com/translation/v2/pricing) * and [FAQ](https://cloud.google.com/translation/v2/faq) pages for details. * Find more information at the the * [Google Cloud Translation docs](https://cloud.google.com/translation/docs/). * * Please note that while the Google Cloud Translation API supports * authentication via service account and application default credentials * like other Cloud Platform APIs, it also supports authentication via a * public API access key. If you wish to authenticate using an API key, * follow the * [before you begin](https://cloud.google.com/translation/v2/translating-text-with-rest#before-you-begin) * instructions to learn how to generate a key. * * Example: * ``` * use Google\Cloud\Core\ServiceBuilder; * * $builder = new ServiceBuilder([ * 'key' => 'YOUR_KEY' * ]); * * $translate = $builder->translate(); * ``` * * @param array $config [optional] { * Configuration options. * * @type string $key A public API access key. * @type string $target The target language to assign to the client. * Defaults to `en` (English). * @type callable $httpHandler A handler used to deliver Psr7 requests. * Only valid for requests sent over REST. * @type int $retries Number of retries for a failed request. * **Defaults to** `3`. * } * @return TranslateClient */ public function translate(array $config = []) { return $this->createClient(TranslateClient::class, 'translate', $config); } /** * Create the client library, or error if not installed. * * @param string $class The class to create. * @param string $packageName The name of the package * @param array $config Configuration options. */ private function createClient($class, $packageName, array $config = []) { if (class_exists($class)) { return new $class($this->resolveConfig($config + $this->config)); } throw new \Exception(sprintf( 'The google/cloud-%s package is missing and must be installed.', $packageName )); } /** * Resolves configuration options. * * @param array $config * @return array */ private function resolveConfig(array $config) { if (!isset($config['httpHandler'])) { $config['httpHandler'] = HttpHandlerFactory::build(); } if (!isset($config['asyncHttpHandler'])) { $isGuzzleHandler = $config['httpHandler'] instanceof Guzzle6HttpHandler || $config['httpHandler'] instanceof Guzzle5HttpHandler; $config['asyncHttpHandler'] = $isGuzzleHandler ? [$config['httpHandler'], 'async'] : [HttpHandlerFactory::build(), 'async']; } return array_merge($this->config, $config); } }