From 57efc24003682d6ce7a8e756bcdb601fb4a7053b Mon Sep 17 00:00:00 2001 From: Manish Verma Date: Fri, 4 Nov 2016 11:15:57 +0530 Subject: [PATCH] email-configuration-bug-fix-patch Installed "tedivm/fetch": "0.6.*" package to configure email fetcing. --- composer.json | 3 +- composer.lock | 63 +- .../src/DirectConnect/DirectConnectClient.php | 6 + vendor/aws/aws-sdk-php/src/Sdk.php | 2 +- .../directconnect/2012-10-25/api-2.json.php | 2 +- .../aws-sdk-php/src/data/endpoints.json.php | 2 +- vendor/composer/autoload_classmap.php | 3 + vendor/composer/autoload_namespaces.php | 1 + vendor/composer/autoload_static.php | 7 + vendor/composer/installed.json | 215 +++-- vendor/tedivm/fetch/.coveralls.yml | 3 + vendor/tedivm/fetch/.gitignore | 9 + vendor/tedivm/fetch/.travis.yml | 21 + vendor/tedivm/fetch/CONTRIBUTING.md | 54 ++ vendor/tedivm/fetch/LICENSE | 24 + vendor/tedivm/fetch/README.md | 63 ++ vendor/tedivm/fetch/autoload.php | 25 + vendor/tedivm/fetch/composer.json | 28 + vendor/tedivm/fetch/phpunit.xml.dist | 27 + vendor/tedivm/fetch/src/Fetch/Attachment.php | 231 ++++++ vendor/tedivm/fetch/src/Fetch/Message.php | 738 ++++++++++++++++++ vendor/tedivm/fetch/src/Fetch/Server.php | 458 +++++++++++ .../fetch/tests/Fetch/Test/AttachmentTest.php | 118 +++ .../fetch/tests/Fetch/Test/MessageTest.php | 252 ++++++ .../fetch/tests/Fetch/Test/ServerTest.php | 225 ++++++ vendor/tedivm/fetch/tests/bootstrap.php | 40 + vendor/tedivm/fetch/tests/runTests.sh | 17 + 27 files changed, 2544 insertions(+), 93 deletions(-) create mode 100644 vendor/tedivm/fetch/.coveralls.yml create mode 100644 vendor/tedivm/fetch/.gitignore create mode 100644 vendor/tedivm/fetch/.travis.yml create mode 100644 vendor/tedivm/fetch/CONTRIBUTING.md create mode 100644 vendor/tedivm/fetch/LICENSE create mode 100644 vendor/tedivm/fetch/README.md create mode 100644 vendor/tedivm/fetch/autoload.php create mode 100644 vendor/tedivm/fetch/composer.json create mode 100644 vendor/tedivm/fetch/phpunit.xml.dist create mode 100644 vendor/tedivm/fetch/src/Fetch/Attachment.php create mode 100644 vendor/tedivm/fetch/src/Fetch/Message.php create mode 100644 vendor/tedivm/fetch/src/Fetch/Server.php create mode 100644 vendor/tedivm/fetch/tests/Fetch/Test/AttachmentTest.php create mode 100644 vendor/tedivm/fetch/tests/Fetch/Test/MessageTest.php create mode 100644 vendor/tedivm/fetch/tests/Fetch/Test/ServerTest.php create mode 100644 vendor/tedivm/fetch/tests/bootstrap.php create mode 100644 vendor/tedivm/fetch/tests/runTests.sh diff --git a/composer.json b/composer.json index 9407c7f43..858935671 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,8 @@ "maatwebsite/excel": "~2.1.0", "laravelcollective/bus": "^5.2", "laravel/socialite": "^2.0", - "unisharp/laravel-ckeditor": "^4.5" + "unisharp/laravel-ckeditor": "^4.5", + "tedivm/fetch": "0.6.*" }, "require-dev": { "phpunit/phpunit": "~4.0", diff --git a/composer.lock b/composer.lock index c97900830..352e53bc4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,21 +4,21 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "74863d52fcd4223ce972f755ac112a52", - "content-hash": "af38f59008695dff3ad2c6cf7571b35b", + "hash": "f0d25300aea06d3f8f01b956096ac641", + "content-hash": "0501535d018ba0aa2cd290c8be4bcb93", "packages": [ { "name": "aws/aws-sdk-php", - "version": "3.19.22", + "version": "3.19.23", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "04d2a027cac94674b52dfb4d68667bfe225b0fb5" + "reference": "fbfb87734e5d298b40354ac7fb3f95d0f72ad16e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/04d2a027cac94674b52dfb4d68667bfe225b0fb5", - "reference": "04d2a027cac94674b52dfb4d68667bfe225b0fb5", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/fbfb87734e5d298b40354ac7fb3f95d0f72ad16e", + "reference": "fbfb87734e5d298b40354ac7fb3f95d0f72ad16e", "shasum": "" }, "require": { @@ -85,7 +85,7 @@ "s3", "sdk" ], - "time": "2016-11-02 22:24:48" + "time": "2016-11-03 20:28:28" }, { "name": "barryvdh/laravel-debugbar", @@ -4007,6 +4007,55 @@ ], "time": "2016-07-26 08:03:56" }, + { + "name": "tedivm/fetch", + "version": "v0.6.1", + "source": { + "type": "git", + "url": "https://github.com/tedious/Fetch.git", + "reference": "154a84fdfa0d045c2871dd9f8708362fb9ea4acf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tedious/Fetch/zipball/154a84fdfa0d045c2871dd9f8708362fb9ea4acf", + "reference": "154a84fdfa0d045c2871dd9f8708362fb9ea4acf", + "shasum": "" + }, + "require": { + "ext-imap": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "0.5.*", + "phpunit/phpunit": "4.2.*", + "satooshi/php-coveralls": "dev-master", + "tedivm/dovecottesting": "1.2.3" + }, + "type": "library", + "autoload": { + "psr-0": { + "Fetch": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Robert Hafner", + "email": "tedivm@tedivm.com" + } + ], + "description": "A PHP IMAP Library", + "homepage": "http://github.com/tedious/Fetch", + "keywords": [ + "email", + "imap", + "pop3" + ], + "time": "2015-01-08 03:22:20" + }, { "name": "thomaswelton/gravatarlib", "version": "0.1.0", diff --git a/vendor/aws/aws-sdk-php/src/DirectConnect/DirectConnectClient.php b/vendor/aws/aws-sdk-php/src/DirectConnect/DirectConnectClient.php index bed451af1..297977424 100644 --- a/vendor/aws/aws-sdk-php/src/DirectConnect/DirectConnectClient.php +++ b/vendor/aws/aws-sdk-php/src/DirectConnect/DirectConnectClient.php @@ -44,9 +44,15 @@ use Aws\AwsClient; * @method \GuzzleHttp\Promise\Promise describeInterconnectsAsync(array $args = []) * @method \Aws\Result describeLocations(array $args = []) * @method \GuzzleHttp\Promise\Promise describeLocationsAsync(array $args = []) + * @method \Aws\Result describeTags(array $args = []) + * @method \GuzzleHttp\Promise\Promise describeTagsAsync(array $args = []) * @method \Aws\Result describeVirtualGateways(array $args = []) * @method \GuzzleHttp\Promise\Promise describeVirtualGatewaysAsync(array $args = []) * @method \Aws\Result describeVirtualInterfaces(array $args = []) * @method \GuzzleHttp\Promise\Promise describeVirtualInterfacesAsync(array $args = []) + * @method \Aws\Result tagResource(array $args = []) + * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = []) + * @method \Aws\Result untagResource(array $args = []) + * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = []) */ class DirectConnectClient extends AwsClient {} diff --git a/vendor/aws/aws-sdk-php/src/Sdk.php b/vendor/aws/aws-sdk-php/src/Sdk.php index d6ec94211..bdb486a08 100644 --- a/vendor/aws/aws-sdk-php/src/Sdk.php +++ b/vendor/aws/aws-sdk-php/src/Sdk.php @@ -155,7 +155,7 @@ namespace Aws; */ class Sdk { - const VERSION = '3.19.22'; + const VERSION = '3.19.23'; /** @var array Arguments for creating clients */ private $args; diff --git a/vendor/aws/aws-sdk-php/src/data/directconnect/2012-10-25/api-2.json.php b/vendor/aws/aws-sdk-php/src/data/directconnect/2012-10-25/api-2.json.php index 5be4bc364..c5317ba60 100644 --- a/vendor/aws/aws-sdk-php/src/data/directconnect/2012-10-25/api-2.json.php +++ b/vendor/aws/aws-sdk-php/src/data/directconnect/2012-10-25/api-2.json.php @@ -1,3 +1,3 @@ '2.0', 'metadata' => [ 'apiVersion' => '2012-10-25', 'endpointPrefix' => 'directconnect', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceFullName' => 'AWS Direct Connect', 'signatureVersion' => 'v4', 'targetPrefix' => 'OvertureService', ], 'operations' => [ 'AllocateConnectionOnInterconnect' => [ 'name' => 'AllocateConnectionOnInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'AllocateConnectionOnInterconnectRequest', ], 'output' => [ 'shape' => 'Connection', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'AllocatePrivateVirtualInterface' => [ 'name' => 'AllocatePrivateVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'AllocatePrivateVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'AllocatePublicVirtualInterface' => [ 'name' => 'AllocatePublicVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'AllocatePublicVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'ConfirmConnection' => [ 'name' => 'ConfirmConnection', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'ConfirmConnectionRequest', ], 'output' => [ 'shape' => 'ConfirmConnectionResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'ConfirmPrivateVirtualInterface' => [ 'name' => 'ConfirmPrivateVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'ConfirmPrivateVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'ConfirmPrivateVirtualInterfaceResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'ConfirmPublicVirtualInterface' => [ 'name' => 'ConfirmPublicVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'ConfirmPublicVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'ConfirmPublicVirtualInterfaceResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreateConnection' => [ 'name' => 'CreateConnection', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreateConnectionRequest', ], 'output' => [ 'shape' => 'Connection', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreateInterconnect' => [ 'name' => 'CreateInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreateInterconnectRequest', ], 'output' => [ 'shape' => 'Interconnect', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreatePrivateVirtualInterface' => [ 'name' => 'CreatePrivateVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreatePrivateVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreatePublicVirtualInterface' => [ 'name' => 'CreatePublicVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreatePublicVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DeleteConnection' => [ 'name' => 'DeleteConnection', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DeleteConnectionRequest', ], 'output' => [ 'shape' => 'Connection', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DeleteInterconnect' => [ 'name' => 'DeleteInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DeleteInterconnectRequest', ], 'output' => [ 'shape' => 'DeleteInterconnectResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DeleteVirtualInterface' => [ 'name' => 'DeleteVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DeleteVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'DeleteVirtualInterfaceResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeConnectionLoa' => [ 'name' => 'DescribeConnectionLoa', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeConnectionLoaRequest', ], 'output' => [ 'shape' => 'DescribeConnectionLoaResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeConnections' => [ 'name' => 'DescribeConnections', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeConnectionsRequest', ], 'output' => [ 'shape' => 'Connections', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeConnectionsOnInterconnect' => [ 'name' => 'DescribeConnectionsOnInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeConnectionsOnInterconnectRequest', ], 'output' => [ 'shape' => 'Connections', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeInterconnectLoa' => [ 'name' => 'DescribeInterconnectLoa', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeInterconnectLoaRequest', ], 'output' => [ 'shape' => 'DescribeInterconnectLoaResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeInterconnects' => [ 'name' => 'DescribeInterconnects', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeInterconnectsRequest', ], 'output' => [ 'shape' => 'Interconnects', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeLocations' => [ 'name' => 'DescribeLocations', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'output' => [ 'shape' => 'Locations', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeVirtualGateways' => [ 'name' => 'DescribeVirtualGateways', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'output' => [ 'shape' => 'VirtualGateways', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeVirtualInterfaces' => [ 'name' => 'DescribeVirtualInterfaces', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeVirtualInterfacesRequest', ], 'output' => [ 'shape' => 'VirtualInterfaces', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], ], 'shapes' => [ 'ASN' => [ 'type' => 'integer', ], 'AllocateConnectionOnInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'bandwidth', 'connectionName', 'ownerAccount', 'interconnectId', 'vlan', ], 'members' => [ 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'connectionName' => [ 'shape' => 'ConnectionName', ], 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'interconnectId' => [ 'shape' => 'InterconnectId', ], 'vlan' => [ 'shape' => 'VLAN', ], ], ], 'AllocatePrivateVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'ownerAccount', 'newPrivateVirtualInterfaceAllocation', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'newPrivateVirtualInterfaceAllocation' => [ 'shape' => 'NewPrivateVirtualInterfaceAllocation', ], ], ], 'AllocatePublicVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'ownerAccount', 'newPublicVirtualInterfaceAllocation', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'newPublicVirtualInterfaceAllocation' => [ 'shape' => 'NewPublicVirtualInterfaceAllocation', ], ], ], 'AmazonAddress' => [ 'type' => 'string', ], 'BGPAuthKey' => [ 'type' => 'string', ], 'Bandwidth' => [ 'type' => 'string', ], 'CIDR' => [ 'type' => 'string', ], 'ConfirmConnectionRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], ], ], 'ConfirmConnectionResponse' => [ 'type' => 'structure', 'members' => [ 'connectionState' => [ 'shape' => 'ConnectionState', ], ], ], 'ConfirmPrivateVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceId', 'virtualGatewayId', ], 'members' => [ 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], ], ], 'ConfirmPrivateVirtualInterfaceResponse' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], ], ], 'ConfirmPublicVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceId', ], 'members' => [ 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], ], ], 'ConfirmPublicVirtualInterfaceResponse' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], ], ], 'Connection' => [ 'type' => 'structure', 'members' => [ 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'connectionId' => [ 'shape' => 'ConnectionId', ], 'connectionName' => [ 'shape' => 'ConnectionName', ], 'connectionState' => [ 'shape' => 'ConnectionState', ], 'region' => [ 'shape' => 'Region', ], 'location' => [ 'shape' => 'LocationCode', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'vlan' => [ 'shape' => 'VLAN', ], 'partnerName' => [ 'shape' => 'PartnerName', ], 'loaIssueTime' => [ 'shape' => 'LoaIssueTime', ], ], ], 'ConnectionId' => [ 'type' => 'string', ], 'ConnectionList' => [ 'type' => 'list', 'member' => [ 'shape' => 'Connection', ], ], 'ConnectionName' => [ 'type' => 'string', ], 'ConnectionState' => [ 'type' => 'string', 'enum' => [ 'ordering', 'requested', 'pending', 'available', 'down', 'deleting', 'deleted', 'rejected', ], ], 'Connections' => [ 'type' => 'structure', 'members' => [ 'connections' => [ 'shape' => 'ConnectionList', ], ], ], 'CreateConnectionRequest' => [ 'type' => 'structure', 'required' => [ 'location', 'bandwidth', 'connectionName', ], 'members' => [ 'location' => [ 'shape' => 'LocationCode', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'connectionName' => [ 'shape' => 'ConnectionName', ], ], ], 'CreateInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectName', 'bandwidth', 'location', ], 'members' => [ 'interconnectName' => [ 'shape' => 'InterconnectName', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'location' => [ 'shape' => 'LocationCode', ], ], ], 'CreatePrivateVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'newPrivateVirtualInterface', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'newPrivateVirtualInterface' => [ 'shape' => 'NewPrivateVirtualInterface', ], ], ], 'CreatePublicVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'newPublicVirtualInterface', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'newPublicVirtualInterface' => [ 'shape' => 'NewPublicVirtualInterface', ], ], ], 'CustomerAddress' => [ 'type' => 'string', ], 'DeleteConnectionRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], ], ], 'DeleteInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectId', ], 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], ], ], 'DeleteInterconnectResponse' => [ 'type' => 'structure', 'members' => [ 'interconnectState' => [ 'shape' => 'InterconnectState', ], ], ], 'DeleteVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceId', ], 'members' => [ 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], ], ], 'DeleteVirtualInterfaceResponse' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], ], ], 'DescribeConnectionLoaRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'providerName' => [ 'shape' => 'ProviderName', ], 'loaContentType' => [ 'shape' => 'LoaContentType', ], ], ], 'DescribeConnectionLoaResponse' => [ 'type' => 'structure', 'members' => [ 'loa' => [ 'shape' => 'Loa', ], ], ], 'DescribeConnectionsOnInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectId', ], 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], ], ], 'DescribeConnectionsRequest' => [ 'type' => 'structure', 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], ], ], 'DescribeInterconnectLoaRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectId', ], 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], 'providerName' => [ 'shape' => 'ProviderName', ], 'loaContentType' => [ 'shape' => 'LoaContentType', ], ], ], 'DescribeInterconnectLoaResponse' => [ 'type' => 'structure', 'members' => [ 'loa' => [ 'shape' => 'Loa', ], ], ], 'DescribeInterconnectsRequest' => [ 'type' => 'structure', 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], ], ], 'DescribeVirtualInterfacesRequest' => [ 'type' => 'structure', 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], ], ], 'DirectConnectClientException' => [ 'type' => 'structure', 'members' => [ 'message' => [ 'shape' => 'ErrorMessage', ], ], 'exception' => true, ], 'DirectConnectServerException' => [ 'type' => 'structure', 'members' => [ 'message' => [ 'shape' => 'ErrorMessage', ], ], 'exception' => true, ], 'ErrorMessage' => [ 'type' => 'string', ], 'Interconnect' => [ 'type' => 'structure', 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], 'interconnectName' => [ 'shape' => 'InterconnectName', ], 'interconnectState' => [ 'shape' => 'InterconnectState', ], 'region' => [ 'shape' => 'Region', ], 'location' => [ 'shape' => 'LocationCode', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'loaIssueTime' => [ 'shape' => 'LoaIssueTime', ], ], ], 'InterconnectId' => [ 'type' => 'string', ], 'InterconnectList' => [ 'type' => 'list', 'member' => [ 'shape' => 'Interconnect', ], ], 'InterconnectName' => [ 'type' => 'string', ], 'InterconnectState' => [ 'type' => 'string', 'enum' => [ 'requested', 'pending', 'available', 'down', 'deleting', 'deleted', ], ], 'Interconnects' => [ 'type' => 'structure', 'members' => [ 'interconnects' => [ 'shape' => 'InterconnectList', ], ], ], 'Loa' => [ 'type' => 'structure', 'members' => [ 'loaContent' => [ 'shape' => 'LoaContent', ], 'loaContentType' => [ 'shape' => 'LoaContentType', ], ], ], 'LoaContent' => [ 'type' => 'blob', ], 'LoaContentType' => [ 'type' => 'string', 'enum' => [ 'application/pdf', ], ], 'LoaIssueTime' => [ 'type' => 'timestamp', ], 'Location' => [ 'type' => 'structure', 'members' => [ 'locationCode' => [ 'shape' => 'LocationCode', ], 'locationName' => [ 'shape' => 'LocationName', ], ], ], 'LocationCode' => [ 'type' => 'string', ], 'LocationList' => [ 'type' => 'list', 'member' => [ 'shape' => 'Location', ], ], 'LocationName' => [ 'type' => 'string', ], 'Locations' => [ 'type' => 'structure', 'members' => [ 'locations' => [ 'shape' => 'LocationList', ], ], ], 'NewPrivateVirtualInterface' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', 'virtualGatewayId', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], ], ], 'NewPrivateVirtualInterfaceAllocation' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], ], ], 'NewPublicVirtualInterface' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', 'amazonAddress', 'customerAddress', 'routeFilterPrefixes', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'routeFilterPrefixes' => [ 'shape' => 'RouteFilterPrefixList', ], ], ], 'NewPublicVirtualInterfaceAllocation' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', 'amazonAddress', 'customerAddress', 'routeFilterPrefixes', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'routeFilterPrefixes' => [ 'shape' => 'RouteFilterPrefixList', ], ], ], 'OwnerAccount' => [ 'type' => 'string', ], 'PartnerName' => [ 'type' => 'string', ], 'ProviderName' => [ 'type' => 'string', ], 'Region' => [ 'type' => 'string', ], 'RouteFilterPrefix' => [ 'type' => 'structure', 'members' => [ 'cidr' => [ 'shape' => 'CIDR', ], ], ], 'RouteFilterPrefixList' => [ 'type' => 'list', 'member' => [ 'shape' => 'RouteFilterPrefix', ], ], 'RouterConfig' => [ 'type' => 'string', ], 'VLAN' => [ 'type' => 'integer', ], 'VirtualGateway' => [ 'type' => 'structure', 'members' => [ 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], 'virtualGatewayState' => [ 'shape' => 'VirtualGatewayState', ], ], ], 'VirtualGatewayId' => [ 'type' => 'string', ], 'VirtualGatewayList' => [ 'type' => 'list', 'member' => [ 'shape' => 'VirtualGateway', ], ], 'VirtualGatewayState' => [ 'type' => 'string', ], 'VirtualGateways' => [ 'type' => 'structure', 'members' => [ 'virtualGateways' => [ 'shape' => 'VirtualGatewayList', ], ], ], 'VirtualInterface' => [ 'type' => 'structure', 'members' => [ 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], 'location' => [ 'shape' => 'LocationCode', ], 'connectionId' => [ 'shape' => 'ConnectionId', ], 'virtualInterfaceType' => [ 'shape' => 'VirtualInterfaceType', ], 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], 'customerRouterConfig' => [ 'shape' => 'RouterConfig', ], 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], 'routeFilterPrefixes' => [ 'shape' => 'RouteFilterPrefixList', ], ], ], 'VirtualInterfaceId' => [ 'type' => 'string', ], 'VirtualInterfaceList' => [ 'type' => 'list', 'member' => [ 'shape' => 'VirtualInterface', ], ], 'VirtualInterfaceName' => [ 'type' => 'string', ], 'VirtualInterfaceState' => [ 'type' => 'string', 'enum' => [ 'confirming', 'verifying', 'pending', 'available', 'down', 'deleting', 'deleted', 'rejected', ], ], 'VirtualInterfaceType' => [ 'type' => 'string', ], 'VirtualInterfaces' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaces' => [ 'shape' => 'VirtualInterfaceList', ], ], ], ],]; +return [ 'version' => '2.0', 'metadata' => [ 'apiVersion' => '2012-10-25', 'endpointPrefix' => 'directconnect', 'jsonVersion' => '1.1', 'protocol' => 'json', 'serviceFullName' => 'AWS Direct Connect', 'signatureVersion' => 'v4', 'targetPrefix' => 'OvertureService', ], 'operations' => [ 'AllocateConnectionOnInterconnect' => [ 'name' => 'AllocateConnectionOnInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'AllocateConnectionOnInterconnectRequest', ], 'output' => [ 'shape' => 'Connection', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'AllocatePrivateVirtualInterface' => [ 'name' => 'AllocatePrivateVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'AllocatePrivateVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'AllocatePublicVirtualInterface' => [ 'name' => 'AllocatePublicVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'AllocatePublicVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'ConfirmConnection' => [ 'name' => 'ConfirmConnection', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'ConfirmConnectionRequest', ], 'output' => [ 'shape' => 'ConfirmConnectionResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'ConfirmPrivateVirtualInterface' => [ 'name' => 'ConfirmPrivateVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'ConfirmPrivateVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'ConfirmPrivateVirtualInterfaceResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'ConfirmPublicVirtualInterface' => [ 'name' => 'ConfirmPublicVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'ConfirmPublicVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'ConfirmPublicVirtualInterfaceResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreateConnection' => [ 'name' => 'CreateConnection', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreateConnectionRequest', ], 'output' => [ 'shape' => 'Connection', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreateInterconnect' => [ 'name' => 'CreateInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreateInterconnectRequest', ], 'output' => [ 'shape' => 'Interconnect', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreatePrivateVirtualInterface' => [ 'name' => 'CreatePrivateVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreatePrivateVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'CreatePublicVirtualInterface' => [ 'name' => 'CreatePublicVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'CreatePublicVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'VirtualInterface', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DeleteConnection' => [ 'name' => 'DeleteConnection', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DeleteConnectionRequest', ], 'output' => [ 'shape' => 'Connection', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DeleteInterconnect' => [ 'name' => 'DeleteInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DeleteInterconnectRequest', ], 'output' => [ 'shape' => 'DeleteInterconnectResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DeleteVirtualInterface' => [ 'name' => 'DeleteVirtualInterface', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DeleteVirtualInterfaceRequest', ], 'output' => [ 'shape' => 'DeleteVirtualInterfaceResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeConnectionLoa' => [ 'name' => 'DescribeConnectionLoa', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeConnectionLoaRequest', ], 'output' => [ 'shape' => 'DescribeConnectionLoaResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeConnections' => [ 'name' => 'DescribeConnections', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeConnectionsRequest', ], 'output' => [ 'shape' => 'Connections', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeConnectionsOnInterconnect' => [ 'name' => 'DescribeConnectionsOnInterconnect', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeConnectionsOnInterconnectRequest', ], 'output' => [ 'shape' => 'Connections', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeInterconnectLoa' => [ 'name' => 'DescribeInterconnectLoa', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeInterconnectLoaRequest', ], 'output' => [ 'shape' => 'DescribeInterconnectLoaResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeInterconnects' => [ 'name' => 'DescribeInterconnects', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeInterconnectsRequest', ], 'output' => [ 'shape' => 'Interconnects', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeLocations' => [ 'name' => 'DescribeLocations', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'output' => [ 'shape' => 'Locations', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeTags' => [ 'name' => 'DescribeTags', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeTagsRequest', ], 'output' => [ 'shape' => 'DescribeTagsResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeVirtualGateways' => [ 'name' => 'DescribeVirtualGateways', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'output' => [ 'shape' => 'VirtualGateways', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'DescribeVirtualInterfaces' => [ 'name' => 'DescribeVirtualInterfaces', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'DescribeVirtualInterfacesRequest', ], 'output' => [ 'shape' => 'VirtualInterfaces', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'TagResource' => [ 'name' => 'TagResource', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'TagResourceRequest', ], 'output' => [ 'shape' => 'TagResourceResponse', ], 'errors' => [ [ 'shape' => 'DuplicateTagKeysException', ], [ 'shape' => 'TooManyTagsException', ], [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], 'UntagResource' => [ 'name' => 'UntagResource', 'http' => [ 'method' => 'POST', 'requestUri' => '/', ], 'input' => [ 'shape' => 'UntagResourceRequest', ], 'output' => [ 'shape' => 'UntagResourceResponse', ], 'errors' => [ [ 'shape' => 'DirectConnectServerException', ], [ 'shape' => 'DirectConnectClientException', ], ], ], ], 'shapes' => [ 'ASN' => [ 'type' => 'integer', ], 'AllocateConnectionOnInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'bandwidth', 'connectionName', 'ownerAccount', 'interconnectId', 'vlan', ], 'members' => [ 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'connectionName' => [ 'shape' => 'ConnectionName', ], 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'interconnectId' => [ 'shape' => 'InterconnectId', ], 'vlan' => [ 'shape' => 'VLAN', ], ], ], 'AllocatePrivateVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'ownerAccount', 'newPrivateVirtualInterfaceAllocation', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'newPrivateVirtualInterfaceAllocation' => [ 'shape' => 'NewPrivateVirtualInterfaceAllocation', ], ], ], 'AllocatePublicVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'ownerAccount', 'newPublicVirtualInterfaceAllocation', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'newPublicVirtualInterfaceAllocation' => [ 'shape' => 'NewPublicVirtualInterfaceAllocation', ], ], ], 'AmazonAddress' => [ 'type' => 'string', ], 'BGPAuthKey' => [ 'type' => 'string', ], 'Bandwidth' => [ 'type' => 'string', ], 'CIDR' => [ 'type' => 'string', ], 'ConfirmConnectionRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], ], ], 'ConfirmConnectionResponse' => [ 'type' => 'structure', 'members' => [ 'connectionState' => [ 'shape' => 'ConnectionState', ], ], ], 'ConfirmPrivateVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceId', 'virtualGatewayId', ], 'members' => [ 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], ], ], 'ConfirmPrivateVirtualInterfaceResponse' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], ], ], 'ConfirmPublicVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceId', ], 'members' => [ 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], ], ], 'ConfirmPublicVirtualInterfaceResponse' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], ], ], 'Connection' => [ 'type' => 'structure', 'members' => [ 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'connectionId' => [ 'shape' => 'ConnectionId', ], 'connectionName' => [ 'shape' => 'ConnectionName', ], 'connectionState' => [ 'shape' => 'ConnectionState', ], 'region' => [ 'shape' => 'Region', ], 'location' => [ 'shape' => 'LocationCode', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'vlan' => [ 'shape' => 'VLAN', ], 'partnerName' => [ 'shape' => 'PartnerName', ], 'loaIssueTime' => [ 'shape' => 'LoaIssueTime', ], ], ], 'ConnectionId' => [ 'type' => 'string', ], 'ConnectionList' => [ 'type' => 'list', 'member' => [ 'shape' => 'Connection', ], ], 'ConnectionName' => [ 'type' => 'string', ], 'ConnectionState' => [ 'type' => 'string', 'enum' => [ 'ordering', 'requested', 'pending', 'available', 'down', 'deleting', 'deleted', 'rejected', ], ], 'Connections' => [ 'type' => 'structure', 'members' => [ 'connections' => [ 'shape' => 'ConnectionList', ], ], ], 'CreateConnectionRequest' => [ 'type' => 'structure', 'required' => [ 'location', 'bandwidth', 'connectionName', ], 'members' => [ 'location' => [ 'shape' => 'LocationCode', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'connectionName' => [ 'shape' => 'ConnectionName', ], ], ], 'CreateInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectName', 'bandwidth', 'location', ], 'members' => [ 'interconnectName' => [ 'shape' => 'InterconnectName', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'location' => [ 'shape' => 'LocationCode', ], ], ], 'CreatePrivateVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'newPrivateVirtualInterface', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'newPrivateVirtualInterface' => [ 'shape' => 'NewPrivateVirtualInterface', ], ], ], 'CreatePublicVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', 'newPublicVirtualInterface', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'newPublicVirtualInterface' => [ 'shape' => 'NewPublicVirtualInterface', ], ], ], 'CustomerAddress' => [ 'type' => 'string', ], 'DeleteConnectionRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], ], ], 'DeleteInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectId', ], 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], ], ], 'DeleteInterconnectResponse' => [ 'type' => 'structure', 'members' => [ 'interconnectState' => [ 'shape' => 'InterconnectState', ], ], ], 'DeleteVirtualInterfaceRequest' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceId', ], 'members' => [ 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], ], ], 'DeleteVirtualInterfaceResponse' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], ], ], 'DescribeConnectionLoaRequest' => [ 'type' => 'structure', 'required' => [ 'connectionId', ], 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'providerName' => [ 'shape' => 'ProviderName', ], 'loaContentType' => [ 'shape' => 'LoaContentType', ], ], ], 'DescribeConnectionLoaResponse' => [ 'type' => 'structure', 'members' => [ 'loa' => [ 'shape' => 'Loa', ], ], ], 'DescribeConnectionsOnInterconnectRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectId', ], 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], ], ], 'DescribeConnectionsRequest' => [ 'type' => 'structure', 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], ], ], 'DescribeInterconnectLoaRequest' => [ 'type' => 'structure', 'required' => [ 'interconnectId', ], 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], 'providerName' => [ 'shape' => 'ProviderName', ], 'loaContentType' => [ 'shape' => 'LoaContentType', ], ], ], 'DescribeInterconnectLoaResponse' => [ 'type' => 'structure', 'members' => [ 'loa' => [ 'shape' => 'Loa', ], ], ], 'DescribeInterconnectsRequest' => [ 'type' => 'structure', 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], ], ], 'DescribeTagsRequest' => [ 'type' => 'structure', 'required' => [ 'resourceArns', ], 'members' => [ 'resourceArns' => [ 'shape' => 'ResourceArnList', ], ], ], 'DescribeTagsResponse' => [ 'type' => 'structure', 'members' => [ 'resourceTags' => [ 'shape' => 'ResourceTagList', ], ], ], 'DescribeVirtualInterfacesRequest' => [ 'type' => 'structure', 'members' => [ 'connectionId' => [ 'shape' => 'ConnectionId', ], 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], ], ], 'DirectConnectClientException' => [ 'type' => 'structure', 'members' => [ 'message' => [ 'shape' => 'ErrorMessage', ], ], 'exception' => true, ], 'DirectConnectServerException' => [ 'type' => 'structure', 'members' => [ 'message' => [ 'shape' => 'ErrorMessage', ], ], 'exception' => true, ], 'DuplicateTagKeysException' => [ 'type' => 'structure', 'members' => [], 'exception' => true, ], 'ErrorMessage' => [ 'type' => 'string', ], 'Interconnect' => [ 'type' => 'structure', 'members' => [ 'interconnectId' => [ 'shape' => 'InterconnectId', ], 'interconnectName' => [ 'shape' => 'InterconnectName', ], 'interconnectState' => [ 'shape' => 'InterconnectState', ], 'region' => [ 'shape' => 'Region', ], 'location' => [ 'shape' => 'LocationCode', ], 'bandwidth' => [ 'shape' => 'Bandwidth', ], 'loaIssueTime' => [ 'shape' => 'LoaIssueTime', ], ], ], 'InterconnectId' => [ 'type' => 'string', ], 'InterconnectList' => [ 'type' => 'list', 'member' => [ 'shape' => 'Interconnect', ], ], 'InterconnectName' => [ 'type' => 'string', ], 'InterconnectState' => [ 'type' => 'string', 'enum' => [ 'requested', 'pending', 'available', 'down', 'deleting', 'deleted', ], ], 'Interconnects' => [ 'type' => 'structure', 'members' => [ 'interconnects' => [ 'shape' => 'InterconnectList', ], ], ], 'Loa' => [ 'type' => 'structure', 'members' => [ 'loaContent' => [ 'shape' => 'LoaContent', ], 'loaContentType' => [ 'shape' => 'LoaContentType', ], ], ], 'LoaContent' => [ 'type' => 'blob', ], 'LoaContentType' => [ 'type' => 'string', 'enum' => [ 'application/pdf', ], ], 'LoaIssueTime' => [ 'type' => 'timestamp', ], 'Location' => [ 'type' => 'structure', 'members' => [ 'locationCode' => [ 'shape' => 'LocationCode', ], 'locationName' => [ 'shape' => 'LocationName', ], ], ], 'LocationCode' => [ 'type' => 'string', ], 'LocationList' => [ 'type' => 'list', 'member' => [ 'shape' => 'Location', ], ], 'LocationName' => [ 'type' => 'string', ], 'Locations' => [ 'type' => 'structure', 'members' => [ 'locations' => [ 'shape' => 'LocationList', ], ], ], 'NewPrivateVirtualInterface' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', 'virtualGatewayId', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], ], ], 'NewPrivateVirtualInterfaceAllocation' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], ], ], 'NewPublicVirtualInterface' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', 'amazonAddress', 'customerAddress', 'routeFilterPrefixes', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'routeFilterPrefixes' => [ 'shape' => 'RouteFilterPrefixList', ], ], ], 'NewPublicVirtualInterfaceAllocation' => [ 'type' => 'structure', 'required' => [ 'virtualInterfaceName', 'vlan', 'asn', 'amazonAddress', 'customerAddress', 'routeFilterPrefixes', ], 'members' => [ 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'routeFilterPrefixes' => [ 'shape' => 'RouteFilterPrefixList', ], ], ], 'OwnerAccount' => [ 'type' => 'string', ], 'PartnerName' => [ 'type' => 'string', ], 'ProviderName' => [ 'type' => 'string', ], 'Region' => [ 'type' => 'string', ], 'ResourceArn' => [ 'type' => 'string', ], 'ResourceArnList' => [ 'type' => 'list', 'member' => [ 'shape' => 'ResourceArn', ], ], 'ResourceTag' => [ 'type' => 'structure', 'members' => [ 'resourceArn' => [ 'shape' => 'ResourceArn', ], 'tags' => [ 'shape' => 'TagList', ], ], ], 'ResourceTagList' => [ 'type' => 'list', 'member' => [ 'shape' => 'ResourceTag', ], ], 'RouteFilterPrefix' => [ 'type' => 'structure', 'members' => [ 'cidr' => [ 'shape' => 'CIDR', ], ], ], 'RouteFilterPrefixList' => [ 'type' => 'list', 'member' => [ 'shape' => 'RouteFilterPrefix', ], ], 'RouterConfig' => [ 'type' => 'string', ], 'Tag' => [ 'type' => 'structure', 'required' => [ 'key', ], 'members' => [ 'key' => [ 'shape' => 'TagKey', ], 'value' => [ 'shape' => 'TagValue', ], ], ], 'TagKey' => [ 'type' => 'string', 'max' => 128, 'min' => 1, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$', ], 'TagKeyList' => [ 'type' => 'list', 'member' => [ 'shape' => 'TagKey', ], ], 'TagList' => [ 'type' => 'list', 'member' => [ 'shape' => 'Tag', ], 'min' => 1, ], 'TagResourceRequest' => [ 'type' => 'structure', 'required' => [ 'resourceArn', 'tags', ], 'members' => [ 'resourceArn' => [ 'shape' => 'ResourceArn', ], 'tags' => [ 'shape' => 'TagList', ], ], ], 'TagResourceResponse' => [ 'type' => 'structure', 'members' => [], ], 'TagValue' => [ 'type' => 'string', 'max' => 256, 'min' => 0, 'pattern' => '^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$', ], 'TooManyTagsException' => [ 'type' => 'structure', 'members' => [], 'exception' => true, ], 'UntagResourceRequest' => [ 'type' => 'structure', 'required' => [ 'resourceArn', 'tagKeys', ], 'members' => [ 'resourceArn' => [ 'shape' => 'ResourceArn', ], 'tagKeys' => [ 'shape' => 'TagKeyList', ], ], ], 'UntagResourceResponse' => [ 'type' => 'structure', 'members' => [], ], 'VLAN' => [ 'type' => 'integer', ], 'VirtualGateway' => [ 'type' => 'structure', 'members' => [ 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], 'virtualGatewayState' => [ 'shape' => 'VirtualGatewayState', ], ], ], 'VirtualGatewayId' => [ 'type' => 'string', ], 'VirtualGatewayList' => [ 'type' => 'list', 'member' => [ 'shape' => 'VirtualGateway', ], ], 'VirtualGatewayState' => [ 'type' => 'string', ], 'VirtualGateways' => [ 'type' => 'structure', 'members' => [ 'virtualGateways' => [ 'shape' => 'VirtualGatewayList', ], ], ], 'VirtualInterface' => [ 'type' => 'structure', 'members' => [ 'ownerAccount' => [ 'shape' => 'OwnerAccount', ], 'virtualInterfaceId' => [ 'shape' => 'VirtualInterfaceId', ], 'location' => [ 'shape' => 'LocationCode', ], 'connectionId' => [ 'shape' => 'ConnectionId', ], 'virtualInterfaceType' => [ 'shape' => 'VirtualInterfaceType', ], 'virtualInterfaceName' => [ 'shape' => 'VirtualInterfaceName', ], 'vlan' => [ 'shape' => 'VLAN', ], 'asn' => [ 'shape' => 'ASN', ], 'authKey' => [ 'shape' => 'BGPAuthKey', ], 'amazonAddress' => [ 'shape' => 'AmazonAddress', ], 'customerAddress' => [ 'shape' => 'CustomerAddress', ], 'virtualInterfaceState' => [ 'shape' => 'VirtualInterfaceState', ], 'customerRouterConfig' => [ 'shape' => 'RouterConfig', ], 'virtualGatewayId' => [ 'shape' => 'VirtualGatewayId', ], 'routeFilterPrefixes' => [ 'shape' => 'RouteFilterPrefixList', ], ], ], 'VirtualInterfaceId' => [ 'type' => 'string', ], 'VirtualInterfaceList' => [ 'type' => 'list', 'member' => [ 'shape' => 'VirtualInterface', ], ], 'VirtualInterfaceName' => [ 'type' => 'string', ], 'VirtualInterfaceState' => [ 'type' => 'string', 'enum' => [ 'confirming', 'verifying', 'pending', 'available', 'down', 'deleting', 'deleted', 'rejected', ], ], 'VirtualInterfaceType' => [ 'type' => 'string', ], 'VirtualInterfaces' => [ 'type' => 'structure', 'members' => [ 'virtualInterfaces' => [ 'shape' => 'VirtualInterfaceList', ], ], ], ],]; diff --git a/vendor/aws/aws-sdk-php/src/data/endpoints.json.php b/vendor/aws/aws-sdk-php/src/data/endpoints.json.php index 7269b7e56..674abc499 100644 --- a/vendor/aws/aws-sdk-php/src/data/endpoints.json.php +++ b/vendor/aws/aws-sdk-php/src/data/endpoints.json.php @@ -1,3 +1,3 @@ 3, 'partitions' => [ [ 'partition' => 'aws-us-gov', 'partitionName' => 'AWS GovCloud (US)', 'regionRegex' => '^us\\-gov\\-\\w+\\-\\d+$', 'dnsSuffix' => 'amazonaws.com', 'defaults' => [ 'hostname' => '{service}.{region}.{dnsSuffix}', 'protocols' => [ 'https', ], 'signatureVersions' => [ 'v4', ], ], 'regions' => [ 'us-gov-west-1' => [ 'description' => 'AWS GovCloud (US)', ], ], 'services' => [ 'autoscaling' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'cloudformation' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'cloudhsm' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'cloudtrail' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'config' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'directconnect' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'dynamodb' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'ec2' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'elasticache' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'elasticloadbalancing' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'elasticmapreduce' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'glacier' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'iam' => [ 'endpoints' => [ 'aws-us-gov-global' => [ 'hostname' => 'iam.us-gov.amazonaws.com', 'credentialScope' => [ 'region' => 'us-gov-west-1', ], ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-us-gov-global', ], 'kms' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'logs' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'monitoring' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'rds' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'redshift' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 's3' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'hostname' => 's3-us-gov-west-1.amazonaws.com', 'protocols' => [ 'http', 'https', ], ], 'fips-us-gov-west-1' => [ 'credentialScope' => [ 'region' => 'us-gov-west-1', ], 'hostname' => 's3-fips-us-gov-west-1.amazonaws.com', ], ], 'defaults' => [ 'signatureVersions' => [ 's3', 's3v4', ], ], ], 'snowball' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'sns' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'sqs' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'sslCommonName' => '{region}.queue.{dnsSuffix}', 'protocols' => [ 'http', 'https', ], ], ], ], 'streams.dynamodb' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], 'defaults' => [ 'credentialScope' => [ 'service' => 'dynamodb', ], ], ], 'sts' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'swf' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], ], ], [ 'partition' => 'aws', 'partitionName' => 'AWS Standard', 'regionRegex' => '^(us|eu|ap|sa|ca)\\-\\w+\\-\\d+$', 'dnsSuffix' => 'amazonaws.com', 'defaults' => [ 'hostname' => '{service}.{region}.{dnsSuffix}', 'protocols' => [ 'https', ], 'signatureVersions' => [ 'v4', ], ], 'regions' => [ 'ap-northeast-2' => [ 'description' => 'Asia Pacific (Seoul)', ], 'us-west-2' => [ 'description' => 'US West (Oregon)', ], 'ap-south-1' => [ 'description' => 'Asia Pacific (Mumbai)', ], 'ap-southeast-2' => [ 'description' => 'Asia Pacific (Sydney)', ], 'us-west-1' => [ 'description' => 'US West (N. California)', ], 'ap-southeast-1' => [ 'description' => 'Asia Pacific (Singapore)', ], 'us-east-2' => [ 'description' => 'US East (Ohio)', ], 'sa-east-1' => [ 'description' => 'South America (Sao Paulo)', ], 'us-east-1' => [ 'description' => 'US East (N. Virginia)', ], 'ap-northeast-1' => [ 'description' => 'Asia Pacific (Tokyo)', ], 'eu-central-1' => [ 'description' => 'EU (Frankfurt)', ], 'eu-west-1' => [ 'description' => 'EU (Ireland)', ], ], 'services' => [ 'acm' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'apigateway' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'application-autoscaling' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'hostname' => 'autoscaling.{region}.amazonaws.com', 'credentialScope' => [ 'service' => 'application-autoscaling', ], 'protocols' => [ 'http', 'https', ], ], ], 'appstream' => [ 'endpoints' => [ 'us-east-1' => [], 'ap-northeast-1' => [], ], ], 'autoscaling' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'budgets' => [ 'endpoints' => [ 'aws-global' => [ 'hostname' => 'budgets.amazonaws.com', 'credentialScope' => [ 'region' => 'us-east-1', ], ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'cloudformation' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'cloudfront' => [ 'endpoints' => [ 'aws-global' => [ 'hostname' => 'cloudfront.amazonaws.com', 'protocols' => [ 'http', 'https', ], 'credentialScope' => [ 'region' => 'us-east-1', ], ], ], 'partitionEndpoint' => 'aws-global', 'isRegionalized' => false, ], 'cloudhsm' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'cloudsearch' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'cloudtrail' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'codecommit' => [ 'endpoints' => [ 'us-east-2' => [], 'us-east-1' => [], ], ], 'codedeploy' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'codepipeline' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'eu-west-1' => [], ], ], 'cognito-identity' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'cognito-idp' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'cognito-sync' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'config' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'data.iot' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'https', ], 'credentialScope' => [ 'service' => 'iotdata', ], ], ], 'datapipeline' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-west-1' => [], ], ], 'devicefarm' => [ 'endpoints' => [ 'us-west-2' => [], ], ], 'directconnect' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'discovery' => [ 'endpoints' => [ 'us-west-2' => [], ], ], 'dms' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'ds' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'dynamodb' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'local' => [ 'hostname' => 'localhost:8000', 'protocols' => [ 'http', ], 'credentialScope' => [ 'region' => 'us-east-1', ], ], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'ec2' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'ecr' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'ecs' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'elasticache' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'elasticbeanstalk' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'elasticfilesystem' => [ 'endpoints' => [ 'us-west-2' => [], 'us-east-2' => [], 'us-east-1' => [], 'eu-west-1' => [], ], ], 'elasticloadbalancing' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'elasticmapreduce' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [ 'sslCommonName' => '{service}.{region}.{dnsSuffix}', ], 'ap-northeast-1' => [], 'eu-central-1' => [ 'sslCommonName' => '{service}.{region}.{dnsSuffix}', ], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'sslCommonName' => '{region}.{service}.{dnsSuffix}', ], ], 'elastictranscoder' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-west-1' => [], ], ], 'email' => [ 'endpoints' => [ 'us-west-2' => [], 'us-east-1' => [], 'eu-west-1' => [], ], ], 'es' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'events' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'firehose' => [ 'endpoints' => [ 'us-west-2' => [], 'us-east-1' => [], 'eu-west-1' => [], ], ], 'gamelift' => [ 'endpoints' => [ 'us-west-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-west-1' => [], ], ], 'glacier' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'iam' => [ 'endpoints' => [ 'aws-global' => [ 'hostname' => 'iam.amazonaws.com', 'credentialScope' => [ 'region' => 'us-east-1', ], ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'importexport' => [ 'endpoints' => [ 'aws-global' => [ 'hostname' => 'importexport.amazonaws.com', 'signatureVersions' => [ 'v2', 'v4', ], 'credentialScope' => [ 'service' => 'IngestionService', 'region' => 'us-east-1', ], ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'inspector' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-west-1' => [], ], ], 'iot' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'credentialScope' => [ 'service' => 'execute-api', ], ], ], 'kinesis' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'kinesisanalytics' => [ 'endpoints' => [ 'us-west-2' => [], 'us-east-1' => [], 'eu-west-1' => [], ], ], 'kms' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'lambda' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'logs' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'machinelearning' => [ 'endpoints' => [ 'us-east-1' => [], 'eu-west-1' => [], ], ], 'marketplacecommerceanalytics' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 'metering.marketplace' => [ 'endpoints' => [ 'us-west-2' => [], 'us-east-1' => [], ], ], 'mobileanalytics' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 'monitoring' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'opsworks' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'rds' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [ 'sslCommonName' => '{service}.{dnsSuffix}', ], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'redshift' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'route53' => [ 'endpoints' => [ 'aws-global' => [ 'hostname' => 'route53.amazonaws.com', 'credentialScope' => [ 'region' => 'us-east-1', ], ], ], 'partitionEndpoint' => 'aws-global', 'isRegionalized' => false, ], 'route53domains' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 's3' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [ 'hostname' => 's3-us-west-2.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'ap-south-1' => [], 'ap-southeast-2' => [ 'hostname' => 's3-ap-southeast-2.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'us-west-1' => [ 'hostname' => 's3-us-west-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'ap-southeast-1' => [ 'hostname' => 's3-ap-southeast-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'us-east-2' => [], 'sa-east-1' => [ 'hostname' => 's3-sa-east-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'us-east-1' => [ 'hostname' => 's3.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 's3-external-1' => [ 'hostname' => 's3-external-1.amazonaws.com', 'credentialScope' => [ 'region' => 'us-east-1', ], 'signatureVersions' => [ 's3', 's3v4', ], ], 'ap-northeast-1' => [ 'hostname' => 's3-ap-northeast-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'eu-central-1' => [], 'eu-west-1' => [ 'hostname' => 's3-eu-west-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], ], 'partitionEndpoint' => 'us-east-1', 'isRegionalized' => true, 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'signatureVersions' => [ 's3v4', ], ], ], 'sdb' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'sa-east-1' => [], 'us-east-1' => [ 'hostname' => 'sdb.amazonaws.com', ], 'ap-northeast-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'servicecatalog' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'sms' => [ 'endpoints' => [ 'ap-southeast-2' => [], 'us-east-1' => [], 'eu-west-1' => [], ], ], 'snowball' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'us-east-2' => [], 'us-east-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'sns' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'sqs' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [ 'sslCommonName' => 'queue.{dnsSuffix}', ], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'sslCommonName' => '{region}.queue.{dnsSuffix}', ], ], 'ssm' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'storagegateway' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'streams.dynamodb' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'credentialScope' => [ 'service' => 'dynamodb', ], ], ], 'sts' => [ 'endpoints' => [ 'ap-northeast-2' => [ 'hostname' => 'sts.ap-northeast-2.amazonaws.com', 'credentialScope' => [ 'region' => 'ap-northeast-2', ], ], 'us-west-2' => [], 'aws-global' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], 'defaults' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'sts.amazonaws.com', ], 'partitionEndpoint' => 'aws-global', ], 'support' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 'swf' => [ 'endpoints' => [ 'ap-northeast-2' => [], 'us-west-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'us-west-1' => [], 'ap-southeast-1' => [], 'us-east-2' => [], 'sa-east-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], 'waf' => [ 'endpoints' => [ 'aws-global' => [ 'hostname' => 'waf.amazonaws.com', 'credentialScope' => [ 'region' => 'us-east-1', ], ], ], 'partitionEndpoint' => 'aws-global', 'isRegionalized' => false, ], 'workspaces' => [ 'endpoints' => [ 'us-west-2' => [], 'ap-southeast-2' => [], 'ap-southeast-1' => [], 'us-east-1' => [], 'ap-northeast-1' => [], 'eu-central-1' => [], 'eu-west-1' => [], ], ], ], ], [ 'partition' => 'aws-cn', 'partitionName' => 'AWS China', 'regionRegex' => '^cn\\-\\w+\\-\\d+$', 'dnsSuffix' => 'amazonaws.com.cn', 'defaults' => [ 'hostname' => '{service}.{region}.{dnsSuffix}', 'protocols' => [ 'https', ], 'signatureVersions' => [ 'v4', ], ], 'regions' => [ 'cn-north-1' => [ 'description' => 'China (Beijing)', ], ], 'services' => [ 'autoscaling' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'cloudformation' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'cloudtrail' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'directconnect' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'dynamodb' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'ec2' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'elasticache' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'elasticbeanstalk' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'elasticloadbalancing' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'elasticmapreduce' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'glacier' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'iam' => [ 'endpoints' => [ 'aws-cn-global' => [ 'hostname' => 'iam.cn-north-1.amazonaws.com.cn', 'credentialScope' => [ 'region' => 'cn-north-1', ], ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-cn-global', ], 'kinesis' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'logs' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'monitoring' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'rds' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'redshift' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 's3' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'signatureVersions' => [ 's3v4', ], ], ], 'sns' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], ], 'sqs' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'sslCommonName' => '{region}.queue.{dnsSuffix}', ], ], 'storagegateway' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'streams.dynamodb' => [ 'endpoints' => [ 'cn-north-1' => [], ], 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'credentialScope' => [ 'service' => 'dynamodb', ], ], ], 'sts' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'swf' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], ], ], ],]; +return [ 'partitions' => [ [ 'defaults' => [ 'hostname' => '{service}.{region}.{dnsSuffix}', 'protocols' => [ 'https', ], 'signatureVersions' => [ 'v4', ], ], 'dnsSuffix' => 'amazonaws.com', 'partition' => 'aws', 'partitionName' => 'AWS Standard', 'regionRegex' => '^(us|eu|ap|sa|ca)\\-\\w+\\-\\d+$', 'regions' => [ 'ap-northeast-1' => [ 'description' => 'Asia Pacific (Tokyo)', ], 'ap-northeast-2' => [ 'description' => 'Asia Pacific (Seoul)', ], 'ap-south-1' => [ 'description' => 'Asia Pacific (Mumbai)', ], 'ap-southeast-1' => [ 'description' => 'Asia Pacific (Singapore)', ], 'ap-southeast-2' => [ 'description' => 'Asia Pacific (Sydney)', ], 'eu-central-1' => [ 'description' => 'EU (Frankfurt)', ], 'eu-west-1' => [ 'description' => 'EU (Ireland)', ], 'sa-east-1' => [ 'description' => 'South America (Sao Paulo)', ], 'us-east-1' => [ 'description' => 'US East (N. Virginia)', ], 'us-east-2' => [ 'description' => 'US East (Ohio)', ], 'us-west-1' => [ 'description' => 'US West (N. California)', ], 'us-west-2' => [ 'description' => 'US West (Oregon)', ], ], 'services' => [ 'acm' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'apigateway' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-2' => [], ], ], 'application-autoscaling' => [ 'defaults' => [ 'credentialScope' => [ 'service' => 'application-autoscaling', ], 'hostname' => 'autoscaling.{region}.amazonaws.com', 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'appstream' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'us-east-1' => [], ], ], 'autoscaling' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'budgets' => [ 'endpoints' => [ 'aws-global' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'budgets.amazonaws.com', ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'cloudformation' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'cloudfront' => [ 'endpoints' => [ 'aws-global' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'cloudfront.amazonaws.com', 'protocols' => [ 'http', 'https', ], ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'cloudhsm' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'cloudsearch' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'cloudtrail' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'codecommit' => [ 'endpoints' => [ 'us-east-1' => [], 'us-east-2' => [], ], ], 'codedeploy' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'codepipeline' => [ 'endpoints' => [ 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-2' => [], ], ], 'cognito-identity' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'cognito-idp' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'cognito-sync' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'config' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'data.iot' => [ 'defaults' => [ 'credentialScope' => [ 'service' => 'iotdata', ], 'protocols' => [ 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'datapipeline' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-2' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'devicefarm' => [ 'endpoints' => [ 'us-west-2' => [], ], ], 'directconnect' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'discovery' => [ 'endpoints' => [ 'us-west-2' => [], ], ], 'dms' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'ds' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'dynamodb' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'local' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'localhost:8000', 'protocols' => [ 'http', ], ], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'ec2' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'ecr' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'ecs' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'elasticache' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'elasticbeanstalk' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'elasticfilesystem' => [ 'endpoints' => [ 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-2' => [], ], ], 'elasticloadbalancing' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'elasticmapreduce' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'sslCommonName' => '{region}.{service}.{dnsSuffix}', ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [ 'sslCommonName' => '{service}.{region}.{dnsSuffix}', ], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [ 'sslCommonName' => '{service}.{region}.{dnsSuffix}', ], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'elastictranscoder' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'email' => [ 'endpoints' => [ 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'es' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'events' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'firehose' => [ 'endpoints' => [ 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'gamelift' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'glacier' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'iam' => [ 'endpoints' => [ 'aws-global' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'iam.amazonaws.com', ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'importexport' => [ 'endpoints' => [ 'aws-global' => [ 'credentialScope' => [ 'region' => 'us-east-1', 'service' => 'IngestionService', ], 'hostname' => 'importexport.amazonaws.com', 'signatureVersions' => [ 'v2', 'v4', ], ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'inspector' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-2' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'iot' => [ 'defaults' => [ 'credentialScope' => [ 'service' => 'execute-api', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'kinesis' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'kinesisanalytics' => [ 'endpoints' => [ 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], 'kms' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'lambda' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-2' => [], ], ], 'logs' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'machinelearning' => [ 'endpoints' => [ 'eu-west-1' => [], 'us-east-1' => [], ], ], 'marketplacecommerceanalytics' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 'metering.marketplace' => [ 'endpoints' => [ 'us-east-1' => [], 'us-west-2' => [], ], ], 'mobileanalytics' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 'monitoring' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'opsworks' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'rds' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [ 'sslCommonName' => '{service}.{dnsSuffix}', ], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'redshift' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'route53' => [ 'endpoints' => [ 'aws-global' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'route53.amazonaws.com', ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'route53domains' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 's3' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'signatureVersions' => [ 's3v4', ], ], 'endpoints' => [ 'ap-northeast-1' => [ 'hostname' => 's3-ap-northeast-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [ 'hostname' => 's3-ap-southeast-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'ap-southeast-2' => [ 'hostname' => 's3-ap-southeast-2.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'eu-central-1' => [], 'eu-west-1' => [ 'hostname' => 's3-eu-west-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 's3-external-1' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 's3-external-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'sa-east-1' => [ 'hostname' => 's3-sa-east-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'us-east-1' => [ 'hostname' => 's3.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'us-east-2' => [], 'us-west-1' => [ 'hostname' => 's3-us-west-1.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], 'us-west-2' => [ 'hostname' => 's3-us-west-2.amazonaws.com', 'signatureVersions' => [ 's3', 's3v4', ], ], ], 'isRegionalized' => true, 'partitionEndpoint' => 'us-east-1', ], 'sdb' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [ 'hostname' => 'sdb.amazonaws.com', ], 'us-west-1' => [], 'us-west-2' => [], ], ], 'servicecatalog' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-2' => [], ], ], 'sms' => [ 'endpoints' => [ 'ap-southeast-2' => [], 'eu-west-1' => [], 'us-east-1' => [], ], ], 'snowball' => [ 'endpoints' => [ 'ap-south-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'sns' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'sqs' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'sslCommonName' => '{region}.queue.{dnsSuffix}', ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [ 'sslCommonName' => 'queue.{dnsSuffix}', ], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'ssm' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'storagegateway' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'streams.dynamodb' => [ 'defaults' => [ 'credentialScope' => [ 'service' => 'dynamodb', ], 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'sts' => [ 'defaults' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'sts.amazonaws.com', ], 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [ 'credentialScope' => [ 'region' => 'ap-northeast-2', ], 'hostname' => 'sts.ap-northeast-2.amazonaws.com', ], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'aws-global' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], 'partitionEndpoint' => 'aws-global', ], 'support' => [ 'endpoints' => [ 'us-east-1' => [], ], ], 'swf' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-northeast-2' => [], 'ap-south-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'sa-east-1' => [], 'us-east-1' => [], 'us-east-2' => [], 'us-west-1' => [], 'us-west-2' => [], ], ], 'waf' => [ 'endpoints' => [ 'aws-global' => [ 'credentialScope' => [ 'region' => 'us-east-1', ], 'hostname' => 'waf.amazonaws.com', ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-global', ], 'workspaces' => [ 'endpoints' => [ 'ap-northeast-1' => [], 'ap-southeast-1' => [], 'ap-southeast-2' => [], 'eu-central-1' => [], 'eu-west-1' => [], 'us-east-1' => [], 'us-west-2' => [], ], ], ], ], [ 'defaults' => [ 'hostname' => '{service}.{region}.{dnsSuffix}', 'protocols' => [ 'https', ], 'signatureVersions' => [ 'v4', ], ], 'dnsSuffix' => 'amazonaws.com', 'partition' => 'aws-us-gov', 'partitionName' => 'AWS GovCloud (US)', 'regionRegex' => '^us\\-gov\\-\\w+\\-\\d+$', 'regions' => [ 'us-gov-west-1' => [ 'description' => 'AWS GovCloud (US)', ], ], 'services' => [ 'autoscaling' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'cloudformation' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'cloudhsm' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'cloudtrail' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'config' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'directconnect' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'dynamodb' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'ec2' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'elasticache' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'elasticloadbalancing' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'elasticmapreduce' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'glacier' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'iam' => [ 'endpoints' => [ 'aws-us-gov-global' => [ 'credentialScope' => [ 'region' => 'us-gov-west-1', ], 'hostname' => 'iam.us-gov.amazonaws.com', ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-us-gov-global', ], 'kms' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'logs' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'monitoring' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'rds' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'redshift' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 's3' => [ 'defaults' => [ 'signatureVersions' => [ 's3', 's3v4', ], ], 'endpoints' => [ 'fips-us-gov-west-1' => [ 'credentialScope' => [ 'region' => 'us-gov-west-1', ], 'hostname' => 's3-fips-us-gov-west-1.amazonaws.com', ], 'us-gov-west-1' => [ 'hostname' => 's3-us-gov-west-1.amazonaws.com', 'protocols' => [ 'http', 'https', ], ], ], ], 'snowball' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'sns' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], ], ], ], 'sqs' => [ 'endpoints' => [ 'us-gov-west-1' => [ 'protocols' => [ 'http', 'https', ], 'sslCommonName' => '{region}.queue.{dnsSuffix}', ], ], ], 'streams.dynamodb' => [ 'defaults' => [ 'credentialScope' => [ 'service' => 'dynamodb', ], ], 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'sts' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], 'swf' => [ 'endpoints' => [ 'us-gov-west-1' => [], ], ], ], ], [ 'defaults' => [ 'hostname' => '{service}.{region}.{dnsSuffix}', 'protocols' => [ 'https', ], 'signatureVersions' => [ 'v4', ], ], 'dnsSuffix' => 'amazonaws.com.cn', 'partition' => 'aws-cn', 'partitionName' => 'AWS China', 'regionRegex' => '^cn\\-\\w+\\-\\d+$', 'regions' => [ 'cn-north-1' => [ 'description' => 'China (Beijing)', ], ], 'services' => [ 'autoscaling' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'cloudformation' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'cloudtrail' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'directconnect' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'dynamodb' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'ec2' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'elasticache' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'elasticbeanstalk' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'elasticloadbalancing' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'elasticmapreduce' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'glacier' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'iam' => [ 'endpoints' => [ 'aws-cn-global' => [ 'credentialScope' => [ 'region' => 'cn-north-1', ], 'hostname' => 'iam.cn-north-1.amazonaws.com.cn', ], ], 'isRegionalized' => false, 'partitionEndpoint' => 'aws-cn-global', ], 'kinesis' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'logs' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'monitoring' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'rds' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'redshift' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 's3' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'signatureVersions' => [ 's3v4', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'sns' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'sqs' => [ 'defaults' => [ 'protocols' => [ 'http', 'https', ], 'sslCommonName' => '{region}.queue.{dnsSuffix}', ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'storagegateway' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'streams.dynamodb' => [ 'defaults' => [ 'credentialScope' => [ 'service' => 'dynamodb', ], 'protocols' => [ 'http', 'https', ], ], 'endpoints' => [ 'cn-north-1' => [], ], ], 'sts' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], 'swf' => [ 'endpoints' => [ 'cn-north-1' => [], ], ], ], ], ], 'version' => 3,]; diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index aee7cbcea..0b0eff77f 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -895,6 +895,9 @@ return array( 'Dotenv\\Validator' => $vendorDir . '/vlucas/phpdotenv/src/Validator.php', 'EasyPeasyICS' => $vendorDir . '/phpmailer/phpmailer/extras/EasyPeasyICS.php', 'Encoding_Map' => $vendorDir . '/phenx/php-font-lib/classes/Encoding_Map.php', + 'Fetch\\Attachment' => $vendorDir . '/tedivm/fetch/src/Fetch/Attachment.php', + 'Fetch\\Message' => $vendorDir . '/tedivm/fetch/src/Fetch/Message.php', + 'Fetch\\Server' => $vendorDir . '/tedivm/fetch/src/Fetch/Server.php', 'File_ANSI' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ANSI.php', 'File_ASN1' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ASN1.php', 'File_ASN1_Element' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ASN1.php', diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 7c161894b..26fb7f587 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -29,6 +29,7 @@ return array( 'Guzzle' => array($vendorDir . '/guzzle/guzzle/src'), 'ForceUTF8\\' => array($vendorDir . '/neitanod/forceutf8/src'), 'File' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), + 'Fetch' => array($vendorDir . '/tedivm/fetch/src'), 'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib'), 'Diff' => array($vendorDir . '/phpspec/php-diff/lib'), 'Davibennun\\LaravelPushNotification' => array($vendorDir . '/davibennun/laravel-push-notification/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index e5414c6f8..1a40a99d5 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -567,6 +567,10 @@ class ComposerStaticInit1bacc9bd2a82216bf11bc15e6aee6c79 array ( 0 => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib', ), + 'Fetch' => + array ( + 0 => __DIR__ . '/..' . '/tedivm/fetch/src', + ), ), 'D' => array ( @@ -1505,6 +1509,9 @@ class ComposerStaticInit1bacc9bd2a82216bf11bc15e6aee6c79 'Dotenv\\Validator' => __DIR__ . '/..' . '/vlucas/phpdotenv/src/Validator.php', 'EasyPeasyICS' => __DIR__ . '/..' . '/phpmailer/phpmailer/extras/EasyPeasyICS.php', 'Encoding_Map' => __DIR__ . '/..' . '/phenx/php-font-lib/classes/Encoding_Map.php', + 'Fetch\\Attachment' => __DIR__ . '/..' . '/tedivm/fetch/src/Fetch/Attachment.php', + 'Fetch\\Message' => __DIR__ . '/..' . '/tedivm/fetch/src/Fetch/Message.php', + 'Fetch\\Server' => __DIR__ . '/..' . '/tedivm/fetch/src/Fetch/Server.php', 'File_ANSI' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ANSI.php', 'File_ASN1' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ASN1.php', 'File_ASN1_Element' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ASN1.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 02b2ea0d0..e17d1eeea 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -5532,88 +5532,6 @@ "web service" ] }, - { - "name": "aws/aws-sdk-php", - "version": "3.19.22", - "version_normalized": "3.19.22.0", - "source": { - "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "04d2a027cac94674b52dfb4d68667bfe225b0fb5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/04d2a027cac94674b52dfb4d68667bfe225b0fb5", - "reference": "04d2a027cac94674b52dfb4d68667bfe225b0fb5", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^5.3.1|^6.2.1", - "guzzlehttp/promises": "~1.0", - "guzzlehttp/psr7": "~1.3.1", - "mtdowling/jmespath.php": "~2.2", - "php": ">=5.5" - }, - "require-dev": { - "andrewsville/php-token-reflection": "^1.4", - "aws/aws-php-sns-message-validator": "~1.0", - "behat/behat": "~3.0", - "doctrine/cache": "~1.4", - "ext-dom": "*", - "ext-json": "*", - "ext-openssl": "*", - "ext-pcre": "*", - "ext-simplexml": "*", - "ext-spl": "*", - "nette/neon": "^2.3", - "phpunit/phpunit": "~4.0|~5.0", - "psr/cache": "^1.0" - }, - "suggest": { - "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", - "doctrine/cache": "To use the DoctrineCacheAdapter", - "ext-curl": "To send requests using cURL", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages" - }, - "time": "2016-11-02 22:24:48", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Aws\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", - "homepage": "http://aws.amazon.com/sdkforphp", - "keywords": [ - "amazon", - "aws", - "cloud", - "dynamodb", - "ec2", - "glacier", - "s3", - "sdk" - ] - }, { "name": "symfony/css-selector", "version": "v3.1.6", @@ -6429,5 +6347,138 @@ "location", "maxmind" ] + }, + { + "name": "aws/aws-sdk-php", + "version": "3.19.23", + "version_normalized": "3.19.23.0", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "fbfb87734e5d298b40354ac7fb3f95d0f72ad16e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/fbfb87734e5d298b40354ac7fb3f95d0f72ad16e", + "reference": "fbfb87734e5d298b40354ac7fb3f95d0f72ad16e", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^5.3.1|^6.2.1", + "guzzlehttp/promises": "~1.0", + "guzzlehttp/psr7": "~1.3.1", + "mtdowling/jmespath.php": "~2.2", + "php": ">=5.5" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-json": "*", + "ext-openssl": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "ext-spl": "*", + "nette/neon": "^2.3", + "phpunit/phpunit": "~4.0|~5.0", + "psr/cache": "^1.0" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages" + }, + "time": "2016-11-03 20:28:28", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Aws\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ] + }, + { + "name": "tedivm/fetch", + "version": "v0.6.1", + "version_normalized": "0.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/tedious/Fetch.git", + "reference": "154a84fdfa0d045c2871dd9f8708362fb9ea4acf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tedious/Fetch/zipball/154a84fdfa0d045c2871dd9f8708362fb9ea4acf", + "reference": "154a84fdfa0d045c2871dd9f8708362fb9ea4acf", + "shasum": "" + }, + "require": { + "ext-imap": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "0.5.*", + "phpunit/phpunit": "4.2.*", + "satooshi/php-coveralls": "dev-master", + "tedivm/dovecottesting": "1.2.3" + }, + "time": "2015-01-08 03:22:20", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Fetch": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Robert Hafner", + "email": "tedivm@tedivm.com" + } + ], + "description": "A PHP IMAP Library", + "homepage": "http://github.com/tedious/Fetch", + "keywords": [ + "email", + "imap", + "pop3" + ] } ] diff --git a/vendor/tedivm/fetch/.coveralls.yml b/vendor/tedivm/fetch/.coveralls.yml new file mode 100644 index 000000000..cbd906c6a --- /dev/null +++ b/vendor/tedivm/fetch/.coveralls.yml @@ -0,0 +1,3 @@ +src_dir: src +coverage_clover: build/logs/clover.xml +json_path: build/logs/coveralls-upload.json \ No newline at end of file diff --git a/vendor/tedivm/fetch/.gitignore b/vendor/tedivm/fetch/.gitignore new file mode 100644 index 000000000..75ec3873b --- /dev/null +++ b/vendor/tedivm/fetch/.gitignore @@ -0,0 +1,9 @@ +.vagrant +/.idea +/.settings +/.buildpath +/.project +/composer.lock +/vendor +/report +/build \ No newline at end of file diff --git a/vendor/tedivm/fetch/.travis.yml b/vendor/tedivm/fetch/.travis.yml new file mode 100644 index 000000000..77d571dc3 --- /dev/null +++ b/vendor/tedivm/fetch/.travis.yml @@ -0,0 +1,21 @@ +language: php + +php: + - 5.3 + - 5.4 + - 5.5 + - hhvm + +before_script: + - composer self-update && composer install --dev + - vendor/tedivm/dovecottesting/SetupEnvironment.sh + + +script: ./tests/runTests.sh + +after_script: + - php vendor/bin/coveralls -v + +matrix: + allow_failures: + - php: hhvm \ No newline at end of file diff --git a/vendor/tedivm/fetch/CONTRIBUTING.md b/vendor/tedivm/fetch/CONTRIBUTING.md new file mode 100644 index 000000000..8fe815a9d --- /dev/null +++ b/vendor/tedivm/fetch/CONTRIBUTING.md @@ -0,0 +1,54 @@ +# Contributions Welcome! + +Pull Requests and Community Contributions are the bread and butter of open source software. Every contribution- from bug +reports to feature requests, typos to full new features- are greatly appreciated. + + +## Important Guidelines + +* One Item Per Pull Request or Issue. This makes it much easier to review code and merge it back in, and prevents issues + with one request from blocking another. + +* Code Coverage is extremely important, and pull requests are much more likely to be accepted if testing is also improved. + New code should be properly tested, and all tests must pass. + +* Read the LICENSE document and make sure you understand it, because your code is going to be released under it. + +* Be prepared to make revisions. Don't be discouraged if you're asked to make changes, as that is just another step + towards refining the code and getting it merged back in. + +* Remember to add the relevant documentation, particular the docblock comments. + + +## Code Styling + +This project follows the PSR standards set forth by the [PHP Framework Interop Group](http://www.php-fig.org/). + +* [PSR-0: Class and file naming conventions](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) +* [PSR-1: Basic coding standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md) +* [PSR-2: Coding style guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) + +All code most follow these standards to be accepted. The easiest way to accomplish this is to run php-cs-fixer once the +new changes are finished. The php-cs-fixer package is installed as a development dependency of this project. + + composer install --dev + vendor/bin/php-cs-fixer fix ./ --level="all" -vv + + +## Running the test suite + +First install dependencies using Composer. It's important to include the dev packages: + + composer install --dev + +The "runTests.sh" script runs the full test suite- phpunit, php-cs-fixer, as well as any environmental setup: + + tests/runTests.sh + +To call phpunit directly: + + vendor/bin/phpunit + +To call php-cs-fixer directly: + + vendor/bin/php-cs-fixer fix ./ --level="all" -vv --dry-run diff --git a/vendor/tedivm/fetch/LICENSE b/vendor/tedivm/fetch/LICENSE new file mode 100644 index 000000000..68caa37c6 --- /dev/null +++ b/vendor/tedivm/fetch/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2009, Robert Hafner +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Stash Project nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL Robert Hafner BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/tedivm/fetch/README.md b/vendor/tedivm/fetch/README.md new file mode 100644 index 000000000..981abd9de --- /dev/null +++ b/vendor/tedivm/fetch/README.md @@ -0,0 +1,63 @@ +# Fetch [![Build Status](https://travis-ci.org/tedious/Fetch.svg?branch=master)](https://travis-ci.org/tedious/Fetch) + +[![License](http://img.shields.io/packagist/l/tedivm/fetch.svg)](https://github.com/tedious/fetch/blob/master/LICENSE) +[![Latest Stable Version](http://img.shields.io/github/release/tedious/fetch.svg)](https://packagist.org/packages/tedivm/fetch) +[![Coverage Status](http://img.shields.io/coveralls/tedious/Fetch.svg)](https://coveralls.io/r/tedious/Fetch?branch=master) +[![Total Downloads](http://img.shields.io/packagist/dt/tedivm/fetch.svg)](https://packagist.org/packages/tedivm/fetch) + +Fetch is a library for reading email and attachments, primarily using the POP +and IMAP protocols. + + +## Installing + +### Composer + +Installing Fetch can be done through a variety of methods, although Composer is +recommended. + +Until Fetch reaches a stable API with version 1.0 it is recommended that you +review changes before even Minor updates, although bug fixes will always be +backwards compatible. + +``` +"require": { + "tedivm/fetch": "0.5.*" +} +``` + +### Pear + +Fetch is also available through Pear. + +``` +$ pear channel-discover pear.tedivm.com +$ pear install tedivm/Fetch +``` + +### Github + +Releases of Fetch are available on [Github](https://github.com/tedious/Fetch/releases). + + +## Sample Usage + +This is just a simple code to show how to access messages by using Fetch. It uses Fetch +own autoload, but it can (and should be, if applicable) replaced with the one generated +by composer. + + + $server = new \Fetch\Server('imap.example.com', 993); + $server->setAuthentication('dummy', 'dummy'); + + + $messages = $server->getMessages(); + /** @var $message \Fetch\Message */ + foreach ($messages as $message) { + echo "Subject: {$message->getSubject()}\nBody: {$message->getMessageBody()}\n"; + } + + +## License + +Fetch is licensed under the BSD License. See the LICENSE file for details. diff --git a/vendor/tedivm/fetch/autoload.php b/vendor/tedivm/fetch/autoload.php new file mode 100644 index 000000000..97c6b0029 --- /dev/null +++ b/vendor/tedivm/fetch/autoload.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +spl_autoload_register(function ($class) { + $base = '/src/'; + + if (strpos($class, 'Fetch\Test') === 0) { + $base = '/tests/'; + } + + $file = __DIR__.$base.strtr($class, '\\', '/').'.php'; + if (file_exists($file)) { + require $file; + + return true; + } +}); diff --git a/vendor/tedivm/fetch/composer.json b/vendor/tedivm/fetch/composer.json new file mode 100644 index 000000000..43ca4a16f --- /dev/null +++ b/vendor/tedivm/fetch/composer.json @@ -0,0 +1,28 @@ +{ + "name": "tedivm/fetch", + "description": "A PHP IMAP Library", + "keywords": ["email","imap","pop3"], + "homepage": "http://github.com/tedious/Fetch", + "type": "library", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Robert Hafner", + "email": "tedivm@tedivm.com" + } + ], + "require": { + "php": ">=5.3.0", + "ext-imap": "*" + }, + "require-dev": { + "tedivm/dovecottesting": "1.2.3", + "phpunit/phpunit": "4.2.*", + "fabpot/php-cs-fixer": "0.5.*", + "satooshi/php-coveralls": "dev-master" + + }, + "autoload": { + "psr-0": {"Fetch": "src/"} + } +} diff --git a/vendor/tedivm/fetch/phpunit.xml.dist b/vendor/tedivm/fetch/phpunit.xml.dist new file mode 100644 index 000000000..26aa32392 --- /dev/null +++ b/vendor/tedivm/fetch/phpunit.xml.dist @@ -0,0 +1,27 @@ + + + + + + ./tests + + + + + ./src/Fetch/ + + + + + + diff --git a/vendor/tedivm/fetch/src/Fetch/Attachment.php b/vendor/tedivm/fetch/src/Fetch/Attachment.php new file mode 100644 index 000000000..3b7c4a7bc --- /dev/null +++ b/vendor/tedivm/fetch/src/Fetch/Attachment.php @@ -0,0 +1,231 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Fetch; + +/** + * This library is a wrapper around the Imap library functions included in php. This class wraps around an attachment + * in a message, allowing developers to easily save or display attachments. + * + * @package Fetch + * @author Robert Hafner + */ +class Attachment +{ + + /** + * This is the structure object for the piece of the message body that the attachment is located it. + * + * @var \stdClass + */ + protected $structure; + + /** + * This is the unique identifier for the message this attachment belongs to. + * + * @var int + */ + protected $messageId; + + /** + * This is the ImapResource. + * + * @var resource + */ + protected $imapStream; + + /** + * This is the id pointing to the section of the message body that contains the attachment. + * + * @var int + */ + protected $partId; + + /** + * This is the attachments filename. + * + * @var string + */ + protected $filename; + + /** + * This is the size of the attachment. + * + * @var int + */ + protected $size; + + /** + * This stores the data of the attachment so it doesn't have to be retrieved from the server multiple times. It is + * only populated if the getData() function is called and should not be directly used. + * + * @internal + * @var array + */ + protected $data; + + /** + * This function takes in an ImapMessage, the structure object for the particular piece of the message body that the + * attachment is located at, and the identifier for that body part. As a general rule you should not be creating + * instances of this yourself, but rather should get them from an ImapMessage class. + * + * @param Message $message + * @param \stdClass $structure + * @param string $partIdentifier + */ + public function __construct(Message $message, $structure, $partIdentifier = null) + { + $this->messageId = $message->getUid(); + $this->imapStream = $message->getImapBox()->getImapStream(); + $this->structure = $structure; + + if (isset($partIdentifier)) + $this->partId = $partIdentifier; + + $parameters = Message::getParametersFromStructure($structure); + + if (isset($parameters['filename'])) { + $this->filename = $parameters['filename']; + } elseif (isset($parameters['name'])) { + $this->filename = $parameters['name']; + } + + $this->size = $structure->bytes; + + $this->mimeType = Message::typeIdToString($structure->type); + + if (isset($structure->subtype)) + $this->mimeType .= '/' . strtolower($structure->subtype); + + $this->encoding = $structure->encoding; + } + + /** + * This function returns the data of the attachment. Combined with getMimeType() it can be used to directly output + * data to a browser. + * + * @return string + */ + public function getData() + { + if (!isset($this->data)) { + $messageBody = isset($this->partId) ? + imap_fetchbody($this->imapStream, $this->messageId, $this->partId, FT_UID) + : imap_body($this->imapStream, $this->messageId, FT_UID); + + $messageBody = Message::decode($messageBody, $this->encoding); + $this->data = $messageBody; + } + + return $this->data; + } + + /** + * This returns the filename of the attachment, or false if one isn't given. + * + * @return string + */ + public function getFileName() + { + return (isset($this->filename)) ? $this->filename : false; + } + + /** + * This function returns the mimetype of the attachment. + * + * @return string + */ + public function getMimeType() + { + return $this->mimeType; + } + + /** + * This returns the size of the attachment. + * + * @return int + */ + public function getSize() + { + return $this->size; + } + + /** + * This function returns the object that contains the structure of this attachment. + * + * @return \stdClass + */ + public function getStructure() + { + return $this->structure; + } + + /** + * This function saves the attachment to the passed directory, keeping the original name of the file. + * + * @param string $path + * @return bool + */ + public function saveToDirectory($path) + { + $path = rtrim($path, '/') . '/'; + + if (is_dir($path)) + return $this->saveAs($path . $this->getFileName()); + + return false; + } + + /** + * This function saves the attachment to the exact specified location. + * + * @param string $path + * @return bool + */ + public function saveAs($path) + { + $dirname = dirname($path); + if (file_exists($path)) { + if (!is_writable($path)) { + return false; + } + } elseif (!is_dir($dirname) || !is_writable($dirname)) { + return false; + } + + if (($filePointer = fopen($path, 'w')) == false) { + return false; + } + + switch ($this->encoding) { + case 3: //base64 + $streamFilter = stream_filter_append($filePointer, 'convert.base64-decode', STREAM_FILTER_WRITE); + break; + + case 4: //quoted-printable + $streamFilter = stream_filter_append($filePointer, 'convert.quoted-printable-decode', STREAM_FILTER_WRITE); + break; + + default: + $streamFilter = null; + } + + $result = imap_savebody($this->imapStream, $filePointer, $this->messageId, $this->partId ?: 1, FT_UID); + + if ($streamFilter) { + stream_filter_remove($streamFilter); + } + + fclose($filePointer); + + return $result; + } +} diff --git a/vendor/tedivm/fetch/src/Fetch/Message.php b/vendor/tedivm/fetch/src/Fetch/Message.php new file mode 100644 index 000000000..67bb1bfdc --- /dev/null +++ b/vendor/tedivm/fetch/src/Fetch/Message.php @@ -0,0 +1,738 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Fetch; +use Exception; + +/** + * This library is a wrapper around the Imap library functions included in php. This class represents a single email + * message as retrieved from the Imap. + * + * @package Fetch + * @author Robert Hafner + */ +class Message +{ + /** + * This is the connection/mailbox class that the email came from. + * + * @var Server + */ + protected $imapConnection; + + /** + * This is the unique identifier for the message. This corresponds to the imap "uid", which we use instead of the + * sequence number. + * + * @var int + */ + protected $uid; + + /** + * This is a reference to the Imap stream generated by 'imap_open'. + * + * @var resource + */ + protected $imapStream; + + /** + * This as an object which contains header information for the message. + * + * @var \stdClass + */ + protected $headers; + + /** + * This is an object which contains various status messages and other information about the message. + * + * @var \stdClass + */ + protected $messageOverview; + + /** + * This is an object which contains information about the structure of the message body. + * + * @var \stdClass + */ + protected $structure; + + /** + * This is an array with the index being imap flags and the value being a boolean specifying whether that flag is + * set or not. + * + * @var array + */ + protected $status = array(); + + /** + * This is an array of the various imap flags that can be set. + * + * @var string + */ + protected static $flagTypes = array('recent', 'flagged', 'answered', 'deleted', 'seen', 'draft'); + + /** + * This holds the plantext email message. + * + * @var string + */ + protected $plaintextMessage; + + /** + * This holds the html version of the email. + * + * @var string + */ + protected $htmlMessage; + + /** + * This is the date the email was sent. + * + * @var int + */ + protected $date; + + /** + * This is the subject of the email. + * + * @var string + */ + protected $subject; + + /** + * This is the size of the email. + * + * @var int + */ + protected $size; + + /** + * This is an array containing information about the address the email came from. + * + * @var string + */ + protected $from; + + /** + * This is an array containing information about the address the email was sent from. + * + * @var string + */ + protected $sender; + + /** + * This is an array of arrays that contains information about the addresses the email was sent to. + * + * @var array + */ + protected $to; + + /** + * This is an array of arrays that contains information about the addresses the email was cc'd to. + * + * @var array + */ + protected $cc; + + /** + * This is an array of arrays that contains information about the addresses the email was bcc'd to. + * + * @var array + */ + protected $bcc; + + /** + * This is an array of arrays that contain information about the addresses that should receive replies to the email. + * + * @var array + */ + protected $replyTo; + + /** + * This is an array of ImapAttachments retrieved from the message. + * + * @var Attachment[] + */ + protected $attachments = array(); + + /** + * Contains the mailbox that the message resides in. + * + * @var string + */ + protected $mailbox; + + /** + * This value defines the encoding we want the email message to use. + * + * @var string + */ + public static $charset = 'UTF-8'; + + /** + * This value defines the flag set for encoding if the mb_convert_encoding + * function can't be found, and in this case iconv encoding will be used. + * + * @var string + */ + public static $charsetFlag = '//TRANSLIT'; + + /** + * These constants can be used to easily access available flags + */ + const FLAG_RECENT = 'recent'; + const FLAG_FLAGGED = 'flagged'; + const FLAG_ANSWERED = 'answered'; + const FLAG_DELETED = 'deleted'; + const FLAG_SEEN = 'seen'; + const FLAG_DRAFT = 'draft'; + + /** + * This constructor takes in the uid for the message and the Imap class representing the mailbox the + * message should be opened from. This constructor should generally not be called directly, but rather retrieved + * through the apprioriate Imap functions. + * + * @param int $messageUniqueId + * @param Server $mailbox + */ + public function __construct($messageUniqueId, Server $connection) + { + $this->imapConnection = $connection; + $this->mailbox = $connection->getMailBox(); + $this->uid = $messageUniqueId; + $this->imapStream = $this->imapConnection->getImapStream(); + if($this->loadMessage() !== true) + throw new \RuntimeException('Message with ID ' . $messageUniqueId . ' not found.'); + } + + /** + * This function is called when the message class is loaded. It loads general information about the message from the + * imap server. + * + */ + protected function loadMessage() + { + + /* First load the message overview information */ + + if(!is_object($messageOverview = $this->getOverview())) + + return false; + + $this->subject = isset($messageOverview->subject) ? $messageOverview->subject : null; + $this->date = strtotime($messageOverview->date); + $this->size = $messageOverview->size; + + foreach (self::$flagTypes as $flag) + $this->status[$flag] = ($messageOverview->$flag == 1); + + /* Next load in all of the header information */ + + $headers = $this->getHeaders(); + + if (isset($headers->to)) + $this->to = $this->processAddressObject($headers->to); + + if (isset($headers->cc)) + $this->cc = $this->processAddressObject($headers->cc); + + if (isset($headers->bcc)) + $this->bcc = $this->processAddressObject($headers->bcc); + + if (isset($headers->sender)) + $this->sender = $this->processAddressObject($headers->sender); + + $this->from = isset($headers->from) ? $this->processAddressObject($headers->from) : array(''); + $this->replyTo = isset($headers->reply_to) ? $this->processAddressObject($headers->reply_to) : $this->from; + + /* Finally load the structure itself */ + + $structure = $this->getStructure(); + + if (!isset($structure->parts)) { + // not multipart + $this->processStructure($structure); + } else { + // multipart + foreach ($structure->parts as $id => $part) + $this->processStructure($part, $id + 1); + } + + return true; + } + + /** + * This function returns an object containing information about the message. This output is similar to that over the + * imap_fetch_overview function, only instead of an array of message overviews only a single result is returned. The + * results are only retrieved from the server once unless passed true as a parameter. + * + * @param bool $forceReload + * @return \stdClass + */ + public function getOverview($forceReload = false) + { + if ($forceReload || !isset($this->messageOverview)) { + // returns an array, and since we just want one message we can grab the only result + $results = imap_fetch_overview($this->imapStream, $this->uid, FT_UID); + $this->messageOverview = array_shift($results); + if ( ! isset($this->messageOverview->date)) { + $this->messageOverview->date = null; + } + } + + return $this->messageOverview; + } + + /** + * This function returns an object containing the headers of the message. This is done by taking the raw headers + * and running them through the imap_rfc822_parse_headers function. The results are only retrieved from the server + * once unless passed true as a parameter. + * + * @param bool $forceReload + * @return \stdClass + */ + public function getHeaders($forceReload = false) + { + if ($forceReload || !isset($this->headers)) { + // raw headers (since imap_headerinfo doesn't use the unique id) + $rawHeaders = imap_fetchheader($this->imapStream, $this->uid, FT_UID); + + // convert raw header string into a usable object + $headerObject = imap_rfc822_parse_headers($rawHeaders); + + // to keep this object as close as possible to the original header object we add the udate property + if (isset($headerObject->date)) { + $headerObject->udate = strtotime($headerObject->date); + } else { + $headerObject->date = null; + $headerObject->udate = null; + } + + $this->headers = $headerObject; + } + + return $this->headers; + } + + /** + * This function returns an object containing the structure of the message body. This is the same object thats + * returned by imap_fetchstructure. The results are only retrieved from the server once unless passed true as a + * parameter. + * + * @param bool $forceReload + * @return \stdClass + */ + public function getStructure($forceReload = false) + { + if ($forceReload || !isset($this->structure)) { + $this->structure = imap_fetchstructure($this->imapStream, $this->uid, FT_UID); + } + + return $this->structure; + } + + /** + * This function returns the message body of the email. By default it returns the plaintext version. If a plaintext + * version is requested but not present, the html version is stripped of tags and returned. If the opposite occurs, + * the plaintext version is given some html formatting and returned. If neither are present the return value will be + * false. + * + * @param bool $html Pass true to receive an html response. + * @return string|bool Returns false if no body is present. + */ + public function getMessageBody($html = false) + { + if ($html) { + if (!isset($this->htmlMessage) && isset($this->plaintextMessage)) { + $output = nl2br($this->plaintextMessage); + + return $output; + + } elseif (isset($this->htmlMessage)) { + return $this->htmlMessage; + } + } else { + if (!isset($this->plaintextMessage) && isset($this->htmlMessage)) { + $output = preg_replace('/\/i', PHP_EOL, trim($this->htmlMessage) ); + $output = strip_tags($output); + + return $output; + } elseif (isset($this->plaintextMessage)) { + return $this->plaintextMessage; + } + } + + return false; + } + + /** + * This function returns either an array of email addresses and names or, optionally, a string that can be used in + * mail headers. + * + * @param string $type Should be 'to', 'cc', 'bcc', 'from', 'sender', or 'reply-to'. + * @param bool $asString + * @return array|string|bool + */ + public function getAddresses($type, $asString = false) + { + $type = ( $type == 'reply-to' ) ? 'replyTo' : $type; + $addressTypes = array('to', 'cc', 'bcc', 'from', 'sender', 'replyTo'); + + if (!in_array($type, $addressTypes) || !isset($this->$type) || count($this->$type) < 1) + return false; + + if (!$asString) { + if ($type == 'from') + return $this->from[0]; + elseif ($type == 'sender') + return $this->sender[0]; + + return $this->$type; + } else { + $outputString = ''; + foreach ($this->$type as $address) { + if (isset($set)) + $outputString .= ', '; + if (!isset($set)) + $set = true; + + $outputString .= isset($address['name']) ? + $address['name'] . ' <' . $address['address'] . '>' + : $address['address']; + } + + return $outputString; + } + } + + /** + * This function returns the date, as a timestamp, of when the email was sent. + * + * @return int + */ + public function getDate() + { + return isset($this->date) ? $this->date : false; + } + + /** + * This returns the subject of the message. + * + * @return string + */ + public function getSubject() + { + return isset($this->subject) ? $this->subject : null; + } + + /** + * This function marks a message for deletion. It is important to note that the message will not be deleted form the + * mailbox until the Imap->expunge it run. + * + * @return bool + */ + public function delete() + { + return imap_delete($this->imapStream, $this->uid, FT_UID); + } + + /** + * This function returns Imap this message came from. + * + * @return Server + */ + public function getImapBox() + { + return $this->imapConnection; + } + + /** + * This function takes in a structure and identifier and processes that part of the message. If that portion of the + * message has its own subparts, those are recursively processed using this function. + * + * @param \stdClass $structure + * @param string $partIdentifier + */ + protected function processStructure($structure, $partIdentifier = null) + { + $parameters = self::getParametersFromStructure($structure); + + if ((isset($parameters['name']) || isset($parameters['filename'])) + || (isset($structure->subtype) && strtolower($structure->subtype) == 'rfc822') + ) { + $attachment = new Attachment($this, $structure, $partIdentifier); + $this->attachments[] = $attachment; + } elseif ($structure->type == 0 || $structure->type == 1) { + $messageBody = isset($partIdentifier) ? + imap_fetchbody($this->imapStream, $this->uid, $partIdentifier, FT_UID) + : imap_body($this->imapStream, $this->uid, FT_UID); + + $messageBody = self::decode($messageBody, $structure->encoding); + + if (!empty($parameters['charset']) && $parameters['charset'] !== self::$charset) { + $mb_converted = false; + if (function_exists('mb_convert_encoding')) { + try { + $messageBody = mb_convert_encoding($messageBody, self::$charset, $parameters['charset']); + $mb_converted = true; + } catch (Exception $e) { + // @TODO Handle exception + } + } + if (!$mb_converted) { + try { + $messageBody = iconv($parameters['charset'], self::$charset . self::$charsetFlag, $messageBody); + } catch (Exception $e) { + // @TODO Handle exception + } + } + } + + if (strtolower($structure->subtype) === 'plain' || ($structure->type == 1 && strtolower($structure->subtype) !== 'alternative')) { + if (isset($this->plaintextMessage)) { + $this->plaintextMessage .= PHP_EOL . PHP_EOL; + } else { + $this->plaintextMessage = ''; + } + + $this->plaintextMessage .= trim($messageBody); + } elseif (strtolower($structure->subtype) === 'html') { + if (isset($this->htmlMessage)) { + $this->htmlMessage .= '

'; + } else { + $this->htmlMessage = ''; + } + + $this->htmlMessage .= $messageBody; + } + } + + if (isset($structure->parts)) { // multipart: iterate through each part + + foreach ($structure->parts as $partIndex => $part) { + $partId = $partIndex + 1; + + if (isset($partIdentifier)) + $partId = $partIdentifier . '.' . $partId; + + $this->processStructure($part, $partId); + } + } + } + + /** + * This function takes in the message data and encoding type and returns the decoded data. + * + * @param string $data + * @param int|string $encoding + * @return string + */ + public static function decode($data, $encoding) + { + if (!is_numeric($encoding)) { + $encoding = strtolower($encoding); + } + + switch (true) { + case $encoding === 'quoted-printable': + case $encoding === 4: + return quoted_printable_decode($data); + + case $encoding === 'base64': + case $encoding === 3: + return base64_decode($data); + + default: + return $data; + } + } + + /** + * This function returns the body type that an imap integer maps to. + * + * @param int $id + * @return string + */ + public static function typeIdToString($id) + { + switch ($id) { + case 0: + return 'text'; + + case 1: + return 'multipart'; + + case 2: + return 'message'; + + case 3: + return 'application'; + + case 4: + return 'audio'; + + case 5: + return 'image'; + + case 6: + return 'video'; + + default: + case 7: + return 'other'; + } + } + + /** + * Takes in a section structure and returns its parameters as an associative array. + * + * @param \stdClass $structure + * @return array + */ + public static function getParametersFromStructure($structure) + { + $parameters = array(); + if (isset($structure->parameters)) + foreach ($structure->parameters as $parameter) + $parameters[strtolower($parameter->attribute)] = $parameter->value; + + if (isset($structure->dparameters)) + foreach ($structure->dparameters as $parameter) + $parameters[strtolower($parameter->attribute)] = $parameter->value; + + return $parameters; + } + + /** + * This function takes in an array of the address objects generated by the message headers and turns them into an + * associative array. + * + * @param array $addresses + * @return array + */ + protected function processAddressObject($addresses) + { + $outputAddresses = array(); + if (is_array($addresses)) + foreach ($addresses as $address) { + $currentAddress = array(); + $currentAddress['address'] = $address->mailbox . '@' . $address->host; + if (isset($address->personal)) + $currentAddress['name'] = $address->personal; + $outputAddresses[] = $currentAddress; + } + + return $outputAddresses; + } + + /** + * This function returns the unique id that identifies the message on the server. + * + * @return int + */ + public function getUid() + { + return $this->uid; + } + + /** + * This function returns the attachments a message contains. If a filename is passed then just that ImapAttachment + * is returned, unless + * + * @param null|string $filename + * @return array|bool|Attachment[] + */ + public function getAttachments($filename = null) + { + if (!isset($this->attachments) || count($this->attachments) < 1) + return false; + + if (!isset($filename)) + return $this->attachments; + + $results = array(); + foreach ($this->attachments as $attachment) { + if ($attachment->getFileName() == $filename) + $results[] = $attachment; + } + + switch (count($results)) { + case 0: + return false; + + case 1: + return array_shift($results); + + default: + return $results; + break; + } + } + + /** + * This function checks to see if an imap flag is set on the email message. + * + * @param string $flag Recent, Flagged, Answered, Deleted, Seen, Draft + * @return bool + */ + public function checkFlag($flag = 'flagged') + { + return (isset($this->status[$flag]) && $this->status[$flag] === true); + } + + /** + * This function is used to enable or disable a flag on the imap message. + * + * @param string $flag Flagged, Answered, Deleted, Seen, Draft + * @param bool $enable + * @throws \InvalidArgumentException + * @return bool + */ + public function setFlag($flag, $enable = true) + { + if (!in_array($flag, self::$flagTypes) || $flag == 'recent') + throw new \InvalidArgumentException('Unable to set invalid flag "' . $flag . '"'); + + $imapifiedFlag = '\\' . ucfirst($flag); + + if ($enable === true) { + $this->status[$flag] = true; + + return imap_setflag_full($this->imapStream, $this->uid, $imapifiedFlag, ST_UID); + } else { + unset($this->status[$flag]); + + return imap_clearflag_full($this->imapStream, $this->uid, $imapifiedFlag, ST_UID); + } + } + + /** + * This function is used to move a mail to the given mailbox. + * + * @param $mailbox + * + * @return bool + */ + public function moveToMailBox($mailbox) + { + $currentBox = $this->imapConnection->getMailBox(); + $this->imapConnection->setMailBox($this->mailbox); + + $returnValue = imap_mail_copy($this->imapStream, $this->uid, $mailbox, CP_UID | CP_MOVE); + imap_expunge($this->imapStream); + + $this->mailbox = $mailbox; + + $this->imapConnection->setMailBox($currentBox); + + return $returnValue; + } +} diff --git a/vendor/tedivm/fetch/src/Fetch/Server.php b/vendor/tedivm/fetch/src/Fetch/Server.php new file mode 100644 index 000000000..5368781a0 --- /dev/null +++ b/vendor/tedivm/fetch/src/Fetch/Server.php @@ -0,0 +1,458 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Fetch; + +/** + * This library is a wrapper around the Imap library functions included in php. This class in particular manages a + * connection to the server (imap, pop, etc) and allows for the easy retrieval of stored messages. + * + * @package Fetch + * @author Robert Hafner + */ +class Server +{ + /** + * When SSL isn't compiled into PHP we need to make some adjustments to prevent soul crushing annoyances. + * + * @var bool + */ + public static $sslEnable = true; + + /** + * These are the flags that depend on ssl support being compiled into imap. + * + * @var array + */ + public static $sslFlags = array('ssl', 'validate-cert', 'novalidate-cert', 'tls', 'notls'); + + /** + * This is used to prevent the class from putting up conflicting tags. Both directions- key to value, value to key- + * are checked, so if "novalidate-cert" is passed then "validate-cert" is removed, and vice-versa. + * + * @var array + */ + public static $exclusiveFlags = array('validate-cert' => 'novalidate-cert', 'tls' => 'notls'); + + /** + * This is the domain or server path the class is connecting to. + * + * @var string + */ + protected $serverPath; + + /** + * This is the name of the current mailbox the connection is using. + * + * @var string + */ + protected $mailbox = ''; + + /** + * This is the username used to connect to the server. + * + * @var string + */ + protected $username; + + /** + * This is the password used to connect to the server. + * + * @var string + */ + protected $password; + + /** + * This is an array of flags that modify how the class connects to the server. Examples include "ssl" to enforce a + * secure connection or "novalidate-cert" to allow for self-signed certificates. + * + * @link http://us.php.net/manual/en/function.imap-open.php + * @var array + */ + protected $flags = array(); + + /** + * This is the port used to connect to the server + * + * @var int + */ + protected $port; + + /** + * This is the set of options, represented by a bitmask, to be passed to the server during connection. + * + * @var int + */ + protected $options = 0; + + /** + * This is the resource connection to the server. It is required by a number of imap based functions to specify how + * to connect. + * + * @var resource + */ + protected $imapStream; + + /** + * This is the name of the service currently being used. Imap is the default, although pop3 and nntp are also + * options + * + * @var string + */ + protected $service = 'imap'; + + /** + * This constructor takes the location and service thats trying to be connected to as its arguments. + * + * @param string $serverPath + * @param null|int $port + * @param null|string $service + */ + public function __construct($serverPath, $port = 143, $service = 'imap') + { + $this->serverPath = $serverPath; + + $this->port = $port; + + switch ($port) { + case 143: + $this->setFlag('novalidate-cert'); + break; + + case 993: + $this->setFlag('ssl'); + break; + } + + $this->service = $service; + } + + /** + * This function sets the username and password used to connect to the server. + * + * @param string $username + * @param string $password + */ + public function setAuthentication($username, $password) + { + $this->username = $username; + $this->password = $password; + } + + /** + * This function sets the mailbox to connect to. + * + * @param string $mailbox + * @return bool + */ + public function setMailBox($mailbox = '') + { + if (!$this->hasMailBox($mailbox)) { + return false; + } + + $this->mailbox = $mailbox; + if (isset($this->imapStream)) { + $this->setImapStream(); + } + + return true; + } + + public function getMailBox() + { + return $this->mailbox; + } + + /** + * This function sets or removes flag specifying connection behavior. In many cases the flag is just a one word + * deal, so the value attribute is not required. However, if the value parameter is passed false it will clear that + * flag. + * + * @param string $flag + * @param null|string|bool $value + */ + public function setFlag($flag, $value = null) + { + if (!self::$sslEnable && in_array($flag, self::$sslFlags)) + return; + + if (isset(self::$exclusiveFlags[$flag])) { + $kill = self::$exclusiveFlags[$flag]; + } elseif ($index = array_search($flag, self::$exclusiveFlags)) { + $kill = $index; + } + + if (isset($kill) && false !== $index = array_search($kill, $this->flags)) + unset($this->flags[$index]); + + $index = array_search($flag, $this->flags); + if (isset($value) && $value !== true) { + if ($value == false && $index !== false) { + unset($this->flags[$index]); + } elseif ($value != false) { + $match = preg_grep('/' . $flag . '/', $this->flags); + if (reset($match)) { + $this->flags[key($match)] = $flag . '=' . $value; + } else { + $this->flags[] = $flag . '=' . $value; + } + } + } elseif ($index === false) { + $this->flags[] = $flag; + } + } + + /** + * This funtion is used to set various options for connecting to the server. + * + * @param int $bitmask + * @throws \Exception + */ + public function setOptions($bitmask = 0) + { + if (!is_numeric($bitmask)) + throw new \RuntimeException('Function requires numeric argument.'); + + $this->options = $bitmask; + } + + /** + * This function gets the current saved imap resource and returns it. + * + * @return resource + */ + public function getImapStream() + { + if (!isset($this->imapStream)) + $this->setImapStream(); + + return $this->imapStream; + } + + /** + * This function takes in all of the connection date (server, port, service, flags, mailbox) and creates the string + * thats passed to the imap_open function. + * + * @return string + */ + public function getServerString() + { + $mailboxPath = $this->getServerSpecification(); + + if (isset($this->mailbox)) + $mailboxPath .= $this->mailbox; + + return $mailboxPath; + } + + /** + * Returns the server specification, without adding any mailbox. + * + * @return string + */ + protected function getServerSpecification() + { + $mailboxPath = '{' . $this->serverPath; + + if (isset($this->port)) + $mailboxPath .= ':' . $this->port; + + if ($this->service != 'imap') + $mailboxPath .= '/' . $this->service; + + foreach ($this->flags as $flag) { + $mailboxPath .= '/' . $flag; + } + + $mailboxPath .= '}'; + + return $mailboxPath; + } + + /** + * This function creates or reopens an imapStream when called. + * + */ + protected function setImapStream() + { + if (isset($this->imapStream)) { + if (!imap_reopen($this->imapStream, $this->getServerString(), $this->options, 1)) + throw new \RuntimeException(imap_last_error()); + } else { + $imapStream = imap_open($this->getServerString(), $this->username, $this->password, $this->options, 1); + + if ($imapStream === false) + throw new \RuntimeException(imap_last_error()); + + $this->imapStream = $imapStream; + } + } + + /** + * This returns the number of messages that the current mailbox contains. + * + * @return int + */ + public function numMessages() + { + return imap_num_msg($this->getImapStream()); + } + + /** + * This function returns an array of ImapMessage object for emails that fit the criteria passed. The criteria string + * should be formatted according to the imap search standard, which can be found on the php "imap_search" page or in + * section 6.4.4 of RFC 2060 + * + * @link http://us.php.net/imap_search + * @link http://www.faqs.org/rfcs/rfc2060 + * @param string $criteria + * @param null|int $limit + * @return array An array of ImapMessage objects + */ + public function search($criteria = 'ALL', $limit = null) + { + if ($results = imap_search($this->getImapStream(), $criteria, SE_UID)) { + if (isset($limit) && count($results) > $limit) + $results = array_slice($results, 0, $limit); + + $messages = array(); + + foreach ($results as $messageId) + $messages[] = new Message($messageId, $this); + + return $messages; + } else { + return array(); + } + } + + /** + * This function returns the recently received emails as an array of ImapMessage objects. + * + * @param null|int $limit + * @return array An array of ImapMessage objects for emails that were recently received by the server. + */ + public function getRecentMessages($limit = null) + { + return $this->search('Recent', $limit); + } + + /** + * Returns the emails in the current mailbox as an array of ImapMessage objects. + * + * @param null|int $limit + * @return Message[] + */ + public function getMessages($limit = null) + { + $numMessages = $this->numMessages(); + + if (isset($limit) && is_numeric($limit) && $limit < $numMessages) + $numMessages = $limit; + + if ($numMessages < 1) + return array(); + + $stream = $this->getImapStream(); + $messages = array(); + for ($i = 1; $i <= $numMessages; $i++) { + $uid = imap_uid($stream, $i); + $messages[] = new Message($uid, $this); + } + + return $messages; + } + + /** + * Returns the emails in the current mailbox as an array of ImapMessage objects + * ordered by some ordering + * + * @see http://php.net/manual/en/function.imap-sort.php + * @param int $orderBy + * @param bool $reverse + * @param int $limit + * @return Message[] + */ + public function getOrderedMessages($orderBy, $reverse, $limit) + { + $msgIds = imap_sort($this->getImapStream(), $orderBy, $reverse ? 1 : 0, SE_UID); + + return array_map(array($this, 'getMessageByUid'), array_slice($msgIds, 0, $limit)); + } + + /** + * Returns the requested email or false if it is not found. + * + * @param int $uid + * @return Message|bool + */ + public function getMessageByUid($uid) + { + try { + $message = new \Fetch\Message($uid, $this); + + return $message; + } catch (\Exception $e) { + return false; + } + } + + /** + * This function removes all of the messages flagged for deletion from the mailbox. + * + * @return bool + */ + public function expunge() + { + return imap_expunge($this->getImapStream()); + } + + /** + * Checks if the given mailbox exists. + * + * @param $mailbox + * + * @return bool + */ + public function hasMailBox($mailbox) + { + return (boolean) imap_getmailboxes( + $this->getImapStream(), + $this->getServerString(), + $this->getServerSpecification() . $mailbox + ); + } + + /** + * Creates the given mailbox. + * + * @param $mailbox + * + * @return bool + */ + public function createMailBox($mailbox) + { + return imap_createmailbox($this->getImapStream(), $this->getServerSpecification() . $mailbox); + } + + /** + * List available mailboxes + * + * @param string $pattern + * + * @return array + */ + public function listMailBoxes($pattern = '*') + { + return imap_list($this->getImapStream(), $this->getServerSpecification(), $pattern); + } +} diff --git a/vendor/tedivm/fetch/tests/Fetch/Test/AttachmentTest.php b/vendor/tedivm/fetch/tests/Fetch/Test/AttachmentTest.php new file mode 100644 index 000000000..ffec66b9f --- /dev/null +++ b/vendor/tedivm/fetch/tests/Fetch/Test/AttachmentTest.php @@ -0,0 +1,118 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Fetch\Test; + +/** + * @package Fetch + * @author Robert Hafner + */ +class AttachmentTest extends \PHPUnit_Framework_TestCase +{ + + public static function getAttachments($MessageId) + { + $server = ServerTest::getServer(); + $message = new \Fetch\Message($MessageId, $server); + $attachments = $message->getAttachments(); + $returnAttachments = array(); + foreach($attachments as $attachment) + $returnAttachments[$attachment->getFileName()] = $attachment; + + return $returnAttachments; + } + + public function testGetData() + { + $attachments = static::getAttachments('6'); + + $attachment_RCA = $attachments['RCA_Indian_Head_test_pattern.JPG.zip']; + $md5_RCA = '3e9b6f02551590a7bcfff5d50b5b7b20'; + $this->assertEquals($md5_RCA, md5($attachment_RCA->getData())); + + $attachment_TestCard = $attachments['Test_card.png.zip']; + $md5_TestCard = '94c40bd83fbfa03b29bf1811f9aaccea'; + $this->assertEquals($md5_TestCard, md5($attachment_TestCard->getData())); + } + + public function testGetMimeType() + { + $attachments = static::getAttachments('6'); + + $attachment_RCA = $attachments['RCA_Indian_Head_test_pattern.JPG.zip']; + $mimetype_RCA = 'application/zip'; + $this->assertEquals($mimetype_RCA, $attachment_RCA->getMimeType()); + + $attachment_TestCard = $attachments['Test_card.png.zip']; + $mimetype_TestCard = 'application/zip'; + $this->assertEquals($mimetype_TestCard, $attachment_TestCard->getMimeType()); + } + + public function testGetSize() + { + $attachments = static::getAttachments('6'); + + $attachment_RCA = $attachments['RCA_Indian_Head_test_pattern.JPG.zip']; + $size_RCA = 378338; + $this->assertEquals($size_RCA, $attachment_RCA->getSize()); + + $attachment_TestCard = $attachments['Test_card.png.zip']; + $size_TestCard = 32510; + $this->assertEquals($size_TestCard, $attachment_TestCard->getSize()); + } + + public function testGetStructure() + { + $attachments = static::getAttachments('6'); + + $attachment_RCA = $attachments['RCA_Indian_Head_test_pattern.JPG.zip']; + $structure_RCA = $attachment_RCA->getStructure(); + + $this->assertObjectHasAttribute('type', $structure_RCA); + $this->assertEquals(3, $structure_RCA->type); + + $this->assertObjectHasAttribute('subtype', $structure_RCA); + $this->assertEquals('ZIP', $structure_RCA->subtype); + + $this->assertObjectHasAttribute('bytes', $structure_RCA); + $this->assertEquals(378338, $structure_RCA->bytes); + } + + public function testSaveToDirectory() + { + $attachments = static::getAttachments('6'); + + $attachment_RCA = $attachments['RCA_Indian_Head_test_pattern.JPG.zip']; + + $tmpdir = rtrim(sys_get_temp_dir(), '/') . '/'; + $filepath = $tmpdir . 'RCA_Indian_Head_test_pattern.JPG.zip'; + + $this->assertTrue($attachment_RCA->saveToDirectory($tmpdir)); + + $this->assertFileExists($filepath); + $this->assertEquals(md5(file_get_contents($filepath)), md5($attachment_RCA->getData())); + + $attachments = static::getAttachments('6'); + $attachment_RCA = $attachments['RCA_Indian_Head_test_pattern.JPG.zip']; + $this->assertFalse($attachment_RCA->saveToDirectory('/'), 'Returns false when attempting to save without filesystem permission.'); + + $attachments = static::getAttachments('6'); + $attachment_RCA = $attachments['RCA_Indian_Head_test_pattern.JPG.zip']; + $this->assertFalse($attachment_RCA->saveToDirectory($filepath), 'Returns false when attempting to save over a file.'); + } + + public static function tearDownAfterClass() + { + $tmpdir = rtrim(sys_get_temp_dir(), '/') . '/'; + $filepath = $tmpdir . 'RCA_Indian_Head_test_pattern.JPG.zip'; + unlink($filepath); + } +} diff --git a/vendor/tedivm/fetch/tests/Fetch/Test/MessageTest.php b/vendor/tedivm/fetch/tests/Fetch/Test/MessageTest.php new file mode 100644 index 000000000..970cd30b0 --- /dev/null +++ b/vendor/tedivm/fetch/tests/Fetch/Test/MessageTest.php @@ -0,0 +1,252 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Fetch\Test; +use Fetch\Message; + +/** + * @package Fetch + * @author Robert Hafner + */ +class MessageTest extends \PHPUnit_Framework_TestCase +{ + public static function getMessage($id) + { + $server = ServerTest::getServer(); + + return new \Fetch\Message($id, $server); + } + + public function testConstructMessage() + { + $message = static::getMessage(3); + $this->assertInstanceOf('\Fetch\Message', $message); + } + + public function testGetOverview() + { + $message = static::getMessage(3); + $overview = $message->getOverview(); + $this->assertEquals('Welcome', $overview->subject, 'Subject available from overview'); + $this->assertEquals('tedivm@tedivm.com', $overview->from, 'From available from overview'); + $this->assertEquals('testuser@tedivm.com', $overview->to, 'To available from overview'); + $this->assertEquals(1465, $overview->size, 'Size available from overview'); + $this->assertEquals(0, $overview->flagged, 'Flagged available from overview'); + $this->assertEquals(1, $overview->seen, 'Seen available from overview'); + } + + public function testGetHeaders() + { + $message = static::getMessage(3); + $headers = $message->getHeaders(); + $this->assertEquals('Sun, 1 Dec 2013 21:14:03 -0800 (PST)', $headers->date, 'Headers contain the right date.'); + $this->assertEquals('testuser@tedivm.com', $headers->toaddress, 'Headers contain toaddress.'); + $this->assertEquals('tedivm@tedivm.com', $headers->fromaddress, 'Headers contain fromaddress'); + } + + public function testGetStructure() + { + + } + + public function testGetMessageBody() + { + // easiest way to deal with php encoding issues is simply not to. + $plaintextTest = 'f9377a89c9c935463a2b35c92dd61042'; + $convertedHtmlTest = '11498bcf191900d634ff8772a64ca523'; + $pureHtmlTest = '6a366ddecf080199284146d991d52169'; + + $message = static::getMessage(3); + $messageNonHTML = $message->getMessageBody(); + $this->assertEquals($plaintextTest, md5($messageNonHTML), 'Message returns as plaintext.'); + + $messageHTML = $message->getMessageBody(true); + $this->assertEquals($convertedHtmlTest, md5($messageHTML), 'Message converts from plaintext to HTML when requested.'); + + $message = static::getMessage(4); + $messageHTML = $message->getMessageBody(true); + $this->assertEquals($pureHtmlTest, md5($messageHTML), 'Message returns as HTML.'); + + } + + public function testGetAddresses() + { + $message = static::getMessage(3); + + $addresses = $message->getAddresses('to'); + $this->assertEquals('testuser@tedivm.com', $addresses[0]['address'], 'Retrieving to user from address array.'); + + $addressString = $message->getAddresses('to', true); + $this->assertEquals('testuser@tedivm.com', $addressString, 'Returning To address as string.'); + + $addresses = $message->getAddresses('from'); + $this->assertEquals('tedivm@tedivm.com', $addresses['address'], 'Returning From address as an address array.'); + + $addressString = $message->getAddresses('from', true); + $this->assertEquals('tedivm@tedivm.com', $addressString, 'Returning From address as string.'); + } + + public function testGetDate() + { + $message = static::getMessage(3); + $this->assertEquals(1385961243, $message->getDate(), 'Returns date as timestamp.'); + } + + public function testGetSubject() + { + $message = static::getMessage(3); + $this->assertEquals('Welcome', $message->getSubject(), 'Returns Subject.'); + } + + public function testDelete() + { + + } + + public function testGetImapBox() + { + $server = ServerTest::getServer(); + $message = new \Fetch\Message('3', $server); + $this->assertEquals($server, $message->getImapBox(), 'getImapBox returns Server used to create Message.'); + } + + public function testGetUid() + { + $message = static::getMessage('3'); + $this->assertEquals(3, $message->getUid(), 'Message returns UID'); + } + + public function testGetAttachments() + { + $messageWithoutAttachments = static::getMessage('3'); + $this->assertFalse($messageWithoutAttachments->getAttachments(), 'getAttachments returns false when no attachments present.'); + + $messageWithAttachments = static::getMessage('6'); + $attachments = $messageWithAttachments->getAttachments(); + $this->assertCount(2, $attachments); + foreach($attachments as $attachment) + $this->assertInstanceOf('\Fetch\Attachment', $attachment, 'getAttachments returns Fetch\Attachment objects.'); + + $attachment = $messageWithAttachments->getAttachments('Test_card.png.zip'); + $this->assertInstanceOf('\Fetch\Attachment', $attachment, 'getAttachment returns specified Fetch\Attachment object.'); + } + + public function testCheckFlag() + { + $message = static::getMessage('3'); + $this->assertFalse($message->checkFlag('flagged')); + $this->assertTrue($message->checkFlag('seen')); + } + + public function testSetFlag() + { + $message = static::getMessage('3'); + $this->assertFalse($message->checkFlag('answered'), 'Message is not answered.'); + + $this->assertTrue($message->setFlag('answered'), 'setFlag returned true.'); + $this->assertTrue($message->checkFlag('answered'), 'Message was successfully answered.'); + + $this->assertTrue($message->setFlag('answered', false), 'setFlag returned true.'); + $this->assertFalse($message->checkFlag('answered'), 'Message was successfully unanswered.'); + + $message = static::getMessage('2'); + $this->assertFalse($message->checkFlag('flagged'), 'Message is not flagged.'); + + $this->assertTrue($message->setFlag('flagged'), 'setFlag returned true.'); + $this->assertTrue($message->checkFlag('flagged'), 'Message was successfully flagged.'); + + $message = static::getMessage('2'); + $this->assertTrue($message->setFlag('flagged', false), 'setFlag returned true.'); + $this->assertFalse($message->checkFlag('flagged'), 'Message was successfully unflagged.'); + } + + public function testMoveToMailbox() + { + $server = ServerTest::getServer(); + + // Testing by moving message from "Test Folder" to "Sent" + + // Count Test Folder + $server->setMailBox('Test Folder'); + $testFolderNumStart = $server->numMessages(); + + // Get message from Test Folder + $message = $server->getMessageByUid(1); + $this->assertInstanceOf('\Fetch\Message', $message, 'Server returned Message.'); + + // Switch to Sent folder, count messages + $server->setMailBox('Sent'); + $sentFolderNumStart = $server->numMessages(); + + // Switch to "Flagged" folder in order to test that function properly returns to it + $this->assertTrue($server->setMailBox('Flagged Email')); + + // Move the message! + $this->assertTrue($message->moveToMailBox('Sent')); + + // Make sure we're still in the same folder + $this->assertEquals('Flagged Email', $server->getMailBox(), 'Returned Server back to right mailbox.'); + + $this->assertAttributeEquals('Sent', 'mailbox', $message, 'Message mailbox changed to new location.'); + + // Make sure Test Folder lost a message + $this->assertTrue($server->setMailBox('Test Folder')); + $this->assertEquals($testFolderNumStart - 1, $server->numMessages(), 'Message moved out of Test Folder.'); + + // Make sure Sent folder gains one + $this->assertTrue($server->setMailBox('Sent')); + $this->assertEquals($sentFolderNumStart + 1, $server->numMessages(), 'Message moved into Sent Folder.'); + } + + public function testDecode() + { + $quotedPrintableDecoded = "Now's the time for all folk to come to the aid of their country."; + $quotedPrintable = <<<'ENCODE' +Now's the time = +for all folk to come= + to the aid of their country. +ENCODE; + $this->assertEquals($quotedPrintableDecoded, Message::decode($quotedPrintable, 'quoted-printable'), 'Decodes quoted printable'); + $this->assertEquals($quotedPrintableDecoded, Message::decode($quotedPrintable, 4), 'Decodes quoted printable'); + + $testString = 'This is a test string'; + $base64 = base64_encode($testString); + $this->assertEquals($testString, Message::decode($base64, 'base64'), 'Decodes quoted base64'); + $this->assertEquals($testString, Message::decode($base64, 3), 'Decodes quoted base64'); + + $notEncoded = '> w - www.somesite.com.au'; + $this->assertEquals($notEncoded, Message::decode($notEncoded, 0), 'Nothing to decode'); + } + + public function testTypeIdToString() + { + $types = array(); + $types[0] = 'text'; + $types[1] = 'multipart'; + $types[2] = 'message'; + $types[3] = 'application'; + $types[4] = 'audio'; + $types[5] = 'image'; + $types[6] = 'video'; + $types[7] = 'other'; + $types[8] = 'other'; + $types[32] = 'other'; + + foreach($types as $id => $type) + $this->assertEquals($type, Message::typeIdToString($id)); + } + + public function testGetParametersFromStructure() + { + + } + +} diff --git a/vendor/tedivm/fetch/tests/Fetch/Test/ServerTest.php b/vendor/tedivm/fetch/tests/Fetch/Test/ServerTest.php new file mode 100644 index 000000000..d9875a6ac --- /dev/null +++ b/vendor/tedivm/fetch/tests/Fetch/Test/ServerTest.php @@ -0,0 +1,225 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Fetch\Test; + +use Fetch\Server; + +/** + * @package Fetch + * @author Robert Hafner + */ +class ServerTest extends \PHPUnit_Framework_TestCase +{ + public static $num_messages_inbox = 12; + + /** + * @dataProvider flagsDataProvider + * @param string $expected server string with %host% placeholder + * @param integer $port to use (needed to test behavior on port 143 and 993 from constructor) + * @param array $flags to set/unset ($flag => $value) + */ + public function testFlags($expected, $port, $flags) + { + $server = new Server(TESTING_SERVER_HOST, $port); + + foreach ($flags as $flag => $value) { + $server->setFlag($flag, $value); + } + + $this->assertEquals(str_replace('%host%', TESTING_SERVER_HOST, $expected), $server->getServerString()); + } + + public function testFlagOverwrite() + { + $server = static::getServer(); + + $server->setFlag('TestFlag', 'true'); + $this->assertAttributeContains('TestFlag=true', 'flags', $server); + + $server->setFlag('TestFlag', 'false'); + $this->assertAttributeContains('TestFlag=false', 'flags', $server); + } + + public function flagsDataProvider() + { + return array( + array('{%host%:143/novalidate-cert}', 143, array()), + array('{%host%:143/validate-cert}', 143, array('validate-cert' => true)), + array('{%host%:143}', 143, array('novalidate-cert' => false)), + array('{%host%:993/ssl}', 993, array()), + array('{%host%:993}', 993, array('ssl' => false)), + array('{%host%:100/tls}', 100, array('tls' => true)), + array('{%host%:100/tls}', 100, array('tls' => true, 'tls' => true)), + array('{%host%:100/notls}', 100, array('tls' => true, 'notls' => true)), + array('{%host%:100}', 100, array('ssl' => true, 'ssl' => false)), + array('{%host%:100/user=foo}', 100, array('user' => 'foo')), + array('{%host%:100/user=foo}', 100, array('user' => 'foo', 'user' => 'foo')), + array('{%host%:100/user=bar}', 100, array('user' => 'foo', 'user' => 'bar')), + array('{%host%:100}', 100, array('user' => 'foo', 'user' => false)), + ); + } + + /** + * @dataProvider connectionDataProvider + * @param integer $port to use (needed to test behavior on port 143 and 993 from constructor) + * @param array $flags to set/unset ($flag => $value) + * @param string $message Assertion message + */ + public function testConnection($port, $flags, $message) + { + $server = new Server(TESTING_SERVER_HOST, $port); + $server->setAuthentication(TEST_USER, TEST_PASSWORD); + + foreach ($flags as $flag => $value) { + $server->setFlag($flag, $value); + } + + $imapSteam = $server->getImapStream(); + $this->assertInternalType('resource', $imapSteam, $message); + } + + public function connectionDataProvider() + { + return array( + array(143, array(), 'Connects with default settings.'), + array(993, array('novalidate-cert' => true), 'Connects over SSL (self signed).'), + ); + } + + public function testNumMessages() + { + $server = static::getServer(); + $numMessages = $server->numMessages(); + $this->assertEquals(self::$num_messages_inbox, $numMessages); + } + + public function testGetMessages() + { + $server = static::getServer(); + $messages = $server->getMessages(5); + + $this->assertCount(5, $messages, 'Five messages returned'); + foreach ($messages as $message) { + $this->assertInstanceOf('\Fetch\Message', $message, 'Returned values are Messages'); + } + } + + public function testGetMessagesOrderedByDateAsc() + { + $server = static::getServer(); + $messages = $server->getOrderedMessages(SORTDATE, false, 2); + + $this->assertCount(2, $messages, 'Two messages returned'); + $this->assertGreaterThan($messages[0]->getDate(), $messages[1]->getDate(), 'Messages in ascending order'); + } + + public function testGetMessagesOrderedByDateDesc() + { + $server = static::getServer(); + $messages = $server->getOrderedMessages(SORTDATE, true, 2); + + $this->assertCount(2, $messages, 'Two messages returned'); + $this->assertLessThan($messages[0]->getDate(), $messages[1]->getDate(), 'Messages in descending order'); + } + + public function testGetMailBox() + { + $server = static::getServer(); + $this->assertEquals('', $server->getMailBox()); + $this->assertTrue($server->setMailBox('Sent')); + $this->assertEquals('Sent', $server->getMailBox()); + } + + public function testSetMailBox() + { + $server = static::getServer(); + + $this->assertTrue($server->setMailBox('Sent')); + $this->assertEquals('Sent', $server->getMailBox()); + + $this->assertTrue($server->setMailBox('Flagged Email')); + $this->assertEquals('Flagged Email', $server->getMailBox()); + + $this->assertFalse($server->setMailBox('Cheese')); + + $this->assertTrue($server->setMailBox('')); + $this->assertEquals('', $server->getMailBox()); + } + + public function testHasMailBox() + { + $server = static::getServer(); + + $this->assertTrue($server->hasMailBox('Sent'), 'Has mailbox "Sent"'); + $this->assertTrue($server->hasMailBox('Flagged Email'), 'Has mailbox "Flagged Email"'); + $this->assertFalse($server->hasMailBox('Cheese'), 'Does not have mailbox "Cheese"'); + } + + public function testListMailBoxes() + { + $server = static::getServer(); + $spec = sprintf('{%s:143/novalidate-cert}', TESTING_SERVER_HOST); + + $list = $server->listMailboxes('*'); + $this->assertContains($spec.'Sent', $list, 'Has mailbox "Sent"'); + $this->assertNotContains($spec.'Cheese', $list, 'Does not have mailbox "Cheese"'); + } + + public function testCreateMailbox() + { + $server = static::getServer(); + + $this->assertFalse($server->hasMailBox('Cheese'), 'Does not have mailbox "Cheese"'); + $this->assertTrue($server->createMailBox('Cheese'), 'createMailbox returns true.'); + $this->assertTrue($server->hasMailBox('Cheese'), 'Mailbox "Cheese" was created'); + } + + /** + * @expectedException \RuntimeException + */ + public function testSetOptionsException() + { + $server = static::getServer(); + $server->setOptions('purple'); + } + + public function testSetOptions() + { + $server = static::getServer(); + $server->setOptions(5); + $this->assertAttributeEquals(5, 'options', $server); + } + + public function testExpunge() + { + $server = static::getServer(); + $message = $server->getMessageByUid(12); + + $this->assertInstanceOf('\Fetch\Message', $message, 'Message exists'); + + $message->delete(); + + $this->assertInstanceOf('\Fetch\Message', $server->getMessageByUid(12), 'Message still present after being deleted but before being expunged.'); + + $server->expunge(); + + $this->assertFalse($server->getMessageByUid(12), 'Message successfully expunged'); + } + + public static function getServer() + { + $server = new Server(TESTING_SERVER_HOST, 143); + $server->setAuthentication(TEST_USER, TEST_PASSWORD); + + return $server; + } +} diff --git a/vendor/tedivm/fetch/tests/bootstrap.php b/vendor/tedivm/fetch/tests/bootstrap.php new file mode 100644 index 000000000..c656c67fc --- /dev/null +++ b/vendor/tedivm/fetch/tests/bootstrap.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +error_reporting(-1); + +define('TESTING', true); +define('TEST_USER', 'testuser'); +define('TEST_PASSWORD', 'applesauce'); + +date_default_timezone_set('UTC'); + +if (getenv('TRAVIS')) { + define('TESTING_ENVIRONMENT', 'TRAVIS'); + define('TESTING_SERVER_HOST', '127.0.0.1'); +} else { + define('TESTING_ENVIRONMENT', 'VAGRANT'); + define('TESTING_SERVER_HOST', '172.31.1.2'); +} + +$filename = __DIR__ .'/../vendor/autoload.php'; + +if (!file_exists($filename)) { + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" . PHP_EOL; + echo " You need to execute `composer install` before running the tests. " . PHP_EOL; + echo " Vendors are required for complete test execution. " . PHP_EOL; + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" . PHP_EOL . PHP_EOL; + $filename = __DIR__ .'/../autoload.php'; + require_once $filename; +} else { + $loader = require $filename; + $loader->add('Fetch\\Test', __DIR__); +} diff --git a/vendor/tedivm/fetch/tests/runTests.sh b/vendor/tedivm/fetch/tests/runTests.sh new file mode 100644 index 000000000..0547fd730 --- /dev/null +++ b/vendor/tedivm/fetch/tests/runTests.sh @@ -0,0 +1,17 @@ +#/usr/bin/env/sh +set -e + +if [ ! -n "$TRAVIS" ]; then + ./vendor/tedivm/dovecottesting/SetupEnvironment.sh + sleep 5 +fi + +echo 'Running unit tests.' +./vendor/bin/phpunit --verbose --coverage-clover build/logs/clover.xml + +echo '' +echo '' +echo '' +echo 'Testing for Coding Styling Compliance.' +echo 'All code should follow PSR standards.' +./vendor/bin/php-cs-fixer fix ./ --level="all" -vv --dry-run \ No newline at end of file