1<?php
2
3/**
4 * LICENSE: The MIT License (the "License")
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 * https://github.com/azure/azure-storage-php/LICENSE
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 *
15 * PHP version 5
16 *
17 * @category  Microsoft
18 * @package   MicrosoftAzure\Storage\Common\Internal
19 * @author    Azure Storage PHP SDK <dmsh@microsoft.com>
20 * @copyright 2016 Microsoft Corporation
21 * @license   https://github.com/azure/azure-storage-php/LICENSE
22 * @link      https://github.com/azure/azure-storage-php
23 */
24
25namespace MicrosoftAzure\Storage\Common\Internal;
26
27/**
28 * Project resources.
29 *
30 * @ignore
31 * @category  Microsoft
32 * @package   MicrosoftAzure\Storage\Common\Internal
33 * @author    Azure Storage PHP SDK <dmsh@microsoft.com>
34 * @copyright 2016 Microsoft Corporation
35 * @license   https://github.com/azure/azure-storage-php/LICENSE
36 * @link      https://github.com/azure/azure-storage-php
37 */
38class Resources
39{
40    // @codingStandardsIgnoreStart
41
42    // Connection strings
43    const USE_DEVELOPMENT_STORAGE_NAME = 'UseDevelopmentStorage';
44    const DEVELOPMENT_STORAGE_PROXY_URI_NAME = 'DevelopmentStorageProxyUri';
45    const DEFAULT_ENDPOINTS_PROTOCOL_NAME = 'DefaultEndpointsProtocol';
46    const ACCOUNT_NAME_NAME = 'AccountName';
47    const ACCOUNT_KEY_NAME = 'AccountKey';
48    const SAS_TOKEN_NAME = 'SharedAccessSignature';
49    const BLOB_ENDPOINT_NAME = 'BlobEndpoint';
50    const QUEUE_ENDPOINT_NAME = 'QueueEndpoint';
51    const TABLE_ENDPOINT_NAME = 'TableEndpoint';
52    const FILE_ENDPOINT_NAME = 'FileEndpoint';
53    const SHARED_ACCESS_SIGNATURE_NAME = 'SharedAccessSignature';
54    const ENDPOINT_SUFFIX_NAME = 'EndpointSuffix';
55    const DEFAULT_ENDPOINT_SUFFIX = 'core.windows.net';
56    const DEV_STORE_NAME = 'devstoreaccount1';
57    const DEV_STORE_KEY = 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==';
58    const BLOB_BASE_DNS_NAME = 'blob.core.windows.net';
59    const BLOB_DNS_PREFIX = 'blob.';
60    const QUEUE_BASE_DNS_NAME = 'queue.core.windows.net';
61    const QUEUE_DNS_PREFIX = 'queue.';
62    const TABLE_BASE_DNS_NAME = 'table.core.windows.net';
63    const TABLE_DNS_PREFIX = 'table.';
64    const FILE_BASE_DNS_NAME = 'file.core.windows.net';
65    const FILE_DNS_PREFIX = 'file.';
66    const DEV_STORE_CONNECTION_STRING = 'BlobEndpoint=127.0.0.1:10000;QueueEndpoint=127.0.0.1:10001;TableEndpoint=127.0.0.1:10002;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==';
67    const SUBSCRIPTION_ID_NAME = 'SubscriptionID';
68    const CERTIFICATE_PATH_NAME = 'CertificatePath';
69    const SECONDARY_STRING = '-secondary';
70    const PRIMARY_STRING = '-primary';
71
72    // Messages
73    const INVALID_FUNCTION_NAME = 'The class %s does not have a function named %s.';
74    const INVALID_TYPE_MSG = 'The provided variable should be of type: ';
75    const INVALID_META_MSG = 'Metadata cannot contain newline characters.';
76    const AZURE_ERROR_MSG = "Fail:\nCode: %s\nValue: %s\ndetails (if any): %s.";
77    const NOT_IMPLEMENTED_MSG = 'This method is not implemented.';
78    const NULL_OR_EMPTY_MSG = "'%s' can't be NULL or empty.";
79    const NULL_MSG = "'%s' can't be NULL.";
80    const INVALID_URL_MSG = 'Provided URL is invalid.';
81    const INVALID_HT_MSG = 'The header type provided is invalid.';
82    const INVALID_VERSION_MSG = 'Server does not support any known protocol versions.';
83    const INVALID_EXC_OBJ_MSG = 'Exception object type should be ServiceException.';
84    const INVALID_PARAM_MSG = "The provided variable '%s' should be of type '%s'";
85    const INVALID_VALUE_MSG = "The provided variable '%s' has unexpected value. Reason: '%s'";
86    const INVALID_STRING_LENGTH = "The provided variable '%s' should be of %s characters long";
87    const INVALID_SVC_PROP_MSG = 'The provided service properties is invalid.';
88    const UNKNOWN_SRILZER_MSG = 'The provided serializer type is unknown';
89    const INVALID_CREATE_SERVICE_OPTIONS_MSG = 'Must provide valid location or affinity group.';
90    const INVALID_UPDATE_SERVICE_OPTIONS_MSG = 'Must provide either description or label.';
91    const INVALID_CONFIG_MSG = 'Config object must be of type Configuration';
92    const INVALID_CONFIG_HOSTNAME = "The provided hostname '%s' is invalid.";
93    const INVALID_CONFIG_URI = "The provided URI '%s' is invalid. It has to pass the check 'filter_var(<user_uri>, FILTER_VALIDATE_URL)'.";
94    const INVALID_CONFIG_VALUE = "The provided config value '%s' does not belong to the valid values subset:\n%s";
95    const INVALID_ACCOUNT_KEY_FORMAT = "The provided account key '%s' is not a valid base64 string. It has to pass the check 'base64_decode(<user_account_key>, true)'.";
96    const MISSING_CONNECTION_STRING_SETTINGS = "The provided connection string '%s' does not have complete configuration settings.";
97    const INVALID_CONNECTION_STRING_SETTING_KEY = "The setting key '%s' is not found in the expected configuration setting keys:\n%s";
98    const INVALID_CERTIFICATE_PATH = "The provided certificate path '%s' is invalid.";
99    const INSTANCE_TYPE_VALIDATION_MSG = 'The type of %s is %s but is expected to be %s.';
100    const INVALID_MESSAGE_OBJECT_TO_SERIALIZE = 'The given object does not have required methods, so it could not be serialized.';
101    const MISSING_CONNECTION_STRING_CHAR = "Missing %s character";
102    const ERROR_PARSING_STRING = "'%s' at position %d.";
103    const INVALID_CONNECTION_STRING = "Argument '%s' is not a valid connection string: '%s'";
104    const ERROR_CONNECTION_STRING_MISSING_KEY = 'Missing key name';
105    const ERROR_CONNECTION_STRING_EMPTY_KEY = 'Empty key name';
106    const ERROR_CONNECTION_STRING_MISSING_CHARACTER = "Missing %s character";
107    const ERROR_EMPTY_SETTINGS = 'No keys were found in the connection string';
108    const MISSING_LOCK_LOCATION_MSG = 'The lock location of the brokered message is missing.';
109    const INVALID_SAS_TOKEN = 'The shared access signatures (SAS) provided is not valid \'%s\'';
110    const INVALID_SLOT = "The provided deployment slot '%s' is not valid. Only 'staging' and 'production' are accepted.";
111    const INVALID_DEPLOYMENT_LOCATOR_MSG = 'A slot or deployment name must be provided.';
112    const INVALID_CHANGE_MODE_MSG = "The change mode must be 'Auto' or 'Manual'. Use Mode class constants for that purpose.";
113    const INVALID_DEPLOYMENT_STATUS_MSG = "The change mode must be 'Running' or 'Suspended'. Use DeploymentStatus class constants for that purpose.";
114    const ERROR_OAUTH_GET_ACCESS_TOKEN = 'Unable to get oauth access token for endpoint \'%s\', account name \'%s\'';
115    const ERROR_OAUTH_SERVICE_MISSING = 'OAuth service missing for account name \'%s\'';
116    const ERROR_METHOD_NOT_FOUND = 'Method \'%s\' not found in object class \'%s\'';
117    const ERROR_INVALID_DATE_STRING = 'Parameter \'%s\' is not a date formatted string \'%s\'';
118    const ERROR_FILE_COULD_NOT_BE_OPENED = 'Error: file with given path could not be opened or created.';
119    const INVALID_PARAM_GENERAL = 'The provided parameter \'%s\' is invalid';
120    const INVALID_NEGATIVE_PARAM = 'The provided parameter \'%s\' should be positive number.';
121    const SIGNED_SERVICE_INVALID_VALIDATION_MSG = 'The signed service should only be a combination of the letters b(lob) q(ueue) t(able) or f(ile).';
122    const SIGNED_RESOURCE_TYPE_INVALID_VALIDATION_MSG = 'The signed resource type should only be a combination of the letters s(ervice) c(container) or o(bject).';
123    const STRING_NOT_WITH_GIVEN_COMBINATION = 'The string should only be a combination of the letters %s.';
124    const SIGNED_PROTOCOL_INVALID_VALIDATION_MSG = 'The signed protocol is invalid: possible values are https or https,http.';
125    const ERROR_RESOURCE_TYPE_NOT_SUPPORTED = 'The given resource type cannot be recognized or is not supported.';
126    const ERROR_TOO_MANY_SIGNED_IDENTIFIERS = 'There can be at most 5 signed identifiers at the same time.';
127    const INVALID_PERMISSION_PROVIDED = 'Invalid permission provided, the permission of resource type \'%s\' can only be of \'%s\'';
128    const INVALID_RESOURCE_TYPE = 'Provided resource type is invalid.';
129    const ERROR_KEY_NOT_EXIST = "The key '%s' does not exist in the given array.";
130    const RESOURCE_RANGE_LENGTH_MUST_SET = "The start and end/length of the range must be set.";
131    const INVALID_ACCEPT_CONTENT_TYPE = "The given accept content type is not valid.";
132    const ERROR_CANNOT_PARSE_XML = "Cannot parse XML, reasons: %s";
133    const INVALID_SCHEME = 'HTTP scheme can only be string \'http\' or \'https\'.';
134    const AAD_TOKEN_MUST_START_WITH_BEARER = 'AAD token is invalid, please make sure that it has format \'Bearer ################\'';
135
136    // HTTP Headers
137    const X_MS_HEADER_PREFIX                 = 'x-ms-';
138    const X_MS_META_HEADER_PREFIX            = 'x-ms-meta-';
139    const X_MS_VERSION                       = 'x-ms-version';
140    const X_MS_DATE                          = 'x-ms-date';
141    const X_MS_COPY_ACTION                   = 'x-ms-copy-action';
142    const X_MS_COPY_ID                       = 'x-ms-copy-id';
143    const X_MS_COPY_COMPLETION_TIME          = 'x-ms-copy-completion-time';
144    const X_MS_COPY_STATUS                   = 'x-ms-copy-status';
145    const X_MS_COPY_STATUS_DESCRIPTION       = 'x-ms-copy-status-description';
146    const X_MS_COPY_SOURCE                   = 'x-ms-copy-source';
147    const X_MS_COPY_PROGRESS                 = 'x-ms-copy-progress';
148    const X_MS_RANGE                         = 'x-ms-range';
149    const X_MS_RANGE_GET_CONTENT_MD5         = 'x-ms-range-get-content-md5';
150    const X_MS_DELETE_SNAPSHOTS              = 'x-ms-delete-snapshots';
151    const X_MS_SNAPSHOT                      = 'x-ms-snapshot';
152    const X_MS_SOURCE_IF_MODIFIED_SINCE      = 'x-ms-source-if-modified-since';
153    const X_MS_SOURCE_IF_UNMODIFIED_SINCE    = 'x-ms-source-if-unmodified-since';
154    const X_MS_SOURCE_IF_MATCH               = 'x-ms-source-if-match';
155    const X_MS_SOURCE_IF_NONE_MATCH          = 'x-ms-source-if-none-match';
156    const X_MS_SOURCE_LEASE_ID               = 'x-ms-source-lease-id';
157    const X_MS_CONTINUATION_NEXTTABLENAME    = 'x-ms-continuation-nexttablename';
158    const X_MS_CONTINUATION_NEXTPARTITIONKEY = 'x-ms-continuation-nextpartitionkey';
159    const X_MS_CONTINUATION_NEXTROWKEY       = 'x-ms-continuation-nextrowkey';
160    const X_MS_REQUEST_ID                    = 'x-ms-request-id';
161    const X_MS_CLIENT_REQUEST_ID             = 'x-ms-client-request-id';
162    const X_MS_CONTINUATION_LOCATION_MODE    = 'x-ms-continuation-location-mode';
163    const X_MS_TYPE                          = 'x-ms-type';
164    const X_MS_CONTENT_LENGTH                = 'x-ms-content-length';
165    const X_MS_CACHE_CONTROL                 = 'x-ms-cache-control';
166    const X_MS_CONTENT_TYPE                  = 'x-ms-content-type';
167    const X_MS_CONTENT_MD5                   = 'x-ms-content-md5';
168    const X_MS_CONTENT_ENCODING              = 'x-ms-content-encoding';
169    const X_MS_CONTENT_LANGUAGE              = 'x-ms-content-language';
170    const X_MS_CONTENT_DISPOSITION           = 'x-ms-content-disposition';
171    const X_MS_WRITE                         = 'x-ms-write';
172    const ETAG                               = 'etag';
173    const LAST_MODIFIED                      = 'last-modified';
174    const DATE                               = 'date';
175    const AUTHENTICATION                     = 'authorization';
176    const WRAP_AUTHORIZATION                 = 'WRAP access_token="%s"';
177    const CONTENT_ENCODING                   = 'content-encoding';
178    const CONTENT_LANGUAGE                   = 'content-language';
179    const CONTENT_LENGTH                     = 'content-length';
180    const CONTENT_LENGTH_NO_SPACE            = 'contentlength';
181    const CONTENT_MD5                        = 'content-md5';
182    const CONTENT_TYPE_LOWER_CASE            = 'content-type';
183    const CONTENT_TYPE                       = 'Content-Type';
184    const CONTENT_ID                         = 'content-id';
185    const CONTENT_RANGE                      = 'content-range';
186    const CACHE_CONTROL                      = 'cache-control';
187    const CONTENT_DISPOSITION                = 'content-disposition';
188    const IF_MODIFIED_SINCE                  = 'if-modified-since';
189    const IF_MATCH                           = 'if-match';
190    const IF_NONE_MATCH                      = 'if-none-match';
191    const IF_UNMODIFIED_SINCE                = 'if-unmodified-since';
192    const RANGE                              = 'range';
193    const DATA_SERVICE_VERSION               = 'dataserviceversion';
194    const MAX_DATA_SERVICE_VERSION           = 'maxdataserviceversion';
195    const ACCEPT_HEADER                      = 'accept';
196    const ACCEPT_CHARSET                     = 'accept-charset';
197    const USER_AGENT                         = 'User-Agent';
198    const PREFER                             = 'Prefer';
199
200    // HTTP Methods
201    const HTTP_GET    = 'GET';
202    const HTTP_PUT    = 'PUT';
203    const HTTP_POST   = 'POST';
204    const HTTP_HEAD   = 'HEAD';
205    const HTTP_DELETE = 'DELETE';
206    const HTTP_MERGE  = 'MERGE';
207
208    // Misc
209    const EMPTY_STRING           = '';
210    const SEPARATOR              = ',';
211    const AZURE_DATE_FORMAT      = 'D, d M Y H:i:s T';
212    const TIMESTAMP_FORMAT       = 'Y-m-d H:i:s';
213    const EMULATED               = 'EMULATED';
214    const EMULATOR_BLOB_URI      = '127.0.0.1:10000';
215    const EMULATOR_QUEUE_URI     = '127.0.0.1:10001';
216    const EMULATOR_TABLE_URI     = '127.0.0.1:10002';
217    const ASTERISK               = '*';
218    const SERVICE_MANAGEMENT_URL = 'https://management.core.windows.net';
219    const HTTP_SCHEME            = 'http';
220    const HTTPS_SCHEME           = 'https';
221    const SETTING_NAME           = 'SettingName';
222    const SETTING_CONSTRAINT     = 'SettingConstraint';
223    const DEV_STORE_URI          = 'http://127.0.0.1';
224    const SERVICE_URI_FORMAT     = "%s://%s.%s";
225    const WRAP_ENDPOINT_URI_FORMAT = "https://%s-sb.accesscontrol.windows.net/WRAPv0.9";
226    const MB_IN_BYTES_1       = 1048576;
227    const MB_IN_BYTES_4       = 4194304;
228    const MB_IN_BYTES_32      = 33554432;
229    const MB_IN_BYTES_64      = 67108864;
230    const MB_IN_BYTES_128     = 134217728;
231    const MB_IN_BYTES_256     = 268435456;
232    const MB_IN_BYTES_100     = 104857600;
233    const GB_IN_BYTES         = 1073741824;
234    const GB_IN_BYTES_200     = 214748364800;
235    const MAX_BLOB_BLOCKS     = 50000;
236    const MAX_BLOCK_BLOB_SIZE = 5242880000000;
237    const RETURN_CONTENT      = 'return-content';
238    const NUMBER_OF_CONCURRENCY = 25;//Guzzle's default value
239    const DEFAULT_NUMBER_OF_RETRIES = 3;
240    const DEFAULT_RETRY_INTERVAL = 1000;//Milliseconds
241    const BEARER = 'Bearer ';
242
243    // Header values
244    const COMMON_SDK_VERSION                 = '1.5.1';
245    const INT32_MAX                          = 2147483647;
246    const INT32_MIN                          = -2147483648;
247
248    // Query parameter names
249    const QP_ENTRIES            = 'Entries';
250    const QP_PREFIX             = 'Prefix';
251    const QP_PREFIX_LOWERCASE   = 'prefix';
252    const QP_MAX_RESULTS        = 'MaxResults';
253    const QP_MAX_RESULTS_LOWERCASE = 'maxresults';
254    const QP_MARKER             = 'Marker';
255    const QP_MARKER_LOWERCASE   = 'marker';
256    const QP_METADATA           = 'Metadata';
257    const QP_NEXT_MARKER        = 'NextMarker';
258    const QP_COMP               = 'comp';
259    const QP_INCLUDE            = 'include';
260    const QP_TIMEOUT            = 'timeout';
261    const QP_REST_TYPE          = 'restype';
262    const QP_SNAPSHOT           = 'snapshot';
263    const QP_COPY_ID            = 'copyid';
264    const QP_NAME               = 'Name';
265    const QP_PROPERTIES         = 'Properties';
266    const QP_LAST_MODIFIED      = 'Last-Modified';
267    const QP_ETAG               = 'Etag';
268    const QP_QUOTA              = 'Quota';
269    const QP_CONTENT_LENGTH     = 'Content-Length';
270
271    // Request body content types
272    const URL_ENCODED_CONTENT_TYPE = 'application/x-www-form-urlencoded';
273    const BINARY_FILE_TYPE         = 'application/octet-stream';
274    const HTTP_TYPE                = 'application/http';
275    const MULTIPART_MIXED_TYPE     = 'multipart/mixed';
276
277    // Common used XML tags
278    const XTAG_ATTRIBUTES                   = '@attributes';
279    const XTAG_NAMESPACE                    = '@namespace';
280    const XTAG_LABEL                        = 'Label';
281    const XTAG_NAME                         = 'Name';
282    const XTAG_DESCRIPTION                  = 'Description';
283    const XTAG_LOCATION                     = 'Location';
284    const XTAG_AFFINITY_GROUP               = 'AffinityGroup';
285    const XTAG_HOSTED_SERVICES              = 'HostedServices';
286    const XTAG_STORAGE_SERVICES             = 'StorageServices';
287    const XTAG_STORAGE_SERVICE              = 'StorageService';
288    const XTAG_DISPLAY_NAME                 = 'DisplayName';
289    const XTAG_SERVICE_NAME                 = 'ServiceName';
290    const XTAG_URL                          = 'Url';
291    const XTAG_ID                           = 'ID';
292    const XTAG_STATUS                       = 'Status';
293    const XTAG_HTTP_STATUS_CODE             = 'HttpStatusCode';
294    const XTAG_CODE                         = 'Code';
295    const XTAG_MESSAGE                      = 'Message';
296    const XTAG_STORAGE_SERVICE_PROPERTIES   = 'StorageServiceProperties';
297    const XTAG_SERVICE_ENDPOINT             = 'ServiceEndpoint';
298    const XTAG_ENDPOINT                     = 'Endpoint';
299    const XTAG_ENDPOINTS                    = 'Endpoints';
300    const XTAG_PRIMARY                      = 'Primary';
301    const XTAG_SECONDARY                    = 'Secondary';
302    const XTAG_KEY_TYPE                     = 'KeyType';
303    const XTAG_STORAGE_SERVICE_KEYS         = 'StorageServiceKeys';
304    const XTAG_ERROR                        = 'Error';
305    const XTAG_HOSTED_SERVICE               = 'HostedService';
306    const XTAG_HOSTED_SERVICE_PROPERTIES    = 'HostedServiceProperties';
307    const XTAG_CREATE_HOSTED_SERVICE        = 'CreateHostedService';
308    const XTAG_CREATE_STORAGE_SERVICE_INPUT = 'CreateStorageServiceInput';
309    const XTAG_UPDATE_STORAGE_SERVICE_INPUT = 'UpdateStorageServiceInput';
310    const XTAG_CREATE_AFFINITY_GROUP        = 'CreateAffinityGroup';
311    const XTAG_UPDATE_AFFINITY_GROUP        = 'UpdateAffinityGroup';
312    const XTAG_UPDATE_HOSTED_SERVICE        = 'UpdateHostedService';
313    const XTAG_PACKAGE_URL                  = 'PackageUrl';
314    const XTAG_CONFIGURATION                = 'Configuration';
315    const XTAG_START_DEPLOYMENT             = 'StartDeployment';
316    const XTAG_TREAT_WARNINGS_AS_ERROR      = 'TreatWarningsAsError';
317    const XTAG_CREATE_DEPLOYMENT            = 'CreateDeployment';
318    const XTAG_DEPLOYMENT_SLOT              = 'DeploymentSlot';
319    const XTAG_PRIVATE_ID                   = 'PrivateID';
320    const XTAG_ROLE_INSTANCE_LIST           = 'RoleInstanceList';
321    const XTAG_UPGRADE_DOMAIN_COUNT         = 'UpgradeDomainCount';
322    const XTAG_ROLE_LIST                    = 'RoleList';
323    const XTAG_SDK_VERSION                  = 'SdkVersion';
324    const XTAG_INPUT_ENDPOINT_LIST          = 'InputEndpointList';
325    const XTAG_LOCKED                       = 'Locked';
326    const XTAG_ROLLBACK_ALLOWED             = 'RollbackAllowed';
327    const XTAG_UPGRADE_STATUS               = 'UpgradeStatus';
328    const XTAG_UPGRADE_TYPE                 = 'UpgradeType';
329    const XTAG_CURRENT_UPGRADE_DOMAIN_STATE = 'CurrentUpgradeDomainState';
330    const XTAG_CURRENT_UPGRADE_DOMAIN       = 'CurrentUpgradeDomain';
331    const XTAG_ROLE_NAME                    = 'RoleName';
332    const XTAG_INSTANCE_NAME                = 'InstanceName';
333    const XTAG_INSTANCE_STATUS              = 'InstanceStatus';
334    const XTAG_INSTANCE_UPGRADE_DOMAIN      = 'InstanceUpgradeDomain';
335    const XTAG_INSTANCE_FAULT_DOMAIN        = 'InstanceFaultDomain';
336    const XTAG_INSTANCE_SIZE                = 'InstanceSize';
337    const XTAG_INSTANCE_STATE_DETAILS       = 'InstanceStateDetails';
338    const XTAG_INSTANCE_ERROR_CODE          = 'InstanceErrorCode';
339    const XTAG_OS_VERSION                   = 'OsVersion';
340    const XTAG_ROLE_INSTANCE                = 'RoleInstance';
341    const XTAG_ROLE                         = 'Role';
342    const XTAG_INPUT_ENDPOINT               = 'InputEndpoint';
343    const XTAG_VIP                          = 'Vip';
344    const XTAG_PORT                         = 'Port';
345    const XTAG_DEPLOYMENT                   = 'Deployment';
346    const XTAG_DEPLOYMENTS                  = 'Deployments';
347    const XTAG_REGENERATE_KEYS              = 'RegenerateKeys';
348    const XTAG_SWAP                         = 'Swap';
349    const XTAG_PRODUCTION                   = 'Production';
350    const XTAG_SOURCE_DEPLOYMENT            = 'SourceDeployment';
351    const XTAG_CHANGE_CONFIGURATION         = 'ChangeConfiguration';
352    const XTAG_MODE                         = 'Mode';
353    const XTAG_UPDATE_DEPLOYMENT_STATUS     = 'UpdateDeploymentStatus';
354    const XTAG_ROLE_TO_UPGRADE              = 'RoleToUpgrade';
355    const XTAG_FORCE                        = 'Force';
356    const XTAG_UPGRADE_DEPLOYMENT           = 'UpgradeDeployment';
357    const XTAG_UPGRADE_DOMAIN               = 'UpgradeDomain';
358    const XTAG_WALK_UPGRADE_DOMAIN          = 'WalkUpgradeDomain';
359    const XTAG_ROLLBACK_UPDATE_OR_UPGRADE   = 'RollbackUpdateOrUpgrade';
360    const XTAG_CONTAINER_NAME               = 'ContainerName';
361    const XTAG_ACCOUNT_NAME                 = 'AccountName';
362    const XTAG_LOGGING                      = 'Logging';
363    const XTAG_HOUR_METRICS                 = 'HourMetrics';
364    const XTAG_MINUTE_METRICS               = 'MinuteMetrics';
365    const XTAG_CORS                         = 'Cors';
366    const XTAG_CORS_RULE                    = 'CorsRule';
367    const XTAG_ALLOWED_ORIGINS              = 'AllowedOrigins';
368    const XTAG_ALLOWED_METHODS              = 'AllowedMethods';
369    const XTAG_ALLOWED_HEADERS              = 'AllowedHeaders';
370    const XTAG_EXPOSED_HEADERS              = 'ExposedHeaders';
371    const XTAG_MAX_AGE_IN_SECONDS           = 'MaxAgeInSeconds';
372    const XTAG_SIGNED_IDENTIFIERS           = 'SignedIdentifiers';
373    const XTAG_SIGNED_IDENTIFIER            = 'SignedIdentifier';
374    const XTAG_ACCESS_POLICY                = 'AccessPolicy';
375    const XTAG_SIGNED_START                 = 'Start';
376    const XTAG_SIGNED_EXPIRY                = 'Expiry';
377    const XTAG_SIGNED_PERMISSION            = 'Permission';
378    const XTAG_SIGNED_ID                    = 'Id';
379    const XTAG_DEFAULT_SERVICE_VERSION      = 'DefaultServiceVersion';
380    const XTAG_GEO_REPLICATION              = 'GeoReplication';
381    const XTAG_LAST_SYNC_TIME               = 'LastSyncTime';
382    const XTAG_PAGE_RANGE                   = 'PageRange';
383    const XTAG_CLEAR_RANGE                  = 'ClearRange';
384    const XTAG_RANGE_START                  = 'Start';
385    const XTAG_RANGE_END                    = 'End';
386
387    // PHP URL Keys
388    const PHP_URL_SCHEME   = 'scheme';
389    const PHP_URL_HOST     = 'host';
390    const PHP_URL_PORT     = 'port';
391    const PHP_URL_USER     = 'user';
392    const PHP_URL_PASS     = 'pass';
393    const PHP_URL_PATH     = 'path';
394    const PHP_URL_QUERY    = 'query';
395    const PHP_URL_FRAGMENT = 'fragment';
396
397    // Status Codes
398    const STATUS_OK                = 200;
399    const STATUS_CREATED           = 201;
400    const STATUS_ACCEPTED          = 202;
401    const STATUS_NO_CONTENT        = 204;
402    const STATUS_PARTIAL_CONTENT   = 206;
403    const STATUS_MOVED_PERMANENTLY = 301;
404
405    // Resource Types
406    const RESOURCE_TYPE_BLOB      = 'b';
407    const RESOURCE_TYPE_CONTAINER = 'c';
408    const RESOURCE_TYPE_QUEUE     = 'q';
409    const RESOURCE_TYPE_TABLE     = 't';
410    const RESOURCE_TYPE_SHARE     = 's';
411    const RESOURCE_TYPE_FILE      = 'f';
412
413    // Request Options String
414    const ROS_LOCATION_MODE  = 'location_mode';
415    const ROS_SECONDARY_URI  = 'secondary_uri';
416    const ROS_PRIMARY_URI    = 'primary_uri';
417    const ROS_DECODE_CONTENT = 'decode_content';
418    const ROS_STREAM         = 'stream';
419    const ROS_HANDLER        = 'requestHandler';
420
421    // @codingStandardsIgnoreEnd
422}
423