Adds a new 'S3-Compatible Storage' provider that works with any
S3-API-compatible object storage service, including MinIO, Ceph,
Cloudflare R2, Backblaze B2, and others.
Changes:
- New provider class: classes/providers/storage/s3-compatible-provider.php
- Provider key: s3compatible
- Reads user-configured endpoint URL from settings
- Uses path-style URL access (required by most S3-compatible services)
- Supports credentials via AS3CF_S3COMPAT_ACCESS_KEY_ID /
AS3CF_S3COMPAT_SECRET_ACCESS_KEY wp-config.php constants
- Disables AWS-specific features (Block Public Access, Object Ownership)
- New provider SVG icons (s3compatible.svg, -link.svg, -round.svg)
- Registered provider in main plugin class with endpoint setting support
- Updated StorageProviderSubPage to show endpoint URL input for S3-compatible
- Built pro settings bundle with rollup (Svelte 4.2.19)
- Added package.json and updated rollup.config.mjs for pro-only builds
305 lines
16 KiB
PHP
305 lines
16 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* 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
|
|
*
|
|
* https://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.
|
|
*/
|
|
/*
|
|
* GENERATED CODE WARNING
|
|
* Generated by gapic-generator-php from the file
|
|
* https://github.com/googleapis/googleapis/blob/master/google/longrunning/operations.proto
|
|
* Updates to the above are reflected here through a refresh process.
|
|
*/
|
|
namespace DeliciousBrains\WP_Offload_Media\Gcp\Google\LongRunning\Client;
|
|
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\ApiCore\ApiException;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\ApiCore\CredentialsWrapper;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\ApiCore\GapicClientTrait;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\ApiCore\PagedListResponse;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\ApiCore\RetrySettings;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\ApiCore\Transport\TransportInterface;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\ApiCore\ValidationException;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\Auth\FetchAuthTokenInterface;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\LongRunning\CancelOperationRequest;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\LongRunning\DeleteOperationRequest;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\LongRunning\GetOperationRequest;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\LongRunning\ListOperationsRequest;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\LongRunning\Operation;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\Google\LongRunning\WaitOperationRequest;
|
|
use DeliciousBrains\WP_Offload_Media\Gcp\GuzzleHttp\Promise\PromiseInterface;
|
|
/**
|
|
* Service Description: Manages long-running operations with an API service.
|
|
*
|
|
* When an API method normally takes long time to complete, it can be designed
|
|
* to return [Operation][google.longrunning.Operation] to the client, and the client can use this
|
|
* interface to receive the real response asynchronously by polling the
|
|
* operation resource, or pass the operation resource to another API (such as
|
|
* Google Cloud Pub/Sub API) to receive the response. Any API service that
|
|
* returns long-running operations should implement the `Operations` interface
|
|
* so developers can have a consistent client experience.
|
|
*
|
|
* This class provides the ability to make remote calls to the backing service through method
|
|
* calls that map to API methods.
|
|
*
|
|
* @method PromiseInterface<void> cancelOperationAsync(CancelOperationRequest $request, array $optionalArgs = [])
|
|
* @method PromiseInterface<void> deleteOperationAsync(DeleteOperationRequest $request, array $optionalArgs = [])
|
|
* @method PromiseInterface<Operation> getOperationAsync(GetOperationRequest $request, array $optionalArgs = [])
|
|
* @method PromiseInterface<PagedListResponse> listOperationsAsync(ListOperationsRequest $request, array $optionalArgs = [])
|
|
* @method PromiseInterface<Operation> waitOperationAsync(WaitOperationRequest $request, array $optionalArgs = [])
|
|
*/
|
|
class OperationsClient
|
|
{
|
|
use GapicClientTrait;
|
|
/** The name of the service. */
|
|
private const SERVICE_NAME = 'google.longrunning.Operations';
|
|
/**
|
|
* The default address of the service.
|
|
*
|
|
* @deprecated SERVICE_ADDRESS_TEMPLATE should be used instead.
|
|
*/
|
|
private const SERVICE_ADDRESS = 'longrunning.googleapis.com';
|
|
/** The address template of the service. */
|
|
private const SERVICE_ADDRESS_TEMPLATE = 'longrunning.UNIVERSE_DOMAIN';
|
|
/** The default port of the service. */
|
|
private const DEFAULT_SERVICE_PORT = 443;
|
|
/** The name of the code generator, to be included in the agent header. */
|
|
private const CODEGEN_NAME = 'gapic';
|
|
/** The default scopes required by the service. */
|
|
public static $serviceScopes = [];
|
|
private static function getClientDefaults()
|
|
{
|
|
return ['serviceName' => self::SERVICE_NAME, 'apiEndpoint' => self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, 'clientConfig' => __DIR__ . '/../resources/operations_client_config.json', 'descriptorsConfigPath' => __DIR__ . '/../resources/operations_descriptor_config.php', 'gcpApiConfigPath' => __DIR__ . '/../resources/operations_grpc_config.json', 'credentialsConfig' => ['defaultScopes' => self::$serviceScopes], 'transportConfig' => ['rest' => ['restClientConfigPath' => __DIR__ . '/../resources/operations_rest_client_config.php']]];
|
|
}
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param array $options {
|
|
* Optional. Options for configuring the service API wrapper.
|
|
*
|
|
* @type string $apiEndpoint
|
|
* The address of the API remote host. May optionally include the port, formatted
|
|
* as "<uri>:<port>". Default 'longrunning.googleapis.com:443'.
|
|
* @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials
|
|
* The credentials to be used by the client to authorize API calls. This option
|
|
* accepts either a path to a credentials file, or a decoded credentials file as a
|
|
* PHP array.
|
|
* *Advanced usage*: In addition, this option can also accept a pre-constructed
|
|
* {@see \Google\Auth\FetchAuthTokenInterface} object or
|
|
* {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these
|
|
* objects are provided, any settings in $credentialsConfig will be ignored.
|
|
* @type array $credentialsConfig
|
|
* Options used to configure credentials, including auth token caching, for the
|
|
* client. For a full list of supporting configuration options, see
|
|
* {@see \Google\ApiCore\CredentialsWrapper::build()} .
|
|
* @type bool $disableRetries
|
|
* Determines whether or not retries defined by the client configuration should be
|
|
* disabled. Defaults to `false`.
|
|
* @type string|array $clientConfig
|
|
* Client method configuration, including retry settings. This option can be either
|
|
* a path to a JSON file, or a PHP array containing the decoded JSON data. By
|
|
* default this settings points to the default client config file, which is
|
|
* provided in the resources folder.
|
|
* @type string|TransportInterface $transport
|
|
* The transport used for executing network requests. May be either the string
|
|
* `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system.
|
|
* *Advanced usage*: Additionally, it is possible to pass in an already
|
|
* instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note
|
|
* that when this object is provided, any settings in $transportConfig, and any
|
|
* $apiEndpoint setting, will be ignored.
|
|
* @type array $transportConfig
|
|
* Configuration options that will be used to construct the transport. Options for
|
|
* each supported transport type should be passed in a key for that transport. For
|
|
* example:
|
|
* $transportConfig = [
|
|
* 'grpc' => [...],
|
|
* 'rest' => [...],
|
|
* ];
|
|
* See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and
|
|
* {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the
|
|
* supported options.
|
|
* @type callable $clientCertSource
|
|
* A callable which returns the client cert as a string. This can be used to
|
|
* provide a certificate and private key to the transport layer for mTLS.
|
|
* }
|
|
*
|
|
* @throws ValidationException
|
|
*/
|
|
public function __construct(array $options = [])
|
|
{
|
|
$clientOptions = $this->buildClientOptions($options);
|
|
$this->setClientOptions($clientOptions);
|
|
}
|
|
/** Handles execution of the async variants for each documented method. */
|
|
public function __call($method, $args)
|
|
{
|
|
if (\substr($method, -5) !== 'Async') {
|
|
\trigger_error('Call to undefined method ' . __CLASS__ . "::{$method}()", \E_USER_ERROR);
|
|
}
|
|
\array_unshift($args, \substr($method, 0, -5));
|
|
return \call_user_func_array([$this, 'startAsyncCall'], $args);
|
|
}
|
|
/**
|
|
* Starts asynchronous cancellation on a long-running operation. The server
|
|
* makes a best effort to cancel the operation, but success is not
|
|
* guaranteed. If the server doesn't support this method, it returns
|
|
* `google.rpc.Code.UNIMPLEMENTED`. Clients can use
|
|
* [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
|
|
* other methods to check whether the cancellation succeeded or whether the
|
|
* operation completed despite cancellation. On successful cancellation,
|
|
* the operation is not deleted; instead, it becomes an operation with
|
|
* an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
|
|
* corresponding to `Code.CANCELLED`.
|
|
*
|
|
* The async variant is {@see OperationsClient::cancelOperationAsync()} .
|
|
*
|
|
* @example samples/OperationsClient/cancel_operation.php
|
|
*
|
|
* @param CancelOperationRequest $request A request to house fields associated with the call.
|
|
* @param array $callOptions {
|
|
* Optional.
|
|
*
|
|
* @type RetrySettings|array $retrySettings
|
|
* Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
|
|
* associative array of retry settings parameters. See the documentation on
|
|
* {@see RetrySettings} for example usage.
|
|
* }
|
|
*
|
|
* @throws ApiException Thrown if the API call fails.
|
|
*/
|
|
public function cancelOperation(CancelOperationRequest $request, array $callOptions = []) : void
|
|
{
|
|
$this->startApiCall('CancelOperation', $request, $callOptions)->wait();
|
|
}
|
|
/**
|
|
* Deletes a long-running operation. This method indicates that the client is
|
|
* no longer interested in the operation result. It does not cancel the
|
|
* operation. If the server doesn't support this method, it returns
|
|
* `google.rpc.Code.UNIMPLEMENTED`.
|
|
*
|
|
* The async variant is {@see OperationsClient::deleteOperationAsync()} .
|
|
*
|
|
* @example samples/OperationsClient/delete_operation.php
|
|
*
|
|
* @param DeleteOperationRequest $request A request to house fields associated with the call.
|
|
* @param array $callOptions {
|
|
* Optional.
|
|
*
|
|
* @type RetrySettings|array $retrySettings
|
|
* Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
|
|
* associative array of retry settings parameters. See the documentation on
|
|
* {@see RetrySettings} for example usage.
|
|
* }
|
|
*
|
|
* @throws ApiException Thrown if the API call fails.
|
|
*/
|
|
public function deleteOperation(DeleteOperationRequest $request, array $callOptions = []) : void
|
|
{
|
|
$this->startApiCall('DeleteOperation', $request, $callOptions)->wait();
|
|
}
|
|
/**
|
|
* Gets the latest state of a long-running operation. Clients can use this
|
|
* method to poll the operation result at intervals as recommended by the API
|
|
* service.
|
|
*
|
|
* The async variant is {@see OperationsClient::getOperationAsync()} .
|
|
*
|
|
* @example samples/OperationsClient/get_operation.php
|
|
*
|
|
* @param GetOperationRequest $request A request to house fields associated with the call.
|
|
* @param array $callOptions {
|
|
* Optional.
|
|
*
|
|
* @type RetrySettings|array $retrySettings
|
|
* Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
|
|
* associative array of retry settings parameters. See the documentation on
|
|
* {@see RetrySettings} for example usage.
|
|
* }
|
|
*
|
|
* @return Operation
|
|
*
|
|
* @throws ApiException Thrown if the API call fails.
|
|
*/
|
|
public function getOperation(GetOperationRequest $request, array $callOptions = []) : Operation
|
|
{
|
|
return $this->startApiCall('GetOperation', $request, $callOptions)->wait();
|
|
}
|
|
/**
|
|
* Lists operations that match the specified filter in the request. If the
|
|
* server doesn't support this method, it returns `UNIMPLEMENTED`.
|
|
*
|
|
* NOTE: the `name` binding allows API services to override the binding
|
|
* to use different resource name schemes, such as `users/*/operations`. To
|
|
* override the binding, API services can add a binding such as
|
|
* `"/v1/{name=users/*}/operations"` to their service configuration.
|
|
* For backwards compatibility, the default name includes the operations
|
|
* collection id, however overriding users must ensure the name binding
|
|
* is the parent resource, without the operations collection id.
|
|
*
|
|
* The async variant is {@see OperationsClient::listOperationsAsync()} .
|
|
*
|
|
* @example samples/OperationsClient/list_operations.php
|
|
*
|
|
* @param ListOperationsRequest $request A request to house fields associated with the call.
|
|
* @param array $callOptions {
|
|
* Optional.
|
|
*
|
|
* @type RetrySettings|array $retrySettings
|
|
* Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
|
|
* associative array of retry settings parameters. See the documentation on
|
|
* {@see RetrySettings} for example usage.
|
|
* }
|
|
*
|
|
* @return PagedListResponse
|
|
*
|
|
* @throws ApiException Thrown if the API call fails.
|
|
*/
|
|
public function listOperations(ListOperationsRequest $request, array $callOptions = []) : PagedListResponse
|
|
{
|
|
return $this->startApiCall('ListOperations', $request, $callOptions);
|
|
}
|
|
/**
|
|
* Waits until the specified long-running operation is done or reaches at most
|
|
* a specified timeout, returning the latest state. If the operation is
|
|
* already done, the latest state is immediately returned. If the timeout
|
|
* specified is greater than the default HTTP/RPC timeout, the HTTP/RPC
|
|
* timeout is used. If the server does not support this method, it returns
|
|
* `google.rpc.Code.UNIMPLEMENTED`.
|
|
* Note that this method is on a best-effort basis. It may return the latest
|
|
* state before the specified timeout (including immediately), meaning even an
|
|
* immediate response is no guarantee that the operation is done.
|
|
*
|
|
* The async variant is {@see OperationsClient::waitOperationAsync()} .
|
|
*
|
|
* @example samples/OperationsClient/wait_operation.php
|
|
*
|
|
* @param WaitOperationRequest $request A request to house fields associated with the call.
|
|
* @param array $callOptions {
|
|
* Optional.
|
|
*
|
|
* @type RetrySettings|array $retrySettings
|
|
* Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
|
|
* associative array of retry settings parameters. See the documentation on
|
|
* {@see RetrySettings} for example usage.
|
|
* }
|
|
*
|
|
* @return Operation
|
|
*
|
|
* @throws ApiException Thrown if the API call fails.
|
|
*/
|
|
public function waitOperation(WaitOperationRequest $request, array $callOptions = []) : Operation
|
|
{
|
|
return $this->startApiCall('WaitOperation', $request, $callOptions)->wait();
|
|
}
|
|
}
|