'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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\BigQuery\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Datastore\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Firestore\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Logging\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Language\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\PubSub\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Spanner\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Speech\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Storage\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Trace\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Vision\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(\DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Translate\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'] = \DeliciousBrains\WP_Offload_Media\Gcp\Google\Auth\HttpHandler\HttpHandlerFactory::build(); } if (!isset($config['asyncHttpHandler'])) { $isGuzzleHandler = $config['httpHandler'] instanceof Guzzle6HttpHandler || $config['httpHandler'] instanceof Guzzle5HttpHandler; $config['asyncHttpHandler'] = $isGuzzleHandler ? [$config['httpHandler'], 'async'] : [\DeliciousBrains\WP_Offload_Media\Gcp\Google\Auth\HttpHandler\HttpHandlerFactory::build(), 'async']; } return array_merge($this->config, $config); } }