Merge pull request #3925 from berendt/reworking_OC_Files_Storage_AmazonS3
reworking of \OC\Files\Storage\AmazonS3
This commit is contained in:
commit
a2cdf8b91e
|
@ -0,0 +1,107 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common;
|
||||||
|
|
||||||
|
use Guzzle\Service\Builder\ServiceBuilder;
|
||||||
|
use Guzzle\Service\Builder\ServiceBuilderLoader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for interacting with web service clients
|
||||||
|
*/
|
||||||
|
class Aws extends ServiceBuilder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string Current version of the SDK
|
||||||
|
*/
|
||||||
|
const VERSION = '2.4.0';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new service locator for the AWS SDK
|
||||||
|
*
|
||||||
|
* You can configure the service locator is four different ways:
|
||||||
|
*
|
||||||
|
* 1. Use the default configuration file shipped with the SDK that wires class names with service short names and
|
||||||
|
* specify global parameters to add to every definition (e.g. key, secret, credentials, etc)
|
||||||
|
*
|
||||||
|
* 2. Use a custom configuration file that extends the default config and supplies credentials for each service.
|
||||||
|
*
|
||||||
|
* 3. Use a custom config file that wires services to custom short names for services.
|
||||||
|
*
|
||||||
|
* 4. If you are on Amazon EC2, you can use the default configuration file and not provide any credentials so that
|
||||||
|
* you are using InstanceProfile credentials.
|
||||||
|
*
|
||||||
|
* @param array|string $config The full path to a .php or .js|.json file, or an associative array of data
|
||||||
|
* to use as global parameters to pass to each service.
|
||||||
|
* @param array $globalParameters Global parameters to pass to every service as it is instantiated.
|
||||||
|
*
|
||||||
|
* @return Aws
|
||||||
|
*/
|
||||||
|
public static function factory($config = null, array $globalParameters = array())
|
||||||
|
{
|
||||||
|
if (!$config) {
|
||||||
|
// If nothing is passed in, then use the default configuration file with credentials from the environment
|
||||||
|
$config = self::getDefaultServiceDefinition();
|
||||||
|
} elseif (is_array($config)) {
|
||||||
|
// If an array was passed, then use the default configuration file with parameter overrides
|
||||||
|
$globalParameters = $config;
|
||||||
|
$config = self::getDefaultServiceDefinition();
|
||||||
|
}
|
||||||
|
|
||||||
|
$loader = new ServiceBuilderLoader();
|
||||||
|
$loader->addAlias('_aws', self::getDefaultServiceDefinition())
|
||||||
|
->addAlias('_sdk1', __DIR__ . '/Resources/sdk1-config.php');
|
||||||
|
|
||||||
|
return $loader->load($config, $globalParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the full path to the default service builder definition file
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getDefaultServiceDefinition()
|
||||||
|
{
|
||||||
|
return __DIR__ . '/Resources/aws-config.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the configuration for the service builder
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getConfig()
|
||||||
|
{
|
||||||
|
return $this->builderConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables the facades for the clients defined in the service builder
|
||||||
|
*
|
||||||
|
* @param string|null $namespace The namespace that the facades should be mounted to. Defaults to global namespace
|
||||||
|
*
|
||||||
|
* @return Aws
|
||||||
|
*/
|
||||||
|
public function enableFacades($namespace = null)
|
||||||
|
{
|
||||||
|
$facadeClass = 'Aws\\Common\\Facade\\Facade';
|
||||||
|
if (class_exists($facadeClass)) {
|
||||||
|
$facadeClass::mountFacades($this, $namespace);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
273
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/AbstractClient.php
vendored
Normal file
273
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/AbstractClient.php
vendored
Normal file
|
@ -0,0 +1,273 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Aws\Common\Aws;
|
||||||
|
use Aws\Common\Credentials\Credentials;
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Aws\Common\Enum\ClientOptions as Options;
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Aws\Common\Signature\EndpointSignatureInterface;
|
||||||
|
use Aws\Common\Signature\SignatureInterface;
|
||||||
|
use Aws\Common\Signature\SignatureListener;
|
||||||
|
use Aws\Common\Waiter\WaiterClassFactory;
|
||||||
|
use Aws\Common\Waiter\CompositeWaiterFactory;
|
||||||
|
use Aws\Common\Waiter\WaiterFactoryInterface;
|
||||||
|
use Aws\Common\Waiter\WaiterConfigFactory;
|
||||||
|
use Guzzle\Common\Collection;
|
||||||
|
use Guzzle\Service\Client;
|
||||||
|
use Guzzle\Service\Description\ServiceDescriptionInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract AWS client
|
||||||
|
*/
|
||||||
|
abstract class AbstractClient extends Client implements AwsClientInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var CredentialsInterface AWS credentials
|
||||||
|
*/
|
||||||
|
protected $credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var SignatureInterface Signature implementation of the service
|
||||||
|
*/
|
||||||
|
protected $signature;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var WaiterFactoryInterface Factory used to create waiter classes
|
||||||
|
*/
|
||||||
|
protected $waiterFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getAllEvents()
|
||||||
|
{
|
||||||
|
return array_merge(Client::getAllEvents(), array(
|
||||||
|
'client.region_changed',
|
||||||
|
'client.credentials_changed',
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param CredentialsInterface $credentials AWS credentials
|
||||||
|
* @param SignatureInterface $signature Signature implementation
|
||||||
|
* @param Collection $config Configuration options
|
||||||
|
*
|
||||||
|
* @throws InvalidArgumentException if an endpoint provider isn't provided
|
||||||
|
*/
|
||||||
|
public function __construct(CredentialsInterface $credentials, SignatureInterface $signature, Collection $config)
|
||||||
|
{
|
||||||
|
// Bootstrap with Guzzle
|
||||||
|
parent::__construct($config->get(Options::BASE_URL), $config);
|
||||||
|
$this->credentials = $credentials;
|
||||||
|
$this->signature = $signature;
|
||||||
|
|
||||||
|
// Make sure the user agent is prefixed by the SDK version
|
||||||
|
$this->setUserAgent('aws-sdk-php2/' . Aws::VERSION, true);
|
||||||
|
|
||||||
|
// Add the event listener so that requests are signed before they are sent
|
||||||
|
$dispatcher = $this->getEventDispatcher();
|
||||||
|
$dispatcher->addSubscriber(new SignatureListener($credentials, $signature));
|
||||||
|
|
||||||
|
if ($backoff = $config->get(Options::BACKOFF)) {
|
||||||
|
$dispatcher->addSubscriber($backoff, -255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __call($method, $args)
|
||||||
|
{
|
||||||
|
if (substr($method, 0, 3) === 'get' && substr($method, -8) === 'Iterator') {
|
||||||
|
// Allow magic method calls for iterators (e.g. $client->get<CommandName>Iterator($params))
|
||||||
|
$commandOptions = isset($args[0]) ? $args[0] : null;
|
||||||
|
$iteratorOptions = isset($args[1]) ? $args[1] : array();
|
||||||
|
return $this->getIterator(substr($method, 3, -8), $commandOptions, $iteratorOptions);
|
||||||
|
} elseif (substr($method, 0, 9) == 'waitUntil') {
|
||||||
|
// Allow magic method calls for waiters (e.g. $client->waitUntil<WaiterName>($params))
|
||||||
|
return $this->waitUntil(substr($method, 9), isset($args[0]) ? $args[0]: array());
|
||||||
|
} else {
|
||||||
|
return parent::__call(ucfirst($method), $args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an endpoint for a specific region from a service description
|
||||||
|
*
|
||||||
|
* @param ServiceDescriptionInterface $description Service description
|
||||||
|
* @param string $region Region of the endpoint
|
||||||
|
* @param string $scheme URL scheme
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public static function getEndpoint(ServiceDescriptionInterface $description, $region, $scheme)
|
||||||
|
{
|
||||||
|
$service = $description->getData('serviceFullName');
|
||||||
|
// Lookup the region in the service description
|
||||||
|
if (!($regions = $description->getData('regions'))) {
|
||||||
|
throw new InvalidArgumentException("No regions found in the {$service} description");
|
||||||
|
}
|
||||||
|
// Ensure that the region exists for the service
|
||||||
|
if (!isset($regions[$region])) {
|
||||||
|
throw new InvalidArgumentException("{$region} is not a valid region for {$service}");
|
||||||
|
}
|
||||||
|
// Ensure that the scheme is valid
|
||||||
|
if ($regions[$region][$scheme] == false) {
|
||||||
|
throw new InvalidArgumentException("{$scheme} is not a valid URI scheme for {$service} in {$region}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $scheme . '://' . $regions[$region]['hostname'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getCredentials()
|
||||||
|
{
|
||||||
|
return $this->credentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setCredentials(CredentialsInterface $credentials)
|
||||||
|
{
|
||||||
|
$formerCredentials = $this->credentials;
|
||||||
|
$this->credentials = $credentials;
|
||||||
|
|
||||||
|
// Dispatch an event that the credentials have been changed
|
||||||
|
$this->dispatch('client.credentials_changed', array(
|
||||||
|
'credentials' => $credentials,
|
||||||
|
'former_credentials' => $formerCredentials,
|
||||||
|
));
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSignature()
|
||||||
|
{
|
||||||
|
return $this->signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getRegions()
|
||||||
|
{
|
||||||
|
return $this->serviceDescription->getData('regions');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getRegion()
|
||||||
|
{
|
||||||
|
return $this->getConfig(Options::REGION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setRegion($region)
|
||||||
|
{
|
||||||
|
$config = $this->getConfig();
|
||||||
|
$formerRegion = $config->get(Options::REGION);
|
||||||
|
$global = $this->serviceDescription->getData('globalEndpoint');
|
||||||
|
|
||||||
|
// Only change the region if the service does not have a global endpoint
|
||||||
|
if (!$global || $this->serviceDescription->getData('namespace') === 'S3') {
|
||||||
|
$baseUrl = self::getEndpoint($this->serviceDescription, $region, $config->get(Options::SCHEME));
|
||||||
|
$this->setBaseUrl($baseUrl);
|
||||||
|
$config->set(Options::BASE_URL, $baseUrl)->set(Options::REGION, $region);
|
||||||
|
|
||||||
|
// Update the signature if necessary
|
||||||
|
$signature = $this->getSignature();
|
||||||
|
if ($signature instanceof EndpointSignatureInterface) {
|
||||||
|
/** @var $signature EndpointSignatureInterface */
|
||||||
|
$signature->setRegionName($region);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dispatch an event that the region has been changed
|
||||||
|
$this->dispatch('client.region_changed', array(
|
||||||
|
'region' => $region,
|
||||||
|
'former_region' => $formerRegion,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function waitUntil($waiter, array $input = array())
|
||||||
|
{
|
||||||
|
$this->getWaiter($waiter, $input)->wait();
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getWaiter($waiter, array $input = array())
|
||||||
|
{
|
||||||
|
return $this->getWaiterFactory()->build($waiter)
|
||||||
|
->setClient($this)
|
||||||
|
->setConfig($input);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setWaiterFactory(WaiterFactoryInterface $waiterFactory)
|
||||||
|
{
|
||||||
|
$this->waiterFactory = $waiterFactory;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getWaiterFactory()
|
||||||
|
{
|
||||||
|
if (!$this->waiterFactory) {
|
||||||
|
$clientClass = get_class($this);
|
||||||
|
// Use a composite factory that checks for classes first, then config waiters
|
||||||
|
$this->waiterFactory = new CompositeWaiterFactory(array(
|
||||||
|
new WaiterClassFactory(substr($clientClass, 0, strrpos($clientClass, '\\')) . '\\Waiter')
|
||||||
|
));
|
||||||
|
if ($this->getDescription()) {
|
||||||
|
$this->waiterFactory->addFactory(new WaiterConfigFactory($this->getDescription()->getData('waiters')));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->waiterFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getApiVersion()
|
||||||
|
{
|
||||||
|
return $this->serviceDescription->getApiVersion();
|
||||||
|
}
|
||||||
|
}
|
118
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/AwsClientInterface.php
vendored
Normal file
118
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/AwsClientInterface.php
vendored
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Aws\Common\Signature\SignatureInterface;
|
||||||
|
use Aws\Common\Waiter\WaiterFactoryInterface;
|
||||||
|
use Aws\Common\Waiter\WaiterInterface;
|
||||||
|
use Guzzle\Service\ClientInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface that all AWS clients implement
|
||||||
|
*/
|
||||||
|
interface AwsClientInterface extends ClientInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns the AWS credentials associated with the client
|
||||||
|
*
|
||||||
|
* @return CredentialsInterface
|
||||||
|
*/
|
||||||
|
public function getCredentials();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the credentials object associated with the client
|
||||||
|
*
|
||||||
|
* @param CredentialsInterface $credentials Credentials object to use
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setCredentials(CredentialsInterface $credentials);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the signature implementation used with the client
|
||||||
|
*
|
||||||
|
* @return SignatureInterface
|
||||||
|
*/
|
||||||
|
public function getSignature();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of available regions and region data
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getRegions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of the region to which the client is configured to send requests
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getRegion();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the region to which the client is configured to send requests
|
||||||
|
*
|
||||||
|
* @param string $region Name of the region
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setRegion($region);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the waiter factory being used by the client
|
||||||
|
*
|
||||||
|
* @return WaiterFactoryInterface
|
||||||
|
*/
|
||||||
|
public function getWaiterFactory();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the waiter factory to use with the client
|
||||||
|
*
|
||||||
|
* @param WaiterFactoryInterface $waiterFactory Factory used to create waiters
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setWaiterFactory(WaiterFactoryInterface $waiterFactory);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wait until a resource is available or an associated waiter returns true
|
||||||
|
*
|
||||||
|
* @param string $waiter Name of the waiter
|
||||||
|
* @param array $input Values used as input for the underlying operation and to control the waiter
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function waitUntil($waiter, array $input = array());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a named waiter object
|
||||||
|
*
|
||||||
|
* @param string $waiter Name of the waiter
|
||||||
|
* @param array $input Values used as input for the underlying operation and to control the waiter
|
||||||
|
*
|
||||||
|
* @return WaiterInterface
|
||||||
|
*/
|
||||||
|
public function getWaiter($waiter, array $input = array());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the API version of the client (e.g. 2006-03-01)
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getApiVersion();
|
||||||
|
}
|
454
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/ClientBuilder.php
vendored
Normal file
454
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/ClientBuilder.php
vendored
Normal file
|
@ -0,0 +1,454 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\Credentials;
|
||||||
|
use Aws\Common\Enum\ClientOptions as Options;
|
||||||
|
use Aws\Common\Enum\Region;
|
||||||
|
use Aws\Common\Exception\ExceptionListener;
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Aws\Common\Exception\NamespaceExceptionFactory;
|
||||||
|
use Aws\Common\Exception\Parser\DefaultXmlExceptionParser;
|
||||||
|
use Aws\Common\Exception\Parser\ExceptionParserInterface;
|
||||||
|
use Aws\Common\Iterator\AwsResourceIteratorFactory;
|
||||||
|
use Aws\Common\Signature\EndpointSignatureInterface;
|
||||||
|
use Aws\Common\Signature\SignatureInterface;
|
||||||
|
use Aws\Common\Signature\SignatureV2;
|
||||||
|
use Aws\Common\Signature\SignatureV3;
|
||||||
|
use Aws\Common\Signature\SignatureV3Https;
|
||||||
|
use Aws\Common\Signature\SignatureV4;
|
||||||
|
use Guzzle\Common\Collection;
|
||||||
|
use Guzzle\Plugin\Backoff\BackoffPlugin;
|
||||||
|
use Guzzle\Plugin\Backoff\CurlBackoffStrategy;
|
||||||
|
use Guzzle\Plugin\Backoff\ExponentialBackoffStrategy;
|
||||||
|
use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
|
||||||
|
use Guzzle\Plugin\Backoff\TruncatedBackoffStrategy;
|
||||||
|
use Guzzle\Service\Client;
|
||||||
|
use Guzzle\Service\Description\ServiceDescription;
|
||||||
|
use Guzzle\Service\Resource\ResourceIteratorClassFactory;
|
||||||
|
use Guzzle\Log\LogAdapterInterface;
|
||||||
|
use Guzzle\Log\ClosureLogAdapter;
|
||||||
|
use Guzzle\Plugin\Backoff\BackoffLogger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builder for creating AWS service clients
|
||||||
|
*/
|
||||||
|
class ClientBuilder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array Default client config
|
||||||
|
*/
|
||||||
|
protected static $commonConfigDefaults = array('scheme' => 'https');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Default client requirements
|
||||||
|
*/
|
||||||
|
protected static $commonConfigRequirements = array(Options::SERVICE_DESCRIPTION);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The namespace of the client
|
||||||
|
*/
|
||||||
|
protected $clientNamespace;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array The config options
|
||||||
|
*/
|
||||||
|
protected $config = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array The config defaults
|
||||||
|
*/
|
||||||
|
protected $configDefaults = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array The config requirements
|
||||||
|
*/
|
||||||
|
protected $configRequirements = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var ExceptionParserInterface The Parser interface for the client
|
||||||
|
*/
|
||||||
|
protected $exceptionParser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Array of configuration data for iterators available for the client
|
||||||
|
*/
|
||||||
|
protected $iteratorsConfig = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory method for creating the client builder
|
||||||
|
*
|
||||||
|
* @param string $namespace The namespace of the client
|
||||||
|
*
|
||||||
|
* @return ClientBuilder
|
||||||
|
*/
|
||||||
|
public static function factory($namespace = null)
|
||||||
|
{
|
||||||
|
return new static($namespace);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a client builder
|
||||||
|
*
|
||||||
|
* @param string $namespace The namespace of the client
|
||||||
|
*/
|
||||||
|
public function __construct($namespace = null)
|
||||||
|
{
|
||||||
|
$this->clientNamespace = $namespace;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the config options
|
||||||
|
*
|
||||||
|
* @param array|Collection $config The config options
|
||||||
|
*
|
||||||
|
* @return ClientBuilder
|
||||||
|
*/
|
||||||
|
public function setConfig($config)
|
||||||
|
{
|
||||||
|
$this->config = $this->processArray($config);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the config options' defaults
|
||||||
|
*
|
||||||
|
* @param array|Collection $defaults The default values
|
||||||
|
*
|
||||||
|
* @return ClientBuilder
|
||||||
|
*/
|
||||||
|
public function setConfigDefaults($defaults)
|
||||||
|
{
|
||||||
|
$this->configDefaults = $this->processArray($defaults);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the required config options
|
||||||
|
*
|
||||||
|
* @param array|Collection $required The required config options
|
||||||
|
*
|
||||||
|
* @return ClientBuilder
|
||||||
|
*/
|
||||||
|
public function setConfigRequirements($required)
|
||||||
|
{
|
||||||
|
$this->configRequirements = $this->processArray($required);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the exception parser. If one is not provided the builder will use
|
||||||
|
* the default XML exception parser.
|
||||||
|
*
|
||||||
|
* @param ExceptionParserInterface $parser The exception parser
|
||||||
|
*
|
||||||
|
* @return ClientBuilder
|
||||||
|
*/
|
||||||
|
public function setExceptionParser(ExceptionParserInterface $parser)
|
||||||
|
{
|
||||||
|
$this->exceptionParser = $parser;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the configuration for the client's iterators
|
||||||
|
*
|
||||||
|
* @param array $config Configuration data for client's iterators
|
||||||
|
*
|
||||||
|
* @return ClientBuilder
|
||||||
|
*/
|
||||||
|
public function setIteratorsConfig(array $config)
|
||||||
|
{
|
||||||
|
$this->iteratorsConfig = $config;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs the building logic using all of the parameters that have been
|
||||||
|
* set and falling back to default values. Returns an instantiate service
|
||||||
|
* client with credentials prepared and plugins attached.
|
||||||
|
*
|
||||||
|
* @return AwsClientInterface
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function build()
|
||||||
|
{
|
||||||
|
// Resolve configuration
|
||||||
|
$config = Collection::fromConfig(
|
||||||
|
$this->config,
|
||||||
|
array_merge(self::$commonConfigDefaults, $this->configDefaults),
|
||||||
|
(self::$commonConfigRequirements + $this->configRequirements)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Resolve endpoint and signature from the config and service description
|
||||||
|
$description = $this->updateConfigFromDescription($config);
|
||||||
|
$signature = $this->getSignature($description, $config);
|
||||||
|
|
||||||
|
// Resolve credentials
|
||||||
|
if (!$credentials = $config->get('credentials')) {
|
||||||
|
$credentials = Credentials::factory($config);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resolve exception parser
|
||||||
|
if (!$this->exceptionParser) {
|
||||||
|
$this->exceptionParser = new DefaultXmlExceptionParser();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resolve backoff strategy
|
||||||
|
$backoff = $config->get(Options::BACKOFF);
|
||||||
|
if ($backoff === null) {
|
||||||
|
$backoff = new BackoffPlugin(
|
||||||
|
// Retry failed requests up to 3 times if it is determined that the request can be retried
|
||||||
|
new TruncatedBackoffStrategy(3,
|
||||||
|
// Retry failed requests with 400-level responses due to throttling
|
||||||
|
new ThrottlingErrorChecker($this->exceptionParser,
|
||||||
|
// Retry failed requests with 500-level responses
|
||||||
|
new HttpBackoffStrategy(array(500, 503, 509),
|
||||||
|
// Retry failed requests due to transient network or cURL problems
|
||||||
|
new CurlBackoffStrategy(null,
|
||||||
|
// Retry requests that failed due to expired credentials
|
||||||
|
new ExpiredCredentialsChecker($this->exceptionParser,
|
||||||
|
new ExponentialBackoffStrategy()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$config->set(Options::BACKOFF, $backoff);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($backoff) {
|
||||||
|
$this->addBackoffLogger($backoff, $config);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine service and class name
|
||||||
|
$clientClass = 'Aws\Common\Client\DefaultClient';
|
||||||
|
if ($this->clientNamespace) {
|
||||||
|
$serviceName = substr($this->clientNamespace, strrpos($this->clientNamespace, '\\') + 1);
|
||||||
|
$clientClass = $this->clientNamespace . '\\' . $serviceName . 'Client';
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var $client AwsClientInterface */
|
||||||
|
$client = new $clientClass($credentials, $signature, $config);
|
||||||
|
$client->setDescription($description);
|
||||||
|
|
||||||
|
// Add exception marshaling so that more descriptive exception are thrown
|
||||||
|
if ($this->clientNamespace) {
|
||||||
|
$exceptionFactory = new NamespaceExceptionFactory(
|
||||||
|
$this->exceptionParser,
|
||||||
|
"{$this->clientNamespace}\\Exception",
|
||||||
|
"{$this->clientNamespace}\\Exception\\{$serviceName}Exception"
|
||||||
|
);
|
||||||
|
$client->addSubscriber(new ExceptionListener($exceptionFactory));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the UserAgentPlugin to append to the User-Agent header of requests
|
||||||
|
$client->addSubscriber(new UserAgentListener());
|
||||||
|
|
||||||
|
// Filters used for the cache plugin
|
||||||
|
$client->getConfig()->set(
|
||||||
|
'params.cache.key_filter',
|
||||||
|
'header=date,x-amz-date,x-amz-security-token,x-amzn-authorization'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Set the iterator resource factory based on the provided iterators config
|
||||||
|
$client->setResourceIteratorFactory(new AwsResourceIteratorFactory(
|
||||||
|
$this->iteratorsConfig,
|
||||||
|
new ResourceIteratorClassFactory($this->clientNamespace . '\\Iterator')
|
||||||
|
));
|
||||||
|
|
||||||
|
// Disable parameter validation if needed
|
||||||
|
if ($config->get(Options::VALIDATION) === false) {
|
||||||
|
$params = $config->get('command.params') ?: array();
|
||||||
|
$params['command.disable_validation'] = true;
|
||||||
|
$config->set('command.params', $params);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $client;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add backoff logging to the backoff plugin if needed
|
||||||
|
*
|
||||||
|
* @param BackoffPlugin $plugin Backoff plugin
|
||||||
|
* @param Collection $config Configuration settings
|
||||||
|
*
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
protected function addBackoffLogger(BackoffPlugin $plugin, Collection $config)
|
||||||
|
{
|
||||||
|
// The log option can be set to `debug` or an instance of a LogAdapterInterface
|
||||||
|
if ($logger = $config->get(Options::BACKOFF_LOGGER)) {
|
||||||
|
$format = $config->get(Options::BACKOFF_LOGGER_TEMPLATE);
|
||||||
|
if ($logger === 'debug') {
|
||||||
|
$logger = new ClosureLogAdapter(function ($message) {
|
||||||
|
trigger_error($message . "\n");
|
||||||
|
});
|
||||||
|
} elseif (!($logger instanceof LogAdapterInterface)) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
Options::BACKOFF_LOGGER . ' must be set to `debug` or an instance of '
|
||||||
|
. 'Guzzle\\Common\\Log\\LogAdapterInterface'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// Create the plugin responsible for logging exponential backoff retries
|
||||||
|
$logPlugin = new BackoffLogger($logger);
|
||||||
|
// You can specify a custom format or use the default
|
||||||
|
if ($format) {
|
||||||
|
$logPlugin->setTemplate($format);
|
||||||
|
}
|
||||||
|
$plugin->addSubscriber($logPlugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensures that an array (e.g. for config data) is actually in array form
|
||||||
|
*
|
||||||
|
* @param array|Collection $array The array data
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
* @throws InvalidArgumentException if the arg is not an array or Collection
|
||||||
|
*/
|
||||||
|
protected function processArray($array)
|
||||||
|
{
|
||||||
|
if ($array instanceof Collection) {
|
||||||
|
$array = $array->getAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_array($array)) {
|
||||||
|
throw new InvalidArgumentException('The config must be provided as an array or Collection.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $array;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update a configuration object from a service description
|
||||||
|
*
|
||||||
|
* @param Collection $config Config to update
|
||||||
|
*
|
||||||
|
* @return ServiceDescription
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
protected function updateConfigFromDescription(Collection $config)
|
||||||
|
{
|
||||||
|
$description = $config->get(Options::SERVICE_DESCRIPTION);
|
||||||
|
if (!($description instanceof ServiceDescription)) {
|
||||||
|
// Inject the version into the sprintf template if it is a string
|
||||||
|
if (is_string($description)) {
|
||||||
|
$description = sprintf($description, $config->get(Options::VERSION));
|
||||||
|
}
|
||||||
|
$description = ServiceDescription::factory($description);
|
||||||
|
$config->set(Options::SERVICE_DESCRIPTION, $description);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$config->get(Options::SERVICE)) {
|
||||||
|
$config->set(Options::SERVICE, $description->getData('endpointPrefix'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($iterators = $description->getData('iterators')) {
|
||||||
|
$this->setIteratorsConfig($iterators);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure that the service description has regions
|
||||||
|
if (!$description->getData('regions')) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'No regions found in the ' . $description->getData('serviceFullName'). ' description'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure a valid region is set
|
||||||
|
$region = $config->get(Options::REGION);
|
||||||
|
$global = $description->getData('globalEndpoint');
|
||||||
|
if (!$global && !$region) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'A region is required when using ' . $description->getData('serviceFullName')
|
||||||
|
. '. Set "region" to one of: ' . implode(', ', array_keys($description->getData('regions')))
|
||||||
|
);
|
||||||
|
} elseif ($global && (!$region || $description->getData('namespace') !== 'S3')) {
|
||||||
|
$region = Region::US_EAST_1;
|
||||||
|
$config->set(Options::REGION, $region);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$config->get(Options::BASE_URL)) {
|
||||||
|
// Set the base URL using the scheme and hostname of the service's region
|
||||||
|
$config->set(Options::BASE_URL, AbstractClient::getEndpoint(
|
||||||
|
$description,
|
||||||
|
$region,
|
||||||
|
$config->get(Options::SCHEME)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return an appropriate signature object for a a client based on a description
|
||||||
|
*
|
||||||
|
* @param ServiceDescription $description Description that holds a signature option
|
||||||
|
* @param Collection $config Configuration options
|
||||||
|
*
|
||||||
|
* @return SignatureInterface
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
protected function getSignature(ServiceDescription $description, Collection $config)
|
||||||
|
{
|
||||||
|
if (!$signature = $config->get(Options::SIGNATURE)) {
|
||||||
|
switch ($description->getData('signatureVersion')) {
|
||||||
|
case 'v2':
|
||||||
|
$signature = new SignatureV2();
|
||||||
|
break;
|
||||||
|
case 'v3':
|
||||||
|
$signature = new SignatureV3();
|
||||||
|
break;
|
||||||
|
case 'v3https':
|
||||||
|
$signature = new SignatureV3Https();
|
||||||
|
break;
|
||||||
|
case 'v4':
|
||||||
|
$signature = new SignatureV4();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new InvalidArgumentException('Service description does not specify a valid signatureVersion');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow a custom service name or region value to be provided
|
||||||
|
if ($signature instanceof EndpointSignatureInterface) {
|
||||||
|
|
||||||
|
// Determine the service name to use when signing
|
||||||
|
if (!$service = $config->get(Options::SIGNATURE_SERVICE)) {
|
||||||
|
if (!$service = $description->getData('signingName')) {
|
||||||
|
$service = $description->getData('endpointPrefix');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$signature->setServiceName($service);
|
||||||
|
|
||||||
|
// Determine the region to use when signing requests
|
||||||
|
if (!$region = $config->get(Options::SIGNATURE_REGION)) {
|
||||||
|
$region = $config->get(Options::REGION);
|
||||||
|
}
|
||||||
|
$signature->setRegionName($region);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $signature;
|
||||||
|
}
|
||||||
|
}
|
76
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/DefaultClient.php
vendored
Normal file
76
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/DefaultClient.php
vendored
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Aws\Common\Enum\ClientOptions as Options;
|
||||||
|
use Guzzle\Common\Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generic client for interacting with an AWS service
|
||||||
|
*/
|
||||||
|
class DefaultClient extends AbstractClient
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Factory method to create a default client using an array of configuration options.
|
||||||
|
*
|
||||||
|
* The following array keys and values are available options:
|
||||||
|
*
|
||||||
|
* - Credential options (`key`, `secret`, and optional `token` OR `credentials` is required)
|
||||||
|
* - key: AWS Access Key ID
|
||||||
|
* - secret: AWS secret access key
|
||||||
|
* - credentials: You can optionally provide a custom `Aws\Common\Credentials\CredentialsInterface` object
|
||||||
|
* - token: Custom AWS security token to use with request authentication
|
||||||
|
* - token.ttd: UNIX timestamp for when the custom credentials expire
|
||||||
|
* - credentials.cache: Used to cache credentials when using providers that require HTTP requests. Set the true
|
||||||
|
* to use the default APC cache or provide a `Guzzle\Cache\CacheAdapterInterface` object.
|
||||||
|
* - credentials.cache.key: Optional custom cache key to use with the credentials
|
||||||
|
* - credentials.client: Pass this option to specify a custom `Guzzle\Http\ClientInterface` to use if your
|
||||||
|
* credentials require a HTTP request (e.g. RefreshableInstanceProfileCredentials)
|
||||||
|
* - Region and Endpoint options (a `region` and optional `scheme` OR a `base_url` is required)
|
||||||
|
* - region: Region name (e.g. 'us-east-1', 'us-west-1', 'us-west-2', 'eu-west-1', etc...)
|
||||||
|
* - scheme: URI Scheme of the base URL (e.g. 'https', 'http').
|
||||||
|
* - service: Specify the name of the service
|
||||||
|
* - base_url: Instead of using a `region` and `scheme`, you can specify a custom base URL for the client
|
||||||
|
* - Signature options
|
||||||
|
* - signature: You can optionally provide a custom signature implementation used to sign requests
|
||||||
|
* - signature.service: Set to explicitly override the service name used in signatures
|
||||||
|
* - signature.region: Set to explicitly override the region name used in signatures
|
||||||
|
* - Exponential backoff options
|
||||||
|
* - client.backoff.logger: `Guzzle\Log\LogAdapterInterface` object used to log backoff retries. Use
|
||||||
|
* 'debug' to emit PHP warnings when a retry is issued.
|
||||||
|
* - client.backoff.logger.template: Optional template to use for exponential backoff log messages. See
|
||||||
|
* `Guzzle\Plugin\Backoff\BackoffLogger` for formatting information.
|
||||||
|
* - Generic client options
|
||||||
|
* - ssl.certificate_authority: Set to true to use the bundled CA cert (default), system to use the certificate
|
||||||
|
* bundled with your system, or pass the full path to an SSL certificate bundle. This option should be used
|
||||||
|
* when you encounter curl error code 60.
|
||||||
|
* - curl.CURLOPT_VERBOSE: Set to true to output curl debug information during transfers
|
||||||
|
* - curl.*: Prefix any available cURL option with `curl.` to add cURL options to each request.
|
||||||
|
* See: http://www.php.net/manual/en/function.curl-setopt.php
|
||||||
|
*
|
||||||
|
* @param array|Collection $config Client configuration data
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public static function factory($config = array())
|
||||||
|
{
|
||||||
|
return ClientBuilder::factory()
|
||||||
|
->setConfig($config)
|
||||||
|
->setConfigDefaults(array(Options::SCHEME => 'https'))
|
||||||
|
->build();
|
||||||
|
}
|
||||||
|
}
|
80
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/ExpiredCredentialsChecker.php
vendored
Normal file
80
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/ExpiredCredentialsChecker.php
vendored
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\AbstractRefreshableCredentials;
|
||||||
|
use Aws\Common\Client\AwsClientInterface;
|
||||||
|
use Aws\Common\Exception\Parser\ExceptionParserInterface;
|
||||||
|
use Guzzle\Http\Exception\HttpException;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
use Guzzle\Plugin\Backoff\BackoffStrategyInterface;
|
||||||
|
use Guzzle\Plugin\Backoff\AbstractBackoffStrategy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Backoff logic that handles retrying requests when credentials expire
|
||||||
|
*/
|
||||||
|
class ExpiredCredentialsChecker extends AbstractBackoffStrategy
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array Array of known retrying exception codes
|
||||||
|
*/
|
||||||
|
protected $retryable = array(
|
||||||
|
'RequestExpired' => true,
|
||||||
|
'ExpiredTokenException' => true,
|
||||||
|
'ExpiredToken' => true
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var ExceptionParserInterface Exception parser used to parse exception responses
|
||||||
|
*/
|
||||||
|
protected $exceptionParser;
|
||||||
|
|
||||||
|
public function __construct(ExceptionParserInterface $exceptionParser, BackoffStrategyInterface $next = null) {
|
||||||
|
$this->exceptionParser = $exceptionParser;
|
||||||
|
$this->next = $next;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function makesDecision()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
|
||||||
|
{
|
||||||
|
if ($response && $response->isClientError()) {
|
||||||
|
|
||||||
|
$parts = $this->exceptionParser->parse($request, $response);
|
||||||
|
if (!isset($this->retryable[$parts['code']]) || !$request->getClient()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var $client AwsClientInterface */
|
||||||
|
$client = $request->getClient();
|
||||||
|
// Only retry if the credentials can be refreshed
|
||||||
|
if (!($client->getCredentials() instanceof AbstractRefreshableCredentials)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resign the request using new credentials
|
||||||
|
$client->getSignature()->signRequest($request, $client->getCredentials()->setExpiration(-1));
|
||||||
|
|
||||||
|
// Retry immediately with no delay
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
75
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/ThrottlingErrorChecker.php
vendored
Normal file
75
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/ThrottlingErrorChecker.php
vendored
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\Parser\ExceptionParserInterface;
|
||||||
|
use Guzzle\Http\Exception\HttpException;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
use Guzzle\Plugin\Backoff\BackoffStrategyInterface;
|
||||||
|
use Guzzle\Plugin\Backoff\AbstractBackoffStrategy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Backoff logic that handles throttling exceptions from services
|
||||||
|
*/
|
||||||
|
class ThrottlingErrorChecker extends AbstractBackoffStrategy
|
||||||
|
{
|
||||||
|
/** @var array Whitelist of exception codes (as indexes) that indicate throttling */
|
||||||
|
protected static $throttlingExceptions = array(
|
||||||
|
'RequestLimitExceeded' => true,
|
||||||
|
'Throttling' => true,
|
||||||
|
'ThrottlingException' => true,
|
||||||
|
'ProvisionedThroughputExceededException' => true,
|
||||||
|
'RequestThrottled' => true,
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var ExceptionParserInterface Exception parser used to parse exception responses
|
||||||
|
*/
|
||||||
|
protected $exceptionParser;
|
||||||
|
|
||||||
|
public function __construct(ExceptionParserInterface $exceptionParser, BackoffStrategyInterface $next = null)
|
||||||
|
{
|
||||||
|
$this->exceptionParser = $exceptionParser;
|
||||||
|
if ($next) {
|
||||||
|
$this->setNext($next);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function makesDecision()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function getDelay(
|
||||||
|
$retries,
|
||||||
|
RequestInterface $request,
|
||||||
|
Response $response = null,
|
||||||
|
HttpException $e = null
|
||||||
|
) {
|
||||||
|
if ($response && $response->isClientError()) {
|
||||||
|
$parts = $this->exceptionParser->parse($request, $response);
|
||||||
|
return isset(self::$throttlingExceptions[$parts['code']]) ? true : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
93
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/UploadBodyListener.php
vendored
Normal file
93
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/UploadBodyListener.php
vendored
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Guzzle\Common\Event;
|
||||||
|
use Guzzle\Http\EntityBody;
|
||||||
|
use Guzzle\Service\Command\AbstractCommand as Command;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepares the body parameter of a command such that the parameter is more flexible (e.g. accepts file handles) with
|
||||||
|
* the value it accepts but converts it to the correct format for the command. Also looks for a "Filename" parameter.
|
||||||
|
*/
|
||||||
|
class UploadBodyListener implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array The names of the commands of which to modify the body parameter
|
||||||
|
*/
|
||||||
|
protected $commands;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The key for the upload body parameter
|
||||||
|
*/
|
||||||
|
protected $bodyParameter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The key for the source file parameter
|
||||||
|
*/
|
||||||
|
protected $sourceParameter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $commands The commands to modify
|
||||||
|
* @param string $bodyParameter The key for the body parameter
|
||||||
|
* @param string $sourceParameter The key for the source file parameter
|
||||||
|
*/
|
||||||
|
public function __construct(array $commands, $bodyParameter = 'Body', $sourceParameter = 'SourceFile')
|
||||||
|
{
|
||||||
|
$this->commands = $commands;
|
||||||
|
$this->bodyParameter = (string) $bodyParameter;
|
||||||
|
$this->sourceParameter = (string) $sourceParameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array('command.before_prepare' => array('onCommandBeforePrepare'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts filenames and file handles into EntityBody objects before the command is validated
|
||||||
|
*
|
||||||
|
* @param Event $event Event emitted
|
||||||
|
*/
|
||||||
|
public function onCommandBeforePrepare(Event $event)
|
||||||
|
{
|
||||||
|
/** @var $command Command */
|
||||||
|
$command = $event['command'];
|
||||||
|
if (in_array($command->getName(), $this->commands)) {
|
||||||
|
// Get the interesting parameters
|
||||||
|
$source = $command->get($this->sourceParameter);
|
||||||
|
$body = $command->get($this->bodyParameter);
|
||||||
|
|
||||||
|
// If a file path is passed in then get the file handle
|
||||||
|
if (is_string($source) && file_exists($source)) {
|
||||||
|
$body = fopen($source, 'r');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $body) {
|
||||||
|
$body = EntityBody::factory($body);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare the body parameter and remove the source file parameter
|
||||||
|
$command->remove($this->sourceParameter);
|
||||||
|
$command->set($this->bodyParameter, $body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
61
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/UserAgentListener.php
vendored
Normal file
61
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Client/UserAgentListener.php
vendored
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Client;
|
||||||
|
|
||||||
|
use Guzzle\Common\Event;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listener used to append strings to the User-Agent header of a request based
|
||||||
|
* on the `ua.append` option. `ua.append` can contain a string or array of values.
|
||||||
|
*/
|
||||||
|
class UserAgentListener implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string Option used to store User-Agent modifiers
|
||||||
|
*/
|
||||||
|
const OPTION = 'ua.append';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array('command.before_send' => 'onBeforeSend');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds strings to the User-Agent header using the `ua.append` parameter of a command
|
||||||
|
*
|
||||||
|
* @param Event $event Event emitted
|
||||||
|
*/
|
||||||
|
public function onBeforeSend(Event $event)
|
||||||
|
{
|
||||||
|
$command = $event['command'];
|
||||||
|
if ($userAgentAppends = $command->get(self::OPTION)) {
|
||||||
|
$request = $command->getRequest();
|
||||||
|
$userAgent = (string) $request->getHeader('User-Agent');
|
||||||
|
foreach ((array) $userAgentAppends as $append) {
|
||||||
|
$append = ' ' . $append;
|
||||||
|
if (strpos($userAgent, $append) === false) {
|
||||||
|
$userAgent .= $append;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$request->setHeader('User-Agent', $userAgent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
100
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Command/AwsQueryVisitor.php
vendored
Normal file
100
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Command/AwsQueryVisitor.php
vendored
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Aws\Common\Command;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Service\Description\Parameter;
|
||||||
|
use Guzzle\Service\Command\CommandInterface;
|
||||||
|
use Guzzle\Service\Command\LocationVisitor\Request\AbstractRequestVisitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Location visitor used to serialize AWS query parameters (e.g. EC2, SES, SNS, SQS, etc) as POST fields
|
||||||
|
*/
|
||||||
|
class AwsQueryVisitor extends AbstractRequestVisitor
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
|
||||||
|
{
|
||||||
|
$query = array();
|
||||||
|
$this->customResolver($value, $param, $query, $param->getWireName());
|
||||||
|
$request->addPostFields($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map nested parameters into the location_key based parameters
|
||||||
|
*
|
||||||
|
* @param array $value Value to map
|
||||||
|
* @param Parameter $param Parameter that holds information about the current key
|
||||||
|
* @param array $query Built up query string values
|
||||||
|
* @param string $prefix String to prepend to sub query values
|
||||||
|
*/
|
||||||
|
protected function customResolver($value, Parameter $param, array &$query, $prefix = '')
|
||||||
|
{
|
||||||
|
switch ($param->getType()) {
|
||||||
|
case 'object':
|
||||||
|
$this->resolveObject($param, $value, $prefix, $query);
|
||||||
|
break;
|
||||||
|
case 'array':
|
||||||
|
$this->resolveArray($param, $value, $prefix, $query);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$query[$prefix] = $param->filter($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom handling for objects
|
||||||
|
*
|
||||||
|
* @param Parameter $param Parameter for the object
|
||||||
|
* @param array $value Value that is set for this parameter
|
||||||
|
* @param string $prefix Prefix for the resulting key
|
||||||
|
* @param array $query Query string array passed by reference
|
||||||
|
*/
|
||||||
|
protected function resolveObject(Parameter $param, array $value, $prefix, array &$query)
|
||||||
|
{
|
||||||
|
// Maps are implemented using additional properties
|
||||||
|
$hasAdditionalProperties = ($param->getAdditionalProperties() instanceof Parameter);
|
||||||
|
$additionalPropertyCount = 0;
|
||||||
|
|
||||||
|
foreach ($value as $name => $v) {
|
||||||
|
if ($subParam = $param->getProperty($name)) {
|
||||||
|
// if the parameter was found by name as a regular property
|
||||||
|
$key = $prefix . '.' . $subParam->getWireName();
|
||||||
|
$this->customResolver($v, $subParam, $query, $key);
|
||||||
|
} elseif ($hasAdditionalProperties) {
|
||||||
|
// Handle map cases like &Attribute.1.Name=<name>&Attribute.1.Value=<value>
|
||||||
|
$additionalPropertyCount++;
|
||||||
|
$query["{$prefix}.{$additionalPropertyCount}.Name"] = $name;
|
||||||
|
$newPrefix = "{$prefix}.{$additionalPropertyCount}.Value";
|
||||||
|
if (is_array($v)) {
|
||||||
|
$this->customResolver($v, $param->getAdditionalProperties(), $query, $newPrefix);
|
||||||
|
} else {
|
||||||
|
$query[$newPrefix] = $param->filter($v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom handling for arrays
|
||||||
|
*
|
||||||
|
* @param Parameter $param Parameter for the object
|
||||||
|
* @param array $value Value that is set for this parameter
|
||||||
|
* @param string $prefix Prefix for the resulting key
|
||||||
|
* @param array $query Query string array passed by reference
|
||||||
|
*/
|
||||||
|
protected function resolveArray(Parameter $param, array $value, $prefix, array &$query)
|
||||||
|
{
|
||||||
|
$offset = $param->getData('offset') ?: 1;
|
||||||
|
foreach ($value as $index => $v) {
|
||||||
|
$index += $offset;
|
||||||
|
if (is_array($v) && $items = $param->getItems()) {
|
||||||
|
$this->customResolver($v, $items, $query, $prefix . '.' . $index);
|
||||||
|
} else {
|
||||||
|
$query[$prefix . '.' . $index] = $param->filter($v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Command;
|
||||||
|
|
||||||
|
use Guzzle\Service\Command\OperationCommand;
|
||||||
|
use Guzzle\Http\Curl\CurlHandle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds AWS JSON body functionality to dynamically generated HTTP requests
|
||||||
|
*/
|
||||||
|
class JsonCommand extends OperationCommand
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function build()
|
||||||
|
{
|
||||||
|
parent::build();
|
||||||
|
|
||||||
|
// Ensure that the body of the request ALWAYS includes some JSON. By default, this is an empty object.
|
||||||
|
if (!$this->request->getBody()) {
|
||||||
|
$this->request->setBody('{}');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Never send the Expect header when interacting with a JSON query service
|
||||||
|
$this->request->removeHeader('Expect');
|
||||||
|
|
||||||
|
// Always send JSON requests as a raw string rather than using streams to avoid issues with
|
||||||
|
// cURL error code 65: "necessary data rewind wasn't possible".
|
||||||
|
// This could be removed after PHP addresses https://bugs.php.net/bug.php?id=47204
|
||||||
|
$this->request->getCurlOptions()->set(CurlHandle::BODY_AS_STRING, true);
|
||||||
|
}
|
||||||
|
}
|
53
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Command/QueryCommand.php
vendored
Normal file
53
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Command/QueryCommand.php
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Command;
|
||||||
|
|
||||||
|
use Guzzle\Service\Command\OperationCommand;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds AWS Query service serialization
|
||||||
|
*/
|
||||||
|
class QueryCommand extends OperationCommand
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var AwsQueryVisitor
|
||||||
|
*/
|
||||||
|
protected static $queryVisitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var XmlResponseLocationVisitor
|
||||||
|
*/
|
||||||
|
protected static $xmlVisitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the aws.query visitor
|
||||||
|
*/
|
||||||
|
protected function init()
|
||||||
|
{
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
if (!self::$queryVisitor) {
|
||||||
|
self::$queryVisitor = new AwsQueryVisitor();
|
||||||
|
}
|
||||||
|
if (!self::$xmlVisitor) {
|
||||||
|
self::$xmlVisitor = new XmlResponseLocationVisitor();
|
||||||
|
}
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
|
|
||||||
|
$this->getRequestSerializer()->addVisitor('aws.query', self::$queryVisitor);
|
||||||
|
$this->getResponseParser()->addVisitor('xml', self::$xmlVisitor);
|
||||||
|
}
|
||||||
|
}
|
74
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Command/XmlResponseLocationVisitor.php
vendored
Normal file
74
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Command/XmlResponseLocationVisitor.php
vendored
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Aws\Common\Command;
|
||||||
|
|
||||||
|
use Guzzle\Service\Description\Operation;
|
||||||
|
use Guzzle\Service\Command\CommandInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
use Guzzle\Service\Description\Parameter;
|
||||||
|
use Guzzle\Service\Command\LocationVisitor\Response\XmlVisitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class used for custom AWS XML response parsing of query services
|
||||||
|
*/
|
||||||
|
class XmlResponseLocationVisitor extends XmlVisitor
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function before(CommandInterface $command, array &$result)
|
||||||
|
{
|
||||||
|
parent::before($command, $result);
|
||||||
|
|
||||||
|
// Unwrapped wrapped responses
|
||||||
|
$operation = $command->getOperation();
|
||||||
|
if ($operation->getServiceDescription()->getData('resultWrapped')) {
|
||||||
|
$wrappingNode = $operation->getName() . 'Result';
|
||||||
|
if (isset($result[$wrappingNode])) {
|
||||||
|
$result = $result[$wrappingNode] + $result;
|
||||||
|
unset($result[$wrappingNode]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accounts for wrapper nodes
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function visit(
|
||||||
|
CommandInterface $command,
|
||||||
|
Response $response,
|
||||||
|
Parameter $param,
|
||||||
|
&$value,
|
||||||
|
$context = null
|
||||||
|
) {
|
||||||
|
parent::visit($command, $response, $param, $value, $context);
|
||||||
|
|
||||||
|
// Account for wrapper nodes (e.g. RDS, ElastiCache, etc)
|
||||||
|
if ($param->getData('wrapper')) {
|
||||||
|
$wireName = $param->getWireName();
|
||||||
|
$value += $value[$wireName];
|
||||||
|
unset($value[$wireName]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter used when converting XML maps into associative arrays in service descriptions
|
||||||
|
*
|
||||||
|
* @param array $value Value to filter
|
||||||
|
* @param string $entryName Name of each entry
|
||||||
|
* @param string $keyName Name of each key
|
||||||
|
* @param string $valueName Name of each value
|
||||||
|
*
|
||||||
|
* @return array Returns the map of the XML data
|
||||||
|
*/
|
||||||
|
public static function xmlMap($value, $entryName, $keyName, $valueName)
|
||||||
|
{
|
||||||
|
$result = array();
|
||||||
|
foreach ($value as $entry) {
|
||||||
|
$result[$entry[$keyName]] = $entry[$valueName];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
}
|
136
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/AbstractCredentialsDecorator.php
vendored
Normal file
136
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/AbstractCredentialsDecorator.php
vendored
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract credentials decorator
|
||||||
|
*/
|
||||||
|
class AbstractCredentialsDecorator implements CredentialsInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var CredentialsInterface Wrapped credentials object
|
||||||
|
*/
|
||||||
|
protected $credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new BasicAWSCredentials object, with the specified AWS
|
||||||
|
* access key and AWS secret key
|
||||||
|
*
|
||||||
|
* @param CredentialsInterface $credentials
|
||||||
|
*/
|
||||||
|
public function __construct(CredentialsInterface $credentials)
|
||||||
|
{
|
||||||
|
$this->credentials = $credentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function serialize()
|
||||||
|
{
|
||||||
|
return $this->credentials->serialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function unserialize($serialized)
|
||||||
|
{
|
||||||
|
$this->credentials = new Credentials('', '');
|
||||||
|
$this->credentials->unserialize($serialized);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getAccessKeyId()
|
||||||
|
{
|
||||||
|
return $this->credentials->getAccessKeyId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSecretKey()
|
||||||
|
{
|
||||||
|
return $this->credentials->getSecretKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSecurityToken()
|
||||||
|
{
|
||||||
|
return $this->credentials->getSecurityToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getExpiration()
|
||||||
|
{
|
||||||
|
return $this->credentials->getExpiration();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function isExpired()
|
||||||
|
{
|
||||||
|
return $this->credentials->isExpired();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setAccessKeyId($key)
|
||||||
|
{
|
||||||
|
$this->credentials->setAccessKeyId($key);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setSecretKey($secret)
|
||||||
|
{
|
||||||
|
$this->credentials->setSecretKey($secret);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setSecurityToken($token)
|
||||||
|
{
|
||||||
|
$this->credentials->setSecurityToken($token);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setExpiration($timestamp)
|
||||||
|
{
|
||||||
|
$this->credentials->setExpiration($timestamp);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract decorator to provide a foundation for refreshable credentials
|
||||||
|
*/
|
||||||
|
abstract class AbstractRefreshableCredentials extends AbstractCredentialsDecorator
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getAccessKeyId()
|
||||||
|
{
|
||||||
|
if ($this->credentials->isExpired()) {
|
||||||
|
$this->refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->credentials->getAccessKeyId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSecretKey()
|
||||||
|
{
|
||||||
|
if ($this->credentials->isExpired()) {
|
||||||
|
$this->refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->credentials->getSecretKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSecurityToken()
|
||||||
|
{
|
||||||
|
if ($this->credentials->isExpired()) {
|
||||||
|
$this->refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->credentials->getSecurityToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function serialize()
|
||||||
|
{
|
||||||
|
if ($this->credentials->isExpired()) {
|
||||||
|
$this->refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->credentials->serialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempt to get new credentials
|
||||||
|
*/
|
||||||
|
abstract protected function refresh();
|
||||||
|
}
|
73
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/CacheableCredentials.php
vendored
Normal file
73
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/CacheableCredentials.php
vendored
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Credentials;
|
||||||
|
|
||||||
|
use Guzzle\Cache\CacheAdapterInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Credentials decorator used to implement caching credentials
|
||||||
|
*/
|
||||||
|
class CacheableCredentials extends AbstractRefreshableCredentials
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var CacheAdapterInterface Cache adapter used to store credentials
|
||||||
|
*/
|
||||||
|
protected $cache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Cache key used to store the credentials
|
||||||
|
*/
|
||||||
|
protected $cacheKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CacheableCredentials is a decorator that decorates other credentials
|
||||||
|
*
|
||||||
|
* @param CredentialsInterface $credentials Credentials to adapt
|
||||||
|
* @param CacheAdapterInterface $cache Cache to use to store credentials
|
||||||
|
* @param string $cacheKey Cache key of the credentials
|
||||||
|
*/
|
||||||
|
public function __construct(CredentialsInterface $credentials, CacheAdapterInterface $cache, $cacheKey)
|
||||||
|
{
|
||||||
|
$this->credentials = $credentials;
|
||||||
|
$this->cache = $cache;
|
||||||
|
$this->cacheKey = $cacheKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempt to get new credentials from cache or from the adapted object
|
||||||
|
*/
|
||||||
|
protected function refresh()
|
||||||
|
{
|
||||||
|
if (!$cache = $this->cache->fetch($this->cacheKey)) {
|
||||||
|
// The credentials were not found, so try again and cache if new
|
||||||
|
$this->credentials->getAccessKeyId();
|
||||||
|
if (!$this->credentials->isExpired()) {
|
||||||
|
// The credentials were updated, so cache them
|
||||||
|
$this->cache->save($this->cacheKey, $this->credentials, $this->credentials->getExpiration() - time());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// The credentials were found in cache, so update the adapter object
|
||||||
|
// if the cached credentials are not expired
|
||||||
|
if (!$cache->isExpired()) {
|
||||||
|
$this->credentials->setAccessKeyId($cache->getAccessKeyId());
|
||||||
|
$this->credentials->setSecretKey($cache->getSecretKey());
|
||||||
|
$this->credentials->setSecurityToken($cache->getSecurityToken());
|
||||||
|
$this->credentials->setExpiration($cache->getExpiration());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
276
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/Credentials.php
vendored
Normal file
276
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/Credentials.php
vendored
Normal file
|
@ -0,0 +1,276 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Credentials;
|
||||||
|
|
||||||
|
use Aws\Common\Enum\ClientOptions as Options;
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Aws\Common\Exception\RequiredExtensionNotLoadedException;
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
use Guzzle\Http\ClientInterface;
|
||||||
|
use Guzzle\Common\FromConfigInterface;
|
||||||
|
use Guzzle\Cache\CacheAdapterInterface;
|
||||||
|
use Guzzle\Cache\DoctrineCacheAdapter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basic implementation of the AWSCredentials interface that allows callers to
|
||||||
|
* pass in the AWS access key and secret access in the constructor.
|
||||||
|
*/
|
||||||
|
class Credentials implements CredentialsInterface, FromConfigInterface
|
||||||
|
{
|
||||||
|
const ENV_KEY = 'AWS_ACCESS_KEY_ID';
|
||||||
|
const ENV_SECRET = 'AWS_SECRET_KEY';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string AWS Access key ID
|
||||||
|
*/
|
||||||
|
protected $key;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string AWS Secret access key
|
||||||
|
*/
|
||||||
|
protected $secret;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Security token
|
||||||
|
*/
|
||||||
|
protected $token;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int Time to die of token
|
||||||
|
*/
|
||||||
|
protected $ttd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the available keys for the factory method
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getConfigDefaults()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
Options::KEY => null,
|
||||||
|
Options::SECRET => null,
|
||||||
|
Options::TOKEN => null,
|
||||||
|
Options::TOKEN_TTD => null,
|
||||||
|
Options::CREDENTIALS_CACHE => null,
|
||||||
|
Options::CREDENTIALS_CACHE_KEY => null,
|
||||||
|
Options::CREDENTIALS_CLIENT => null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory method for creating new credentials. This factory method will
|
||||||
|
* create the appropriate credentials object with appropriate decorators
|
||||||
|
* based on the passed configuration options.
|
||||||
|
*
|
||||||
|
* @param array $config Options to use when instantiating the credentials
|
||||||
|
*
|
||||||
|
* @return CredentialsInterface
|
||||||
|
* @throws InvalidArgumentException If the caching options are invalid
|
||||||
|
* @throws RuntimeException If using the default cache and APC is disabled
|
||||||
|
*/
|
||||||
|
public static function factory($config = array())
|
||||||
|
{
|
||||||
|
// Add default key values
|
||||||
|
foreach (self::getConfigDefaults() as $key => $value) {
|
||||||
|
if (!isset($config[$key])) {
|
||||||
|
$config[$key] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start tracking the cache key
|
||||||
|
$cacheKey = $config[Options::CREDENTIALS_CACHE_KEY];
|
||||||
|
|
||||||
|
// Create the credentials object
|
||||||
|
if (!$config[Options::KEY] || !$config[Options::SECRET]) {
|
||||||
|
// No keys were provided, so attempt to retrieve some from the environment
|
||||||
|
$envKey = isset($_SERVER[self::ENV_KEY]) ? $_SERVER[self::ENV_KEY] : getenv(self::ENV_KEY);
|
||||||
|
$envSecret = isset($_SERVER[self::ENV_SECRET]) ? $_SERVER[self::ENV_SECRET] : getenv(self::ENV_SECRET);
|
||||||
|
if ($envKey && $envSecret) {
|
||||||
|
// Use credentials set in the environment variables
|
||||||
|
$credentials = new static($envKey, $envSecret);
|
||||||
|
} else {
|
||||||
|
// Use instance profile credentials (available on EC2 instances)
|
||||||
|
$credentials = new RefreshableInstanceProfileCredentials(
|
||||||
|
new static('', '', '', 1),
|
||||||
|
$config[Options::CREDENTIALS_CLIENT]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// If no cache key was set, use the crc32 hostname of the server
|
||||||
|
$cacheKey = $cacheKey ?: 'credentials_' . crc32(gethostname());
|
||||||
|
} else {
|
||||||
|
// Instantiate using short or long term credentials
|
||||||
|
$credentials = new static(
|
||||||
|
$config[Options::KEY],
|
||||||
|
$config[Options::SECRET],
|
||||||
|
$config[Options::TOKEN],
|
||||||
|
$config[Options::TOKEN_TTD]
|
||||||
|
);
|
||||||
|
// If no cache key was set, use the access key ID
|
||||||
|
$cacheKey = $cacheKey ?: 'credentials_' . $config[Options::KEY];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the credentials are refreshable, and if so, configure caching
|
||||||
|
$cache = $config[Options::CREDENTIALS_CACHE];
|
||||||
|
if ($cacheKey && $cache) {
|
||||||
|
if ($cache === 'true' || $cache === true) {
|
||||||
|
// If no cache adapter was provided, then create one for the user
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
if (!extension_loaded('apc')) {
|
||||||
|
throw new RequiredExtensionNotLoadedException('PHP has not been compiled with APC. Unable to cache '
|
||||||
|
. 'the credentials.');
|
||||||
|
} elseif (!class_exists('Doctrine\Common\Cache\ApcCache')) {
|
||||||
|
throw new RuntimeException(
|
||||||
|
'Cannot set ' . Options::CREDENTIALS_CACHE . ' to true because the Doctrine cache component is '
|
||||||
|
. 'not installed. Either install doctrine/cache or pass in an instantiated '
|
||||||
|
. 'Guzzle\Cache\CacheAdapterInterface object'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
|
$cache = new DoctrineCacheAdapter(new \Doctrine\Common\Cache\ApcCache());
|
||||||
|
} elseif (!($cache instanceof CacheAdapterInterface)) {
|
||||||
|
throw new InvalidArgumentException('Unable to utilize caching with the specified options');
|
||||||
|
}
|
||||||
|
// Decorate the credentials with a cache
|
||||||
|
$credentials = new CacheableCredentials($credentials, $cache, $cacheKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $credentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new BasicAWSCredentials object, with the specified AWS
|
||||||
|
* access key and AWS secret key
|
||||||
|
*
|
||||||
|
* @param string $accessKeyId AWS access key ID
|
||||||
|
* @param string $secretAccessKey AWS secret access key
|
||||||
|
* @param string $token Security token to use
|
||||||
|
* @param int $expiration UNIX timestamp for when credentials expire
|
||||||
|
*/
|
||||||
|
public function __construct($accessKeyId, $secretAccessKey, $token = null, $expiration = null)
|
||||||
|
{
|
||||||
|
$this->key = trim($accessKeyId);
|
||||||
|
$this->secret = trim($secretAccessKey);
|
||||||
|
$this->token = $token;
|
||||||
|
$this->ttd = $expiration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function serialize()
|
||||||
|
{
|
||||||
|
return json_encode(array(
|
||||||
|
Options::KEY => $this->key,
|
||||||
|
Options::SECRET => $this->secret,
|
||||||
|
Options::TOKEN => $this->token,
|
||||||
|
Options::TOKEN_TTD => $this->ttd
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function unserialize($serialized)
|
||||||
|
{
|
||||||
|
$data = json_decode($serialized, true);
|
||||||
|
$this->key = $data[Options::KEY];
|
||||||
|
$this->secret = $data[Options::SECRET];
|
||||||
|
$this->token = $data[Options::TOKEN];
|
||||||
|
$this->ttd = $data[Options::TOKEN_TTD];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getAccessKeyId()
|
||||||
|
{
|
||||||
|
return $this->key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSecretKey()
|
||||||
|
{
|
||||||
|
return $this->secret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getSecurityToken()
|
||||||
|
{
|
||||||
|
return $this->token;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getExpiration()
|
||||||
|
{
|
||||||
|
return $this->ttd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function isExpired()
|
||||||
|
{
|
||||||
|
return $this->ttd !== null && time() >= $this->ttd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setAccessKeyId($key)
|
||||||
|
{
|
||||||
|
$this->key = $key;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setSecretKey($secret)
|
||||||
|
{
|
||||||
|
$this->secret = $secret;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setSecurityToken($token)
|
||||||
|
{
|
||||||
|
$this->token = $token;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setExpiration($timestamp)
|
||||||
|
{
|
||||||
|
$this->ttd = $timestamp;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
96
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/CredentialsInterface.php
vendored
Normal file
96
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Credentials/CredentialsInterface.php
vendored
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides access to the AWS credentials used for accessing AWS services: AWS
|
||||||
|
* access key ID, secret access key, and security token. These credentials are
|
||||||
|
* used to securely sign requests to AWS services.
|
||||||
|
*/
|
||||||
|
interface CredentialsInterface extends \Serializable
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns the AWS access key ID for this credentials object.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getAccessKeyId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the AWS secret access key for this credentials object.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getSecretKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the associated security token if available
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getSecurityToken();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the UNIX timestamp in which the credentials will expire
|
||||||
|
*
|
||||||
|
* @return int|null
|
||||||
|
*/
|
||||||
|
public function getExpiration();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the AWS access key ID for this credentials object.
|
||||||
|
*
|
||||||
|
* @param string $key AWS access key ID
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setAccessKeyId($key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the AWS secret access key for this credentials object.
|
||||||
|
*
|
||||||
|
* @param string $secret AWS secret access key
|
||||||
|
*
|
||||||
|
* @return CredentialsInterface
|
||||||
|
*/
|
||||||
|
public function setSecretKey($secret);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the security token to use with this credentials object
|
||||||
|
*
|
||||||
|
* @param string $token Security token
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setSecurityToken($token);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the UNIX timestamp in which the credentials will expire
|
||||||
|
*
|
||||||
|
* @param int $timestamp UNIX timestamp expiration
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setExpiration($timestamp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the credentials are expired
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isExpired();
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Credentials;
|
||||||
|
|
||||||
|
use Aws\Common\InstanceMetadata\InstanceMetadataClient;
|
||||||
|
use Aws\Common\Exception\InstanceProfileCredentialsException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Credentials decorator used to implement retrieving credentials from the
|
||||||
|
* EC2 metadata server
|
||||||
|
*/
|
||||||
|
class RefreshableInstanceProfileCredentials extends AbstractRefreshableCredentials
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var InstanceMetadataClient
|
||||||
|
*/
|
||||||
|
protected $client;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new instance profile credentials decorator
|
||||||
|
*
|
||||||
|
* @param CredentialsInterface $credentials Credentials to adapt
|
||||||
|
* @param InstanceMetadataClient $client Client used to get new credentials
|
||||||
|
*/
|
||||||
|
public function __construct(CredentialsInterface $credentials, InstanceMetadataClient $client = null)
|
||||||
|
{
|
||||||
|
$this->credentials = $credentials;
|
||||||
|
$this->client = $client ?: InstanceMetadataClient::factory();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempt to get new credentials from the instance profile
|
||||||
|
*
|
||||||
|
* @throws InstanceProfileCredentialsException On error
|
||||||
|
*/
|
||||||
|
protected function refresh()
|
||||||
|
{
|
||||||
|
$credentials = $this->client->getInstanceProfileCredentials();
|
||||||
|
// Expire the token 1 minute before it actually expires to pre-fetch before expiring
|
||||||
|
$this->credentials->setAccessKeyId($credentials->getAccessKeyId())
|
||||||
|
->setSecretKey($credentials->getSecretKey())
|
||||||
|
->setSecurityToken($credentials->getSecurityToken())
|
||||||
|
->setExpiration($credentials->getExpiration());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an enumerable set of values
|
||||||
|
*/
|
||||||
|
abstract class Enum
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array A cache of all enum values to increase performance
|
||||||
|
*/
|
||||||
|
protected static $cache = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the names (or keys) of all of constants in the enum
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function keys()
|
||||||
|
{
|
||||||
|
return array_keys(static::values());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the names and values of all the constants in the enum
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function values()
|
||||||
|
{
|
||||||
|
$class = get_called_class();
|
||||||
|
|
||||||
|
if (!isset(self::$cache[$class])) {
|
||||||
|
$reflected = new \ReflectionClass($class);
|
||||||
|
self::$cache[$class] = $reflected->getConstants();
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$cache[$class];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,146 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable default factory options that can be passed to a client's factory method
|
||||||
|
*/
|
||||||
|
class ClientOptions extends Enum
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string AWS Access Key ID
|
||||||
|
*/
|
||||||
|
const KEY = 'key';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string AWS secret access key
|
||||||
|
*/
|
||||||
|
const SECRET = 'secret';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string You can optionally provide a custom `Aws\Common\Credentials\CredentialsInterface` object
|
||||||
|
*/
|
||||||
|
const CREDENTIALS = 'credentials';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Custom AWS security token to use with request authentication
|
||||||
|
*/
|
||||||
|
const TOKEN = 'token';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string UNIX timestamp for when the custom credentials expire
|
||||||
|
*/
|
||||||
|
const TOKEN_TTD = 'token.ttd';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Used to cache credentials when using providers that require HTTP requests. Set the trueto use the
|
||||||
|
* default APC cache or provide a `Guzzle\Cache\CacheAdapterInterface` object.
|
||||||
|
*/
|
||||||
|
const CREDENTIALS_CACHE = 'credentials.cache';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Optional custom cache key to use with the credentials
|
||||||
|
*/
|
||||||
|
const CREDENTIALS_CACHE_KEY = 'credentials.cache.key';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Pass this option to specify a custom `Guzzle\Http\ClientInterface` to use if your credentials require
|
||||||
|
* a HTTP request (e.g. RefreshableInstanceProfileCredentials)
|
||||||
|
*/
|
||||||
|
const CREDENTIALS_CLIENT = 'credentials.client';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Region name (e.g. 'us-east-1', 'us-west-1', 'us-west-2', 'eu-west-1', etc...)
|
||||||
|
*/
|
||||||
|
const REGION = 'region';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string URI Scheme of the base URL (e.g. 'https', 'http').
|
||||||
|
*/
|
||||||
|
const SCHEME = 'scheme';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Specify the name of the service
|
||||||
|
*/
|
||||||
|
const SERVICE = 'service';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Instead of using a `region` and `scheme`, you can specify a custom base URL for the client
|
||||||
|
*/
|
||||||
|
const BASE_URL = 'base_url';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string You can optionally provide a custom signature implementation used to sign requests
|
||||||
|
*/
|
||||||
|
const SIGNATURE = 'signature';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Set to explicitly override the service name used in signatures
|
||||||
|
*/
|
||||||
|
const SIGNATURE_SERVICE = 'signature.service';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Set to explicitly override the region name used in signatures
|
||||||
|
*/
|
||||||
|
const SIGNATURE_REGION = 'signature.region';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Option key holding an exponential backoff plugin
|
||||||
|
*/
|
||||||
|
const BACKOFF = 'client.backoff';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string `Guzzle\Log\LogAdapterInterface` object used to log backoff retries. Use 'debug' to emit PHP
|
||||||
|
* warnings when a retry is issued.
|
||||||
|
*/
|
||||||
|
const BACKOFF_LOGGER = 'client.backoff.logger';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Optional template to use for exponential backoff log messages. See
|
||||||
|
* `Guzzle\Plugin\Backoff\BackoffLogger` for formatting information.
|
||||||
|
*/
|
||||||
|
const BACKOFF_LOGGER_TEMPLATE = 'client.backoff.logger.template';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Set to true to use the bundled CA cert or pass the full path to an SSL certificate bundle. This
|
||||||
|
* option should be modified when you encounter curl error code 60. Set to "system" to use the cacert
|
||||||
|
* bundle on your system.
|
||||||
|
*/
|
||||||
|
const SSL_CERT = 'ssl.certificate_authority';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Service description to use with the client
|
||||||
|
*/
|
||||||
|
const SERVICE_DESCRIPTION = 'service.description';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Whether or not modeled responses have transformations applied to them
|
||||||
|
*/
|
||||||
|
const MODEL_PROCESSING = 'command.model_processing';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool Set to false to disable validation
|
||||||
|
*/
|
||||||
|
const VALIDATION = 'validation';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string API version used by the client
|
||||||
|
*/
|
||||||
|
const VERSION = 'version';
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable date format values used in the SDK
|
||||||
|
*/
|
||||||
|
class DateFormat extends Enum
|
||||||
|
{
|
||||||
|
const ISO8601 = 'Ymd\THis\Z';
|
||||||
|
const ISO8601_S3 = 'Y-m-d\TH:i:s\Z';
|
||||||
|
const RFC1123 = 'D, d M Y H:i:s \G\M\T';
|
||||||
|
const RFC2822 = \DateTime::RFC2822;
|
||||||
|
const SHORT = 'Ymd';
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable region code values. These should be useful in most cases,
|
||||||
|
* with Amazon S3 being the most notable exception
|
||||||
|
*
|
||||||
|
* @link http://docs.amazonwebservices.com/general/latest/gr/rande.html AWS Regions and Endpoints
|
||||||
|
*/
|
||||||
|
class Region extends Enum
|
||||||
|
{
|
||||||
|
const US_EAST_1 = 'us-east-1';
|
||||||
|
const VIRGINIA = 'us-east-1';
|
||||||
|
const NORTHERN_VIRGINIA = 'us-east-1';
|
||||||
|
|
||||||
|
const US_WEST_1 = 'us-west-1';
|
||||||
|
const CALIFORNIA = 'us-west-1';
|
||||||
|
const NORTHERN_CALIFORNIA = 'us-west-1';
|
||||||
|
|
||||||
|
const US_WEST_2 = 'us-west-2';
|
||||||
|
const OREGON = 'us-west-2';
|
||||||
|
|
||||||
|
const EU_WEST_1 = 'eu-west-1';
|
||||||
|
const IRELAND = 'eu-west-1';
|
||||||
|
|
||||||
|
const AP_SOUTHEAST_1 = 'ap-southeast-1';
|
||||||
|
const SINGAPORE = 'ap-southeast-1';
|
||||||
|
|
||||||
|
const AP_SOUTHEAST_2 = 'ap-southeast-2';
|
||||||
|
const SYDNEY = 'ap-southeast-2';
|
||||||
|
|
||||||
|
const AP_NORTHEAST_1 = 'ap-northeast-1';
|
||||||
|
const TOKYO = 'ap-northeast-1';
|
||||||
|
|
||||||
|
const SA_EAST_1 = 'sa-east-1';
|
||||||
|
const SAO_PAULO = 'sa-east-1';
|
||||||
|
|
||||||
|
const US_GOV_WEST_1 = 'us-gov-west-1';
|
||||||
|
const GOV_CLOUD_US = 'us-gov-west-1';
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable byte-size values
|
||||||
|
*/
|
||||||
|
class Size extends Enum
|
||||||
|
{
|
||||||
|
const B = 1;
|
||||||
|
const BYTE = 1;
|
||||||
|
const BYTES = 1;
|
||||||
|
|
||||||
|
const KB = 1024;
|
||||||
|
const KILOBYTE = 1024;
|
||||||
|
const KILOBYTES = 1024;
|
||||||
|
|
||||||
|
const MB = 1048576;
|
||||||
|
const MEGABYTE = 1048576;
|
||||||
|
const MEGABYTES = 1048576;
|
||||||
|
|
||||||
|
const GB = 1073741824;
|
||||||
|
const GIGABYTE = 1073741824;
|
||||||
|
const GIGABYTES = 1073741824;
|
||||||
|
|
||||||
|
const TB = 1099511627776;
|
||||||
|
const TERABYTE = 1099511627776;
|
||||||
|
const TERABYTES = 1099511627776;
|
||||||
|
|
||||||
|
const PB = 1125899906842624;
|
||||||
|
const PETABYTE = 1125899906842624;
|
||||||
|
const PETABYTES = 1125899906842624;
|
||||||
|
|
||||||
|
const EB = 1152921504606846976;
|
||||||
|
const EXABYTE = 1152921504606846976;
|
||||||
|
const EXABYTES = 1152921504606846976;
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable time values
|
||||||
|
*/
|
||||||
|
class Time extends Enum
|
||||||
|
{
|
||||||
|
const SECOND = 1;
|
||||||
|
const SECONDS = 1;
|
||||||
|
|
||||||
|
const MINUTE = 60;
|
||||||
|
const MINUTES = 60;
|
||||||
|
|
||||||
|
const HOUR = 3600;
|
||||||
|
const HOURS = 3600;
|
||||||
|
|
||||||
|
const DAY = 86400;
|
||||||
|
const DAYS = 86400;
|
||||||
|
|
||||||
|
const WEEK = 604800;
|
||||||
|
const WEEKS = 604800;
|
||||||
|
|
||||||
|
const MONTH = 2592000;
|
||||||
|
const MONTHS = 2592000;
|
||||||
|
|
||||||
|
const YEAR = 31557600;
|
||||||
|
const YEARS = 31557600;
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User-Agent header strings for various high level operations
|
||||||
|
*/
|
||||||
|
class UaString extends Enum
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string Name of the option used to add to the UA string
|
||||||
|
*/
|
||||||
|
const OPTION = 'ua.append';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Resource iterator
|
||||||
|
*/
|
||||||
|
const ITERATOR = 'ITR';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Resource waiter
|
||||||
|
*/
|
||||||
|
const WAITER = 'WTR';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Session handlers (e.g. Amazon DynamoDB session handler)
|
||||||
|
*/
|
||||||
|
const SESSION = 'SES';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Multipart upload helper for Amazon S3
|
||||||
|
*/
|
||||||
|
const MULTIPART_UPLOAD = 'MUP';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Command executed during a batch transfer
|
||||||
|
*/
|
||||||
|
const BATCH = 'BAT';
|
||||||
|
}
|
30
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/AwsExceptionInterface.php
vendored
Normal file
30
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/AwsExceptionInterface.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* "Marker Interface" implemented by every exception in the AWS SDK
|
||||||
|
*/
|
||||||
|
interface AwsExceptionInterface
|
||||||
|
{
|
||||||
|
public function getCode();
|
||||||
|
public function getLine();
|
||||||
|
public function getFile();
|
||||||
|
public function getMessage();
|
||||||
|
public function getPrevious();
|
||||||
|
public function getTrace();
|
||||||
|
}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/BadMethodCallException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/BadMethodCallException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL BadMethodCallException.
|
||||||
|
*/
|
||||||
|
class BadMethodCallException extends \BadMethodCallException implements AwsExceptionInterface {}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/DomainException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/DomainException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL DomainException.
|
||||||
|
*/
|
||||||
|
class DomainException extends \DomainException implements AwsExceptionInterface {}
|
36
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/ExceptionFactoryInterface.php
vendored
Normal file
36
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/ExceptionFactoryInterface.php
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface used to create AWS exception
|
||||||
|
*/
|
||||||
|
interface ExceptionFactoryInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns an AWS service specific exception
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request Unsuccessful request
|
||||||
|
* @param Response $response Unsuccessful response that was encountered
|
||||||
|
*
|
||||||
|
* @return \Exception|AwsExceptionInterface
|
||||||
|
*/
|
||||||
|
public function fromResponse(RequestInterface $request, Response $response);
|
||||||
|
}
|
59
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/ExceptionListener.php
vendored
Normal file
59
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/ExceptionListener.php
vendored
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
use Guzzle\Common\Event;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts generic Guzzle response exceptions into AWS specific exceptions
|
||||||
|
*/
|
||||||
|
class ExceptionListener implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var ExceptionFactoryInterface Factory used to create new exceptions
|
||||||
|
*/
|
||||||
|
protected $factory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ExceptionFactoryInterface $factory Factory used to create exceptions
|
||||||
|
*/
|
||||||
|
public function __construct(ExceptionFactoryInterface $factory)
|
||||||
|
{
|
||||||
|
$this->factory = $factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array('request.error' => array('onRequestError', -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Throws a more meaningful request exception if available
|
||||||
|
*
|
||||||
|
* @param Event $event Event emitted
|
||||||
|
*/
|
||||||
|
public function onRequestError(Event $event)
|
||||||
|
{
|
||||||
|
$e = $this->factory->fromResponse($event['request'], $event['response']);
|
||||||
|
$event->stopPropagation();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception thrown when an error occurs with instance profile credentials
|
||||||
|
*/
|
||||||
|
class InstanceProfileCredentialsException extends RuntimeException
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $statusCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the error response code received from the instance metadata
|
||||||
|
*
|
||||||
|
* @param string $code Response code
|
||||||
|
*/
|
||||||
|
public function setStatusCode($code)
|
||||||
|
{
|
||||||
|
$this->statusCode = $code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the error response code from the service
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getStatusCode()
|
||||||
|
{
|
||||||
|
return $this->statusCode;
|
||||||
|
}
|
||||||
|
}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/InvalidArgumentException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/InvalidArgumentException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL InvalidArgumentException.
|
||||||
|
*/
|
||||||
|
class InvalidArgumentException extends \InvalidArgumentException implements AwsExceptionInterface {}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/LogicException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/LogicException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL LogicException.
|
||||||
|
*/
|
||||||
|
class LogicException extends \LogicException implements AwsExceptionInterface {}
|
55
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/MultipartUploadException.php
vendored
Normal file
55
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/MultipartUploadException.php
vendored
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
use Aws\Common\Model\MultipartUpload\TransferStateInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Thrown when a {@see Aws\Common\MultipartUpload\TransferInterface} object encounters an error during transfer
|
||||||
|
*/
|
||||||
|
class MultipartUploadException extends RuntimeException
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var TransferStateInterface State of the transfer when the error was encountered
|
||||||
|
*/
|
||||||
|
protected $state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param TransferStateInterface $state Transfer state
|
||||||
|
* @param \Exception $exception Last encountered exception
|
||||||
|
*/
|
||||||
|
public function __construct(TransferStateInterface $state, \Exception $exception = null)
|
||||||
|
{
|
||||||
|
parent::__construct(
|
||||||
|
'An error was encountered while performing a multipart upload: ' . $exception->getMessage(),
|
||||||
|
0,
|
||||||
|
$exception
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->state = $state;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the state of the transfer
|
||||||
|
*
|
||||||
|
* @return TransferStateInterface
|
||||||
|
*/
|
||||||
|
public function getState()
|
||||||
|
{
|
||||||
|
return $this->state;
|
||||||
|
}
|
||||||
|
}
|
103
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/NamespaceExceptionFactory.php
vendored
Normal file
103
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/NamespaceExceptionFactory.php
vendored
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\Parser\ExceptionParserInterface;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to create exceptions by inferring the name from the code and a base
|
||||||
|
* namespace that contains exceptions. Exception classes are expected to be in
|
||||||
|
* upper camelCase and always end in 'Exception'. 'Exception' will be appended
|
||||||
|
* if it is not present in the exception code.
|
||||||
|
*/
|
||||||
|
class NamespaceExceptionFactory implements ExceptionFactoryInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var ExceptionParserInterface $parser Parser used to parse responses
|
||||||
|
*/
|
||||||
|
protected $parser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Base namespace containing exception classes
|
||||||
|
*/
|
||||||
|
protected $baseNamespace;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Default class to instantiate if a match is not found
|
||||||
|
*/
|
||||||
|
protected $defaultException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ExceptionParserInterface $parser Parser used to parse exceptions
|
||||||
|
* @param string $baseNamespace Namespace containing exceptions
|
||||||
|
* @param string $defaultException Default class to use if one is not mapped
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
ExceptionParserInterface $parser,
|
||||||
|
$baseNamespace,
|
||||||
|
$defaultException = 'Aws\Common\Exception\ServiceResponseException'
|
||||||
|
) {
|
||||||
|
$this->parser = $parser;
|
||||||
|
$this->baseNamespace = $baseNamespace;
|
||||||
|
$this->defaultException = $defaultException;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function fromResponse(RequestInterface $request, Response $response)
|
||||||
|
{
|
||||||
|
$parts = $this->parser->parse($request, $response);
|
||||||
|
|
||||||
|
// Removing leading 'AWS.' and embedded periods
|
||||||
|
$className = $this->baseNamespace . '\\' . str_replace(array('AWS.', '.'), '', $parts['code']);
|
||||||
|
if (substr($className, -9) !== 'Exception') {
|
||||||
|
$className .= 'Exception';
|
||||||
|
}
|
||||||
|
|
||||||
|
$className = class_exists($className) ? $className : $this->defaultException;
|
||||||
|
|
||||||
|
return $this->createException($className, $request, $response, $parts);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an prepare an exception object
|
||||||
|
*
|
||||||
|
* @param string $className Name of the class to create
|
||||||
|
* @param RequestInterface $request Request
|
||||||
|
* @param Response $response Response received
|
||||||
|
* @param array $parts Parsed exception data
|
||||||
|
*
|
||||||
|
* @return \Exception
|
||||||
|
*/
|
||||||
|
protected function createException($className, RequestInterface $request, Response $response, array $parts)
|
||||||
|
{
|
||||||
|
$class = new $className($parts['message']);
|
||||||
|
|
||||||
|
if ($class instanceof ServiceResponseException) {
|
||||||
|
$class->setExceptionCode($parts['code']);
|
||||||
|
$class->setExceptionType($parts['type']);
|
||||||
|
$class->setResponse($response);
|
||||||
|
$class->setRequest($request);
|
||||||
|
$class->setRequestId($parts['request_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $class;
|
||||||
|
}
|
||||||
|
}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/OutOfBoundsException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/OutOfBoundsException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL OverflowException.
|
||||||
|
*/
|
||||||
|
class OutOfBoundsException extends \OutOfBoundsException implements AwsExceptionInterface {}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/OverflowException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/OverflowException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL OverflowException.
|
||||||
|
*/
|
||||||
|
class OverflowException extends \OverflowException implements AwsExceptionInterface {}
|
|
@ -0,0 +1,66 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception\Parser;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses JSON encoded exception responses
|
||||||
|
*/
|
||||||
|
abstract class AbstractJsonExceptionParser implements ExceptionParserInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function parse(RequestInterface $request, Response $response)
|
||||||
|
{
|
||||||
|
// Build array of default error data
|
||||||
|
$data = array(
|
||||||
|
'code' => null,
|
||||||
|
'message' => null,
|
||||||
|
'type' => $response->isClientError() ? 'client' : 'server',
|
||||||
|
'request_id' => (string) $response->getHeader('x-amzn-RequestId'),
|
||||||
|
'parsed' => null
|
||||||
|
);
|
||||||
|
|
||||||
|
// Parse the json and normalize key casings
|
||||||
|
if (null !== $json = json_decode($response->getBody(true), true)) {
|
||||||
|
$data['parsed'] = array_change_key_case($json);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do additional, protocol-specific parsing and return the result
|
||||||
|
$data = $this->doParse($data, $response);
|
||||||
|
|
||||||
|
// Remove "Fault" suffix from exception names
|
||||||
|
if (isset($data['code']) && strpos($data['code'], 'Fault')) {
|
||||||
|
$data['code'] = preg_replace('/^([a-zA-Z]+)Fault$/', '$1', $data['code']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pull relevant exception data out of the parsed json
|
||||||
|
*
|
||||||
|
* @param array $data The exception data
|
||||||
|
* @param Response $response The response from the service containing the error
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
abstract protected function doParse(array $data, Response $response);
|
||||||
|
}
|
100
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/Parser/DefaultXmlExceptionParser.php
vendored
Normal file
100
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/Parser/DefaultXmlExceptionParser.php
vendored
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception\Parser;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses default XML exception responses
|
||||||
|
*/
|
||||||
|
class DefaultXmlExceptionParser implements ExceptionParserInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function parse(RequestInterface $request, Response $response)
|
||||||
|
{
|
||||||
|
$data = array(
|
||||||
|
'code' => null,
|
||||||
|
'message' => null,
|
||||||
|
'type' => $response->isClientError() ? 'client' : 'server',
|
||||||
|
'request_id' => null,
|
||||||
|
'parsed' => null
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($body = $response->getBody(true)) {
|
||||||
|
$this->parseBody(new \SimpleXMLElement($body), $data);
|
||||||
|
} else {
|
||||||
|
$this->parseHeaders($request, $response, $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses additional exception information from the response headers
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request Request that was issued
|
||||||
|
* @param Response $response The response from the request
|
||||||
|
* @param array $data The current set of exception data
|
||||||
|
*/
|
||||||
|
protected function parseHeaders(RequestInterface $request, Response $response, array &$data)
|
||||||
|
{
|
||||||
|
$data['message'] = $response->getStatusCode() . ' ' . $response->getReasonPhrase();
|
||||||
|
if ($requestId = $response->getHeader('x-amz-request-id')) {
|
||||||
|
$data['request_id'] = $requestId;
|
||||||
|
$data['message'] .= " (Request-ID: $requestId)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses additional exception information from the response body
|
||||||
|
*
|
||||||
|
* @param \SimpleXMLElement $body The response body as XML
|
||||||
|
* @param array $data The current set of exception data
|
||||||
|
*/
|
||||||
|
protected function parseBody(\SimpleXMLElement $body, array &$data)
|
||||||
|
{
|
||||||
|
$data['parsed'] = $body;
|
||||||
|
|
||||||
|
$namespaces = $body->getDocNamespaces();
|
||||||
|
if (isset($namespaces[''])) {
|
||||||
|
// Account for the default namespace being defined and PHP not being able to handle it :(
|
||||||
|
$body->registerXPathNamespace('ns', $namespaces['']);
|
||||||
|
$prefix = 'ns:';
|
||||||
|
} else {
|
||||||
|
$prefix = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tempXml = $body->xpath("//{$prefix}Code[1]")) {
|
||||||
|
$data['code'] = (string) $tempXml[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tempXml = $body->xpath("//{$prefix}Message[1]")) {
|
||||||
|
$data['message'] = (string) $tempXml[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
$tempXml = $body->xpath("//{$prefix}RequestId[1]");
|
||||||
|
if (empty($tempXml)) {
|
||||||
|
$tempXml = $body->xpath("//{$prefix}RequestID[1]");
|
||||||
|
}
|
||||||
|
if (isset($tempXml[0])) {
|
||||||
|
$data['request_id'] = (string) $tempXml[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception\Parser;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface used to parse exceptions into an associative array of data
|
||||||
|
*/
|
||||||
|
interface ExceptionParserInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Parses an exception into an array of data containing at minimum the
|
||||||
|
* following array keys:
|
||||||
|
* - type: Exception type
|
||||||
|
* - code: Exception code
|
||||||
|
* - message: Exception message
|
||||||
|
* - request_id: Request ID
|
||||||
|
* - parsed: The parsed representation of the data (array, SimpleXMLElement, etc)
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request
|
||||||
|
* @param Response $response Unsuccessful response
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function parse(RequestInterface $request, Response $response);
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception\Parser;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses JSON encoded exception responses from query services
|
||||||
|
*/
|
||||||
|
class JsonQueryExceptionParser extends AbstractJsonExceptionParser
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function doParse(array $data, Response $response)
|
||||||
|
{
|
||||||
|
if ($json = $data['parsed']) {
|
||||||
|
$parts = explode('#', $json['__type']);
|
||||||
|
$data['code'] = isset($parts[1]) ? $parts[1] : $parts[0];
|
||||||
|
$data['message'] = isset($json['message']) ? $json['message'] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
48
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/Parser/JsonRestExceptionParser.php
vendored
Normal file
48
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/Parser/JsonRestExceptionParser.php
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception\Parser;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses JSON encoded exception responses from REST services
|
||||||
|
*/
|
||||||
|
class JsonRestExceptionParser extends AbstractJsonExceptionParser
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function doParse(array $data, Response $response)
|
||||||
|
{
|
||||||
|
// Merge in error data from the JSON body
|
||||||
|
if ($json = $data['parsed']) {
|
||||||
|
$data = array_replace($data, $json);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Correct error type from services like Amazon Glacier
|
||||||
|
if (!empty($data['type'])) {
|
||||||
|
$data['type'] = strtolower($data['type']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve the error code from services like Amazon Elastic Transcoder
|
||||||
|
if ($code = (string) $response->getHeader('x-amzn-ErrorType')) {
|
||||||
|
$data['code'] = substr($code, 0, strpos($code, ':'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Thrown when a particular PHP extension is required to execute the guarded logic, but the extension is not loaded
|
||||||
|
*/
|
||||||
|
class RequiredExtensionNotLoadedException extends RuntimeException {}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/RuntimeException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/RuntimeException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL RuntimeException.
|
||||||
|
*/
|
||||||
|
class RuntimeException extends \RuntimeException implements AwsExceptionInterface {}
|
183
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/ServiceResponseException.php
vendored
Normal file
183
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/ServiceResponseException.php
vendored
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default AWS exception
|
||||||
|
*/
|
||||||
|
class ServiceResponseException extends RuntimeException
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Response Response
|
||||||
|
*/
|
||||||
|
protected $response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var RequestInterface Request
|
||||||
|
*/
|
||||||
|
protected $request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Request ID
|
||||||
|
*/
|
||||||
|
protected $requestId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Exception type (client / server)
|
||||||
|
*/
|
||||||
|
protected $exceptionType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Exception code
|
||||||
|
*/
|
||||||
|
protected $exceptionCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the exception code
|
||||||
|
*
|
||||||
|
* @param string $code Exception code
|
||||||
|
*/
|
||||||
|
public function setExceptionCode($code)
|
||||||
|
{
|
||||||
|
$this->exceptionCode = $code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the exception code
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getExceptionCode()
|
||||||
|
{
|
||||||
|
return $this->exceptionCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the exception type
|
||||||
|
*
|
||||||
|
* @param string $type Exception type
|
||||||
|
*/
|
||||||
|
public function setExceptionType($type)
|
||||||
|
{
|
||||||
|
$this->exceptionType = $type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the exception type (one of client or server)
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getExceptionType()
|
||||||
|
{
|
||||||
|
return $this->exceptionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the request ID
|
||||||
|
*
|
||||||
|
* @param string $id Request ID
|
||||||
|
*/
|
||||||
|
public function setRequestId($id)
|
||||||
|
{
|
||||||
|
$this->requestId = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Request ID
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getRequestId()
|
||||||
|
{
|
||||||
|
return $this->requestId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the associated response
|
||||||
|
*
|
||||||
|
* @param Response $response Response
|
||||||
|
*/
|
||||||
|
public function setResponse(Response $response)
|
||||||
|
{
|
||||||
|
$this->response = $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the associated response object
|
||||||
|
*
|
||||||
|
* @return Response|null
|
||||||
|
*/
|
||||||
|
public function getResponse()
|
||||||
|
{
|
||||||
|
return $this->response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the associated request
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request
|
||||||
|
*/
|
||||||
|
public function setRequest(RequestInterface $request)
|
||||||
|
{
|
||||||
|
$this->request = $request;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the associated request object
|
||||||
|
*
|
||||||
|
* @return RequestInterface|null
|
||||||
|
*/
|
||||||
|
public function getRequest()
|
||||||
|
{
|
||||||
|
return $this->request;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the status code of the response
|
||||||
|
*
|
||||||
|
* @return int|null
|
||||||
|
*/
|
||||||
|
public function getStatusCode()
|
||||||
|
{
|
||||||
|
return $this->response ? $this->response->getStatusCode() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cast to a string
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
$message = get_class($this) . ': '
|
||||||
|
. 'AWS Error Code: ' . $this->getExceptionCode() . ', '
|
||||||
|
. 'Status Code: ' . $this->getStatusCode() . ', '
|
||||||
|
. 'AWS Request ID: ' . $this->getRequestId() . ', '
|
||||||
|
. 'AWS Error Type: ' . $this->getExceptionType() . ', '
|
||||||
|
. 'AWS Error Message: ' . $this->getMessage();
|
||||||
|
|
||||||
|
// Add the User-Agent if available
|
||||||
|
if ($this->request) {
|
||||||
|
$message .= ', ' . 'User-Agent: ' . $this->request->getHeader('User-Agent');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
}
|
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/UnexpectedValueException.php
vendored
Normal file
22
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Exception/UnexpectedValueException.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AWS SDK namespaced version of the SPL UnexpectedValueException.
|
||||||
|
*/
|
||||||
|
class UnexpectedValueException extends \UnexpectedValueException implements AwsExceptionInterface {}
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Facade;
|
||||||
|
|
||||||
|
use Aws\Common\Aws;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base facade class that handles the delegation logic
|
||||||
|
*/
|
||||||
|
abstract class Facade implements FacadeInterface
|
||||||
|
{
|
||||||
|
/** @var Aws */
|
||||||
|
protected static $serviceBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mounts the facades by extracting information from the service builder config and using creating class aliases
|
||||||
|
*
|
||||||
|
* @param string|null $targetNamespace Namespace that the facades should be mounted to. Defaults to global namespace
|
||||||
|
*
|
||||||
|
* @param Aws $serviceBuilder
|
||||||
|
*/
|
||||||
|
public static function mountFacades(Aws $serviceBuilder, $targetNamespace = null)
|
||||||
|
{
|
||||||
|
self::$serviceBuilder = $serviceBuilder;
|
||||||
|
require_once __DIR__ . '/facade-classes.php';
|
||||||
|
foreach ($serviceBuilder->getConfig() as $service) {
|
||||||
|
if (isset($service['alias'], $service['class'])) {
|
||||||
|
$facadeClass = __NAMESPACE__ . '\\' . $service['alias'];
|
||||||
|
$facadeAlias = ltrim($targetNamespace . '\\' . $service['alias'], '\\');
|
||||||
|
if (!class_exists($facadeAlias)) {
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
class_alias($facadeClass, $facadeAlias);
|
||||||
|
// @codeCoverageIgnoreEnd
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the instance of the client that the facade operates on
|
||||||
|
*
|
||||||
|
* @return \Aws\Common\Client\AwsClientInterface
|
||||||
|
*/
|
||||||
|
public static function getClient()
|
||||||
|
{
|
||||||
|
return self::$serviceBuilder->get(static::getServiceBuilderKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function __callStatic($method, $args)
|
||||||
|
{
|
||||||
|
return call_user_func_array(array(self::getClient(), $method), $args);
|
||||||
|
}
|
||||||
|
}
|
32
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Facade/FacadeInterface.php
vendored
Normal file
32
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Facade/FacadeInterface.php
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Facade;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface that defines a client facade. Facades are convenient static classes that allow you to run client methods
|
||||||
|
* statically on a default instance from the service builder. The facades themselves are aliased into the global
|
||||||
|
* namespace for ease of use.
|
||||||
|
*/
|
||||||
|
interface FacadeInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns the key used to access the client instance from the Service Builder
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getServiceBuilderKey();
|
||||||
|
}
|
267
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Facade/facade-classes.php
vendored
Normal file
267
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Facade/facade-classes.php
vendored
Normal file
|
@ -0,0 +1,267 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Facade;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The following classes are used to implement the static client facades and are aliased into the global namespaced. We
|
||||||
|
* discourage the use of these classes directly by their full namespace since they are not autoloaded and are considered
|
||||||
|
* an implementation detail that could possibly be changed in the future.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
|
||||||
|
class AutoScaling extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'autoscaling';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CloudFormation extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'cloudformation';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CloudFront extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'cloudfront';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CloudSearch extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'cloudsearch';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CloudWatch extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'cloudwatch';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DataPipeline extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'datapipeline';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DirectConnect extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'directconnect';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DynamoDb extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'dynamodb';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Ec2 extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'ec2';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ElastiCache extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'elasticache';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ElasticBeanstalk extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'elasticbeanstalk';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ElasticLoadBalancing extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'elasticloadbalancing';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ElasticTranscoder extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'elastictranscoder';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Emr extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'emr';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Glacier extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'glacier';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Iam extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'iam';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ImportExport extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'importexport';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class OpsWorks extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'opsworks';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Rds extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'rds';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Redshift extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'redshift';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Route53 extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'route53';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class S3 extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 's3';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SimpleDb extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'sdb';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Ses extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'ses';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Sns extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'sns';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Sqs extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'sqs';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class StorageGateway extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'storagegateway';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Sts extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'sts';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Support extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'support';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Swf extends Facade
|
||||||
|
{
|
||||||
|
public static function getServiceBuilderKey()
|
||||||
|
{
|
||||||
|
return 'swf';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreEnd
|
|
@ -0,0 +1,87 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Hash;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\LogicException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encapsulates the creation of a hash from streamed chunks of data
|
||||||
|
*/
|
||||||
|
class ChunkHash implements ChunkHashInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var resource The hash context as created by `hash_init()`
|
||||||
|
*/
|
||||||
|
protected $context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The resulting hash in hex form
|
||||||
|
*/
|
||||||
|
protected $hash;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The resulting hash in binary form
|
||||||
|
*/
|
||||||
|
protected $hashRaw;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function __construct($algorithm = self::DEFAULT_ALGORITHM)
|
||||||
|
{
|
||||||
|
HashUtils::validateAlgorithm($algorithm);
|
||||||
|
$this->context = hash_init($algorithm);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function addData($data)
|
||||||
|
{
|
||||||
|
if (!$this->context) {
|
||||||
|
throw new LogicException('You may not add more data to a finalized chunk hash.');
|
||||||
|
}
|
||||||
|
|
||||||
|
hash_update($this->context, $data);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getHash($returnBinaryForm = false)
|
||||||
|
{
|
||||||
|
if (!$this->hash) {
|
||||||
|
$this->hashRaw = hash_final($this->context, true);
|
||||||
|
$this->hash = HashUtils::binToHex($this->hashRaw);
|
||||||
|
$this->context = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $returnBinaryForm ? $this->hashRaw : $this->hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function __clone()
|
||||||
|
{
|
||||||
|
if ($this->context) {
|
||||||
|
$this->context = hash_copy($this->context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
52
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Hash/ChunkHashInterface.php
vendored
Normal file
52
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Hash/ChunkHashInterface.php
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Hash;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for objects that encapsulate the creation of a hash from streamed chunks of data
|
||||||
|
*/
|
||||||
|
interface ChunkHashInterface
|
||||||
|
{
|
||||||
|
const DEFAULT_ALGORITHM = 'sha256';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs the chunk hash and sets the algorithm to use for hashing
|
||||||
|
*
|
||||||
|
* @param string $algorithm A valid hash algorithm name as returned by `hash_algos()`
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function __construct($algorithm = 'sha256');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a chunk of data to be hashed
|
||||||
|
*
|
||||||
|
* @param string $data Data to be hashed
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function addData($data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the results of the hash
|
||||||
|
*
|
||||||
|
* @param bool $returnBinaryForm If true, returns the hash in binary form instead of hex form
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getHash($returnBinaryForm = false);
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Hash;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains hashing utilities
|
||||||
|
*/
|
||||||
|
class HashUtils
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Converts a hash in hex form to binary form
|
||||||
|
*
|
||||||
|
* @param string $hash Hash in hex form
|
||||||
|
*
|
||||||
|
* @return string Hash in binary form
|
||||||
|
*/
|
||||||
|
public static function hexToBin($hash)
|
||||||
|
{
|
||||||
|
// If using PHP 5.4, there is a native function to convert from hex to binary
|
||||||
|
static $useNative;
|
||||||
|
if ($useNative === null) {
|
||||||
|
$useNative = function_exists('hex2bin');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $useNative ? hex2bin($hash) : pack("H*", $hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a hash in binary form to hex form
|
||||||
|
*
|
||||||
|
* @param string $hash Hash in binary form
|
||||||
|
*
|
||||||
|
* @return string Hash in hex form
|
||||||
|
*/
|
||||||
|
public static function binToHex($hash)
|
||||||
|
{
|
||||||
|
return bin2hex($hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the algorithm specified exists and throws an exception if it does not
|
||||||
|
*
|
||||||
|
* @param string $algorithm Name of the algorithm to validate
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
* @throws InvalidArgumentException if the algorithm doesn't exist
|
||||||
|
*/
|
||||||
|
public static function validateAlgorithm($algorithm)
|
||||||
|
{
|
||||||
|
if (!in_array($algorithm, hash_algos(), true)) {
|
||||||
|
throw new InvalidArgumentException("The hashing algorithm specified ({$algorithm}) does not exist.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,195 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Hash;
|
||||||
|
|
||||||
|
use Aws\Common\Enum\Size;
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Aws\Common\Exception\LogicException;
|
||||||
|
use Guzzle\Http\EntityBody;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encapsulates the creation of a tree hash from streamed chunks of data
|
||||||
|
*/
|
||||||
|
class TreeHash implements ChunkHashInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string The algorithm used for hashing
|
||||||
|
*/
|
||||||
|
protected $algorithm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Set of binary checksums from which the tree hash is derived
|
||||||
|
*/
|
||||||
|
protected $checksums = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The resulting hash in hex form
|
||||||
|
*/
|
||||||
|
protected $hash;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string The resulting hash in binary form
|
||||||
|
*/
|
||||||
|
protected $hashRaw;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a tree hash from an array of existing tree hash checksums
|
||||||
|
*
|
||||||
|
* @param array $checksums Set of checksums
|
||||||
|
* @param bool $inBinaryForm Whether or not the checksums are already in binary form
|
||||||
|
* @param string $algorithm A valid hash algorithm name as returned by `hash_algos()`
|
||||||
|
*
|
||||||
|
* @return TreeHash
|
||||||
|
*/
|
||||||
|
public static function fromChecksums(array $checksums, $inBinaryForm = false, $algorithm = self::DEFAULT_ALGORITHM)
|
||||||
|
{
|
||||||
|
$treeHash = new self($algorithm);
|
||||||
|
|
||||||
|
// Convert checksums to binary form if provided in hex form and add them to the tree hash
|
||||||
|
$treeHash->checksums = $inBinaryForm ? $checksums : array_map('Aws\Common\Hash\HashUtils::hexToBin', $checksums);
|
||||||
|
|
||||||
|
// Pre-calculate hash
|
||||||
|
$treeHash->getHash();
|
||||||
|
|
||||||
|
return $treeHash;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a tree hash from a content body
|
||||||
|
*
|
||||||
|
* @param string|resource|EntityBody $content Content to create a tree hash for
|
||||||
|
* @param string $algorithm A valid hash algorithm name as returned by `hash_algos()`
|
||||||
|
*
|
||||||
|
* @return TreeHash
|
||||||
|
*/
|
||||||
|
public static function fromContent($content, $algorithm = self::DEFAULT_ALGORITHM)
|
||||||
|
{
|
||||||
|
$treeHash = new self($algorithm);
|
||||||
|
|
||||||
|
// Read the data in 1MB chunks and add to tree hash
|
||||||
|
$content = EntityBody::factory($content);
|
||||||
|
while ($data = $content->read(Size::MB)) {
|
||||||
|
$treeHash->addData($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pre-calculate hash
|
||||||
|
$treeHash->getHash();
|
||||||
|
|
||||||
|
return $treeHash;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates an entity body with a tree hash checksum
|
||||||
|
*
|
||||||
|
* @param string|resource|EntityBody $content Content to create a tree hash for
|
||||||
|
* @param string $checksum The checksum to use for validation
|
||||||
|
* @param string $algorithm A valid hash algorithm name as returned by `hash_algos()`
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function validateChecksum($content, $checksum, $algorithm = self::DEFAULT_ALGORITHM)
|
||||||
|
{
|
||||||
|
$treeHash = self::fromContent($content, $algorithm);
|
||||||
|
|
||||||
|
return ($checksum === $treeHash->getHash());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function __construct($algorithm = self::DEFAULT_ALGORITHM)
|
||||||
|
{
|
||||||
|
HashUtils::validateAlgorithm($algorithm);
|
||||||
|
$this->algorithm = $algorithm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
* @throws LogicException if the root tree hash is already calculated
|
||||||
|
* @throws InvalidArgumentException if the data is larger than 1MB
|
||||||
|
*/
|
||||||
|
public function addData($data)
|
||||||
|
{
|
||||||
|
// Error if hash is already calculated
|
||||||
|
if ($this->hash) {
|
||||||
|
throw new LogicException('You may not add more data to a finalized tree hash.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure that only 1MB chunks or smaller get passed in
|
||||||
|
if (strlen($data) > Size::MB) {
|
||||||
|
throw new InvalidArgumentException('The chunk of data added is too large for tree hashing.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the raw hash of this data segment
|
||||||
|
$this->checksums[] = hash($this->algorithm, $data, true);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a checksum to the tree hash directly
|
||||||
|
*
|
||||||
|
* @param string $checksum The checksum to add
|
||||||
|
* @param bool $inBinaryForm Whether or not the checksum is already in binary form
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
* @throws LogicException if the root tree hash is already calculated
|
||||||
|
*/
|
||||||
|
public function addChecksum($checksum, $inBinaryForm = false)
|
||||||
|
{
|
||||||
|
// Error if hash is already calculated
|
||||||
|
if ($this->hash) {
|
||||||
|
throw new LogicException('You may not add more checksums to a finalized tree hash.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the checksum to binary form if necessary
|
||||||
|
$this->checksums[] = $inBinaryForm ? $checksum : HashUtils::hexToBin($checksum);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getHash($returnBinaryForm = false)
|
||||||
|
{
|
||||||
|
if (!$this->hash) {
|
||||||
|
// Perform hashes up the tree to arrive at the root checksum of the tree hash
|
||||||
|
$hashes = $this->checksums;
|
||||||
|
while (count($hashes) > 1) {
|
||||||
|
$sets = array_chunk($hashes, 2);
|
||||||
|
$hashes = array();
|
||||||
|
foreach ($sets as $set) {
|
||||||
|
$hashes[] = (count($set) === 1) ? $set[0] : hash($this->algorithm, $set[0] . $set[1], true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->hashRaw = $hashes[0];
|
||||||
|
$this->hash = HashUtils::binToHex($this->hashRaw);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $returnBinaryForm ? $this->hashRaw : $this->hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array Array of raw checksums composing the tree hash
|
||||||
|
*/
|
||||||
|
public function getChecksums()
|
||||||
|
{
|
||||||
|
return $this->checksums;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common;
|
||||||
|
|
||||||
|
use Guzzle\Http\Url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class for parsing regions and services from URLs
|
||||||
|
*/
|
||||||
|
class HostNameUtils
|
||||||
|
{
|
||||||
|
const DEFAULT_REGION = 'us-east-1';
|
||||||
|
const DEFAULT_GOV_REGION = 'us-gov-west-1';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the AWS region name from a URL
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param Url $url HTTP URL
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
* @link http://docs.amazonwebservices.com/general/latest/gr/rande.html
|
||||||
|
*/
|
||||||
|
public static function parseRegionName(Url $url)
|
||||||
|
{
|
||||||
|
// If we don't recognize the domain, just return the default
|
||||||
|
if (substr($url->getHost(), -14) != '.amazonaws.com') {
|
||||||
|
return self::DEFAULT_REGION;
|
||||||
|
}
|
||||||
|
|
||||||
|
$serviceAndRegion = substr($url->getHost(), 0, -14);
|
||||||
|
// Special handling for S3 regions
|
||||||
|
$separator = strpos($serviceAndRegion, 's3') === 0 ? '-' : '.';
|
||||||
|
$separatorPos = strpos($serviceAndRegion, $separator);
|
||||||
|
|
||||||
|
// If don't detect a separator, then return the default region
|
||||||
|
if ($separatorPos === false) {
|
||||||
|
return self::DEFAULT_REGION;
|
||||||
|
}
|
||||||
|
|
||||||
|
$region = substr($serviceAndRegion, $separatorPos + 1);
|
||||||
|
|
||||||
|
// All GOV regions currently use the default GOV region
|
||||||
|
if ($region == 'us-gov') {
|
||||||
|
return self::DEFAULT_GOV_REGION;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $region;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the AWS service name from a URL
|
||||||
|
*
|
||||||
|
* @param Url $url HTTP URL
|
||||||
|
*
|
||||||
|
* @return string Returns a service name (or empty string)
|
||||||
|
* @link http://docs.amazonwebservices.com/general/latest/gr/rande.html
|
||||||
|
*/
|
||||||
|
public static function parseServiceName(Url $url)
|
||||||
|
{
|
||||||
|
// The service name is the first part of the host
|
||||||
|
$parts = explode('.', $url->getHost(), 2);
|
||||||
|
|
||||||
|
// Special handling for S3
|
||||||
|
if (stripos($parts[0], 's3') === 0) {
|
||||||
|
return 's3';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $parts[0];
|
||||||
|
}
|
||||||
|
}
|
99
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/InstanceMetadata/InstanceMetadataClient.php
vendored
Normal file
99
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/InstanceMetadata/InstanceMetadataClient.php
vendored
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\InstanceMetadata;
|
||||||
|
|
||||||
|
use Aws\Common\Enum\ClientOptions as Options;
|
||||||
|
use Aws\Common\Exception\InstanceProfileCredentialsException;
|
||||||
|
use Aws\Common\Credentials\Credentials;
|
||||||
|
use Aws\Common\Client\AbstractClient;
|
||||||
|
use Guzzle\Common\Collection;
|
||||||
|
use Guzzle\Http\Message\RequestFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Client used for interacting with the Amazon EC2 instance metadata server
|
||||||
|
*/
|
||||||
|
class InstanceMetadataClient extends AbstractClient
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Factory method to create a new InstanceMetadataClient using an array
|
||||||
|
* of configuration options.
|
||||||
|
*
|
||||||
|
* The configuration options accepts the following array keys and values:
|
||||||
|
* - base_url: Override the base URL of the instance metadata server
|
||||||
|
* - version: Version of the metadata server to interact with
|
||||||
|
*
|
||||||
|
* @param array|Collection $config Configuration options
|
||||||
|
*
|
||||||
|
* @return InstanceMetadataClient
|
||||||
|
*/
|
||||||
|
public static function factory($config = array())
|
||||||
|
{
|
||||||
|
$config = Collection::fromConfig($config, array(
|
||||||
|
Options::BASE_URL => 'http://169.254.169.254/{version}/',
|
||||||
|
'version' => 'latest',
|
||||||
|
), array('base_url', 'version'));
|
||||||
|
|
||||||
|
return new self($config);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor override
|
||||||
|
*/
|
||||||
|
public function __construct(Collection $config)
|
||||||
|
{
|
||||||
|
$this->setConfig($config);
|
||||||
|
$this->setBaseUrl($config->get(Options::BASE_URL));
|
||||||
|
$this->defaultHeaders = new Collection();
|
||||||
|
$this->setRequestFactory(RequestFactory::getInstance());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get instance profile credentials
|
||||||
|
*
|
||||||
|
* @return Credentials
|
||||||
|
* @throws InstanceProfileCredentialsException
|
||||||
|
*/
|
||||||
|
public function getInstanceProfileCredentials()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$request = $this->get('meta-data/iam/security-credentials/');
|
||||||
|
$request->getCurlOptions()->set(CURLOPT_TIMEOUT, 1)->set(CURLOPT_CONNECTTIMEOUT, 1);
|
||||||
|
$credentials = trim($request->send()->getBody(true));
|
||||||
|
$result = $this->get("meta-data/iam/security-credentials/{$credentials}")->send()->json();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$message = 'Error retrieving credentials from the instance profile metadata server. When you are not'
|
||||||
|
. ' running inside of Amazon EC2, you must provide your AWS access key ID and secret access key in'
|
||||||
|
. ' the "key" and "secret" options when creating a client or provide an instantiated'
|
||||||
|
. ' Aws\\Common\\Credentials\\CredentialsInterface object.';
|
||||||
|
throw new InstanceProfileCredentialsException($message, $e->getCode(), $e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure that the status code was successful
|
||||||
|
if ($result['Code'] !== 'Success') {
|
||||||
|
$e = new InstanceProfileCredentialsException('Unexpected response code: ' . $result['Code']);
|
||||||
|
$e->setStatusCode($result['Code']);
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Credentials(
|
||||||
|
$result['AccessKeyId'],
|
||||||
|
$result['SecretAccessKey'],
|
||||||
|
$result['Token'],
|
||||||
|
strtotime($result['Expiration'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
50
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/InstanceMetadata/Waiter/ServiceAvailable.php
vendored
Normal file
50
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/InstanceMetadata/Waiter/ServiceAvailable.php
vendored
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\InstanceMetadata\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Waiter\AbstractResourceWaiter;
|
||||||
|
use Guzzle\Http\Exception\CurlException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Waits until the instance metadata service is responding. Will send up to
|
||||||
|
* 4 requests with a 5 second delay between each try. Each try can last up to
|
||||||
|
* 11 seconds to complete if the service is not responding.
|
||||||
|
*
|
||||||
|
* @codeCoverageIgnore
|
||||||
|
*/
|
||||||
|
class ServiceAvailable extends AbstractResourceWaiter
|
||||||
|
{
|
||||||
|
protected $interval = 5;
|
||||||
|
protected $maxAttempts = 4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function doWait()
|
||||||
|
{
|
||||||
|
$request = $this->client->get();
|
||||||
|
try {
|
||||||
|
$request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT, 10)
|
||||||
|
->set(CURLOPT_TIMEOUT, 10);
|
||||||
|
$request->send();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (CurlException $e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
149
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Iterator/AwsResourceIterator.php
vendored
Normal file
149
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Iterator/AwsResourceIterator.php
vendored
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Iterator;
|
||||||
|
|
||||||
|
use Aws\Common\Enum\UaString as Ua;
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
Use Guzzle\Service\Resource\Model;
|
||||||
|
use Guzzle\Service\Resource\ResourceIterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterate over a client command
|
||||||
|
*/
|
||||||
|
class AwsResourceIterator extends ResourceIterator
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Model Result of a command
|
||||||
|
*/
|
||||||
|
protected $lastResult = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides access to the most recent result obtained by the iterator.
|
||||||
|
*
|
||||||
|
* @return Model|null
|
||||||
|
*/
|
||||||
|
public function getLastResult()
|
||||||
|
{
|
||||||
|
return $this->lastResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
* This AWS specific version of the resource iterator provides a default implementation of the typical AWS iterator
|
||||||
|
* process. It relies on configuration and extension to implement the operation-specific logic of handling results
|
||||||
|
* and nextTokens. This method will loop until resources are acquired or there are no more iterations available.
|
||||||
|
*/
|
||||||
|
protected function sendRequest()
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
// Prepare the request including setting the next token
|
||||||
|
$this->prepareRequest();
|
||||||
|
if ($this->nextToken) {
|
||||||
|
$this->applyNextToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Execute the request and handle the results
|
||||||
|
$this->command->add(Ua::OPTION, Ua::ITERATOR);
|
||||||
|
$this->lastResult = $this->command->getResult();
|
||||||
|
$resources = $this->handleResults($this->lastResult);
|
||||||
|
$this->determineNextToken($this->lastResult);
|
||||||
|
|
||||||
|
// If no resources collected, prepare to reiterate before yielding
|
||||||
|
if ($reiterate = empty($resources) && $this->nextToken) {
|
||||||
|
$this->command = clone $this->originalCommand;
|
||||||
|
}
|
||||||
|
} while ($reiterate);
|
||||||
|
|
||||||
|
return $resources;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function prepareRequest()
|
||||||
|
{
|
||||||
|
// Get the limit parameter key to set
|
||||||
|
$param = $this->get('limit_param');
|
||||||
|
if ($param && ($limit = $this->command->get($param))) {
|
||||||
|
$pageSize = $this->calculatePageSize();
|
||||||
|
|
||||||
|
// If the limit of the command is different than the pageSize of the iterator, use the smaller value
|
||||||
|
if ($limit && $pageSize) {
|
||||||
|
$this->command->set('limit', min($limit, $pageSize));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function handleResults(Model $result)
|
||||||
|
{
|
||||||
|
$results = array();
|
||||||
|
|
||||||
|
// Get the result key that contains the results
|
||||||
|
if ($resultKey = $this->get('result_key')) {
|
||||||
|
$results = $result->getPath($resultKey) ?: array();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function applyNextToken()
|
||||||
|
{
|
||||||
|
// Get the token parameter key to set
|
||||||
|
if ($tokenParam = $this->get('token_param')) {
|
||||||
|
// Set the next token. Works with multi-value tokens
|
||||||
|
if (is_array($tokenParam)) {
|
||||||
|
if (is_array($this->nextToken) && count($tokenParam) === count($this->nextToken)) {
|
||||||
|
foreach (array_combine($tokenParam, $this->nextToken) as $param => $token) {
|
||||||
|
$this->command->set($param, $token);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException('The definition of the iterator\'s token parameter and the actual token '
|
||||||
|
. 'value are not compatible.');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->command->set($tokenParam, $this->nextToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function determineNextToken(Model $result)
|
||||||
|
{
|
||||||
|
$this->nextToken = null;
|
||||||
|
|
||||||
|
// If the value of "more key" is true or there is no "more key" to check, then try to get the next token
|
||||||
|
$moreKey = $this->get('more_key');
|
||||||
|
if ($moreKey === null || $result->getPath($moreKey)) {
|
||||||
|
// Get the token key to check
|
||||||
|
if ($tokenKey = $this->get('token_key')) {
|
||||||
|
// Get the next token's value. Works with multi-value tokens
|
||||||
|
$getToken = function ($key) use ($result) {
|
||||||
|
return $result->getPath((string) $key);
|
||||||
|
};
|
||||||
|
$this->nextToken = is_array($tokenKey) ? array_map($getToken, $tokenKey) : $getToken($tokenKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
101
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Iterator/AwsResourceIteratorFactory.php
vendored
Normal file
101
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Iterator/AwsResourceIteratorFactory.php
vendored
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Aws\Common\Iterator;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Guzzle\Common\Collection;
|
||||||
|
use Guzzle\Service\Command\CommandInterface;
|
||||||
|
use Guzzle\Service\Resource\ResourceIteratorFactoryInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resource iterator factory used to instantiate the default AWS resource iterator with the correct configuration or
|
||||||
|
* use a concrete iterator class if one exists
|
||||||
|
*/
|
||||||
|
class AwsResourceIteratorFactory implements ResourceIteratorFactoryInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array Default configuration values for iterators
|
||||||
|
*/
|
||||||
|
protected static $defaultConfig = array(
|
||||||
|
'limit_key' => null,
|
||||||
|
'limit_param' => null,
|
||||||
|
'more_key' => null,
|
||||||
|
'token_key' => null,
|
||||||
|
'token_param' => null,
|
||||||
|
'operations' => array(),
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Collection The configuration for the iterators
|
||||||
|
*/
|
||||||
|
protected $config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Collection Additional configurations for specific iterators
|
||||||
|
*/
|
||||||
|
protected $operations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var ResourceIteratorFactoryInterface Another factory that will be used first to instantiate the iterator
|
||||||
|
*/
|
||||||
|
protected $primaryIteratorFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $config An array of configuration values for the factory
|
||||||
|
* @param ResourceIteratorFactoryInterface $primaryIteratorFactory Another factory to use for chain of command
|
||||||
|
*
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function __construct(array $config, ResourceIteratorFactoryInterface $primaryIteratorFactory = null)
|
||||||
|
{
|
||||||
|
$this->primaryIteratorFactory = $primaryIteratorFactory;
|
||||||
|
// Set up the config with default values
|
||||||
|
$this->config = Collection::fromConfig($config, self::$defaultConfig);
|
||||||
|
|
||||||
|
// Pull out the operation-specific configurations
|
||||||
|
$this->operations = new Collection();
|
||||||
|
$potentialOperations = $this->config->get('operations') ?: array();
|
||||||
|
$this->config->remove('operations');
|
||||||
|
foreach ($potentialOperations as $key => $value) {
|
||||||
|
if (is_int($key) && is_string($value)) {
|
||||||
|
$this->operations->set($value, array());
|
||||||
|
} elseif (is_string($key) && is_array($value)) {
|
||||||
|
$this->operations->set($key, $value);
|
||||||
|
} else {
|
||||||
|
throw new InvalidArgumentException('The iterator factory configuration was invalid.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function build(CommandInterface $command, array $options = array())
|
||||||
|
{
|
||||||
|
// Get the configuration data for the command
|
||||||
|
$commandName = $command->getName();
|
||||||
|
$iteratorConfig = $this->operations->get($commandName) ?: array();
|
||||||
|
$options = array_replace($this->config->getAll(), $iteratorConfig, $options);
|
||||||
|
|
||||||
|
// Instantiate the iterator using the primary factory (if there is one)
|
||||||
|
if ($this->primaryIteratorFactory && $this->primaryIteratorFactory->canBuild($command)) {
|
||||||
|
$iterator = $this->primaryIteratorFactory->build($command, $options);
|
||||||
|
} elseif (!$this->operations->hasKey($commandName)) {
|
||||||
|
throw new InvalidArgumentException("Iterator was not found for {$commandName}.");
|
||||||
|
} else {
|
||||||
|
// Fallback to this factory for creating the iterator if the primary factory did not work
|
||||||
|
$iterator = new AwsResourceIterator($command, $options);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $iterator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function canBuild(CommandInterface $command)
|
||||||
|
{
|
||||||
|
return ($this->primaryIteratorFactory && $this->primaryIteratorFactory->canBuild($command))
|
||||||
|
|| $this->operations->hasKey($command->getName());
|
||||||
|
}
|
||||||
|
}
|
270
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractTransfer.php
vendored
Normal file
270
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractTransfer.php
vendored
Normal file
|
@ -0,0 +1,270 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
use Aws\Common\Client\AwsClientInterface;
|
||||||
|
use Aws\Common\Exception\MultipartUploadException;
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
use Guzzle\Common\AbstractHasDispatcher;
|
||||||
|
use Guzzle\Http\EntityBody;
|
||||||
|
use Guzzle\Http\EntityBodyInterface;
|
||||||
|
use Guzzle\Service\Command\OperationCommand;
|
||||||
|
use Guzzle\Service\Resource\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract class for transfer commonalities
|
||||||
|
*/
|
||||||
|
abstract class AbstractTransfer extends AbstractHasDispatcher implements TransferInterface
|
||||||
|
{
|
||||||
|
const BEFORE_UPLOAD = 'multipart_upload.before_upload';
|
||||||
|
const AFTER_UPLOAD = 'multipart_upload.after_upload';
|
||||||
|
const BEFORE_PART_UPLOAD = 'multipart_upload.before_part_upload';
|
||||||
|
const AFTER_PART_UPLOAD = 'multipart_upload.after_part_upload';
|
||||||
|
const AFTER_ABORT = 'multipart_upload.after_abort';
|
||||||
|
const AFTER_COMPLETE = 'multipart_upload.after_complete';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var AwsClientInterface Client used for the transfers
|
||||||
|
*/
|
||||||
|
protected $client;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var TransferStateInterface State of the transfer
|
||||||
|
*/
|
||||||
|
protected $state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var EntityBody Data source of the transfer
|
||||||
|
*/
|
||||||
|
protected $source;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Associative array of options
|
||||||
|
*/
|
||||||
|
protected $options;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int Size of each part to upload
|
||||||
|
*/
|
||||||
|
protected $partSize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool Whether or not the transfer has been stopped
|
||||||
|
*/
|
||||||
|
protected $stopped = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new transfer object
|
||||||
|
*
|
||||||
|
* @param AwsClientInterface $client Client used for the transfers
|
||||||
|
* @param TransferStateInterface $state State used to track transfer
|
||||||
|
* @param EntityBody $source Data source of the transfer
|
||||||
|
* @param array $options Array of options to apply
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
AwsClientInterface $client,
|
||||||
|
TransferStateInterface $state,
|
||||||
|
EntityBody $source,
|
||||||
|
array $options = array()
|
||||||
|
) {
|
||||||
|
$this->client = $client;
|
||||||
|
$this->state = $state;
|
||||||
|
$this->source = $source;
|
||||||
|
$this->options = $options;
|
||||||
|
|
||||||
|
$this->init();
|
||||||
|
|
||||||
|
$this->partSize = $this->calculatePartSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __invoke()
|
||||||
|
{
|
||||||
|
return $this->upload();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getAllEvents()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
self::BEFORE_PART_UPLOAD,
|
||||||
|
self::AFTER_UPLOAD,
|
||||||
|
self::BEFORE_PART_UPLOAD,
|
||||||
|
self::AFTER_PART_UPLOAD,
|
||||||
|
self::AFTER_ABORT,
|
||||||
|
self::AFTER_COMPLETE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function abort()
|
||||||
|
{
|
||||||
|
$command = $this->getAbortCommand();
|
||||||
|
$result = $command->getResult();
|
||||||
|
|
||||||
|
$this->state->setAborted(true);
|
||||||
|
$this->stop();
|
||||||
|
$this->dispatch(self::AFTER_ABORT, $this->getEventData($command));
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function stop()
|
||||||
|
{
|
||||||
|
$this->stopped = true;
|
||||||
|
|
||||||
|
return $this->state;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getState()
|
||||||
|
{
|
||||||
|
return $this->state;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the array of options associated with the transfer
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getOptions()
|
||||||
|
{
|
||||||
|
return $this->options;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option on the transfer
|
||||||
|
*
|
||||||
|
* @param string $option Name of the option
|
||||||
|
* @param mixed $value Value to set
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setOption($option, $value)
|
||||||
|
{
|
||||||
|
$this->options[$option] = $value;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the source body of the upload
|
||||||
|
*
|
||||||
|
* @return EntityBodyInterface
|
||||||
|
*/
|
||||||
|
public function getSource()
|
||||||
|
{
|
||||||
|
return $this->source;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
* @throws MultipartUploadException when an error is encountered. Use getLastException() to get more information.
|
||||||
|
* @throws RuntimeException when attempting to upload an aborted transfer
|
||||||
|
*/
|
||||||
|
public function upload()
|
||||||
|
{
|
||||||
|
if ($this->state->isAborted()) {
|
||||||
|
throw new RuntimeException('The transfer has been aborted and cannot be uploaded');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->stopped = false;
|
||||||
|
$eventData = $this->getEventData();
|
||||||
|
$this->dispatch(self::BEFORE_UPLOAD, $eventData);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->transfer();
|
||||||
|
$this->dispatch(self::AFTER_UPLOAD, $eventData);
|
||||||
|
|
||||||
|
if ($this->stopped) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
$result = $this->complete();
|
||||||
|
$this->dispatch(self::AFTER_COMPLETE, $eventData);
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
throw new MultipartUploadException($this->state, $e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an array used for event notifications
|
||||||
|
*
|
||||||
|
* @param OperationCommand $command Command to include in event data
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getEventData(OperationCommand $command = null)
|
||||||
|
{
|
||||||
|
$data = array(
|
||||||
|
'transfer' => $this,
|
||||||
|
'source' => $this->source,
|
||||||
|
'options' => $this->options,
|
||||||
|
'client' => $this->client,
|
||||||
|
'part_size' => $this->partSize,
|
||||||
|
'state' => $this->state
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($command) {
|
||||||
|
$data['command'] = $command;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook to initialize the transfer
|
||||||
|
*/
|
||||||
|
protected function init() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine the upload part size based on the size of the source data and
|
||||||
|
* taking into account the acceptable minimum and maximum part sizes.
|
||||||
|
*
|
||||||
|
* @return int The part size
|
||||||
|
*/
|
||||||
|
abstract protected function calculatePartSize();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Complete the multipart upload
|
||||||
|
*
|
||||||
|
* @return Model Returns the result of the complete multipart upload command
|
||||||
|
*/
|
||||||
|
abstract protected function complete();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hook to implement in subclasses to perform the actual transfer
|
||||||
|
*/
|
||||||
|
abstract protected function transfer();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches the abort command fom the concrete implementation
|
||||||
|
*
|
||||||
|
* @return OperationCommand
|
||||||
|
*/
|
||||||
|
abstract protected function getAbortCommand();
|
||||||
|
}
|
164
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractTransferState.php
vendored
Normal file
164
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractTransferState.php
vendored
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* State of a multipart upload
|
||||||
|
*/
|
||||||
|
abstract class AbstractTransferState implements TransferStateInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var UploadIdInterface Object holding params used to identity the upload part
|
||||||
|
*/
|
||||||
|
protected $uploadId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Array of parts where the part number is the index
|
||||||
|
*/
|
||||||
|
protected $parts = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool Whether or not the transfer was aborted
|
||||||
|
*/
|
||||||
|
protected $aborted = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new transfer state object
|
||||||
|
*
|
||||||
|
* @param UploadIdInterface $uploadId Upload identifier object
|
||||||
|
*/
|
||||||
|
public function __construct(UploadIdInterface $uploadId)
|
||||||
|
{
|
||||||
|
$this->uploadId = $uploadId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getUploadId()
|
||||||
|
{
|
||||||
|
return $this->uploadId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a data value from the transfer state's uploadId
|
||||||
|
*
|
||||||
|
* @param string $key Key to retrieve (e.g. Bucket, Key, UploadId, etc)
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getFromId($key)
|
||||||
|
{
|
||||||
|
$params = $this->uploadId->toParams();
|
||||||
|
|
||||||
|
return isset($params[$key]) ? $params[$key] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getPart($partNumber)
|
||||||
|
{
|
||||||
|
return isset($this->parts[$partNumber]) ? $this->parts[$partNumber] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function addPart(UploadPartInterface $part)
|
||||||
|
{
|
||||||
|
$partNumber = $part->getPartNumber();
|
||||||
|
$this->parts[$partNumber] = $part;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function hasPart($partNumber)
|
||||||
|
{
|
||||||
|
return isset($this->parts[$partNumber]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getPartNumbers()
|
||||||
|
{
|
||||||
|
return array_keys($this->parts);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setAborted($aborted)
|
||||||
|
{
|
||||||
|
$this->aborted = (bool) $aborted;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function isAborted()
|
||||||
|
{
|
||||||
|
return $this->aborted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function count()
|
||||||
|
{
|
||||||
|
return count($this->parts);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getIterator()
|
||||||
|
{
|
||||||
|
return new \ArrayIterator($this->parts);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function serialize()
|
||||||
|
{
|
||||||
|
return serialize(get_object_vars($this));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function unserialize($serialized)
|
||||||
|
{
|
||||||
|
$data = unserialize($serialized);
|
||||||
|
foreach (get_object_vars($this) as $property => $oldValue) {
|
||||||
|
if (array_key_exists($property, $data)) {
|
||||||
|
$this->{$property} = $data[$property];
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("The {$property} property could be restored during unserialization.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
148
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractUploadBuilder.php
vendored
Normal file
148
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractUploadBuilder.php
vendored
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
use Aws\Common\Client\AwsClientInterface;
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Guzzle\Http\EntityBody;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Easily create a multipart uploader used to quickly and reliably upload a
|
||||||
|
* large file or data stream to Amazon S3 using multipart uploads
|
||||||
|
*/
|
||||||
|
abstract class AbstractUploadBuilder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var AwsClientInterface Client used to transfer requests
|
||||||
|
*/
|
||||||
|
protected $client;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var TransferStateInterface State of the transfer
|
||||||
|
*/
|
||||||
|
protected $state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var EntityBody Source of the data
|
||||||
|
*/
|
||||||
|
protected $source;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Array of headers to set on the object
|
||||||
|
*/
|
||||||
|
protected $headers = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a new instance of the UploadBuilder
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public static function newInstance()
|
||||||
|
{
|
||||||
|
return new static;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the client used to connect to the AWS service
|
||||||
|
*
|
||||||
|
* @param AwsClientInterface $client Client to use
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setClient(AwsClientInterface $client)
|
||||||
|
{
|
||||||
|
$this->client = $client;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the state of the upload. This is useful for resuming from a previously started multipart upload.
|
||||||
|
* You must use a local file stream as the data source if you wish to resume from a previous upload.
|
||||||
|
*
|
||||||
|
* @param TransferStateInterface|string $state Pass a TransferStateInterface object or the ID of the initiated
|
||||||
|
* multipart upload. When an ID is passed, the builder will create a
|
||||||
|
* state object using the data from a ListParts API response.
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function resumeFrom($state)
|
||||||
|
{
|
||||||
|
$this->state = $state;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the data source of the transfer
|
||||||
|
*
|
||||||
|
* @param resource|string|EntityBody $source Source of the transfer. Pass a string to transfer from a file on disk.
|
||||||
|
* You can also stream from a resource returned from fopen or a Guzzle
|
||||||
|
* {@see EntityBody} object.
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
* @throws InvalidArgumentException when the source cannot be found or opened
|
||||||
|
*/
|
||||||
|
public function setSource($source)
|
||||||
|
{
|
||||||
|
// Use the contents of a file as the data source
|
||||||
|
if (is_string($source)) {
|
||||||
|
if (!file_exists($source)) {
|
||||||
|
throw new InvalidArgumentException("File does not exist: {$source}");
|
||||||
|
}
|
||||||
|
// Clear the cache so that we send accurate file sizes
|
||||||
|
clearstatcache(true, $source);
|
||||||
|
$source = fopen($source, 'r');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->source = EntityBody::factory($source);
|
||||||
|
|
||||||
|
if ($this->source->isSeekable() && $this->source->getSize() == 0) {
|
||||||
|
throw new InvalidArgumentException('Empty body provided to upload builder');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the headers to set on the upload
|
||||||
|
*
|
||||||
|
* @param array $headers Headers to add to the uploaded object
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setHeaders(array $headers)
|
||||||
|
{
|
||||||
|
$this->headers = $headers;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the appropriate uploader based on the builder options
|
||||||
|
*
|
||||||
|
* @return TransferInterface
|
||||||
|
*/
|
||||||
|
abstract public function build();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initiate the multipart upload
|
||||||
|
*
|
||||||
|
* @return TransferStateInterface
|
||||||
|
*/
|
||||||
|
abstract protected function initiateMultipartUpload();
|
||||||
|
}
|
89
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractUploadId.php
vendored
Normal file
89
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractUploadId.php
vendored
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An object that encapsulates the data identifying an upload
|
||||||
|
*/
|
||||||
|
abstract class AbstractUploadId implements UploadIdInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array Expected values (with defaults)
|
||||||
|
*/
|
||||||
|
protected static $expectedValues = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Params representing the identifying information
|
||||||
|
*/
|
||||||
|
protected $data = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function fromParams($data)
|
||||||
|
{
|
||||||
|
$uploadId = new static();
|
||||||
|
$uploadId->loadData($data);
|
||||||
|
|
||||||
|
return $uploadId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function toParams()
|
||||||
|
{
|
||||||
|
return $this->data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function serialize()
|
||||||
|
{
|
||||||
|
return serialize($this->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function unserialize($serialized)
|
||||||
|
{
|
||||||
|
$this->loadData(unserialize($serialized));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads an array of data into the UploadId by extracting only the needed keys
|
||||||
|
*
|
||||||
|
* @param array $data Data to load
|
||||||
|
*
|
||||||
|
* @throws InvalidArgumentException if a required key is missing
|
||||||
|
*/
|
||||||
|
protected function loadData($data)
|
||||||
|
{
|
||||||
|
$data = array_replace(static::$expectedValues, array_intersect_key($data, static::$expectedValues));
|
||||||
|
foreach ($data as $key => $value) {
|
||||||
|
if (isset($data[$key])) {
|
||||||
|
$this->data[$key] = $data[$key];
|
||||||
|
} else {
|
||||||
|
throw new InvalidArgumentException("A required key [$key] was missing from the UploadId.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
101
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractUploadPart.php
vendored
Normal file
101
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/AbstractUploadPart.php
vendored
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An object that encapsulates the data for an upload part
|
||||||
|
*/
|
||||||
|
abstract class AbstractUploadPart implements UploadPartInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array A map of external array keys to internal property names
|
||||||
|
*/
|
||||||
|
protected static $keyMap = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int The number of the upload part representing its order in the overall upload
|
||||||
|
*/
|
||||||
|
protected $partNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function fromArray($data)
|
||||||
|
{
|
||||||
|
$part = new static();
|
||||||
|
$part->loadData($data);
|
||||||
|
|
||||||
|
return $part;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getPartNumber()
|
||||||
|
{
|
||||||
|
return $this->partNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function toArray()
|
||||||
|
{
|
||||||
|
$array = array();
|
||||||
|
foreach (static::$keyMap as $key => $property) {
|
||||||
|
$array[$key] = $this->{$property};
|
||||||
|
}
|
||||||
|
|
||||||
|
return $array;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function serialize()
|
||||||
|
{
|
||||||
|
return serialize($this->toArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function unserialize($serialized)
|
||||||
|
{
|
||||||
|
$this->loadData(unserialize($serialized));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads an array of data into the upload part by extracting only the needed keys
|
||||||
|
*
|
||||||
|
* @param array|\Traversable $data Data to load into the upload part value object
|
||||||
|
*
|
||||||
|
* @throws InvalidArgumentException if a required key is missing
|
||||||
|
*/
|
||||||
|
protected function loadData($data)
|
||||||
|
{
|
||||||
|
foreach (static::$keyMap as $key => $property) {
|
||||||
|
if (isset($data[$key])) {
|
||||||
|
$this->{$property} = $data[$key];
|
||||||
|
} else {
|
||||||
|
throw new InvalidArgumentException("A required key [$key] was missing from the upload part.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
66
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/TransferInterface.php
vendored
Normal file
66
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/TransferInterface.php
vendored
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
use Guzzle\Common\HasDispatcherInterface;
|
||||||
|
use Guzzle\Service\Resource\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for transferring the contents of a data source to an AWS service via a multipart upload interface
|
||||||
|
*/
|
||||||
|
interface TransferInterface extends HasDispatcherInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Upload the source to using a multipart upload
|
||||||
|
*
|
||||||
|
* @return Model|null Result of the complete multipart upload command or null if uploading was stopped
|
||||||
|
*/
|
||||||
|
public function upload();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abort the upload
|
||||||
|
*
|
||||||
|
* @return Model Returns the result of the abort multipart upload command
|
||||||
|
*/
|
||||||
|
public function abort();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current state of the upload
|
||||||
|
*
|
||||||
|
* @return TransferStateInterface
|
||||||
|
*/
|
||||||
|
public function getState();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop the transfer and retrieve the current state.
|
||||||
|
*
|
||||||
|
* This allows you to stop and later resume a long running transfer if needed.
|
||||||
|
*
|
||||||
|
* @return TransferStateInterface
|
||||||
|
*/
|
||||||
|
public function stop();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option on the transfer object
|
||||||
|
*
|
||||||
|
* @param string $option Option to set
|
||||||
|
* @param mixed $value The value to set
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setOption($option, $value);
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
use Aws\Common\Client\AwsClientInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* State of a multipart upload
|
||||||
|
*/
|
||||||
|
interface TransferStateInterface extends \Countable, \IteratorAggregate, \Serializable
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create the transfer state from the results of list parts request
|
||||||
|
*
|
||||||
|
* @param AwsClientInterface $client Client used to send the request
|
||||||
|
* @param UploadIdInterface $uploadId Params needed to identify the upload and form the request
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public static function fromUploadId(AwsClientInterface $client, UploadIdInterface $uploadId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the params used to identify an upload part
|
||||||
|
*
|
||||||
|
* @return UploadIdInterface
|
||||||
|
*/
|
||||||
|
public function getUploadId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the part information of a specific part
|
||||||
|
*
|
||||||
|
* @param int $partNumber Part to retrieve
|
||||||
|
*
|
||||||
|
* @return UploadPartInterface
|
||||||
|
*/
|
||||||
|
public function getPart($partNumber);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a part to the transfer state
|
||||||
|
*
|
||||||
|
* @param UploadPartInterface $part The part to add
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function addPart(UploadPartInterface $part);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a specific part has been uploaded
|
||||||
|
*
|
||||||
|
* @param int $partNumber Part to check
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function hasPart($partNumber);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all of the uploaded part numbers
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getPartNumbers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether or not the transfer has been aborted
|
||||||
|
*
|
||||||
|
* @param bool $aborted Set to true to mark the transfer as aborted
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setAborted($aborted);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the transfer has been marked as aborted
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isAborted();
|
||||||
|
}
|
39
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/UploadIdInterface.php
vendored
Normal file
39
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Model/MultipartUpload/UploadIdInterface.php
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An object that encapsulates the data identifying an upload
|
||||||
|
*/
|
||||||
|
interface UploadIdInterface extends \Serializable
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create an UploadId from an array
|
||||||
|
*
|
||||||
|
* @param array $data Data representing the upload identification
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public static function fromParams($data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the array form of the upload identification for use as command params
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toParams();
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Model\MultipartUpload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An object that encapsulates the data for an upload part
|
||||||
|
*/
|
||||||
|
interface UploadPartInterface extends \Serializable
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create an upload part from an array
|
||||||
|
*
|
||||||
|
* @param array|\Traversable $data Data representing the upload part
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public static function fromArray($data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the part number of the upload part which is used as an identifier
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getPartNumber();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the array form of the upload part
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray();
|
||||||
|
}
|
219
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Resources/aws-config.php
vendored
Normal file
219
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Resources/aws-config.php
vendored
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'class' => 'Aws\Common\Aws',
|
||||||
|
'services' => array(
|
||||||
|
|
||||||
|
'default_settings' => array(
|
||||||
|
'params' => array()
|
||||||
|
),
|
||||||
|
|
||||||
|
'autoscaling' => array(
|
||||||
|
'alias' => 'AutoScaling',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\AutoScaling\AutoScalingClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'cloudformation' => array(
|
||||||
|
'alias' => 'CloudFormation',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\CloudFormation\CloudFormationClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'cloudfront' => array(
|
||||||
|
'alias' => 'CloudFront',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\CloudFront\CloudFrontClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'cloudfront_20120505' => array(
|
||||||
|
'extends' => 'cloudfront',
|
||||||
|
'params' => array(
|
||||||
|
'version' => '2012-05-05'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
'cloudsearch' => array(
|
||||||
|
'alias' => 'CloudSearch',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\CloudSearch\CloudSearchClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'cloudwatch' => array(
|
||||||
|
'alias' => 'CloudWatch',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\CloudWatch\CloudWatchClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'datapipeline' => array(
|
||||||
|
'alias' => 'DataPipeline',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\DataPipeline\DataPipelineClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'directconnect' => array(
|
||||||
|
'alias' => 'DirectConnect',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\DirectConnect\DirectConnectClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'dynamodb' => array(
|
||||||
|
'alias' => 'DynamoDb',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\DynamoDb\DynamoDbClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'dynamodb_20111205' => array(
|
||||||
|
'extends' => 'dynamodb',
|
||||||
|
'params' => array(
|
||||||
|
'version' => '2011-12-05'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
'ec2' => array(
|
||||||
|
'alias' => 'Ec2',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Ec2\Ec2Client'
|
||||||
|
),
|
||||||
|
|
||||||
|
'elasticache' => array(
|
||||||
|
'alias' => 'ElastiCache',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\ElastiCache\ElastiCacheClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'elasticbeanstalk' => array(
|
||||||
|
'alias' => 'ElasticBeanstalk',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\ElasticBeanstalk\ElasticBeanstalkClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'elasticloadbalancing' => array(
|
||||||
|
'alias' => 'ElasticLoadBalancing',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\ElasticLoadBalancing\ElasticLoadBalancingClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'elastictranscoder' => array(
|
||||||
|
'alias' => 'ElasticTranscoder',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\ElasticTranscoder\ElasticTranscoderClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'emr' => array(
|
||||||
|
'alias' => 'Emr',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Emr\EmrClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'glacier' => array(
|
||||||
|
'alias' => 'Glacier',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Glacier\GlacierClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'iam' => array(
|
||||||
|
'alias' => 'Iam',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Iam\IamClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'importexport' => array(
|
||||||
|
'alias' => 'ImportExport',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\ImportExport\ImportExportClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'opsworks' => array(
|
||||||
|
'alias' => 'OpsWorks',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\OpsWorks\OpsWorksClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'rds' => array(
|
||||||
|
'alias' => 'Rds',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Rds\RdsClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'redshift' => array(
|
||||||
|
'alias' => 'Redshift',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Redshift\RedshiftClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'route53' => array(
|
||||||
|
'alias' => 'Route53',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Route53\Route53Client'
|
||||||
|
),
|
||||||
|
|
||||||
|
's3' => array(
|
||||||
|
'alias' => 'S3',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\S3\S3Client'
|
||||||
|
),
|
||||||
|
|
||||||
|
'sdb' => array(
|
||||||
|
'alias' => 'SimpleDb',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\SimpleDb\SimpleDbClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'ses' => array(
|
||||||
|
'alias' => 'Ses',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Ses\SesClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'sns' => array(
|
||||||
|
'alias' => 'Sns',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Sns\SnsClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'sqs' => array(
|
||||||
|
'alias' => 'Sqs',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Sqs\SqsClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'storagegateway' => array(
|
||||||
|
'alias' => 'StorageGateway',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\StorageGateway\StorageGatewayClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'sts' => array(
|
||||||
|
'alias' => 'Sts',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Sts\StsClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'support' => array(
|
||||||
|
'alias' => 'Support',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Support\SupportClient'
|
||||||
|
),
|
||||||
|
|
||||||
|
'swf' => array(
|
||||||
|
'alias' => 'Swf',
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'class' => 'Aws\Swf\SwfClient'
|
||||||
|
),
|
||||||
|
)
|
||||||
|
);
|
138
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Resources/sdk1-config.php
vendored
Normal file
138
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Resources/sdk1-config.php
vendored
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'includes' => array('_aws'),
|
||||||
|
'services' => array(
|
||||||
|
|
||||||
|
'sdk1_settings' => array(
|
||||||
|
'extends' => 'default_settings',
|
||||||
|
'params' => array(
|
||||||
|
'certificate_authority' => false
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.autoscaling' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonAS'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.cloudformation' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonCloudFormation'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.cloudfront' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonCloudFront'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.cloudsearch' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonCloudSearch'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.cloudwatch' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonCloudWatch'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.dynamodb' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonDynamoDB'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.ec2' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonEC2'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.elasticache' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonElastiCache'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.elasticbeanstalk' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonElasticBeanstalk'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.elb' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonELB'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.emr' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonEMR'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.iam' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonIAM'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.importexport' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonImportExport'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.rds' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonRDS'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.s3' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonS3'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.sdb' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonSDB'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.ses' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonSES'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.sns' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonSNS'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.sqs' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonSQS'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.storagegateway' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonStorageGateway'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.sts' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonSTS'
|
||||||
|
),
|
||||||
|
|
||||||
|
'v1.swf' => array(
|
||||||
|
'extends' => 'sdk1_settings',
|
||||||
|
'class' => 'AmazonSWF'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
90
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/AbstractSignature.php
vendored
Normal file
90
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/AbstractSignature.php
vendored
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract signature class that can be used when implementing new concrete
|
||||||
|
* AWS signature protocol strategies
|
||||||
|
*/
|
||||||
|
abstract class AbstractSignature implements SignatureInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var int Timestamp
|
||||||
|
*/
|
||||||
|
private $timestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the canonicalized query string for a request
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function getCanonicalizedQueryString(RequestInterface $request)
|
||||||
|
{
|
||||||
|
$queryParams = $request->getQuery()->getAll();
|
||||||
|
unset($queryParams['X-Amz-Signature']);
|
||||||
|
if (empty($queryParams)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$qs = '';
|
||||||
|
ksort($queryParams);
|
||||||
|
foreach ($queryParams as $key => $values) {
|
||||||
|
if (is_array($values)) {
|
||||||
|
sort($values);
|
||||||
|
} elseif (!$values) {
|
||||||
|
$values = array('');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ((array) $values as $value) {
|
||||||
|
$qs .= rawurlencode($key) . '=' . rawurlencode($value) . '&';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return substr($qs, 0, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides the timestamp used for the class
|
||||||
|
*
|
||||||
|
* @param bool $refresh Set to TRUE to refresh the cached timestamp
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
protected function getTimestamp($refresh = false)
|
||||||
|
{
|
||||||
|
if (!$this->timestamp || $refresh) {
|
||||||
|
$this->timestamp = time();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a date for one of the parts of the requests
|
||||||
|
*
|
||||||
|
* @param string $format Date format
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function getDateTime($format)
|
||||||
|
{
|
||||||
|
return gmdate($format, $this->getTimestamp());
|
||||||
|
}
|
||||||
|
}
|
42
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/EndpointSignatureInterface.php
vendored
Normal file
42
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/EndpointSignatureInterface.php
vendored
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for signatures that use specific region and service names when
|
||||||
|
* signing requests.
|
||||||
|
*/
|
||||||
|
interface EndpointSignatureInterface extends SignatureInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Set the service name instead of inferring it from a request URL
|
||||||
|
*
|
||||||
|
* @param string $service Name of the service used when signing
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setServiceName($service);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the region name instead of inferring it from a request URL
|
||||||
|
*
|
||||||
|
* @param string $region Name of the region used when signing
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setRegionName($region);
|
||||||
|
}
|
37
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureInterface.php
vendored
Normal file
37
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureInterface.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface used to provide interchangeable strategies for signing requests
|
||||||
|
* using the various AWS signature protocols.
|
||||||
|
*/
|
||||||
|
interface SignatureInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Signs the specified request with an AWS signing protocol by using the
|
||||||
|
* provided AWS account credentials and adding the required headers to the
|
||||||
|
* request.
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request Request to add a signature to
|
||||||
|
* @param CredentialsInterface $credentials Signing credentials
|
||||||
|
*/
|
||||||
|
public function signRequest(RequestInterface $request, CredentialsInterface $credentials);
|
||||||
|
}
|
80
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureListener.php
vendored
Normal file
80
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureListener.php
vendored
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Guzzle\Common\Event;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listener used to sign requests before they are sent over the wire
|
||||||
|
*/
|
||||||
|
class SignatureListener implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var CredentialsInterface
|
||||||
|
*/
|
||||||
|
protected $credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var SignatureInterface
|
||||||
|
*/
|
||||||
|
protected $signature;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new request signing plugin
|
||||||
|
*
|
||||||
|
* @param CredentialsInterface $credentials Credentials used to sign requests
|
||||||
|
* @param SignatureInterface $signature Signature implementation
|
||||||
|
*/
|
||||||
|
public function __construct(CredentialsInterface $credentials, SignatureInterface $signature)
|
||||||
|
{
|
||||||
|
$this->credentials = $credentials;
|
||||||
|
$this->signature = $signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'request.before_send' => array('onRequestBeforeSend', -255),
|
||||||
|
'client.credentials_changed' => array('onCredentialsChanged')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the listener with new credentials if the client is updated
|
||||||
|
*
|
||||||
|
* @param Event $event Event emitted
|
||||||
|
*/
|
||||||
|
public function onCredentialsChanged(Event $event)
|
||||||
|
{
|
||||||
|
$this->credentials = $event['credentials'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signs requests before they are sent
|
||||||
|
*
|
||||||
|
* @param Event $event Event emitted
|
||||||
|
*/
|
||||||
|
public function onRequestBeforeSend(Event $event)
|
||||||
|
{
|
||||||
|
$this->signature->signRequest($event['request'], $this->credentials);
|
||||||
|
}
|
||||||
|
}
|
112
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV2.php
vendored
Normal file
112
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV2.php
vendored
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Signature Version 2
|
||||||
|
* @link http://aws.amazon.com/articles/1928
|
||||||
|
*/
|
||||||
|
class SignatureV2 extends AbstractSignature
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function signRequest(RequestInterface $request, CredentialsInterface $credentials)
|
||||||
|
{
|
||||||
|
// refresh the cached timestamp
|
||||||
|
$this->getTimestamp(true);
|
||||||
|
|
||||||
|
// set values we need in CanonicalizedParameterString
|
||||||
|
$this->addParameter($request, 'Timestamp', $this->getDateTime('c'));
|
||||||
|
$this->addParameter($request, 'SignatureVersion', '2');
|
||||||
|
$this->addParameter($request, 'SignatureMethod', 'HmacSHA256');
|
||||||
|
$this->addParameter($request, 'AWSAccessKeyId', $credentials->getAccessKeyId());
|
||||||
|
|
||||||
|
if ($token = $credentials->getSecurityToken()) {
|
||||||
|
$this->addParameter($request, 'SecurityToken', $token);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the path and ensure it's absolute
|
||||||
|
$path = '/' . ltrim($request->getUrl(true)->normalizePath()->getPath(), '/');
|
||||||
|
|
||||||
|
// build string to sign
|
||||||
|
$sign = $request->getMethod() . "\n"
|
||||||
|
. $request->getHost() . "\n"
|
||||||
|
. $path . "\n"
|
||||||
|
. $this->getCanonicalizedParameterString($request);
|
||||||
|
|
||||||
|
// Add the string to sign to the request for debugging purposes
|
||||||
|
$request->getParams()->set('aws.string_to_sign', $sign);
|
||||||
|
|
||||||
|
$signature = base64_encode(
|
||||||
|
hash_hmac(
|
||||||
|
'sha256',
|
||||||
|
$sign,
|
||||||
|
$credentials->getSecretKey(),
|
||||||
|
true
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->addParameter($request, 'Signature', $signature);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a parameter key and value to the request according to type
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request The request
|
||||||
|
* @param string $key The name of the parameter
|
||||||
|
* @param string $value The value of the parameter
|
||||||
|
*/
|
||||||
|
public function addParameter(RequestInterface $request, $key, $value)
|
||||||
|
{
|
||||||
|
if ($request->getMethod() == 'POST') {
|
||||||
|
$request->setPostField($key, $value);
|
||||||
|
} else {
|
||||||
|
$request->getQuery()->set($key, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the canonicalized query/parameter string for a request
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request Request used to build canonicalized string
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCanonicalizedParameterString(RequestInterface $request)
|
||||||
|
{
|
||||||
|
if ($request->getMethod() == 'POST') {
|
||||||
|
$params = $request->getPostFields()->toArray();
|
||||||
|
} else {
|
||||||
|
$params = $request->getQuery()->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't resign a previous signature value
|
||||||
|
unset($params['Signature']);
|
||||||
|
uksort($params, 'strcmp');
|
||||||
|
|
||||||
|
$str = '';
|
||||||
|
foreach ($params as $key => $val) {
|
||||||
|
$str .= rawurlencode($key) . '=' . rawurlencode($val) . '&';
|
||||||
|
}
|
||||||
|
|
||||||
|
return substr($str, 0, -1);
|
||||||
|
}
|
||||||
|
}
|
102
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV3.php
vendored
Normal file
102
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV3.php
vendored
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Aws\Common\Enum\DateFormat;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Message\EntityEnclosingRequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Signature Version 3
|
||||||
|
* @link http://docs.amazonwebservices.com/amazonswf/latest/developerguide/HMACAuth-swf.html
|
||||||
|
*/
|
||||||
|
class SignatureV3 extends AbstractSignature
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get an array of headers to be signed
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request Request to get headers from
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getHeadersToSign(RequestInterface $request)
|
||||||
|
{
|
||||||
|
$headers = array();
|
||||||
|
foreach ($request->getHeaders()->toArray() as $k => $v) {
|
||||||
|
$k = strtolower($k);
|
||||||
|
if ($k == 'host' || strpos($k, 'x-amz-') !== false) {
|
||||||
|
$headers[$k] = implode(',', $v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort the headers alphabetically and add them to the string to sign
|
||||||
|
ksort($headers);
|
||||||
|
|
||||||
|
return $headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function signRequest(RequestInterface $request, CredentialsInterface $credentials)
|
||||||
|
{
|
||||||
|
// Refresh the cached timestamp
|
||||||
|
$this->getTimestamp(true);
|
||||||
|
|
||||||
|
// Add default headers
|
||||||
|
$request->setHeader('x-amz-date', $this->getDateTime(DateFormat::RFC1123));
|
||||||
|
|
||||||
|
// Add the security token if one is present
|
||||||
|
if ($credentials->getSecurityToken()) {
|
||||||
|
$request->setHeader('x-amz-security-token', $credentials->getSecurityToken());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grab the path and ensure that it is absolute
|
||||||
|
$path = '/' . ltrim($request->getUrl(true)->normalizePath()->getPath(), '/');
|
||||||
|
|
||||||
|
// Begin building the string to sign
|
||||||
|
$sign = $request->getMethod() . "\n"
|
||||||
|
. "{$path}\n"
|
||||||
|
. $this->getCanonicalizedQueryString($request) . "\n";
|
||||||
|
|
||||||
|
// Get all of the headers that must be signed (host and x-amz-*)
|
||||||
|
$headers = $this->getHeadersToSign($request);
|
||||||
|
foreach ($headers as $key => $value) {
|
||||||
|
$sign .= $key . ':' . $value . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$sign .= "\n";
|
||||||
|
|
||||||
|
// Add the body of the request if a body is present
|
||||||
|
if ($request instanceof EntityEnclosingRequestInterface) {
|
||||||
|
$sign .= (string) $request->getBody();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the string to sign to the request for debugging purposes
|
||||||
|
$request->getParams()->set('aws.string_to_sign', $sign);
|
||||||
|
|
||||||
|
$signature = base64_encode(hash_hmac('sha256',
|
||||||
|
hash('sha256', $sign, true), $credentials->getSecretKey(), true));
|
||||||
|
|
||||||
|
// Add the authorization header to the request
|
||||||
|
$request->setHeader('x-amzn-authorization', sprintf('AWS3 AWSAccessKeyId=%s,Algorithm=HmacSHA256,SignedHeaders=%s,Signature=%s',
|
||||||
|
$credentials->getAccessKeyId(),
|
||||||
|
implode(';', array_keys($headers)),
|
||||||
|
$signature));
|
||||||
|
}
|
||||||
|
}
|
55
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV3Https.php
vendored
Normal file
55
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV3Https.php
vendored
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Aws\Common\Enum\DateFormat;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Signature Version 3 HTTPS
|
||||||
|
* @link http://docs.amazonwebservices.com/Route53/latest/DeveloperGuide/RESTAuthentication.html
|
||||||
|
*/
|
||||||
|
class SignatureV3Https extends AbstractSignature
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function signRequest(RequestInterface $request, CredentialsInterface $credentials)
|
||||||
|
{
|
||||||
|
// Add a date header if one is not set
|
||||||
|
if (!$request->hasHeader('date') && !$request->hasHeader('x-amz-date')) {
|
||||||
|
$request->setHeader('Date', $this->getDateTime(DateFormat::RFC1123));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the security token if one is present
|
||||||
|
if ($credentials->getSecurityToken()) {
|
||||||
|
$request->setHeader('x-amz-security-token', $credentials->getSecurityToken());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine the string to sign
|
||||||
|
$stringToSign = $request->getHeader('Date', true) ?: $request->getHeader('x-amz-date', true);
|
||||||
|
$request->getParams()->set('aws.string_to_sign', $stringToSign);
|
||||||
|
|
||||||
|
// Calculate the signature
|
||||||
|
$signature = base64_encode(hash_hmac('sha256', $stringToSign, $credentials->getSecretKey(), true));
|
||||||
|
|
||||||
|
// Add the authorization header to the request
|
||||||
|
$headerFormat = 'AWS3-HTTPS AWSAccessKeyId=%s,Algorithm=HmacSHA256,Signature=%s';
|
||||||
|
$request->setHeader('X-Amzn-Authorization', sprintf($headerFormat, $credentials->getAccessKeyId(), $signature));
|
||||||
|
}
|
||||||
|
}
|
256
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV4.php
vendored
Normal file
256
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Signature/SignatureV4.php
vendored
Normal file
|
@ -0,0 +1,256 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Signature;
|
||||||
|
|
||||||
|
use Aws\Common\Credentials\CredentialsInterface;
|
||||||
|
use Aws\Common\Enum\DateFormat;
|
||||||
|
use Aws\Common\HostNameUtils;
|
||||||
|
use Guzzle\Http\Message\EntityEnclosingRequestInterface;
|
||||||
|
use Guzzle\Http\Message\RequestInterface;
|
||||||
|
use Guzzle\Http\Url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signature Version 4
|
||||||
|
* @link http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html
|
||||||
|
*/
|
||||||
|
class SignatureV4 extends AbstractSignature implements EndpointSignatureInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string Cache of the default empty entity-body payload
|
||||||
|
*/
|
||||||
|
const DEFAULT_PAYLOAD = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Explicitly set service name
|
||||||
|
*/
|
||||||
|
protected $serviceName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Explicitly set region name
|
||||||
|
*/
|
||||||
|
protected $regionName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int Maximum number of hashes to cache
|
||||||
|
*/
|
||||||
|
protected $maxCacheSize = 50;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Cache of previously signed values
|
||||||
|
*/
|
||||||
|
protected $hashCache = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int Size of the hash cache
|
||||||
|
*/
|
||||||
|
protected $cacheSize = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the service name instead of inferring it from a request URL
|
||||||
|
*
|
||||||
|
* @param string $service Name of the service used when signing
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setServiceName($service)
|
||||||
|
{
|
||||||
|
$this->serviceName = $service;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the region name instead of inferring it from a request URL
|
||||||
|
*
|
||||||
|
* @param string $region Name of the region used when signing
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setRegionName($region)
|
||||||
|
{
|
||||||
|
$this->regionName = $region;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the maximum number of computed hashes to cache
|
||||||
|
*
|
||||||
|
* @param int $maxCacheSize Maximum number of hashes to cache
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setMaxCacheSize($maxCacheSize)
|
||||||
|
{
|
||||||
|
$this->maxCacheSize = $maxCacheSize;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function signRequest(RequestInterface $request, CredentialsInterface $credentials)
|
||||||
|
{
|
||||||
|
// Refresh the cached timestamp
|
||||||
|
$this->getTimestamp(true);
|
||||||
|
|
||||||
|
$longDate = $this->getDateTime(DateFormat::ISO8601);
|
||||||
|
$shortDate = $this->getDateTime(DateFormat::SHORT);
|
||||||
|
|
||||||
|
// Remove any previously set Authorization headers so that
|
||||||
|
// exponential backoff works correctly
|
||||||
|
$request->removeHeader('Authorization');
|
||||||
|
|
||||||
|
// Requires a x-amz-date header or Date
|
||||||
|
if ($request->hasHeader('x-amz-date') || !$request->hasHeader('Date')) {
|
||||||
|
$request->setHeader('x-amz-date', $longDate);
|
||||||
|
} else {
|
||||||
|
$request->setHeader('Date', $this->getDateTime(DateFormat::RFC1123));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the security token if one is present
|
||||||
|
if ($credentials->getSecurityToken()) {
|
||||||
|
$request->setHeader('x-amz-security-token', $credentials->getSecurityToken());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse the service and region or use one that is explicitly set
|
||||||
|
$url = null;
|
||||||
|
if (!$this->regionName || !$this->serviceName) {
|
||||||
|
$url = Url::factory($request->getUrl());
|
||||||
|
}
|
||||||
|
if (!$region = $this->regionName) {
|
||||||
|
$region = HostNameUtils::parseRegionName($url);
|
||||||
|
}
|
||||||
|
if (!$service = $this->serviceName) {
|
||||||
|
$service = HostNameUtils::parseServiceName($url);
|
||||||
|
}
|
||||||
|
|
||||||
|
$credentialScope = "{$shortDate}/{$region}/{$service}/aws4_request";
|
||||||
|
|
||||||
|
$signingContext = $this->createCanonicalRequest($request);
|
||||||
|
$signingContext['string_to_sign'] = "AWS4-HMAC-SHA256\n{$longDate}\n{$credentialScope}\n"
|
||||||
|
. hash('sha256', $signingContext['canonical_request']);
|
||||||
|
|
||||||
|
// Calculate the signing key using a series of derived keys
|
||||||
|
$signingKey = $this->getSigningKey($shortDate, $region, $service, $credentials->getSecretKey());
|
||||||
|
$signature = hash_hmac('sha256', $signingContext['string_to_sign'], $signingKey);
|
||||||
|
|
||||||
|
$request->setHeader('Authorization', "AWS4-HMAC-SHA256 "
|
||||||
|
. "Credential={$credentials->getAccessKeyId()}/{$credentialScope}, "
|
||||||
|
. "SignedHeaders={$signingContext['signed_headers']}, Signature={$signature}");
|
||||||
|
|
||||||
|
// Add debug information to the request
|
||||||
|
$request->getParams()->set('aws.signature', $signingContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the canonical representation of a request
|
||||||
|
*
|
||||||
|
* @param RequestInterface $request Request to canonicalize
|
||||||
|
*
|
||||||
|
* @return array Returns an array of context information
|
||||||
|
*/
|
||||||
|
private function createCanonicalRequest(RequestInterface $request)
|
||||||
|
{
|
||||||
|
// Normalize the path as required by SigV4 and ensure it's absolute
|
||||||
|
$method = $request->getMethod();
|
||||||
|
$canon = $method . "\n"
|
||||||
|
. '/' . ltrim($request->getUrl(true)->normalizePath()->getPath(), '/') . "\n"
|
||||||
|
. $this->getCanonicalizedQueryString($request) . "\n";
|
||||||
|
|
||||||
|
// Create the canonical headers
|
||||||
|
$headers = array();
|
||||||
|
foreach ($request->getHeaders()->getAll() as $key => $values) {
|
||||||
|
if ($key != 'User-Agent') {
|
||||||
|
$key = strtolower($key);
|
||||||
|
if (!isset($headers[$key])) {
|
||||||
|
$headers[$key] = array();
|
||||||
|
}
|
||||||
|
foreach ($values as $value) {
|
||||||
|
$headers[$key][] = preg_replace('/\s+/', ' ', trim($value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The headers must be sorted
|
||||||
|
ksort($headers);
|
||||||
|
|
||||||
|
// Continue to build the canonical request by adding headers
|
||||||
|
foreach ($headers as $key => $values) {
|
||||||
|
// Combine multi-value headers into a sorted comma separated list
|
||||||
|
if (count($values) > 1) {
|
||||||
|
sort($values);
|
||||||
|
}
|
||||||
|
$canon .= $key . ':' . implode(',', $values) . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the signed headers
|
||||||
|
$signedHeaders = implode(';', array_keys($headers));
|
||||||
|
$canon .= "\n{$signedHeaders}\n";
|
||||||
|
|
||||||
|
// Create the payload if this request has an entity body
|
||||||
|
if ($request->hasHeader('x-amz-content-sha256')) {
|
||||||
|
// Handle streaming operations (e.g. Glacier.UploadArchive)
|
||||||
|
$canon .= $request->getHeader('x-amz-content-sha256');
|
||||||
|
} elseif ($request instanceof EntityEnclosingRequestInterface) {
|
||||||
|
$canon .= hash(
|
||||||
|
'sha256',
|
||||||
|
$method == 'POST' && count($request->getPostFields())
|
||||||
|
? (string) $request->getPostFields() : (string) $request->getBody()
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$canon .= self::DEFAULT_PAYLOAD;
|
||||||
|
}
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'canonical_request' => $canon,
|
||||||
|
'signed_headers' => $signedHeaders
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a hash for a specific key and value. If the hash was previously
|
||||||
|
* cached, return it
|
||||||
|
*
|
||||||
|
* @param string $shortDate Short date
|
||||||
|
* @param string $region Region name
|
||||||
|
* @param string $service Service name
|
||||||
|
* @param string $secretKey Secret Access Key
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function getSigningKey($shortDate, $region, $service, $secretKey)
|
||||||
|
{
|
||||||
|
$cacheKey = $shortDate . '_' . $region . '_' . $service . '_' . $secretKey;
|
||||||
|
|
||||||
|
// Retrieve the hash form the cache or create it and add it to the cache
|
||||||
|
if (!isset($this->hashCache[$cacheKey])) {
|
||||||
|
// When the cache size reaches the max, then just clear the cache
|
||||||
|
if (++$this->cacheSize > $this->maxCacheSize) {
|
||||||
|
$this->hashCache = array();
|
||||||
|
$this->cacheSize = 0;
|
||||||
|
}
|
||||||
|
$dateKey = hash_hmac('sha256', $shortDate, 'AWS4' . $secretKey, true);
|
||||||
|
$regionKey = hash_hmac('sha256', $region, $dateKey, true);
|
||||||
|
$serviceKey = hash_hmac('sha256', $service, $regionKey, true);
|
||||||
|
$this->hashCache[$cacheKey] = hash_hmac('sha256', 'aws4_request', $serviceKey, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->hashCache[$cacheKey];
|
||||||
|
}
|
||||||
|
}
|
53
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/AbstractResourceWaiter.php
vendored
Normal file
53
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/AbstractResourceWaiter.php
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Client\AwsClientInterface;
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract waiter implementation used to wait on resources
|
||||||
|
*/
|
||||||
|
abstract class AbstractResourceWaiter extends AbstractWaiter implements ResourceWaiterInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var AwsClientInterface
|
||||||
|
*/
|
||||||
|
protected $client;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setClient(AwsClientInterface $client)
|
||||||
|
{
|
||||||
|
$this->client = $client;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function wait()
|
||||||
|
{
|
||||||
|
if (!$this->client) {
|
||||||
|
throw new RuntimeException('No client has been specified on the waiter');
|
||||||
|
}
|
||||||
|
|
||||||
|
parent::wait();
|
||||||
|
}
|
||||||
|
}
|
136
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/AbstractWaiter.php
vendored
Normal file
136
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/AbstractWaiter.php
vendored
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
use Guzzle\Common\AbstractHasDispatcher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract wait implementation
|
||||||
|
*/
|
||||||
|
abstract class AbstractWaiter extends AbstractHasDispatcher implements WaiterInterface
|
||||||
|
{
|
||||||
|
protected $attempts = 0;
|
||||||
|
protected $config = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getAllEvents()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
// About to check if the waiter needs to wait
|
||||||
|
'waiter.before_attempt',
|
||||||
|
// About to sleep
|
||||||
|
'waiter.before_wait',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The max attempts allowed by the waiter
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getMaxAttempts()
|
||||||
|
{
|
||||||
|
return isset($this->config[self::MAX_ATTEMPTS]) ? $this->config[self::MAX_ATTEMPTS] : 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the amount of time in seconds to delay between attempts
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getInterval()
|
||||||
|
{
|
||||||
|
return isset($this->config[self::INTERVAL]) ? $this->config[self::INTERVAL] : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setMaxAttempts($maxAttempts)
|
||||||
|
{
|
||||||
|
$this->config[self::MAX_ATTEMPTS] = $maxAttempts;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setInterval($interval)
|
||||||
|
{
|
||||||
|
$this->config[self::INTERVAL] = $interval;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set config options associated with the waiter
|
||||||
|
*
|
||||||
|
* @param array $config Options to set
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setConfig(array $config)
|
||||||
|
{
|
||||||
|
$this->config = $config;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function wait()
|
||||||
|
{
|
||||||
|
$this->attempts = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
$this->dispatch('waiter.before_attempt', array(
|
||||||
|
'waiter' => $this,
|
||||||
|
'config' => $this->config,
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($this->doWait()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (++$this->attempts >= $this->getMaxAttempts()) {
|
||||||
|
throw new RuntimeException('Wait method never resolved to true after ' . $this->attempts . ' attempts');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->dispatch('waiter.before_wait', array(
|
||||||
|
'waiter' => $this,
|
||||||
|
'config' => $this->config,
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($this->getInterval()) {
|
||||||
|
usleep($this->getInterval() * 1000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
} while (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to implement in subclasses
|
||||||
|
*
|
||||||
|
* @return bool Return true when successful, false on failure
|
||||||
|
*/
|
||||||
|
abstract protected function doWait();
|
||||||
|
}
|
82
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/CallableWaiter.php
vendored
Normal file
82
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/CallableWaiter.php
vendored
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callable wait implementation
|
||||||
|
*/
|
||||||
|
class CallableWaiter extends AbstractWaiter
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var callable Callable function
|
||||||
|
*/
|
||||||
|
protected $callable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Additional context for the callable function
|
||||||
|
*/
|
||||||
|
protected $context = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the callable function to call in each wait attempt
|
||||||
|
*
|
||||||
|
* @param callable $callable Callable function
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
* @throws InvalidArgumentException when the method is not callable
|
||||||
|
*/
|
||||||
|
public function setCallable($callable)
|
||||||
|
{
|
||||||
|
if (!is_callable($callable)) {
|
||||||
|
throw new InvalidArgumentException('Value is not callable');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->callable = $callable;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set additional context for the callable function. This data will be passed into the callable function as the
|
||||||
|
* second argument
|
||||||
|
*
|
||||||
|
* @param array $context Additional context
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setContext(array $context)
|
||||||
|
{
|
||||||
|
$this->context = $context;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function doWait()
|
||||||
|
{
|
||||||
|
if (!$this->callable) {
|
||||||
|
throw new RuntimeException('No callable was specified for the wait method');
|
||||||
|
}
|
||||||
|
|
||||||
|
return call_user_func($this->callable, $this->attempts, $this->context);
|
||||||
|
}
|
||||||
|
}
|
90
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/CompositeWaiterFactory.php
vendored
Normal file
90
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/CompositeWaiterFactory.php
vendored
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory that utilizes multiple factories for creating waiters
|
||||||
|
*/
|
||||||
|
class CompositeWaiterFactory implements WaiterFactoryInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array Array of factories
|
||||||
|
*/
|
||||||
|
protected $factories;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $factories Array of factories used to instantiate waiters
|
||||||
|
*/
|
||||||
|
public function __construct(array $factories)
|
||||||
|
{
|
||||||
|
$this->factories = $factories;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function build($waiter)
|
||||||
|
{
|
||||||
|
if (!($factory = $this->getFactory($waiter))) {
|
||||||
|
throw new InvalidArgumentException("Waiter was not found matching {$waiter}.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $factory->build($waiter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function canBuild($waiter)
|
||||||
|
{
|
||||||
|
return (bool) $this->getFactory($waiter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a factory to the composite factory
|
||||||
|
*
|
||||||
|
* @param WaiterFactoryInterface $factory Factory to add
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function addFactory(WaiterFactoryInterface $factory)
|
||||||
|
{
|
||||||
|
$this->factories[] = $factory;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the factory that matches the waiter name
|
||||||
|
*
|
||||||
|
* @param string $waiter Name of the waiter
|
||||||
|
*
|
||||||
|
* @return WaiterFactoryInterface|bool
|
||||||
|
*/
|
||||||
|
protected function getFactory($waiter)
|
||||||
|
{
|
||||||
|
foreach ($this->factories as $factory) {
|
||||||
|
if ($factory->canBuild($waiter)) {
|
||||||
|
return $factory;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
225
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/ConfigResourceWaiter.php
vendored
Normal file
225
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/ConfigResourceWaiter.php
vendored
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Aws\Common\Exception\RuntimeException;
|
||||||
|
use Aws\Common\Exception\ServiceResponseException;
|
||||||
|
use Guzzle\Service\Resource\Model;
|
||||||
|
use Guzzle\Service\Exception\ValidationException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resource waiter driven by configuration options
|
||||||
|
*/
|
||||||
|
class ConfigResourceWaiter extends AbstractResourceWaiter
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var WaiterConfig Waiter configuration
|
||||||
|
*/
|
||||||
|
protected $waiterConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param WaiterConfig $waiterConfig Waiter configuration
|
||||||
|
*/
|
||||||
|
public function __construct(WaiterConfig $waiterConfig)
|
||||||
|
{
|
||||||
|
$this->waiterConfig = $waiterConfig;
|
||||||
|
$this->setInterval($waiterConfig->get(WaiterConfig::INTERVAL));
|
||||||
|
$this->setMaxAttempts($waiterConfig->get(WaiterConfig::MAX_ATTEMPTS));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function setConfig(array $config)
|
||||||
|
{
|
||||||
|
foreach ($config as $key => $value) {
|
||||||
|
if (substr($key, 0, 7) == 'waiter.') {
|
||||||
|
$this->waiterConfig->set(substr($key, 7), $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($config[self::INTERVAL])) {
|
||||||
|
$config[self::INTERVAL] = $this->waiterConfig->get(WaiterConfig::INTERVAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($config[self::MAX_ATTEMPTS])) {
|
||||||
|
$config[self::MAX_ATTEMPTS] = $this->waiterConfig->get(WaiterConfig::MAX_ATTEMPTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::setConfig($config);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the waiter's configuration data
|
||||||
|
*
|
||||||
|
* @return WaiterConfig
|
||||||
|
*/
|
||||||
|
public function getWaiterConfig()
|
||||||
|
{
|
||||||
|
return $this->waiterConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function doWait()
|
||||||
|
{
|
||||||
|
$params = $this->config;
|
||||||
|
// remove waiter settings from the operation's input
|
||||||
|
foreach (array_keys($params) as $key) {
|
||||||
|
if (substr($key, 0, 7) == 'waiter.') {
|
||||||
|
unset($params[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$operation = $this->client->getCommand($this->waiterConfig->get(WaiterConfig::OPERATION), $params);
|
||||||
|
|
||||||
|
try {
|
||||||
|
return $this->checkResult($this->client->execute($operation));
|
||||||
|
} catch (ValidationException $e) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
$this->waiterConfig->get(WaiterConfig::WAITER_NAME) . ' waiter validation failed: ' . $e->getMessage(),
|
||||||
|
$e->getCode(),
|
||||||
|
$e
|
||||||
|
);
|
||||||
|
} catch (ServiceResponseException $e) {
|
||||||
|
|
||||||
|
// Check if this exception satisfies a success or failure acceptor
|
||||||
|
$transition = $this->checkErrorAcceptor($e);
|
||||||
|
if (null !== $transition) {
|
||||||
|
return $transition;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if this exception should be ignored
|
||||||
|
foreach ((array) $this->waiterConfig->get(WaiterConfig::IGNORE_ERRORS) as $ignore) {
|
||||||
|
if ($e->getExceptionCode() == $ignore) {
|
||||||
|
// This exception is ignored, so it counts as a failed attempt rather than a fast-fail
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow non-ignore exceptions to bubble through
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if an exception satisfies a success or failure acceptor
|
||||||
|
*
|
||||||
|
* @param ServiceResponseException $e
|
||||||
|
*
|
||||||
|
* @return bool|null Returns true for success, false for failure, and null for no transition
|
||||||
|
*/
|
||||||
|
protected function checkErrorAcceptor(ServiceResponseException $e)
|
||||||
|
{
|
||||||
|
if ($this->waiterConfig->get(WaiterConfig::SUCCESS_TYPE) == 'error') {
|
||||||
|
if ($e->getExceptionCode() == $this->waiterConfig->get(WaiterConfig::SUCCESS_VALUE)) {
|
||||||
|
// Mark as a success
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mark as an attempt
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if the response model satisfies a success or failure state
|
||||||
|
*
|
||||||
|
* @param Model $result Result model
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
* @throws RuntimeException
|
||||||
|
*/
|
||||||
|
protected function checkResult(Model $result)
|
||||||
|
{
|
||||||
|
// Check if the result evaluates to true based on the path and output model
|
||||||
|
if ($this->waiterConfig->get(WaiterConfig::SUCCESS_TYPE) == 'output' &&
|
||||||
|
$this->checkPath(
|
||||||
|
$result,
|
||||||
|
$this->waiterConfig->get(WaiterConfig::SUCCESS_PATH),
|
||||||
|
$this->waiterConfig->get(WaiterConfig::SUCCESS_VALUE)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// It did not finish waiting yet. Determine if we need to fail-fast based on the failure acceptor.
|
||||||
|
if ($this->waiterConfig->get(WaiterConfig::FAILURE_TYPE) == 'output') {
|
||||||
|
$failureValue = $this->waiterConfig->get(WaiterConfig::FAILURE_VALUE);
|
||||||
|
if ($failureValue) {
|
||||||
|
$key = $this->waiterConfig->get(WaiterConfig::FAILURE_PATH);
|
||||||
|
if ($this->checkPath($result, $key, $failureValue, false)) {
|
||||||
|
// Determine which of the results triggered the failure
|
||||||
|
$triggered = array_intersect(
|
||||||
|
(array) $this->waiterConfig->get(WaiterConfig::FAILURE_VALUE),
|
||||||
|
array_unique((array) $result->getPath($key))
|
||||||
|
);
|
||||||
|
// fast fail because the failure case was satisfied
|
||||||
|
throw new RuntimeException(
|
||||||
|
'A resource entered into an invalid state of "'
|
||||||
|
. implode(', ', $triggered) . '" while waiting with the "'
|
||||||
|
. $this->waiterConfig->get(WaiterConfig::WAITER_NAME) . '" waiter.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if the path of the output key is satisfied by the value
|
||||||
|
*
|
||||||
|
* @param Model $model Result model
|
||||||
|
* @param string $key Key to check
|
||||||
|
* @param string $checkValue Compare the key to the value
|
||||||
|
* @param bool $all Set to true to ensure all value match or false to only match one
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function checkPath(Model $model, $key = null, $checkValue = array(), $all = true)
|
||||||
|
{
|
||||||
|
// If no key is set, then just assume true because the request succeeded
|
||||||
|
if (!$key) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!($result = $model->getPath($key))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$total = $matches = 0;
|
||||||
|
foreach ((array) $result as $value) {
|
||||||
|
$total++;
|
||||||
|
foreach ((array) $checkValue as $check) {
|
||||||
|
if ($value == $check) {
|
||||||
|
$matches++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// When matching all values, ensure that the match count matches the total count
|
||||||
|
if ($all && $total != $matches) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $matches > 0;
|
||||||
|
}
|
||||||
|
}
|
34
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/ResourceWaiterInterface.php
vendored
Normal file
34
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/ResourceWaiterInterface.php
vendored
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Client\AwsClientInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface used in conjunction with clients to wait on a resource
|
||||||
|
*/
|
||||||
|
interface ResourceWaiterInterface extends WaiterInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Set the client associated with the waiter
|
||||||
|
*
|
||||||
|
* @param AwsClientInterface $client Client to use with the waiter
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setClient(AwsClientInterface $client);
|
||||||
|
}
|
106
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterClassFactory.php
vendored
Normal file
106
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterClassFactory.php
vendored
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Guzzle\Inflection\Inflector;
|
||||||
|
use Guzzle\Inflection\InflectorInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory for creating {@see WaiterInterface} objects using a convention of
|
||||||
|
* storing waiter classes in the Waiter folder of a client class namespace using
|
||||||
|
* a snake_case to CamelCase conversion (e.g. camel_case => CamelCase).
|
||||||
|
*/
|
||||||
|
class WaiterClassFactory implements WaiterFactoryInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array List of namespaces used to look for classes
|
||||||
|
*/
|
||||||
|
protected $namespaces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var InflectorInterface Inflector used to inflect class names
|
||||||
|
*/
|
||||||
|
protected $inflector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array|string $namespaces Namespaces of waiter objects
|
||||||
|
* @param InflectorInterface $inflector Inflector used to resolve class names
|
||||||
|
*/
|
||||||
|
public function __construct($namespaces = array(), InflectorInterface $inflector = null)
|
||||||
|
{
|
||||||
|
$this->namespaces = (array) $namespaces;
|
||||||
|
$this->inflector = $inflector ?: Inflector::getDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a namespace to check for Waiters
|
||||||
|
*
|
||||||
|
* @param string $namespace Namespace which contains Waiter classes
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function registerNamespace($namespace)
|
||||||
|
{
|
||||||
|
array_unshift($this->namespaces, $namespace);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function build($waiter)
|
||||||
|
{
|
||||||
|
if (!($className = $this->getClassName($waiter))) {
|
||||||
|
throw new InvalidArgumentException("Waiter was not found matching {$waiter}.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return new $className();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function canBuild($waiter)
|
||||||
|
{
|
||||||
|
return $this->getClassName($waiter) !== null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of a waiter class
|
||||||
|
*
|
||||||
|
* @param string $waiter Waiter name
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
protected function getClassName($waiter)
|
||||||
|
{
|
||||||
|
$waiterName = $this->inflector->camel($waiter);
|
||||||
|
|
||||||
|
// Determine the name of the class to load
|
||||||
|
$className = null;
|
||||||
|
foreach ($this->namespaces as $namespace) {
|
||||||
|
$potentialClassName = $namespace . '\\' . $waiterName;
|
||||||
|
if (class_exists($potentialClassName)) {
|
||||||
|
return $potentialClassName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Guzzle\Common\Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration info of a waiter object
|
||||||
|
*/
|
||||||
|
class WaiterConfig extends Collection
|
||||||
|
{
|
||||||
|
const WAITER_NAME = 'name';
|
||||||
|
const MAX_ATTEMPTS = 'max_attempts';
|
||||||
|
const INTERVAL = 'interval';
|
||||||
|
const OPERATION = 'operation';
|
||||||
|
const IGNORE_ERRORS = 'ignore_errors';
|
||||||
|
const DESCRIPTION = 'description';
|
||||||
|
const SUCCESS_TYPE = 'success.type';
|
||||||
|
const SUCCESS_PATH = 'success.path';
|
||||||
|
const SUCCESS_VALUE = 'success.value';
|
||||||
|
const FAILURE_TYPE = 'failure.type';
|
||||||
|
const FAILURE_PATH = 'failure.path';
|
||||||
|
const FAILURE_VALUE = 'failure.value';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $data Array of configuration directives
|
||||||
|
*/
|
||||||
|
public function __construct(array $data = array())
|
||||||
|
{
|
||||||
|
$this->data = $data;
|
||||||
|
$this->extractConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the command configuration variables
|
||||||
|
*/
|
||||||
|
protected function extractConfig()
|
||||||
|
{
|
||||||
|
// Populate success.* and failure.* if specified in acceptor.*
|
||||||
|
foreach ($this->data as $key => $value) {
|
||||||
|
if (substr($key, 0, 9) == 'acceptor.') {
|
||||||
|
$name = substr($key, 9);
|
||||||
|
if (!isset($this->data["success.{$name}"])) {
|
||||||
|
$this->data["success.{$name}"] = $value;
|
||||||
|
}
|
||||||
|
if (!isset($this->data["failure.{$name}"])) {
|
||||||
|
$this->data["failure.{$name}"] = $value;
|
||||||
|
}
|
||||||
|
unset($this->data[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
98
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterConfigFactory.php
vendored
Normal file
98
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterConfigFactory.php
vendored
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Guzzle\Inflection\Inflector;
|
||||||
|
use Guzzle\Inflection\InflectorInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory for creating {@see WaiterInterface} objects using a configuration DSL.
|
||||||
|
*/
|
||||||
|
class WaiterConfigFactory implements WaiterFactoryInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var array Configuration directives
|
||||||
|
*/
|
||||||
|
protected $config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var InflectorInterface Inflector used to inflect class names
|
||||||
|
*/
|
||||||
|
protected $inflector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $config Array of configuration directives
|
||||||
|
* @param InflectorInterface $inflector Inflector used to resolve class names
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
array $config,
|
||||||
|
InflectorInterface $inflector = null
|
||||||
|
) {
|
||||||
|
$this->config = $config;
|
||||||
|
$this->inflector = $inflector ?: Inflector::getDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function build($waiter)
|
||||||
|
{
|
||||||
|
return new ConfigResourceWaiter($this->getWaiterConfig($waiter));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function canBuild($waiter)
|
||||||
|
{
|
||||||
|
return isset($this->config[$waiter]) || isset($this->config[$this->inflector->camel($waiter)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get waiter configuration data, taking __default__ and extensions into account
|
||||||
|
*
|
||||||
|
* @param string $name Waiter name
|
||||||
|
*
|
||||||
|
* @return WaiterConfig
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
protected function getWaiterConfig($name)
|
||||||
|
{
|
||||||
|
if (!$this->canBuild($name)) {
|
||||||
|
throw new InvalidArgumentException('No waiter found matching "' . $name . '"');
|
||||||
|
}
|
||||||
|
|
||||||
|
// inflect the name if needed
|
||||||
|
$name = isset($this->config[$name]) ? $name : $this->inflector->camel($name);
|
||||||
|
$waiter = new WaiterConfig($this->config[$name]);
|
||||||
|
$waiter['name'] = $name;
|
||||||
|
|
||||||
|
// Always use __default__ as the basis if it's set
|
||||||
|
if (isset($this->config['__default__'])) {
|
||||||
|
$parentWaiter = new WaiterConfig($this->config['__default__']);
|
||||||
|
$waiter = $parentWaiter->overwriteWith($waiter);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow for configuration extensions
|
||||||
|
if (isset($this->config[$name]['extends'])) {
|
||||||
|
$waiter = $this->getWaiterConfig($this->config[$name]['extends'])->overwriteWith($waiter);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $waiter;
|
||||||
|
}
|
||||||
|
}
|
41
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterFactoryInterface.php
vendored
Normal file
41
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterFactoryInterface.php
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Waiter factory used to create waiter objects by short names
|
||||||
|
*/
|
||||||
|
interface WaiterFactoryInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a waiter by name
|
||||||
|
*
|
||||||
|
* @param string $waiter Name of the waiter to create
|
||||||
|
*
|
||||||
|
* @return WaiterInterface
|
||||||
|
*/
|
||||||
|
public function build($waiter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the factory can create a waiter by a specific name
|
||||||
|
*
|
||||||
|
* @param string $waiter Name of the waiter to check
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function canBuild($waiter);
|
||||||
|
}
|
60
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterInterface.php
vendored
Normal file
60
apps/files_external/3rdparty/aws-sdk-php/Aws/Common/Waiter/WaiterInterface.php
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\Common\Waiter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WaiterInterface used to wait on something to be in a particular state
|
||||||
|
*/
|
||||||
|
interface WaiterInterface
|
||||||
|
{
|
||||||
|
const INTERVAL = 'waiter.interval';
|
||||||
|
const MAX_ATTEMPTS = 'waiter.max_attempts';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the maximum number of attempts to make when waiting
|
||||||
|
*
|
||||||
|
* @param int $maxAttempts Max number of attempts
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setMaxAttempts($maxAttempts);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the amount of time to interval between attempts
|
||||||
|
*
|
||||||
|
* @param int $interval Interval in seconds
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setInterval($interval);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set configuration options associated with the waiter
|
||||||
|
*
|
||||||
|
* @param array $config Configuration options to set
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setConfig(array $config);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Begin the waiting loop
|
||||||
|
*
|
||||||
|
* @throw RuntimeException if the method never resolves to true
|
||||||
|
*/
|
||||||
|
public function wait();
|
||||||
|
}
|
|
@ -0,0 +1,141 @@
|
||||||
|
# Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
## 1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1
|
||||||
|
through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the
|
||||||
|
License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled
|
||||||
|
by, or are under common control with that entity. For the purposes of this definition, "control" means
|
||||||
|
(i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract
|
||||||
|
or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
|
||||||
|
ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications, including but not limited to software
|
||||||
|
source code, documentation source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form,
|
||||||
|
including but not limited to compiled object code, generated documentation, and conversions to other media
|
||||||
|
types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License,
|
||||||
|
as indicated by a copyright notice that is included in or attached to the work (an example is provided in the
|
||||||
|
Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from)
|
||||||
|
the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent,
|
||||||
|
as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not
|
||||||
|
include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work
|
||||||
|
and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including the original version of the Work and any
|
||||||
|
modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to
|
||||||
|
Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to
|
||||||
|
submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of
|
||||||
|
electronic, verbal, or written communication sent to the Licensor or its representatives, including but not
|
||||||
|
limited to communication on electronic mailing lists, source code control systems, and issue tracking systems
|
||||||
|
that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise designated in writing by the copyright
|
||||||
|
owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been
|
||||||
|
received by Licensor and subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
## 2. Grant of Copyright License.
|
||||||
|
|
||||||
|
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
|
||||||
|
Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such
|
||||||
|
Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
## 3. Grant of Patent License.
|
||||||
|
|
||||||
|
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent
|
||||||
|
license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such
|
||||||
|
license applies only to those patent claims licensable by such Contributor that are necessarily infringed by
|
||||||
|
their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such
|
||||||
|
Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim
|
||||||
|
or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work
|
||||||
|
constitutes direct or contributory patent infringement, then any patent licenses granted to You under this
|
||||||
|
License for that Work shall terminate as of the date such litigation is filed.
|
||||||
|
|
||||||
|
## 4. Redistribution.
|
||||||
|
|
||||||
|
You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||||
|
|
||||||
|
1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
2. You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||||
|
|
||||||
|
3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent,
|
||||||
|
trademark, and attribution notices from the Source form of the Work, excluding those notices that do
|
||||||
|
not pertain to any part of the Derivative Works; and
|
||||||
|
|
||||||
|
4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that
|
||||||
|
You distribute must include a readable copy of the attribution notices contained within such NOTICE
|
||||||
|
file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed as part of the Derivative Works; within
|
||||||
|
the Source form or documentation, if provided along with the Derivative Works; or, within a display
|
||||||
|
generated by the Derivative Works, if and wherever such third-party notices normally appear. The
|
||||||
|
contents of the NOTICE file are for informational purposes only and do not modify the License. You may
|
||||||
|
add Your own attribution notices within Derivative Works that You distribute, alongside or as an
|
||||||
|
addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be
|
||||||
|
construed as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and may provide additional or different license
|
||||||
|
terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative
|
||||||
|
Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the
|
||||||
|
conditions stated in this License.
|
||||||
|
|
||||||
|
## 5. Submission of Contributions.
|
||||||
|
|
||||||
|
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by
|
||||||
|
You to the Licensor shall be under the terms and conditions of this License, without any additional terms or
|
||||||
|
conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate
|
||||||
|
license agreement you may have executed with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
## 6. Trademarks.
|
||||||
|
|
||||||
|
This License does not grant permission to use the trade names, trademarks, service marks, or product names of
|
||||||
|
the Licensor, except as required for reasonable and customary use in describing the origin of the Work and
|
||||||
|
reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
## 7. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor
|
||||||
|
provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||||
|
or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
|
||||||
|
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of
|
||||||
|
permissions under this License.
|
||||||
|
|
||||||
|
## 8. Limitation of Liability.
|
||||||
|
|
||||||
|
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless
|
||||||
|
required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any
|
||||||
|
Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential
|
||||||
|
damages of any character arising as a result of this License or out of the use or inability to use the Work
|
||||||
|
(including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
||||||
|
any and all other commercial damages or losses), even if such Contributor has been advised of the possibility
|
||||||
|
of such damages.
|
||||||
|
|
||||||
|
## 9. Accepting Warranty or Additional Liability.
|
||||||
|
|
||||||
|
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||||
|
acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole
|
||||||
|
responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold
|
||||||
|
each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
|
@ -0,0 +1,112 @@
|
||||||
|
# AWS SDK for PHP
|
||||||
|
|
||||||
|
<http://aws.amazon.com/php>
|
||||||
|
|
||||||
|
Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
A copy of the License is located at
|
||||||
|
|
||||||
|
<http://aws.amazon.com/apache2.0>
|
||||||
|
|
||||||
|
or in the "license" file accompanying this file. This file 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.
|
||||||
|
|
||||||
|
# Guzzle
|
||||||
|
|
||||||
|
<https://github.com/guzzle/guzzle>
|
||||||
|
|
||||||
|
Copyright (c) 2011 Michael Dowling, https://github.com/mtdowling
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
# Symfony
|
||||||
|
|
||||||
|
<https://github.com/symfony/symfony>
|
||||||
|
|
||||||
|
Copyright (c) 2004-2012 Fabien Potencier
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished
|
||||||
|
to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
# Doctrine Common
|
||||||
|
|
||||||
|
<https://github.com/doctrine/common>
|
||||||
|
|
||||||
|
Copyright (c) 2006-2012 Doctrine Project
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
# Monolog
|
||||||
|
|
||||||
|
<https://github.com/Seldaek/monolog>
|
||||||
|
|
||||||
|
Copyright (c) Jordi Boggiano
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished
|
||||||
|
to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
|
@ -0,0 +1,75 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3;
|
||||||
|
|
||||||
|
use Aws\Common\Exception\InvalidArgumentException;
|
||||||
|
use Aws\S3\Model\Acp;
|
||||||
|
use Guzzle\Common\Event;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listener used to add an Access Control Policy to a request
|
||||||
|
*/
|
||||||
|
class AcpListener implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array('command.before_prepare' => array('onCommandBeforePrepare', -255));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An event handler for constructing ACP definitions.
|
||||||
|
*
|
||||||
|
* @param Event $event The event to respond to.
|
||||||
|
*
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function onCommandBeforePrepare(Event $event)
|
||||||
|
{
|
||||||
|
/** @var $command \Guzzle\Service\Command\AbstractCommand */
|
||||||
|
$command = $event['command'];
|
||||||
|
$operation = $command->getOperation();
|
||||||
|
if ($operation->hasParam('ACP') && $command->hasKey('ACP')) {
|
||||||
|
if ($acp = $command->get('ACP')) {
|
||||||
|
// Ensure that the correct object was passed
|
||||||
|
if (!($acp instanceof Acp)) {
|
||||||
|
throw new InvalidArgumentException('ACP must be an instance of Aws\S3\Model\Acp');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the user specified both an ACP and Grants
|
||||||
|
if ($command->hasKey('Grants')) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'Use either the ACP parameter or the Grants parameter. Do not use both.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the correct headers/body based parameters to the command
|
||||||
|
if ($operation->hasParam('Grants')) {
|
||||||
|
$command->overwriteWith($acp->toArray());
|
||||||
|
} else {
|
||||||
|
$acp->updateCommand($command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove the ACP parameter
|
||||||
|
$command->remove('ACP');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3;
|
||||||
|
|
||||||
|
use Guzzle\Common\Event;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listener used to change the way in which buckets are referenced (path/virtual style) based on context
|
||||||
|
*/
|
||||||
|
class BucketStyleListener implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array('command.after_prepare' => array('onCommandAfterPrepare', -255));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes how buckets are referenced in the HTTP request
|
||||||
|
*
|
||||||
|
* @param Event $event Event emitted
|
||||||
|
*/
|
||||||
|
public function onCommandAfterPrepare(Event $event)
|
||||||
|
{
|
||||||
|
$command = $event['command'];
|
||||||
|
$bucket = $command['Bucket'];
|
||||||
|
$request = $command->getRequest();
|
||||||
|
$pathStyle = false;
|
||||||
|
|
||||||
|
if ($key = $command['Key']) {
|
||||||
|
// Modify the command Key to account for the {/Key*} explosion into an array
|
||||||
|
if (is_array($key)) {
|
||||||
|
$command['Key'] = $key = implode('/', $key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the key and bucket on the request
|
||||||
|
$request->getParams()->set('bucket', $bucket)->set('key', $key);
|
||||||
|
|
||||||
|
// Switch to virtual if PathStyle is disabled, or not a DNS compatible bucket name, or the scheme is
|
||||||
|
// http, or the scheme is https and there are no dots in the host header (avoids SSL issues)
|
||||||
|
if (!$command['PathStyle'] && $command->getClient()->isValidBucketName($bucket)
|
||||||
|
&& !($command->getRequest()->getScheme() == 'https' && strpos($bucket, '.'))
|
||||||
|
) {
|
||||||
|
// Switch to virtual hosted bucket
|
||||||
|
$request->setHost($bucket . '.' . $request->getHost());
|
||||||
|
$request->setPath(preg_replace("#^/{$bucket}#", '', $request->getPath()));
|
||||||
|
} else {
|
||||||
|
$pathStyle = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$bucket) {
|
||||||
|
$request->getParams()->set('s3.resource', '/');
|
||||||
|
} elseif ($pathStyle) {
|
||||||
|
// Path style does not need a trailing slash
|
||||||
|
$request->getParams()->set(
|
||||||
|
's3.resource',
|
||||||
|
'/' . rawurlencode($bucket) . ($key ? ('/' . S3Client::encodeKey($key)) : '')
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Bucket style needs a trailing slash
|
||||||
|
$request->getParams()->set(
|
||||||
|
's3.resource',
|
||||||
|
'/' . rawurlencode($bucket) . ($key ? ('/' . S3Client::encodeKey($key)) : '/')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3\Command;
|
||||||
|
|
||||||
|
use Aws\S3\Exception\RedirectException;
|
||||||
|
use Guzzle\Service\Command\OperationCommand;
|
||||||
|
use Guzzle\Service\Resource\Model;
|
||||||
|
use Guzzle\Common\Event;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds functionality to Amazon S3 commands:
|
||||||
|
* - Adds the PutObject URL to a response
|
||||||
|
* - Allows creating a Pre-signed URL from any command
|
||||||
|
*/
|
||||||
|
class S3Command extends OperationCommand
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create a pre-signed URL for the operation
|
||||||
|
*
|
||||||
|
* @param int|string $expires The Unix timestamp to expire at or a string that can be evaluated by strtotime
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function createPresignedUrl($expires)
|
||||||
|
{
|
||||||
|
return $this->client->createPresignedUrl($this->prepare(), $expires);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function process()
|
||||||
|
{
|
||||||
|
$request = $this->getRequest();
|
||||||
|
$response = $this->getResponse();
|
||||||
|
|
||||||
|
// Dispatch an error if a 301 redirect occurred
|
||||||
|
if ($response->getStatusCode() == 301) {
|
||||||
|
$this->getClient()->getEventDispatcher()->dispatch('request.error', new Event(array(
|
||||||
|
'request' => $this->getRequest(),
|
||||||
|
'response' => $response
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
|
parent::process();
|
||||||
|
|
||||||
|
// Set the GetObject URL if using the PutObject operation
|
||||||
|
if ($this->result instanceof Model && $this->getName() == 'PutObject') {
|
||||||
|
$this->result->set('ObjectURL', $request->getUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable CannedAcl values
|
||||||
|
*/
|
||||||
|
class CannedAcl extends Enum
|
||||||
|
{
|
||||||
|
const PRIVATE_ACCESS = 'private';
|
||||||
|
const PUBLIC_READ = 'public-read';
|
||||||
|
const PUBLIC_READ_WRITE = 'public-read-write';
|
||||||
|
const AUTHENTICATED_READ = 'authenticated-read';
|
||||||
|
const BUCKET_OWNER_READ = 'bucket-owner-read';
|
||||||
|
const BUCKET_OWNER_FULL_CONTROL = 'bucket-owner-full-control';
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable Event values
|
||||||
|
*/
|
||||||
|
class Event extends Enum
|
||||||
|
{
|
||||||
|
const REDUCED_REDUNDANCY_LOST_OBJECT = 's3:ReducedRedundancyLostObject';
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable GranteeType values
|
||||||
|
*/
|
||||||
|
class GranteeType extends Enum
|
||||||
|
{
|
||||||
|
const USER = 'CanonicalUser';
|
||||||
|
const EMAIL = 'AmazonCustomerByEmail';
|
||||||
|
const GROUP = 'Group';
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable Amazon S3 group options for ACL grantees
|
||||||
|
*/
|
||||||
|
class Group extends Enum
|
||||||
|
{
|
||||||
|
const AUTHENTICATED_USERS = 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers';
|
||||||
|
const ALL_USERS = 'http://acs.amazonaws.com/groups/global/AllUsers';
|
||||||
|
const LOG_DELIVERY = 'http://acs.amazonaws.com/groups/s3/LogDelivery';
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable MFADelete values
|
||||||
|
*/
|
||||||
|
class MFADelete extends Enum
|
||||||
|
{
|
||||||
|
const ENABLED = 'Enabled';
|
||||||
|
const DISABLED = 'Disabled';
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. 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.
|
||||||
|
* A copy of the License is located at
|
||||||
|
*
|
||||||
|
* http://aws.amazon.com/apache2.0
|
||||||
|
*
|
||||||
|
* or in the "license" file accompanying this file. This file 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 Aws\S3\Enum;
|
||||||
|
|
||||||
|
use Aws\Common\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains enumerable MetadataDirective values
|
||||||
|
*/
|
||||||
|
class MetadataDirective extends Enum
|
||||||
|
{
|
||||||
|
const COPY = 'COPY';
|
||||||
|
const REPLACE = 'REPLACE';
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue