summaryrefslogtreecommitdiff
path: root/inc/mailgun/guzzle
diff options
context:
space:
mode:
Diffstat (limited to 'inc/mailgun/guzzle')
-rw-r--r--inc/mailgun/guzzle/guzzle/.gitignore27
-rw-r--r--inc/mailgun/guzzle/guzzle/.travis.yml17
-rw-r--r--inc/mailgun/guzzle/guzzle/CHANGELOG.md751
-rw-r--r--inc/mailgun/guzzle/guzzle/LICENSE19
-rw-r--r--inc/mailgun/guzzle/guzzle/README.md57
-rw-r--r--inc/mailgun/guzzle/guzzle/UPGRADING.md537
-rw-r--r--inc/mailgun/guzzle/guzzle/build.xml45
-rw-r--r--inc/mailgun/guzzle/guzzle/composer.json82
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/Makefile153
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_downloads/guzzle-schema-1.0.json176
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_static/guzzle-icon.pngbin803 -> 0 bytes
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_static/homepage.css122
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_static/logo.pngbin247678 -> 0 bytes
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_static/prettify.css41
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_static/prettify.js28
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_templates/index.html106
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_templates/leftbar.html0
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/_templates/nav_links.html5
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/batching/batching.rst183
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/conf.py94
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/docs.rst73
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/getting-started/faq.rst29
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/getting-started/installation.rst154
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/getting-started/overview.rst85
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/http-client/client.rst569
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/http-client/entity-bodies.rst151
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/http-client/http-redirects.rst99
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/http-client/request.rst667
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/http-client/response.rst141
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/http-client/uri-templates.rst52
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/index.rst5
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/iterators/guzzle-iterators.rst97
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/iterators/resource-iterators.rst149
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/async-plugin.rst18
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/backoff-plugin.rst22
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/cache-plugin.rst169
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/cookie-plugin.rst33
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/creating-plugins.rst93
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst32
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/history-plugin.rst24
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/log-plugin.rst69
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst29
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/mock-plugin.rst27
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/oauth-plugin.rst30
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/plugins-list.rst.inc9
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/plugins/plugins-overview.rst59
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/requirements.txt2
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/testing/unit-testing.rst201
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/webservice-client/guzzle-service-descriptions.rst619
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/webservice-client/using-the-service-builder.rst316
-rw-r--r--inc/mailgun/guzzle/guzzle/docs/webservice-client/webservice-client.rst659
-rw-r--r--inc/mailgun/guzzle/guzzle/phar-stub.php16
-rw-r--r--inc/mailgun/guzzle/guzzle/phing/build.properties.dist16
-rw-r--r--inc/mailgun/guzzle/guzzle/phing/imports/dependencies.xml33
-rw-r--r--inc/mailgun/guzzle/guzzle/phing/imports/deploy.xml142
-rw-r--r--inc/mailgun/guzzle/guzzle/phing/tasks/ComposerLintTask.php152
-rw-r--r--inc/mailgun/guzzle/guzzle/phing/tasks/GuzzlePearPharPackageTask.php338
-rw-r--r--inc/mailgun/guzzle/guzzle/phing/tasks/GuzzleSubSplitTask.php385
-rw-r--r--inc/mailgun/guzzle/guzzle/phpunit.xml.dist48
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php66
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Batch.php92
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchBuilder.php199
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php39
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureTransfer.php40
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchCommandTransfer.php75
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchDivisorInterface.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchInterface.php32
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchRequestTransfer.php65
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchSizeDivisor.php47
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchTransferInterface.php16
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Exception/BatchTransferException.php90
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/ExceptionBufferingBatch.php50
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/FlushingBatch.php60
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/HistoryBatch.php39
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/NotifyingBatch.php38
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/composer.json31
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/AbstractCacheAdapter.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterFactory.php117
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterInterface.php55
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php57
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/DoctrineCacheAdapter.php41
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/NullCacheAdapter.php31
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf1CacheAdapter.php44
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf2CacheAdapter.php41
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/AbstractHasDispatcher.php49
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Collection.php403
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Event.php52
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/BadMethodCallException.php5
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/ExceptionCollection.php108
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/GuzzleException.php8
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/InvalidArgumentException.php5
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/RuntimeException.php5
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/UnexpectedValueException.php5
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/FromConfigInterface.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/HasDispatcherInterface.php54
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/ToArrayInterface.php16
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Version.php29
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Common/composer.json20
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/AbstractEntityBodyDecorator.php221
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/CachingEntityBody.php229
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Client.php524
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php223
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlHandle.php464
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php423
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiInterface.php58
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiProxy.php150
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlVersion.php66
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/RequestMediator.php147
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBody.php201
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBodyInterface.php73
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php69
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ClientErrorResponseException.php8
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CouldNotRewindStreamException.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CurlException.php101
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/HttpException.php10
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/MultiTransferException.php145
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/RequestException.php39
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ServerErrorResponseException.php8
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/TooManyRedirectsException.php5
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/IoEmittingEntityBody.php83
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/AbstractMessage.php220
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequest.php247
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequestInterface.php137
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header.php182
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/CacheControl.php121
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderCollection.php108
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactory.php26
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactoryInterface.php19
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderInterface.php83
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/Link.php93
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/MessageInterface.php102
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFile.php124
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFileInterface.php83
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Request.php638
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactory.php359
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactoryInterface.php105
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestInterface.php318
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Response.php968
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Mimetypes.php962
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php20
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php22
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php22
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryString.php297
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ReadLimitEntityBody.php122
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/RedirectPlugin.php250
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem3870
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/StaticClient.php157
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Url.php554
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Http/composer.json32
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/Inflector.php38
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/InflectorInterface.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/MemoizingInflector.php70
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/PreComputedInflector.php59
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/composer.json26
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/AppendIterator.php19
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/ChunkedIterator.php56
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/FilterIterator.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MapIterator.php34
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MethodProxyIterator.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/README.md25
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/AbstractLogAdapter.php16
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ArrayLogAdapter.php34
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ClosureLogAdapter.php23
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/LogAdapterInterface.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MessageFormatter.php179
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php34
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/PsrLogAdapter.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf1LogAdapter.php24
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf2LogAdapter.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Log/composer.json29
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParser.php131
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParserInterface.php33
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/AbstractMessageParser.php58
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParser.php110
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParserInterface.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/PeclHttpMessageParser.php48
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/ParserRegistry.php75
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/PeclUriTemplate.php26
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplate.php254
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplateInterface.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParser.php48
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParserInterface.php19
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/composer.json19
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/AsyncPlugin.php84
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php91
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractErrorCodeBackoffStrategy.php40
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffLogger.php76
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffPlugin.php126
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffStrategyInterface.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CallbackBackoffStrategy.php47
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ConstantBackoffStrategy.php34
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php28
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ExponentialBackoffStrategy.php25
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/HttpBackoffStrategy.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/LinearBackoffStrategy.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ReasonPhraseBackoffStrategy.php25
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/TruncatedBackoffStrategy.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/composer.json28
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheKeyProviderInterface.php11
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CachePlugin.php353
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheStorageInterface.php43
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CallbackCanCacheStrategy.php53
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CanCacheStrategyInterface.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheKeyProvider.php46
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheStorage.php266
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCanCacheStrategy.php32
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultRevalidation.php174
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DenyRevalidation.php19
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/RevalidationInterface.php32
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/SkipRevalidation.php19
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/composer.json28
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Cookie.php538
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/ArrayCookieJar.php237
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/CookieJarInterface.php85
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/FileCookieJar.php65
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php70
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Exception/InvalidCookieException.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/CurlAuthPlugin.php46
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponseExceptionInterface.php22
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponsePlugin.php72
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/Exception/ErrorResponseException.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/HistoryPlugin.php163
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/LogPlugin.php161
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/composer.json28
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/CommandContentMd5Plugin.php57
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/Md5ValidatorPlugin.php88
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/MockPlugin.php245
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/OauthPlugin.php306
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/composer.json27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/composer.json44
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/AbstractConfigLoader.php177
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilder.php189
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderInterface.php40
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderLoader.php89
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/CachingConfigLoader.php46
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Client.php297
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ClientInterface.php68
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/AbstractCommand.php390
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ClosureCommand.php41
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CommandInterface.php128
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CreateResponseClassEvent.php32
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultRequestSerializer.php169
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php55
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/AliasFactory.php39
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/CompositeFactory.php154
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ConcreteClassFactory.php47
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/FactoryInterface.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/MapFactory.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ServiceDescriptionFactory.php71
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php69
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php58
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/HeaderVisitor.php44
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php63
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFieldVisitor.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFileVisitor.php24
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/QueryVisitor.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/RequestVisitorInterface.php31
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/ResponseBodyVisitor.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/XmlVisitor.php252
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/AbstractResponseVisitor.php26
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/BodyVisitor.php23
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/HeaderVisitor.php50
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/JsonVisitor.php93
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ReasonPhraseVisitor.php23
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ResponseVisitorInterface.php46
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/StatusCodeVisitor.php23
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/XmlVisitor.php151
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/VisitorFlyweight.php138
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php89
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationResponseParser.php195
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/RequestSerializerInterface.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseClassInterface.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseParserInterface.php18
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ConfigLoaderInterface.php22
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Operation.php547
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/OperationInterface.php159
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Parameter.php925
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaFormatter.php156
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaValidator.php291
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescription.php271
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionInterface.php106
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionLoader.php64
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ValidatorInterface.php28
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandException.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandTransferException.php119
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/DescriptionBuilderException.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/InconsistentClientTransferException.php38
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ResponseClassException.php9
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceBuilderException.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceNotFoundException.php5
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ValidationException.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/AbstractResourceIteratorFactory.php37
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/CompositeResourceIteratorFactory.php67
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/MapResourceIteratorFactory.php34
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/Model.php64
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIterator.php254
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorApplyBatched.php111
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorClassFactory.php60
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorFactoryInterface.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorInterface.php61
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Service/composer.json29
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/PhpStreamRequestFactory.php284
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/Stream.php289
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamInterface.php218
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamRequestFactoryInterface.php24
-rw-r--r--inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/composer.json30
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/AbstractBatchDecoratorTest.php33
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchBuilderTest.php86
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureDivisorTest.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureTransferTest.php52
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchCommandTransferTest.php83
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchRequestTransferTest.php80
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchSizeDivisorTest.php24
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchTest.php91
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/ExceptionBufferingBatchTest.php45
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/FlushingBatchTest.php40
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/HistoryBatchTest.php26
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/NotifyingBatchTest.php45
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterFactoryTest.php64
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterTest.php68
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/ClosureCacheAdapterTest.php94
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/NullCacheAdapterTest.php20
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/Zf2CacheAdapterTest.php58
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/AbstractHasDispatcherTest.php63
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/CollectionTest.php529
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/EventTest.php62
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/BatchTransferExceptionTest.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php66
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/VersionTest.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/GuzzleTestCase.php235
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/AbstractEntityBodyDecoratorTest.php34
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/CachingEntityBodyTest.php249
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ClientTest.php601
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlHandleTest.php947
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiProxyTest.php110
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiTest.php455
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlVersionTest.php39
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/RequestMediatorTest.php67
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/EntityBodyTest.php182
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/CurlExceptionTest.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/ExceptionTest.php66
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/MultiTransferExceptionTest.php51
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/IoEmittingEntityBodyTest.php47
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php136
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/EntityEnclosingRequestTest.php434
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/HeaderFactoryTest.php29
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/LinkTest.php63
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparison.php135
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparisonTest.php115
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderTest.php162
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/PostFileTest.php88
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php616
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestTest.php639
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/ResponseTest.php677
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/MimetypesTest.php31
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/CommaAggregatorTest.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/DuplicateAggregatorTest.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/PhpAggregatorTest.php32
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryStringTest.php233
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ReadLimitEntityBodyTest.php81
-rwxr-xr-xinc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/RedirectPluginTest.php277
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Server.php191
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/StaticClientTest.php67
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/UrlTest.php303
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/server.js146
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/InflectorTest.php37
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/MemoizingInflectorTest.php46
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/PreComputedInflectorTest.php45
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/AppendIteratorTest.php29
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/ChunkedIteratorTest.php52
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/FilterIteratorTest.php28
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MapIteratorTest.php28
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MethodProxyIteratorTest.php28
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ArrayLogAdapterTest.php23
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ClosureLogAdapterTest.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/MessageFormatterTest.php143
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/PsrLogAdapterTest.php25
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/Zf2LogAdapterTest.php51
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/CustomResponseModel.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ErrorResponseMock.php25
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ExceptionMock.php11
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockMulti.php11
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockObserver.php65
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockSubject.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserProvider.php381
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserTest.php22
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserProvider.php225
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserTest.php58
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/PeclHttpMessageParserTest.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/ParserRegistryTest.php33
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/AbstractUriTemplateTest.php113
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/PeclUriTemplateTest.php27
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/UriTemplateTest.php106
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Async/AsyncPluginTest.php93
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/AbstractBackoffStrategyTest.php86
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffLoggerTest.php110
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffPluginTest.php297
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CallbackBackoffStrategyTest.php31
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ConstantBackoffStrategyTest.php20
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CurlBackoffStrategyTest.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ExponentialBackoffStrategyTest.php23
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/HttpBackoffStrategyTest.php47
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/LinearBackoffStrategyTest.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ReasonPhraseBackoffStrategyTest.php32
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/TruncatedBackoffStrategyTest.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CachePluginTest.php441
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CallbackCanCacheStrategyTest.php72
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCacheStorageTest.php193
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCanCacheStrategyTest.php40
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php248
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DenyRevalidationTest.php19
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/SkipRevalidationTest.php19
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/ArrayCookieJarTest.php385
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/FileCookieJarTest.php63
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookiePluginTest.php134
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieTest.php223
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/CurlAuth/CurlAuthPluginTest.php39
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/ErrorResponse/ErrorResponsePluginTest.php137
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/History/HistoryPluginTest.php140
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Log/LogPluginTest.php95
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/CommandContentMd5PluginTest.php97
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/Md5ValidatorPluginTest.php120
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php199
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Oauth/OauthPluginTest.php345
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/AbstractConfigLoaderTest.php149
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderLoaderTest.php177
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php317
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/CachingConfigLoaderTest.php43
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/ClientTest.php320
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/AbstractCommandTest.php16
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/ClosureCommandTest.php54
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/CommandTest.php445
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultRequestSerializerTest.php122
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultResponseParserTest.php59
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/AliasFactoryTest.php76
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/CompositeFactoryTest.php124
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ConcreteClassFactoryTest.php49
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/MapFactoryTest.php37
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ServiceDescriptionFactoryTest.php68
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/AbstractVisitorTestCase.php110
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/BodyVisitorTest.php63
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/HeaderVisitorTest.php48
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/JsonVisitorTest.php60
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFieldVisitorTest.php33
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFileVisitorTest.php54
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/QueryVisitorTest.php48
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/ResponseBodyVisitorTest.php20
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/XmlVisitorTest.php558
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/AbstractResponseVisitorTest.php29
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/BodyVisitorTest.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/HeaderVisitorTest.php98
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/JsonVisitorTest.php157
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/ReasonPhraseVisitorTest.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/StatusCodeVisitorTest.php21
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/XmlVisitorTest.php431
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/VisitorFlyweightTest.php53
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationCommandTest.php102
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationResponseParserTest.php335
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/OperationTest.php308
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ParameterTest.php411
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaFormatterTest.php61
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaValidatorTest.php326
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionLoaderTest.php177
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionTest.php240
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/CommandTransferExceptionTest.php66
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/InconsistentClientTransferExceptionTest.php15
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/ValidationExceptionTest.php17
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/IterableCommand.php31
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/MockCommand.php32
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/OtherCommand.php30
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/Sub/Sub.php7
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/MockClient.php36
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Model/MockCommandIterator.php42
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/CompositeResourceIteratorFactoryTest.php37
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/MapResourceIteratorFactoryTest.php40
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ModelTest.php65
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorClassFactoryTest.php41
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorTest.php184
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/PhpStreamRequestFactoryTest.php172
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/StreamTest.php189
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/FileBody.txt0
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/bar.json3
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/baz.json3
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/foo.json8
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/recursive.json3
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/mock_response3
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json1.json18
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json2.json11
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/services.json71
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service.json40
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service2.json7
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service_3.json40
-rw-r--r--inc/mailgun/guzzle/guzzle/tests/bootstrap.php10
503 files changed, 0 insertions, 59924 deletions
diff --git a/inc/mailgun/guzzle/guzzle/.gitignore b/inc/mailgun/guzzle/guzzle/.gitignore
deleted file mode 100644
index 893035d..0000000
--- a/inc/mailgun/guzzle/guzzle/.gitignore
+++ /dev/null
@@ -1,27 +0,0 @@
-# Ingore common cruft
-.DS_STORE
-coverage
-.idea
-
-# Ignore binary files
-guzzle.phar
-guzzle-min.phar
-
-# Ignore potentially sensitive phpunit file
-phpunit.xml
-
-# Ignore composer generated files
-composer.phar
-composer.lock
-composer-test.lock
-vendor/
-
-# Ignore build files
-build/
-phing/build.properties
-
-# Ignore subsplit working directory
-.subsplit
-
-docs/_build
-docs/*.pyc
diff --git a/inc/mailgun/guzzle/guzzle/.travis.yml b/inc/mailgun/guzzle/guzzle/.travis.yml
deleted file mode 100644
index 209e05c..0000000
--- a/inc/mailgun/guzzle/guzzle/.travis.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-language: php
-
-php:
- - 5.3
- - 5.4
- - 5.5
- - 5.6
- - hhvm
-
-before_script:
- - curl --version
- - pecl install uri_template-beta || echo "pecl uri_template not available"
- - composer self-update
- - composer install --no-interaction --prefer-source --dev
- - ~/.nvm/nvm.sh install v0.6.14
-
-script: composer test
diff --git a/inc/mailgun/guzzle/guzzle/CHANGELOG.md b/inc/mailgun/guzzle/guzzle/CHANGELOG.md
deleted file mode 100644
index f0dc544..0000000
--- a/inc/mailgun/guzzle/guzzle/CHANGELOG.md
+++ /dev/null
@@ -1,751 +0,0 @@
-# CHANGELOG
-
-## 3.9.3 - 2015-03-18
-
-* Ensuring Content-Length is not stripped from a request when it is `0`.
-* Added more information to stream wrapper exceptions.
-* Message parser will no longer throw warnings for malformed messages.
-* Giving a valid cache TTL when max-age is 0.
-
-## 3.9.2 - 2014-09-10
-
-* Retrying "Connection died, retrying a fresh connect" curl errors.
-* Automatically extracting the cacert from the phar in client constructor.
-* Added EntityBody support for OPTIONS requests.
-
-## 3.9.1 - 2014-05-07
-
-* Added a fix to ReadLimitEntityBody to ensure it doesn't infinitely loop.
-* Added a fix to the stream checksum function so that when the first read
- returns a falsey value, it still continues to consume the stream until EOF.
-
-## 3.9.0 - 2014-04-23
-
-* `null`, `false`, and `"_guzzle_blank_"` all now serialize as an empty value
- with no trailing "=". See dc1d824277.
-* No longer performing an MD5 check on the cacert each time the phar is used,
- but rather copying the cacert to the temp directory.
-* `"0"` can now be added as a URL path
-* Deleting cookies that are set to empty
-* If-Modified-Since is no longer unnecessarily added to the CachePlugin
-* Cookie path matching now follows RFC 6265 s5.1.4
-* Updated service descriptions are now added to a service client's composite
- factory.
-* MockPlugin now throws an exception if the queue is empty.
-* Properly parsing URLs that start with "http" but are not absolute
-* Added the ability to configure the curl_multi_select timeout setting
-* OAuth parameters are now sorted using lexicographical byte value ordering
-* Fixing invalid usage of an out of range PHP feature in the ErrorResponsePlugin
-
-## 3.8.1 -2014-01-28
-
-* Bug: Always using GET requests when redirecting from a 303 response
-* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in
- `Guzzle\Http\ClientInterface::setSslVerification()`
-* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL
-* Bug: The body of a request can now be set to `"0"`
-* Sending PHP stream requests no longer forces `HTTP/1.0`
-* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of
- each sub-exception
-* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than
- clobbering everything).
-* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators)
-* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.
- For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.
-* Now properly escaping the regular expression delimiter when matching Cookie domains.
-* Network access is now disabled when loading XML documents
-
-## 3.8.0 - 2013-12-05
-
-* Added the ability to define a POST name for a file
-* JSON response parsing now properly walks additionalProperties
-* cURL error code 18 is now retried automatically in the BackoffPlugin
-* Fixed a cURL error when URLs contain fragments
-* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were
- CurlExceptions
-* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
-* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`
-* Fixed a bug that was encountered when parsing empty header parameters
-* UriTemplate now has a `setRegex()` method to match the docs
-* The `debug` request parameter now checks if it is truthy rather than if it exists
-* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin
-* Added the ability to combine URLs using strict RFC 3986 compliance
-* Command objects can now return the validation errors encountered by the command
-* Various fixes to cache revalidation (#437 and 29797e5)
-* Various fixes to the AsyncPlugin
-* Cleaned up build scripts
-
-## 3.7.4 - 2013-10-02
-
-* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
-* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp
- (see https://github.com/aws/aws-sdk-php/issues/147)
-* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
-* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
-* Updated the bundled cacert.pem (#419)
-* OauthPlugin now supports adding authentication to headers or query string (#425)
-
-## 3.7.3 - 2013-09-08
-
-* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and
- `CommandTransferException`.
-* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description
-* Schemas are only injected into response models when explicitly configured.
-* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of
- an EntityBody.
-* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
-* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.
-* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
-* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
-* Bug fix: Visiting XML attributes first before visting XML children when serializing requests
-* Bug fix: Properly parsing headers that contain commas contained in quotes
-* Bug fix: mimetype guessing based on a filename is now case-insensitive
-
-## 3.7.2 - 2013-08-02
-
-* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander
- See https://github.com/guzzle/guzzle/issues/371
-* Bug fix: Cookie domains are now matched correctly according to RFC 6265
- See https://github.com/guzzle/guzzle/issues/377
-* Bug fix: GET parameters are now used when calculating an OAuth signature
-* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
-* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched
-* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.
- See https://github.com/guzzle/guzzle/issues/379
-* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See
- https://github.com/guzzle/guzzle/pull/380
-* cURL multi cleanup and optimizations
-
-## 3.7.1 - 2013-07-05
-
-* Bug fix: Setting default options on a client now works
-* Bug fix: Setting options on HEAD requests now works. See #352
-* Bug fix: Moving stream factory before send event to before building the stream. See #353
-* Bug fix: Cookies no longer match on IP addresses per RFC 6265
-* Bug fix: Correctly parsing header parameters that are in `<>` and quotes
-* Added `cert` and `ssl_key` as request options
-* `Host` header can now diverge from the host part of a URL if the header is set manually
-* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter
-* OAuth parameters are only added via the plugin if they aren't already set
-* Exceptions are now thrown when a URL cannot be parsed
-* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails
-* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
-
-## 3.7.0 - 2013-06-10
-
-* See UPGRADING.md for more information on how to upgrade.
-* Requests now support the ability to specify an array of $options when creating a request to more easily modify a
- request. You can pass a 'request.options' configuration setting to a client to apply default request options to
- every request created by a client (e.g. default query string variables, headers, curl options, etc).
-* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.
- See `Guzzle\Http\StaticClient::mount`.
-* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests
- created by a command (e.g. custom headers, query string variables, timeout settings, etc).
-* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the
- headers of a response
-* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key
- (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`)
-* ServiceBuilders now support storing and retrieving arbitrary data
-* CachePlugin can now purge all resources for a given URI
-* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
-* CachePlugin now uses the Vary header to determine if a resource is a cache hit
-* `Guzzle\Http\Message\Response` now implements `\Serializable`
-* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters
-* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable
-* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`
-* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size
-* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message
-* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older
- Symfony users can still use the old version of Monolog.
-* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.
- Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.
-* Several performance improvements to `Guzzle\Common\Collection`
-* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
- createRequest, head, delete, put, patch, post, options, prepareRequest
-* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
- default `array()`
-* Added `Guzzle\Stream\StreamInterface::isRepeatable`
-* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
- $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
- $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.
-* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.
-* Removed `Guzzle\Http\ClientInterface::expandTemplate()`
-* Removed `Guzzle\Http\ClientInterface::setRequestFactory()`
-* Removed `Guzzle\Http\ClientInterface::getCurlMulti()`
-* Removed `Guzzle\Http\Message\RequestInterface::canCache`
-* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`
-* Removed `Guzzle\Http\Message\RequestInterface::isRedirect`
-* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
- `Guzzle\Common\Version::$emitWarnings` to true.
-* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use
- `$request->getResponseBody()->isRepeatable()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.
- These will work through Guzzle 4.0
-* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].
-* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.
-* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.
-* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-* Marked `Guzzle\Common\Collection::inject()` as deprecated.
-* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`
-* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
- CacheStorageInterface. These two objects and interface will be removed in a future version.
-* Always setting X-cache headers on cached responses
-* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
- $request, Response $response);`
-* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-* Added `CacheStorageInterface::purge($url)`
-* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
- CanCacheStrategyInterface $canCache = null)`
-* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-## 3.6.0 - 2013-05-29
-
-* ServiceDescription now implements ToArrayInterface
-* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
-* Guzzle can now correctly parse incomplete URLs
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
- CacheControl header implementation.
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
- Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc are managed by Guzzle
- directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
- but are a no-op until removed.
-* Most classes that used to require a ``Guzzle\Service\Command\CommandInterface` typehint now request a
- `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
- on a request while the request is still being transferred
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
- instead.
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-* Added the ability to cast Model objects to a string to view debug information.
-
-## 3.5.0 - 2013-05-13
-
-* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
-* Bug: Better cleanup of one-time events accross the board (when an event is meant to fire once, it will now remove
- itself from the EventDispatcher)
-* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values
-* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
-* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a
- non-existent key
-* Bug: All __call() method arguments are now required (helps with mocking frameworks)
-* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference
- to help with refcount based garbage collection of resources created by sending a request
-* Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
-* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it'sdeprecated). Use the
- HistoryPlugin for a history.
-* Added a `responseBody` alias for the `response_body` location
-* Refactored internals to no longer rely on Response::getRequest()
-* HistoryPlugin can now be cast to a string
-* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests
- and responses that are sent over the wire
-* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects
-
-## 3.4.3 - 2013-04-30
-
-* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
-* Added a check to re-extract the temp cacert bundle from the phar before sending each request
-
-## 3.4.2 - 2013-04-29
-
-* Bug fix: Stream objects now work correctly with "a" and "a+" modes
-* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present
-* Bug fix: AsyncPlugin no longer forces HEAD requests
-* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
-* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
-* Setting a response on a request will write to the custom request body from the response body if one is specified
-* LogPlugin now writes to php://output when STDERR is undefined
-* Added the ability to set multiple POST files for the same key in a single call
-* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
-* Added the ability to queue CurlExceptions to the MockPlugin
-* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
-* Configuration loading now allows remote files
-
-## 3.4.1 - 2013-04-16
-
-* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti
- handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
-* Exceptions are now properly grouped when sending requests in parallel
-* Redirects are now properly aggregated when a multi transaction fails
-* Redirects now set the response on the original object even in the event of a failure
-* Bug fix: Model names are now properly set even when using $refs
-* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
-* Added support for oauth_callback in OAuth signatures
-* Added support for oauth_verifier in OAuth signatures
-* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
-
-## 3.4.0 - 2013-04-11
-
-* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
-* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
-* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
-* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
-* Bug fix: Added `number` type to service descriptions.
-* Bug fix: empty parameters are removed from an OAuth signature
-* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
-* Bug fix: Fixed "array to string" error when validating a union of types in a service description
-* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
-* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.
-* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
-* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
-* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if
- the Content-Type can be determined based on the entity body or the path of the request.
-* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
-* Added support for a PSR-3 LogAdapter.
-* Added a `command.after_prepare` event
-* Added `oauth_callback` parameter to the OauthPlugin
-* Added the ability to create a custom stream class when using a stream factory
-* Added a CachingEntityBody decorator
-* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.
-* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
-* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
-* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This
- means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use
- POST fields or files (the latter is only used when emulating a form POST in the browser).
-* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
-
-## 3.3.1 - 2013-03-10
-
-* Added the ability to create PHP streaming responses from HTTP requests
-* Bug fix: Running any filters when parsing response headers with service descriptions
-* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
-* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across
- response location visitors.
-* Bug fix: Removed the possibility of creating configuration files with circular dependencies
-* RequestFactory::create() now uses the key of a POST file when setting the POST file name
-* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
-
-## 3.3.0 - 2013-03-03
-
-* A large number of performance optimizations have been made
-* Bug fix: Added 'wb' as a valid write mode for streams
-* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned
-* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`
-* BC: Removed `Guzzle\Http\Utils` class
-* BC: Setting a service description on a client will no longer modify the client's command factories.
-* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using
- the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to
- lowercase
-* Operation parameter objects are now lazy loaded internally
-* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
-* Added support for instantiating responseType=class responseClass classes. Classes must implement
- `Guzzle\Service\Command\ResponseClassInterface`
-* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These
- additional properties also support locations and can be used to parse JSON responses where the outermost part of the
- JSON is an array
-* Added support for nested renaming of JSON models (rename sentAs to name)
-* CachePlugin
- * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
- * Debug headers can now added to cached response in the CachePlugin
-
-## 3.2.0 - 2013-02-14
-
-* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
-* URLs with no path no longer contain a "/" by default
-* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
-* BadResponseException no longer includes the full request and response message
-* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
-* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
-* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
-* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
-* xmlEncoding can now be customized for the XML declaration of a XML service description operation
-* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value
- aggregation and no longer uses callbacks
-* The URL encoding implementation of Guzzle\Http\QueryString can now be customized
-* Bug fix: Filters were not always invoked for array service description parameters
-* Bug fix: Redirects now use a target response body rather than a temporary response body
-* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
-* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
-
-## 3.1.2 - 2013-01-27
-
-* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
- response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
-* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
-* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
-* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
-* Setting default headers on a client after setting the user-agent will not erase the user-agent setting
-
-## 3.1.1 - 2013-01-20
-
-* Adding wildcard support to Guzzle\Common\Collection::getPath()
-* Adding alias support to ServiceBuilder configs
-* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface
-
-## 3.1.0 - 2013-01-12
-
-* BC: CurlException now extends from RequestException rather than BadResponseException
-* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse()
-* Added getData to ServiceDescriptionInterface
-* Added context array to RequestInterface::setState()
-* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http
-* Bug: Adding required content-type when JSON request visitor adds JSON to a command
-* Bug: Fixing the serialization of a service description with custom data
-* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing
- an array of successful and failed responses
-* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection
-* Added Guzzle\Http\IoEmittingEntityBody
-* Moved command filtration from validators to location visitors
-* Added `extends` attributes to service description parameters
-* Added getModels to ServiceDescriptionInterface
-
-## 3.0.7 - 2012-12-19
-
-* Fixing phar detection when forcing a cacert to system if null or true
-* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`
-* Cleaning up `Guzzle\Common\Collection::inject` method
-* Adding a response_body location to service descriptions
-
-## 3.0.6 - 2012-12-09
-
-* CurlMulti performance improvements
-* Adding setErrorResponses() to Operation
-* composer.json tweaks
-
-## 3.0.5 - 2012-11-18
-
-* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin
-* Bug: Response body can now be a string containing "0"
-* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert
-* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs
-* Added support for XML attributes in service description responses
-* DefaultRequestSerializer now supports array URI parameter values for URI template expansion
-* Added better mimetype guessing to requests and post files
-
-## 3.0.4 - 2012-11-11
-
-* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value
-* Bug: Cookies can now be added that have a name, domain, or value set to "0"
-* Bug: Using the system cacert bundle when using the Phar
-* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures
-* Enhanced cookie jar de-duplication
-* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added
-* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies
-* Added the ability to create any sort of hash for a stream rather than just an MD5 hash
-
-## 3.0.3 - 2012-11-04
-
-* Implementing redirects in PHP rather than cURL
-* Added PECL URI template extension and using as default parser if available
-* Bug: Fixed Content-Length parsing of Response factory
-* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.
-* Adding ToArrayInterface throughout library
-* Fixing OauthPlugin to create unique nonce values per request
-
-## 3.0.2 - 2012-10-25
-
-* Magic methods are enabled by default on clients
-* Magic methods return the result of a command
-* Service clients no longer require a base_url option in the factory
-* Bug: Fixed an issue with URI templates where null template variables were being expanded
-
-## 3.0.1 - 2012-10-22
-
-* Models can now be used like regular collection objects by calling filter, map, etc
-* Models no longer require a Parameter structure or initial data in the constructor
-* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`
-
-## 3.0.0 - 2012-10-15
-
-* Rewrote service description format to be based on Swagger
- * Now based on JSON schema
- * Added nested input structures and nested response models
- * Support for JSON and XML input and output models
- * Renamed `commands` to `operations`
- * Removed dot class notation
- * Removed custom types
-* Broke the project into smaller top-level namespaces to be more component friendly
-* Removed support for XML configs and descriptions. Use arrays or JSON files.
-* Removed the Validation component and Inspector
-* Moved all cookie code to Guzzle\Plugin\Cookie
-* Magic methods on a Guzzle\Service\Client now return the command un-executed.
-* Calling getResult() or getResponse() on a command will lazily execute the command if needed.
-* Now shipping with cURL's CA certs and using it by default
-* Added previousResponse() method to response objects
-* No longer sending Accept and Accept-Encoding headers on every request
-* Only sending an Expect header by default when a payload is greater than 1MB
-* Added/moved client options:
- * curl.blacklist to curl.option.blacklist
- * Added ssl.certificate_authority
-* Added a Guzzle\Iterator component
-* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin
-* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin)
-* Added a more robust caching plugin
-* Added setBody to response objects
-* Updating LogPlugin to use a more flexible MessageFormatter
-* Added a completely revamped build process
-* Cleaning up Collection class and removing default values from the get method
-* Fixed ZF2 cache adapters
-
-## 2.8.8 - 2012-10-15
-
-* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did
-
-## 2.8.7 - 2012-09-30
-
-* Bug: Fixed config file aliases for JSON includes
-* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests
-* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload
-* Bug: Hardening request and response parsing to account for missing parts
-* Bug: Fixed PEAR packaging
-* Bug: Fixed Request::getInfo
-* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail
-* Adding the ability for the namespace Iterator factory to look in multiple directories
-* Added more getters/setters/removers from service descriptions
-* Added the ability to remove POST fields from OAuth signatures
-* OAuth plugin now supports 2-legged OAuth
-
-## 2.8.6 - 2012-09-05
-
-* Added the ability to modify and build service descriptions
-* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command
-* Added a `json` parameter location
-* Now allowing dot notation for classes in the CacheAdapterFactory
-* Using the union of two arrays rather than an array_merge when extending service builder services and service params
-* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references
- in service builder config files.
-* Services defined in two different config files that include one another will by default replace the previously
- defined service, but you can now create services that extend themselves and merge their settings over the previous
-* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like
- '_default' with a default JSON configuration file.
-
-## 2.8.5 - 2012-08-29
-
-* Bug: Suppressed empty arrays from URI templates
-* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching
-* Added support for HTTP responses that do not contain a reason phrase in the start-line
-* AbstractCommand commands are now invokable
-* Added a way to get the data used when signing an Oauth request before a request is sent
-
-## 2.8.4 - 2012-08-15
-
-* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin
-* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable.
-* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream
-* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream
-* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5())
-* Added additional response status codes
-* Removed SSL information from the default User-Agent header
-* DELETE requests can now send an entity body
-* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries
-* Added the ability of the MockPlugin to consume mocked request bodies
-* LogPlugin now exposes request and response objects in the extras array
-
-## 2.8.3 - 2012-07-30
-
-* Bug: Fixed a case where empty POST requests were sent as GET requests
-* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body
-* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new
-* Added multiple inheritance to service description commands
-* Added an ApiCommandInterface and added ``getParamNames()`` and ``hasParam()``
-* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything
-* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles
-
-## 2.8.2 - 2012-07-24
-
-* Bug: Query string values set to 0 are no longer dropped from the query string
-* Bug: A Collection object is no longer created each time a call is made to ``Guzzle\Service\Command\AbstractCommand::getRequestHeaders()``
-* Bug: ``+`` is now treated as an encoded space when parsing query strings
-* QueryString and Collection performance improvements
-* Allowing dot notation for class paths in filters attribute of a service descriptions
-
-## 2.8.1 - 2012-07-16
-
-* Loosening Event Dispatcher dependency
-* POST redirects can now be customized using CURLOPT_POSTREDIR
-
-## 2.8.0 - 2012-07-15
-
-* BC: Guzzle\Http\Query
- * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl)
- * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding()
- * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool)
- * Changed the aggregation functions of QueryString to be static methods
- * Can now use fromString() with querystrings that have a leading ?
-* cURL configuration values can be specified in service descriptions using ``curl.`` prefixed parameters
-* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body
-* Cookies are no longer URL decoded by default
-* Bug: URI template variables set to null are no longer expanded
-
-## 2.7.2 - 2012-07-02
-
-* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
-* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty()
-* CachePlugin now allows for a custom request parameter function to check if a request can be cached
-* Bug fix: CachePlugin now only caches GET and HEAD requests by default
-* Bug fix: Using header glue when transferring headers over the wire
-* Allowing deeply nested arrays for composite variables in URI templates
-* Batch divisors can now return iterators or arrays
-
-## 2.7.1 - 2012-06-26
-
-* Minor patch to update version number in UA string
-* Updating build process
-
-## 2.7.0 - 2012-06-25
-
-* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.
-* BC: Removed magic setX methods from commands
-* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method
-* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.
-* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity)
-* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace
-* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin
-* Added the ability to set POST fields and files in a service description
-* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method
-* Adding a command.before_prepare event to clients
-* Added BatchClosureTransfer and BatchClosureDivisor
-* BatchTransferException now includes references to the batch divisor and transfer strategies
-* Fixed some tests so that they pass more reliably
-* Added Guzzle\Common\Log\ArrayLogAdapter
-
-## 2.6.6 - 2012-06-10
-
-* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin
-* BC: Removing Guzzle\Service\Command\CommandSet
-* Adding generic batching system (replaces the batch queue plugin and command set)
-* Updating ZF cache and log adapters and now using ZF's composer repository
-* Bug: Setting the name of each ApiParam when creating through an ApiCommand
-* Adding result_type, result_doc, deprecated, and doc_url to service descriptions
-* Bug: Changed the default cookie header casing back to 'Cookie'
-
-## 2.6.5 - 2012-06-03
-
-* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource()
-* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from
-* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data
-* BC: Renaming methods in the CookieJarInterface
-* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations
-* Making the default glue for HTTP headers ';' instead of ','
-* Adding a removeValue to Guzzle\Http\Message\Header
-* Adding getCookies() to request interface.
-* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber()
-
-## 2.6.4 - 2012-05-30
-
-* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.
-* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand
-* Bug: Fixing magic method command calls on clients
-* Bug: Email constraint only validates strings
-* Bug: Aggregate POST fields when POST files are present in curl handle
-* Bug: Fixing default User-Agent header
-* Bug: Only appending or prepending parameters in commands if they are specified
-* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes
-* Allowing the use of dot notation for class namespaces when using instance_of constraint
-* Added any_match validation constraint
-* Added an AsyncPlugin
-* Passing request object to the calculateWait method of the ExponentialBackoffPlugin
-* Allowing the result of a command object to be changed
-* Parsing location and type sub values when instantiating a service description rather than over and over at runtime
-
-## 2.6.3 - 2012-05-23
-
-* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.
-* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.
-* You can now use an array of data when creating PUT request bodies in the request factory.
-* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.
-* [Http] Adding support for Content-Type in multipart POST uploads per upload
-* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1])
-* Adding more POST data operations for easier manipulation of POST data.
-* You can now set empty POST fields.
-* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.
-* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.
-* CS updates
-
-## 2.6.2 - 2012-05-19
-
-* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method.
-
-## 2.6.1 - 2012-05-19
-
-* [BC] Removing 'path' support in service descriptions. Use 'uri'.
-* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.
-* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it.
-* [BC] Removing Guzzle\Common\XmlElement.
-* All commands, both dynamic and concrete, have ApiCommand objects.
-* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.
-* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.
-* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.
-
-## 2.6.0 - 2012-05-15
-
-* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder
-* [BC] Executing a Command returns the result of the command rather than the command
-* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.
-* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
-* [BC] Moving ResourceIterator* to Guzzle\Service\Resource
-* [BC] Completely refactored ResourceIterators to iterate over a cloned command object
-* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate
-* [BC] Guzzle\Guzzle is now deprecated
-* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject
-* Adding Guzzle\Version class to give version information about Guzzle
-* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate()
-* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data
-* ServiceDescription and ServiceBuilder are now cacheable using similar configs
-* Changing the format of XML and JSON service builder configs. Backwards compatible.
-* Cleaned up Cookie parsing
-* Trimming the default Guzzle User-Agent header
-* Adding a setOnComplete() method to Commands that is called when a command completes
-* Keeping track of requests that were mocked in the MockPlugin
-* Fixed a caching bug in the CacheAdapterFactory
-* Inspector objects can be injected into a Command object
-* Refactoring a lot of code and tests to be case insensitive when dealing with headers
-* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL
-* Adding the ability to set global option overrides to service builder configs
-* Adding the ability to include other service builder config files from within XML and JSON files
-* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
-
-## 2.5.0 - 2012-05-08
-
-* Major performance improvements
-* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated.
-* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.
-* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}"
-* Added the ability to passed parameters to all requests created by a client
-* Added callback functionality to the ExponentialBackoffPlugin
-* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.
-* Rewinding request stream bodies when retrying requests
-* Exception is thrown when JSON response body cannot be decoded
-* Added configurable magic method calls to clients and commands. This is off by default.
-* Fixed a defect that added a hash to every parsed URL part
-* Fixed duplicate none generation for OauthPlugin.
-* Emitting an event each time a client is generated by a ServiceBuilder
-* Using an ApiParams object instead of a Collection for parameters of an ApiCommand
-* cache.* request parameters should be renamed to params.cache.*
-* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc). See CurlHandle.
-* Added the ability to disable type validation of service descriptions
-* ServiceDescriptions and ServiceBuilders are now Serializable
diff --git a/inc/mailgun/guzzle/guzzle/LICENSE b/inc/mailgun/guzzle/guzzle/LICENSE
deleted file mode 100644
index d51aa69..0000000
--- a/inc/mailgun/guzzle/guzzle/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/inc/mailgun/guzzle/guzzle/README.md b/inc/mailgun/guzzle/guzzle/README.md
deleted file mode 100644
index 6be06bf..0000000
--- a/inc/mailgun/guzzle/guzzle/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-Guzzle, PHP HTTP client and webservice framework
-================================================
-
-# This is an old version of Guzzle
-
-This repository is for Guzzle 3.x. Guzzle 5.x, the new version of Guzzle, has
-been released and is available at
-[https://github.com/guzzle/guzzle](https://github.com/guzzle/guzzle). The
-documentation for Guzzle version 5+ can be found at
-[http://guzzlephp.org](http://guzzlephp.org).
-
-Guzzle 3 is only maintained for bug and security fixes. Guzzle 3 will be EOL
-at some point in late 2015.
-
-### About Guzzle 3
-
-[![Composer Downloads](https://poser.pugx.org/guzzle/guzzle/d/total.png)](https://packagist.org/packages/guzzle/guzzle)
- [![Build Status](https://secure.travis-ci.org/guzzle/guzzle3.png?branch=master)](http://travis-ci.org/guzzle/guzzle3)
-
-- Extremely powerful API provides all the power of cURL with a simple interface.
-- Truly take advantage of HTTP/1.1 with persistent connections, connection pooling, and parallel requests.
-- Service description DSL allows you build awesome web service clients faster.
-- Symfony2 event-based plugin system allows you to completely modify the behavior of a request.
-
-Get answers with: [Documentation](http://guzzle3.readthedocs.org/en/latest/), [Forums](https://groups.google.com/forum/?hl=en#!forum/guzzle), IRC ([#guzzlephp](irc://irc.freenode.net/#guzzlephp) @ irc.freenode.net)
-
-### Installing via Composer
-
-The recommended way to install Guzzle is through [Composer](http://getcomposer.org).
-
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-
-# Add Guzzle as a dependency
-php composer.phar require guzzle/guzzle:~3.9
-```
-
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
-## Known Issues
-
-1. Problem following a specific redirect: https://github.com/guzzle/guzzle/issues/385.
- This has been fixed in Guzzle 4/5.
-2. Root XML attributes not serialized in a service description: https://github.com/guzzle/guzzle3/issues/5.
- This has been fixed in Guzzle 4/5.
-3. Accept-Encoding not preserved when following redirect: https://github.com/guzzle/guzzle3/issues/9
- Fixed in Guzzle 4/5.
-4. String "Array" Transmitted w/ PostFiles and Duplicate Aggregator: https://github.com/guzzle/guzzle3/issues/10
- Fixed in Guzzle 4/5.
-5. Recursive model references with array items: https://github.com/guzzle/guzzle3/issues/13
- Fixed in Guzzle 4/5
-6. String "Array" Transmitted w/ PostFiles and Duplicate Aggregator: https://github.com/guzzle/guzzle3/issues/10
- Fixed in Guzzle 4/5.
diff --git a/inc/mailgun/guzzle/guzzle/UPGRADING.md b/inc/mailgun/guzzle/guzzle/UPGRADING.md
deleted file mode 100644
index f58bf11..0000000
--- a/inc/mailgun/guzzle/guzzle/UPGRADING.md
+++ /dev/null
@@ -1,537 +0,0 @@
-Guzzle Upgrade Guide
-====================
-
-3.6 to 3.7
-----------
-
-### Deprecations
-
-- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.:
-
-```php
-\Guzzle\Common\Version::$emitWarnings = true;
-```
-
-The following APIs and options have been marked as deprecated:
-
-- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-- Marked `Guzzle\Common\Collection::inject()` as deprecated.
-- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use
- `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or
- `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));`
-
-3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational
-request methods. When paired with a client's configuration settings, these options allow you to specify default settings
-for various aspects of a request. Because these options make other previous configuration options redundant, several
-configuration options and methods of a client and AbstractCommand have been deprecated.
-
-- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`.
-- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`.
-- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')`
-- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
-
- $command = $client->getCommand('foo', array(
- 'command.headers' => array('Test' => '123'),
- 'command.response_body' => '/path/to/file'
- ));
-
- // Should be changed to:
-
- $command = $client->getCommand('foo', array(
- 'command.request_options' => array(
- 'headers' => array('Test' => '123'),
- 'save_as' => '/path/to/file'
- )
- ));
-
-### Interface changes
-
-Additions and changes (you will need to update any implementations or subclasses you may have created):
-
-- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
- createRequest, head, delete, put, patch, post, options, prepareRequest
-- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
- default `array()`
-- Added `Guzzle\Stream\StreamInterface::isRepeatable`
-- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-
-The following methods were removed from interfaces. All of these methods are still available in the concrete classes
-that implement them, but you should update your code to use alternative methods:
-
-- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
- `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
- `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or
- `$client->setDefaultOption('headers/{header_name}', 'value')`. or
- `$client->setDefaultOption('headers', array('header_name' => 'value'))`.
-- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`.
-- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail.
-- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin.
-
-### Cache plugin breaking changes
-
-- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
- CacheStorageInterface. These two objects and interface will be removed in a future version.
-- Always setting X-cache headers on cached responses
-- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
- $request, Response $response);`
-- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-- Added `CacheStorageInterface::purge($url)`
-- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
- CanCacheStrategyInterface $canCache = null)`
-- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-3.5 to 3.6
-----------
-
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
- For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader().
- Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request.
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
- CacheControl header implementation.
-* Moved getLinks() from Response to just be used on a Link header object.
-
-If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the
-HeaderInterface (e.g. toArray(), getAll(), etc).
-
-### Interface changes
-
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
- Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-
-### Removed deprecated functions
-
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-
-### Deprecations
-
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
- instead.
-
-### Other changes
-
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc are managed by Guzzle
- directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
- but are a no-op until removed.
-* Most classes that used to require a ``Guzzle\Service\Command\CommandInterface` typehint now request a
- `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
- on a request while the request is still being transferred
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-
-3.3 to 3.4
-----------
-
-Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
-
-3.2 to 3.3
-----------
-
-### Response::getEtag() quote stripping removed
-
-`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header
-
-### Removed `Guzzle\Http\Utils`
-
-The `Guzzle\Http\Utils` class was removed. This class was only used for testing.
-
-### Stream wrapper and type
-
-`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to lowercase.
-
-### curl.emit_io became emit_io
-
-Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the
-'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-
-3.1 to 3.2
-----------
-
-### CurlMulti is no longer reused globally
-
-Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added
-to a single client can pollute requests dispatched from other clients.
-
-If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the
-ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is
-created.
-
-```php
-$multi = new Guzzle\Http\Curl\CurlMulti();
-$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json');
-$builder->addListener('service_builder.create_client', function ($event) use ($multi) {
- $event['client']->setCurlMulti($multi);
-}
-});
-```
-
-### No default path
-
-URLs no longer have a default path value of '/' if no path was specified.
-
-Before:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com/
-```
-
-After:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com
-```
-
-### Less verbose BadResponseException
-
-The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and
-response information. You can, however, get access to the request and response object by calling `getRequest()` or
-`getResponse()` on the exception object.
-
-### Query parameter aggregation
-
-Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a
-setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is
-responsible for handling the aggregation of multi-valued query string variables into a flattened hash.
-
-2.8 to 3.x
-----------
-
-### Guzzle\Service\Inspector
-
-Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig`
-
-**Before**
-
-```php
-use Guzzle\Service\Inspector;
-
-class YourClient extends \Guzzle\Service\Client
-{
- public static function factory($config = array())
- {
- $default = array();
- $required = array('base_url', 'username', 'api_key');
- $config = Inspector::fromConfig($config, $default, $required);
-
- $client = new self(
- $config->get('base_url'),
- $config->get('username'),
- $config->get('api_key')
- );
- $client->setConfig($config);
-
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
- return $client;
- }
-```
-
-**After**
-
-```php
-use Guzzle\Common\Collection;
-
-class YourClient extends \Guzzle\Service\Client
-{
- public static function factory($config = array())
- {
- $default = array();
- $required = array('base_url', 'username', 'api_key');
- $config = Collection::fromConfig($config, $default, $required);
-
- $client = new self(
- $config->get('base_url'),
- $config->get('username'),
- $config->get('api_key')
- );
- $client->setConfig($config);
-
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
- return $client;
- }
-```
-
-### Convert XML Service Descriptions to JSON
-
-**Before**
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<client>
- <commands>
- <!-- Groups -->
- <command name="list_groups" method="GET" uri="groups.json">
- <doc>Get a list of groups</doc>
- </command>
- <command name="search_groups" method="GET" uri='search.json?query="{{query}} type:group"'>
- <doc>Uses a search query to get a list of groups</doc>
- <param name="query" type="string" required="true" />
- </command>
- <command name="create_group" method="POST" uri="groups.json">
- <doc>Create a group</doc>
- <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
- <param name="Content-Type" location="header" static="application/json"/>
- </command>
- <command name="delete_group" method="DELETE" uri="groups/{{id}}.json">
- <doc>Delete a group by ID</doc>
- <param name="id" type="integer" required="true"/>
- </command>
- <command name="get_group" method="GET" uri="groups/{{id}}.json">
- <param name="id" type="integer" required="true"/>
- </command>
- <command name="update_group" method="PUT" uri="groups/{{id}}.json">
- <doc>Update a group</doc>
- <param name="id" type="integer" required="true"/>
- <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
- <param name="Content-Type" location="header" static="application/json"/>
- </command>
- </commands>
-</client>
-```
-
-**After**
-
-```json
-{
- "name": "Zendesk REST API v2",
- "apiVersion": "2012-12-31",
- "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users",
- "operations": {
- "list_groups": {
- "httpMethod":"GET",
- "uri": "groups.json",
- "summary": "Get a list of groups"
- },
- "search_groups":{
- "httpMethod":"GET",
- "uri": "search.json?query=\"{query} type:group\"",
- "summary": "Uses a search query to get a list of groups",
- "parameters":{
- "query":{
- "location": "uri",
- "description":"Zendesk Search Query",
- "type": "string",
- "required": true
- }
- }
- },
- "create_group": {
- "httpMethod":"POST",
- "uri": "groups.json",
- "summary": "Create a group",
- "parameters":{
- "data": {
- "type": "array",
- "location": "body",
- "description":"Group JSON",
- "filters": "json_encode",
- "required": true
- },
- "Content-Type":{
- "type": "string",
- "location":"header",
- "static": "application/json"
- }
- }
- },
- "delete_group": {
- "httpMethod":"DELETE",
- "uri": "groups/{id}.json",
- "summary": "Delete a group",
- "parameters":{
- "id":{
- "location": "uri",
- "description":"Group to delete by ID",
- "type": "integer",
- "required": true
- }
- }
- },
- "get_group": {
- "httpMethod":"GET",
- "uri": "groups/{id}.json",
- "summary": "Get a ticket",
- "parameters":{
- "id":{
- "location": "uri",
- "description":"Group to get by ID",
- "type": "integer",
- "required": true
- }
- }
- },
- "update_group": {
- "httpMethod":"PUT",
- "uri": "groups/{id}.json",
- "summary": "Update a group",
- "parameters":{
- "id": {
- "location": "uri",
- "description":"Group to update by ID",
- "type": "integer",
- "required": true
- },
- "data": {
- "type": "array",
- "location": "body",
- "description":"Group JSON",
- "filters": "json_encode",
- "required": true
- },
- "Content-Type":{
- "type": "string",
- "location":"header",
- "static": "application/json"
- }
- }
- }
-}
-```
-
-### Guzzle\Service\Description\ServiceDescription
-
-Commands are now called Operations
-
-**Before**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getCommands(); // @returns ApiCommandInterface[]
-$sd->hasCommand($name);
-$sd->getCommand($name); // @returns ApiCommandInterface|null
-$sd->addCommand($command); // @param ApiCommandInterface $command
-```
-
-**After**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getOperations(); // @returns OperationInterface[]
-$sd->hasOperation($name);
-$sd->getOperation($name); // @returns OperationInterface|null
-$sd->addOperation($operation); // @param OperationInterface $operation
-```
-
-### Guzzle\Common\Inflection\Inflector
-
-Namespace is now `Guzzle\Inflection\Inflector`
-
-### Guzzle\Http\Plugin
-
-Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below.
-
-### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log
-
-Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively.
-
-**Before**
-
-```php
-use Guzzle\Common\Log\ClosureLogAdapter;
-use Guzzle\Http\Plugin\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $verbosity is an integer indicating desired message verbosity level
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE);
-```
-
-**After**
-
-```php
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Log\MessageFormatter;
-use Guzzle\Plugin\Log\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $format is a string indicating desired message format -- @see MessageFormatter
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT);
-```
-
-### Guzzle\Http\Plugin\CurlAuthPlugin
-
-Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`.
-
-### Guzzle\Http\Plugin\ExponentialBackoffPlugin
-
-Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes.
-
-**Before**
-
-```php
-use Guzzle\Http\Plugin\ExponentialBackoffPlugin;
-
-$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge(
- ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429)
- ));
-
-$client->addSubscriber($backoffPlugin);
-```
-
-**After**
-
-```php
-use Guzzle\Plugin\Backoff\BackoffPlugin;
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-
-// Use convenient factory method instead -- see implementation for ideas of what
-// you can do with chaining backoff strategies
-$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge(
- HttpBackoffStrategy::getDefaultFailureCodes(), array(429)
- ));
-$client->addSubscriber($backoffPlugin);
-```
-
-### Known Issues
-
-#### [BUG] Accept-Encoding header behavior changed unintentionally.
-
-(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e)
-
-In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to
-properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen.
-See issue #217 for a workaround, or use a version containing the fix.
diff --git a/inc/mailgun/guzzle/guzzle/build.xml b/inc/mailgun/guzzle/guzzle/build.xml
deleted file mode 100644
index 2aa62ba..0000000
--- a/inc/mailgun/guzzle/guzzle/build.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="guzzle" default="test">
- <!-- set local values, like git location -->
- <property file="phing/build.properties.dist" override="true" />
- <property file="phing/build.properties" override="true" />
-
- <property name="dir.output" value="${project.basedir}/build/artifacts" />
- <property name="dir.imports" value="${project.basedir}/phing/imports" />
- <property name="dir.bin" value="${project.basedir}/bin" />
- <property name="repo.dir" value="${project.basedir}" />
-
- <import file="${dir.imports}/dependencies.xml"/>
- <import file="${dir.imports}/deploy.xml"/>
-
- <target name="composer-lint" description="lint-check composer.json only">
- <composerlint dir="${project.basedir}/src" file="{$project.basedir}/composer.json" />
- </target>
-
- <target name="test" description="Run unit tests">
- <exec passthru="true" command="vendor/bin/phpunit" checkReturn="true" />
- </target>
-
- <target name="build-init" description="Initialize local phing properties">
- <copy file="phing/build.properties.dist" tofile="phing/build.properties" overwrite="false" />
- </target>
-
- <target name="clean">
- <delete dir="${dir.output}"/>
- <delete dir="${project.basedir}/build/pearwork"/>
- </target>
-
- <target name="prepare" depends="clean,build-init">
- <mkdir dir="${dir.output}"/>
- <mkdir dir="${dir.output}/logs" />
- </target>
-
- <target name="coverage" depends="prepare">
- <exec passthru="true" command="vendor/bin/phpunit --coverage-html=${dir.output}/coverage" />
- </target>
-
- <target name="view-coverage">
- <exec passthru="true" command="open ${dir.output}/coverage/index.html" />
- </target>
-
-</project>
diff --git a/inc/mailgun/guzzle/guzzle/composer.json b/inc/mailgun/guzzle/guzzle/composer.json
deleted file mode 100644
index 59424b3..0000000
--- a/inc/mailgun/guzzle/guzzle/composer.json
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- "name": "guzzle/guzzle",
- "type": "library",
- "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
- "keywords": ["framework", "http", "rest", "web service", "curl", "client", "HTTP client"],
- "homepage": "http://guzzlephp.org/",
- "license": "MIT",
-
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Guzzle Community",
- "homepage": "https://github.com/guzzle/guzzle/contributors"
- }
- ],
-
- "replace": {
- "guzzle/batch": "self.version",
- "guzzle/cache": "self.version",
- "guzzle/common": "self.version",
- "guzzle/http": "self.version",
- "guzzle/inflection": "self.version",
- "guzzle/iterator": "self.version",
- "guzzle/log": "self.version",
- "guzzle/parser": "self.version",
- "guzzle/plugin": "self.version",
- "guzzle/plugin-async": "self.version",
- "guzzle/plugin-backoff": "self.version",
- "guzzle/plugin-cache": "self.version",
- "guzzle/plugin-cookie": "self.version",
- "guzzle/plugin-curlauth": "self.version",
- "guzzle/plugin-error-response": "self.version",
- "guzzle/plugin-history": "self.version",
- "guzzle/plugin-log": "self.version",
- "guzzle/plugin-md5": "self.version",
- "guzzle/plugin-mock": "self.version",
- "guzzle/plugin-oauth": "self.version",
- "guzzle/service": "self.version",
- "guzzle/stream": "self.version"
- },
-
- "require": {
- "php": ">=5.3.3",
- "ext-curl": "*",
- "symfony/event-dispatcher": "~2.1"
- },
-
- "autoload": {
- "psr-0": {
- "Guzzle": "src/",
- "Guzzle\\Tests": "tests/"
- }
- },
-
- "suggest": {
- "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
- },
-
- "scripts": {
- "test": "phpunit"
- },
-
- "require-dev": {
- "doctrine/cache": "~1.3",
- "symfony/class-loader": "~2.1",
- "monolog/monolog": "~1.0",
- "psr/log": "~1.0",
- "zendframework/zend-cache": "2.*,<2.3",
- "zendframework/zend-log": "2.*,<2.3",
- "phpunit/phpunit": "3.7.*"
- },
-
- "extra": {
- "branch-alias": {
- "dev-master": "3.9-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/docs/Makefile b/inc/mailgun/guzzle/guzzle/docs/Makefile
deleted file mode 100644
index d92e03f..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/Makefile
+++ /dev/null
@@ -1,153 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
-BUILDDIR = _build
-
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
-
-help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
- @echo " dirhtml to make HTML files named index.html in directories"
- @echo " singlehtml to make a single large HTML file"
- @echo " pickle to make pickle files"
- @echo " json to make JSON files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " qthelp to make HTML files and a qthelp project"
- @echo " devhelp to make HTML files and a Devhelp project"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
- @echo " text to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-
-clean:
- -rm -rf $(BUILDDIR)/*
-
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
- @echo
- @echo "Build finished; now you can process the pickle files."
-
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
- @echo
- @echo "Build finished; now you can run HTML Help Workshop with the" \
- ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
- @echo
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Guzzle.qhcp"
- @echo "To view the help file:"
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Guzzle.qhc"
-
-devhelp:
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
- @echo
- @echo "Build finished."
- @echo "To view the help file:"
- @echo "# mkdir -p $$HOME/.local/share/devhelp/Guzzle"
- @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Guzzle"
- @echo "# devhelp"
-
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
-
-info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
- @echo
- @echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
- @echo
- @echo "Link check complete; look for any errors in the above output " \
- "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/inc/mailgun/guzzle/guzzle/docs/_downloads/guzzle-schema-1.0.json b/inc/mailgun/guzzle/guzzle/docs/_downloads/guzzle-schema-1.0.json
deleted file mode 100644
index 8168302..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_downloads/guzzle-schema-1.0.json
+++ /dev/null
@@ -1,176 +0,0 @@
-{
- "additionalProperties": true,
- "name": {
- "type": "string",
- "description": "Name of the web service"
- },
- "apiVersion": {
- "type": ["string", "number"],
- "description": "Version identifier that the service description is compatible with"
- },
- "baseUrl": {
- "type": "string",
- "description": "Base URL of the web service. Any relative URI specified in an operation will be merged with the baseUrl using the process defined in RFC 2396"
- },
- "basePath": {
- "type": "string",
- "description": "Alias of baseUrl"
- },
- "_description": {
- "type": "string",
- "description": "Short summary of the web service. This is actually called 'description' but this JSON schema wont validate using just description."
- },
- "operations": {
- "description": "Operations of the web service",
- "type": "object",
- "properties": {
- "extends": {
- "type": "string",
- "description": "Extend from another operation by name. The parent operation must be defined before the child."
- },
- "httpMethod": {
- "type": "string",
- "description": "HTTP method used with the operation (e.g. GET, POST, PUT, DELETE, PATCH, etc)"
- },
- "uri": {
- "type": "string",
- "description": "URI of the operation. The uri attribute can contain URI templates. The variables of the URI template are parameters of the operation with a location value of uri"
- },
- "summary": {
- "type": "string",
- "description": "Short summary of what the operation does"
- },
- "class": {
- "type": "string",
- "description": "Custom class to instantiate instead of the default Guzzle\\Service\\Command\\OperationCommand"
- },
- "responseClass": {
- "type": "string",
- "description": "This is what is returned from the method. Can be a primitive, class name, or model name."
- },
- "responseNotes": {
- "type": "string",
- "description": "A description of the response returned by the operation"
- },
- "responseType": {
- "type": "string",
- "description": "The type of response that the operation creates. If not specified, this value will be automatically inferred based on whether or not there is a model matching the name, if a matching class name is found, or set to 'primitive' by default.",
- "enum": [ "primitive", "class", "model", "documentation" ]
- },
- "deprecated": {
- "type": "boolean",
- "description": "Whether or not the operation is deprecated"
- },
- "errorResponses": {
- "description": "Errors that could occur while executing the operation",
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "number",
- "description": "HTTP response status code of the error"
- },
- "reason": {
- "type": "string",
- "description": "Response reason phrase or description of the error"
- },
- "class": {
- "type": "string",
- "description": "A custom exception class that would be thrown if the error is encountered"
- }
- }
- }
- },
- "data": {
- "type": "object",
- "additionalProperties": "true"
- },
- "parameters": {
- "$ref": "parameters",
- "description": "Parameters of the operation. Parameters are used to define how input data is serialized into a HTTP request."
- },
- "additionalParameters": {
- "$ref": "parameters",
- "description": "Validation and serialization rules for any parameter supplied to the operation that was not explicitly defined."
- }
- }
- },
- "models": {
- "description": "Schema models that can be referenced throughout the service description. Models can be used to define how an HTTP response is parsed into a Guzzle\\Service\\Resource\\Model object.",
- "type": "object",
- "properties": {
- "$ref": "parameters",
- "description": "Parameters of the model. When a model is referenced in a responseClass attribute of an operation, parameters define how a HTTP response message is parsed into a Guzzle\\Service\\Resource\\Model."
- }
- },
- "includes": {
- "description": "Service description files to include and extend from (can be a .json, .js, or .php file)",
- "type": "array",
- "items": {
- "type": "string",
- "pattern": ".+\\.(js|json|php)$"
- }
- },
- "definitions": {
- "parameters": {
- "extends": "http://json-schema.org/schema",
- "id": "parameters",
- "name": {
- "type": "string",
- "description": "Unique name of the parameter"
- },
- "type": {
- "type": ["string", "array"],
- "description": "Type of variable (string, number, integer, boolean, object, array, numeric, null, any). Types are using for validation and determining the structure of a parameter. You can use a union type by providing an array of simple types. If one of the union types matches the provided value, then the value is valid."
- },
- "instanceOf": {
- "type": "string",
- "description": "When the type is an object, you can specify the class that the object must implement"
- },
- "required": {
- "type": "boolean",
- "description": "Whether or not the parameter is required"
- },
- "default": {
- "description": "Default value to use if no value is supplied"
- },
- "static": {
- "type": "bool",
- "description": "Set to true to specify that the parameter value cannot be changed from the default setting"
- },
- "description": {
- "type": "string",
- "description": "Documentation of the parameter"
- },
- "location": {
- "type": "string",
- "description": "The location of a request used to apply a parameter. Custom locations can be registered with a command, but the defaults are uri, query, statusCode, reasonPhrase, header, body, json, xml, postField, postFile, responseBody"
- },
- "sentAs": {
- "type": "string",
- "description": "Specifies how the data being modeled is sent over the wire. For example, you may wish to include certain headers in a response model that have a normalized casing of FooBar, but the actual header is x-foo-bar. In this case, sentAs would be set to x-foo-bar."
- },
- "filters": {
- "type": "array",
- "description": "Array of static method names to to run a parameter value through. Each value in the array must be a string containing the full class path to a static method or an array of complex filter information. You can specify static methods of classes using the full namespace class name followed by ‘::’ (e.g. FooBar::baz()). Some filters require arguments in order to properly filter a value. For complex filters, use a hash containing a ‘method’ key pointing to a static method, and an ‘args’ key containing an array of positional arguments to pass to the method. Arguments can contain keywords that are replaced when filtering a value: '@value‘ is replaced with the value being validated, '@api‘ is replaced with the Parameter object.",
- "items": {
- "type": ["string", {
- "object": {
- "properties": {
- "method": {
- "type": "string",
- "description": "PHP function to call",
- "required": true
- },
- "args": {
- "type": "array"
- }
- }
- }
- }]
- }
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/docs/_static/guzzle-icon.png b/inc/mailgun/guzzle/guzzle/docs/_static/guzzle-icon.png
deleted file mode 100644
index f1017f7..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_static/guzzle-icon.png
+++ /dev/null
Binary files differ
diff --git a/inc/mailgun/guzzle/guzzle/docs/_static/homepage.css b/inc/mailgun/guzzle/guzzle/docs/_static/homepage.css
deleted file mode 100644
index 70c46d8..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_static/homepage.css
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Hero unit on homepage */
-
-.hero-unit h1 {
- font-size: 49px;
- margin-bottom: 12px;
-}
-
-.hero-unit {
- padding: 40px;
-}
-
-.hero-unit p {
- font-size: 17px;
-}
-
-.masthead img {
- float: left;
- margin-right: 17px;
-}
-
-.hero-unit ul li {
- margin-left: 220px;
-}
-
-.hero-unit .buttons {
- text-align: center;
-}
-
-.jumbotron {
- position: relative;
- padding: 40px 0;
- color: #fff;
- text-shadow: 0 1px 3px rgba(0,0,0,.4), 0 0 30px rgba(0,0,0,.075);
- background: #00312F;
- background: -moz-linear-gradient(45deg, #002F31 0%, #335A6D 100%);
- background: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#00312D), color-stop(100%,#33566D));
- background: -webkit-linear-gradient(45deg, #020031 0%,#334F6D 100%);
- background: -o-linear-gradient(45deg, #002D31 0%,#334D6D 100%);
- background: -ms-linear-gradient(45deg, #002F31 0%,#33516D 100%);
- background: linear-gradient(45deg, #020031 0%,#33516D 100%);
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#020031', endColorstr='#6d3353',GradientType=1 );
- -webkit-box-shadow: inset 0 3px 7px rgba(0, 0, 0, .2), inset 0 -3px 7px rgba(0, 0, 0, .2);
- -moz-box-shadow: inset 0 3px 7px rgba(0,0,0,.2), inset 0 -3px 7px rgba(0,0,0,.2);
- box-shadow: inset 0 3px 7px rgba(0, 0, 0, .2), inset 0 -3px 7px rgba(0, 0, 0, .2);
-}
-
-.jumbotron h1 {
- font-size: 80px;
- font-weight: bold;
- letter-spacing: -1px;
- line-height: 1;
-}
-
-.jumbotron p {
- font-size: 24px;
- font-weight: 300;
- line-height: 1.25;
- margin-bottom: 30px;
-}
-
-.masthead {
- padding: 40px 0 30px;
- margin-bottom: 0;
- color: #fff;
- margin-top: -19px;
-}
-
-.masthead h1 {
- display: none;
-}
-
-.masthead p {
- font-size: 40px;
- font-weight: 200;
- line-height: 1.25;
- margin: 12px 0 0 0;
-}
-
-.masthead .btn {
- padding: 19px 24px;
- font-size: 24px;
- font-weight: 200;
- border: 0;
-}
-
-/* Social bar on homepage */
-
-.social {
- padding: 2px 0;
- text-align: center;
- background-color: #f5f5f5;
- border-top: 1px solid #fff;
- border-bottom: 1px solid #ddd;
- margin: 0 0 20px 0;
-}
-
-.social ul {
- margin-top: 0;
-}
-
-.social-buttons {
- margin-left: 0;
- margin-bottom: 0;
- padding-left: 0;
- list-style: none;
-}
-
-.social-buttons li {
- display: inline-block;
- padding: 5px 8px;
- line-height: 1;
- *display: inline;
- *zoom: 1;
-}
-
-.center-announcement {
- padding: 10px;
- background-color: rgb(238, 243, 255);
- border-radius: 8px;
- text-align: center;
- margin: 24px 0;
-}
diff --git a/inc/mailgun/guzzle/guzzle/docs/_static/logo.png b/inc/mailgun/guzzle/guzzle/docs/_static/logo.png
deleted file mode 100644
index 965a4ef..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_static/logo.png
+++ /dev/null
Binary files differ
diff --git a/inc/mailgun/guzzle/guzzle/docs/_static/prettify.css b/inc/mailgun/guzzle/guzzle/docs/_static/prettify.css
deleted file mode 100644
index 4d410b1..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_static/prettify.css
+++ /dev/null
@@ -1,41 +0,0 @@
-.com {
- color: #93A1A1;
-}
-.lit {
- color: #195F91;
-}
-.pun, .opn, .clo {
- color: #93A1A1;
-}
-.fun {
- color: #DC322F;
-}
-.str, .atv {
- color: #DD1144;
-}
-.kwd, .linenums .tag {
- color: #1E347B;
-}
-.typ, .atn, .dec, .var {
- color: teal;
-}
-.pln {
- color: #48484C;
-}
-.prettyprint {
- background-color: #F7F7F9;
- border: 1px solid #E1E1E8;
- padding: 8px;
-}
-.prettyprint.linenums {
- box-shadow: 40px 0 0 #FBFBFC inset, 41px 0 0 #ECECF0 inset;
-}
-ol.linenums {
- margin: 0 0 0 33px;
-}
-ol.linenums li {
- color: #BEBEC5;
- line-height: 18px;
- padding-left: 12px;
- text-shadow: 0 1px 0 #FFFFFF;
-}
diff --git a/inc/mailgun/guzzle/guzzle/docs/_static/prettify.js b/inc/mailgun/guzzle/guzzle/docs/_static/prettify.js
deleted file mode 100644
index eef5ad7..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_static/prettify.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
-(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
-[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
-f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
-(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
-{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
-t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
-"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
-l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
-q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
-q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
-"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
-a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
-for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
-m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
-a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
-j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
-"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
-H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
-J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
-I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
-["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
-/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
-["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
-hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
-!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
-250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
-PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
diff --git a/inc/mailgun/guzzle/guzzle/docs/_templates/index.html b/inc/mailgun/guzzle/guzzle/docs/_templates/index.html
deleted file mode 100644
index 2bbfd6f..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_templates/index.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<script type="text/javascript" src="{{ pathto('_static/prettify.js', 1) }}"></script>
-<link rel="stylesheet" type="text/css" href="{{ pathto('_static/prettify.css', 1) }}" />
-<link rel="stylesheet" type="text/css" href="{{ pathto('_static/homepage.css', 1) }}" />
-
-<div class="jumbotron masthead">
- <div class="container">
- <img src="{{ pathto('_static/logo.png', 1) }}" alt="guzzle" width="199" height="260" />
- <h1>Guzzle</h1>
- <p>Guzzle is a PHP HTTP client<br />&amp; framework for building RESTful web service clients.</p>
- <p>
- <a class="btn btn-primary btn-lg" href="https://github.com/guzzle/guzzle">View Guzzle on GitHub</a>
- <a class="btn btn-default btn-lg" href="{{ pathto('docs') }}">Read the docs</a>
- </p>
- </div>
-</div>
-
-<div class="social">
- <ul class="social-buttons">
- <li>
- <iframe src="http://ghbtns.com/github-btn.html?user=guzzle&repo=guzzle&type=watch&count=true"
- allowtransparency="true" frameborder="0" scrolling="0" width="110" height="20"></iframe>
- </li>
- <li>
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://guzzlephp.org" data-text="Guzzle, PHP HTTP client &amp; framework for building RESTful web service clients" data-via="mtdowling">Tweet</a>
- <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="http://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
- </li>
- <li>
- <a href="https://twitter.com/mtdowling" class="twitter-follow-button" data-show-count="false">Follow @mtdowling</a>
- <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="http://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
- </li>
- </ul>
-</div>
-
-<div class="container">
-
- <h1>Introducing Guzzle</h1>
-
- <p>Guzzle takes the pain out of sending HTTP requests and the redundancy out of creating web service clients. It's
- a framework that includes the tools needed to create a robust web service client, including:
- Service descriptions for defining the inputs and outputs of an API, resource iterators for traversing
- paginated resources, batching for sending a large number of requests as efficiently as possible.</p>
-
- <ul>
- <li>All the power of cURL with a simple interface.</li>
- <li>Persistent connections and parallel requests.</li>
- <li>Streams request and response bodies</li>
- <li><a href="{{ pathto('webservice-client/guzzle-service-descriptions') }}">Service descriptions</a> for quickly building clients.</li>
- <li>Powered by the Symfony2 EventDispatcher.</li>
- <li>Use all of the code or only <a href="https://packagist.org/packages/guzzle/">specific components</a>.</li>
- <li><a href="{{ pathto('plugins/plugins-overview') }}">Plugins</a> for caching, logging, OAuth, mocks, and more</li>
- <li>Includes a custom node.js webserver to <a href="{{ pathto('testing/unit-testing') }}">test your clients</a>.</li>
- </ul>
-
- <div class="center-announcement">
- Guzzle is now part of Drupal 8 core and powers the official <a href="https://github.com/aws/aws-sdk-php">AWS SDK for PHP</a>
- </div>
-
- <h2>GitHub Example</h2>
-
- <pre class="prettyprint">&lt;?php
-require_once 'vendor/autoload.php';
-use Guzzle\Http\Client;
-
-// Create a client and provide a base URL
-$client = new Client('https://api.github.com');
-// Create a request with basic Auth
-$request = $client->get('/user')->setAuth('user', 'pass');
-// Send the request and get the response
-$response = $request->send();
-echo $response->getBody();
-// >>> {"type":"User", ...
-echo $response->getHeader('Content-Length');
-// >>> 792
-</pre>
-
- <h2>Twitter Example</h2>
- <pre class="prettyprint">&lt;?php
-// Create a client to work with the Twitter API
-$client = new Client('https://api.twitter.com/{version}', array(
- 'version' => '1.1'
-));
-
-// Sign all requests with the OauthPlugin
-$client->addSubscriber(new Guzzle\Plugin\Oauth\OauthPlugin(array(
- 'consumer_key' => '***',
- 'consumer_secret' => '***',
- 'token' => '***',
- 'token_secret' => '***'
-)));
-
-echo $client->get('statuses/user_timeline.json')->send()->getBody();
-// >>> {"public_gists":6,"type":"User" ...
-
-// Create a tweet using POST
-$request = $client->post('statuses/update.json', null, array(
- 'status' => 'Tweeted with Guzzle, http://guzzlephp.org'
-));
-
-// Send the request and parse the JSON response into an array
-$data = $request->send()->json();
-echo $data['text'];
-// >>> Tweeted with Guzzle, http://t.co/kngJMfRk
-</pre>
-</div>
-
-<script type="text/javascript">prettyPrint();</script>
diff --git a/inc/mailgun/guzzle/guzzle/docs/_templates/leftbar.html b/inc/mailgun/guzzle/guzzle/docs/_templates/leftbar.html
deleted file mode 100644
index e69de29..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_templates/leftbar.html
+++ /dev/null
diff --git a/inc/mailgun/guzzle/guzzle/docs/_templates/nav_links.html b/inc/mailgun/guzzle/guzzle/docs/_templates/nav_links.html
deleted file mode 100644
index d4f2165..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/_templates/nav_links.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<li><a href="{{ pathto('docs') }}">Docs</a></li>
-<li><a href="http://guzzlephp.org/api/index.html">API</a></li>
-<li><a href="https://github.com/guzzle/guzzle">GitHub</a></li>
-<li><a href="https://groups.google.com/forum/?hl=en#!forum/guzzle">Forum</a></li>
-<li><a href="irc:irc.freenode.com/#guzzlephp">IRC</a></li>
diff --git a/inc/mailgun/guzzle/guzzle/docs/batching/batching.rst b/inc/mailgun/guzzle/guzzle/docs/batching/batching.rst
deleted file mode 100644
index 57f04d8..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/batching/batching.rst
+++ /dev/null
@@ -1,183 +0,0 @@
-========
-Batching
-========
-
-Guzzle provides a fairly generic and very customizable batching framework that allows developers to efficiently
-transfer requests in parallel.
-
-Sending requests and commands in parallel
------------------------------------------
-
-You can send HTTP requests in parallel by passing an array of ``Guzzle\Http\Message\RequestInterface`` objects to
-``Guzzle\Http\Client::send()``:
-
-.. code-block:: php
-
- $responses = $client->send(array(
- $client->get('http://www.example.com/foo'),
- $client->get('http://www.example.com/baz')
- $client->get('http://www.example.com/bar')
- ));
-
-You can send commands in parallel by passing an array of ``Guzzle\Service\Command\CommandInterface`` objects
-``Guzzle\Service\Client::execute()``:
-
-.. code-block:: php
-
- $commands = $client->execute(array(
- $client->getCommand('foo'),
- $client->getCommand('baz'),
- $client->getCommand('bar')
- ));
-
-These approaches work well for most use-cases. When you need more control over the requests that are sent in
-parallel or you need to send a large number of requests, you need to use the functionality provided in the
-``Guzzle\Batch`` namespace.
-
-Batching overview
------------------
-
-The batch object, ``Guzzle\Batch\Batch``, is a queue. You add requests to the queue until you are ready to transfer
-all of the requests. In order to efficiently transfer the items in the queue, the batch object delegates the
-responsibility of dividing the queue into manageable parts to a divisor (``Guzzle\Batch\BatchDivisorInterface``).
-The batch object then iterates over each array of items created by the divisor and sends them to the batch object's
-``Guzzle\Batch\BatchTransferInterface``.
-
-.. code-block:: php
-
- use Guzzle\Batch\Batch;
- use Guzzle\Http\BatchRequestTransfer;
-
- // BatchRequestTransfer acts as both the divisor and transfer strategy
- $transferStrategy = new BatchRequestTransfer(10);
- $divisorStrategy = $transferStrategy;
-
- $batch = new Batch($transferStrategy, $divisorStrategy);
-
- // Add some requests to the batch queue
- $batch->add($request1)
- ->add($request2)
- ->add($request3);
-
- // Flush the queue and retrieve the flushed items
- $arrayOfTransferredRequests = $batch->flush();
-
-.. note::
-
- You might find that your transfer strategy will need to act as both the divisor and transfer strategy.
-
-Using the BatchBuilder
-----------------------
-
-The ``Guzzle\Batch\BatchBuilder`` makes it easier to create batch objects. The batch builder also provides an easier
-way to add additional behaviors to your batch object.
-
-Transferring requests
-~~~~~~~~~~~~~~~~~~~~~
-
-The ``Guzzle\Http\BatchRequestTransfer`` class efficiently transfers HTTP requests in parallel by grouping batches of
-requests by the curl_multi handle that is used to transfer the requests.
-
-.. code-block:: php
-
- use Guzzle\Batch\BatchBuilder;
-
- $batch = BatchBuilder::factory()
- ->transferRequests(10)
- ->build();
-
-Transferring commands
-~~~~~~~~~~~~~~~~~~~~~
-
-The ``Guzzle\Service\Command\BatchCommandTransfer`` class efficiently transfers service commands by grouping commands
-by the client that is used to transfer them. You can add commands to a batch object that are transferred by different
-clients, and the batch will handle the rest.
-
-.. code-block:: php
-
- use Guzzle\Batch\BatchBuilder;
-
- $batch = BatchBuilder::factory()
- ->transferCommands(10)
- ->build();
-
- $batch->add($client->getCommand('foo'))
- ->add($client->getCommand('baz'))
- ->add($client->getCommand('bar'));
-
- $commands = $batch->flush();
-
-Batch behaviors
----------------
-
-You can add various behaviors to your batch that allow for more customizable transfers.
-
-Automatically flushing a queue
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use the ``Guzzle\Batch\FlushingBatch`` decorator when you want to pump a large number of items into a batch queue and
-have the queue automatically flush when the size of the queue reaches a certain threshold.
-
-.. code-block:: php
-
- use Guzzle\Batch\BatchBuilder;
-
- $batch = BatchBuilder::factory()
- ->transferRequests(10)
- ->autoFlushAt(10)
- ->build();
-
-Batch builder method: ``autoFlushAt($threshold)``
-
-Notifying on flush
-~~~~~~~~~~~~~~~~~~
-
-Use the ``Guzzle\Batch\NotifyingBatch`` decorator if you want a function to be notified each time the batch queue is
-flushed. This is useful when paired with the flushing batch decorator. Pass a callable to the ``notify()`` method of
-a batch builder to use this decorator with the builder.
-
-.. code-block:: php
-
- use Guzzle\Batch\BatchBuilder;
-
- $batch = BatchBuilder::factory()
- ->transferRequests(10)
- ->autoFlushAt(10)
- ->notify(function (array $transferredItems) {
- echo 'Transferred ' . count($transferredItems) . "items\n";
- })
- ->build();
-
-Batch builder method:: ``notify(callable $callback)``
-
-Keeping a history
-~~~~~~~~~~~~~~~~~
-
-Use the ``Guzzle\Batch\HistoryBatch`` decorator if you want to maintain a history of all the items transferred with
-the batch queue.
-
-.. code-block:: php
-
- use Guzzle\Batch\BatchBuilder;
-
- $batch = BatchBuilder::factory()
- ->transferRequests(10)
- ->keepHistory()
- ->build();
-
-After transferring items, you can use the ``getHistory()`` of a batch to retrieve an array of transferred items. Be
-sure to periodically clear the history using ``clearHistory()``.
-
-Batch builder method: ``keepHistory()``
-
-Exception buffering
-~~~~~~~~~~~~~~~~~~~
-
-Use the ``Guzzle\Batch\ExceptionBufferingBatch`` decorator to buffer exceptions during a transfer so that you can
-transfer as many items as possible then deal with the errored batches after the transfer completes. After transfer,
-use the ``getExceptions()`` method of a batch to retrieve an array of
-``Guzzle\Batch\Exception\BatchTransferException`` objects. You can use these exceptions to attempt to retry the
-failed batches. Be sure to clear the buffered exceptions when you are done with them by using the
-``clearExceptions()`` method.
-
-Batch builder method: ``bufferExceptions()``
diff --git a/inc/mailgun/guzzle/guzzle/docs/conf.py b/inc/mailgun/guzzle/guzzle/docs/conf.py
deleted file mode 100644
index 92bc46b..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/conf.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import sys, os
-from sphinx.highlighting import lexers
-from pygments.lexers.web import PhpLexer
-
-lexers['php'] = PhpLexer(startinline=True, linenos=1)
-lexers['php-annotations'] = PhpLexer(startinline=True, linenos=1)
-primary_domain = 'php'
-
-# -- General configuration -----------------------------------------------------
-
-extensions = []
-templates_path = ['_templates']
-source_suffix = '.rst'
-master_doc = 'index'
-
-project = u'Guzzle'
-copyright = u'2012, Michael Dowling'
-version = '3.0.0'
-release = '3.0.0'
-
-exclude_patterns = ['_build']
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-html_title = "Guzzle documentation"
-html_short_title = "Guzzle"
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# Custom sidebar templates, maps document names to template names.
-html_sidebars = {
- '**': ['localtoc.html', 'leftbar.html', 'searchbox.html']
-}
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'Guzzledoc'
-
-# -- Guzzle Sphinx theme setup ------------------------------------------------
-
-sys.path.insert(0, '/Users/dowling/projects/guzzle_sphinx_theme')
-
-import guzzle_sphinx_theme
-html_translator_class = 'guzzle_sphinx_theme.HTMLTranslator'
-html_theme_path = guzzle_sphinx_theme.html_theme_path()
-html_theme = 'guzzle_sphinx_theme'
-
-# Guzzle theme options (see theme.conf for more information)
-html_theme_options = {
- "index_template": "index.html",
- "project_nav_name": "Guzzle",
- "github_user": "guzzle",
- "github_repo": "guzzle",
- "disqus_comments_shortname": "guzzle",
- "google_analytics_account": "UA-22752917-1"
-}
-
-# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
- ('index', 'Guzzle.tex', u'Guzzle Documentation',
- u'Michael Dowling', 'manual'),
-]
-
-# -- Options for manual page output --------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
- ('index', 'guzzle', u'Guzzle Documentation',
- [u'Michael Dowling'], 1)
-]
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-# -- Options for Texinfo output ------------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-texinfo_documents = [
- ('index', 'Guzzle', u'Guzzle Documentation',
- u'Michael Dowling', 'Guzzle', 'One line description of project.',
- 'Miscellaneous'),
-]
diff --git a/inc/mailgun/guzzle/guzzle/docs/docs.rst b/inc/mailgun/guzzle/guzzle/docs/docs.rst
deleted file mode 100644
index cf87908..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/docs.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-.. title:: Guzzle | PHP HTTP client and framework for consuming RESTful web services
-
-====================
-Guzzle Documentation
-====================
-
-Getting started
----------------
-
-.. toctree::
- :maxdepth: 1
-
- getting-started/overview
- getting-started/installation
- getting-started/faq
-
-The HTTP client
----------------
-
-.. toctree::
- :maxdepth: 2
-
- http-client/client
- http-client/request
- http-client/response
- http-client/entity-bodies
- http-client/http-redirects
- http-client/uri-templates
-
-Plugins
--------
-
-.. toctree::
- :maxdepth: 1
-
- plugins/plugins-overview
- plugins/creating-plugins
- plugins/async-plugin
- plugins/backoff-plugin
- plugins/cache-plugin
- plugins/cookie-plugin
- plugins/curl-auth-plugin
- plugins/history-plugin
- plugins/log-plugin
- plugins/md5-validator-plugin
- plugins/mock-plugin
- plugins/oauth-plugin
-
-The web service client
-----------------------
-
-.. toctree::
- :maxdepth: 1
-
- webservice-client/webservice-client
- webservice-client/using-the-service-builder
- webservice-client/guzzle-service-descriptions
- batching/batching
- iterators/resource-iterators
- iterators/guzzle-iterators
-
-Testing
--------
-
-.. toctree::
- :maxdepth: 2
-
- testing/unit-testing
-
-API Docs
---------
-
-`Read the API docs <http://guzzlephp.org/api/index.html>`_
diff --git a/inc/mailgun/guzzle/guzzle/docs/getting-started/faq.rst b/inc/mailgun/guzzle/guzzle/docs/getting-started/faq.rst
deleted file mode 100644
index a0a3fdb..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/getting-started/faq.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-===
-FAQ
-===
-
-What should I do if I get this error: Fatal error: Maximum function nesting level of '100' reached, aborting!
--------------------------------------------------------------------------------------------------------------
-
-You could run into this error if you have the XDebug extension installed and you execute a lot of requests in
-callbacks. This error message comes specifically from the XDebug extension. PHP itself does not have a function
-nesting limit. Change this setting in your php.ini to increase the limit::
-
- xdebug.max_nesting_level = 1000
-
-[`source <http://stackoverflow.com/a/4293870/151504>`_]
-
-How can I speed up my client?
------------------------------
-
-There are several things you can do to speed up your client:
-
-1. Utilize a C based HTTP message parser (e.g. ``Guzzle\Parser\Message\PeclHttpMessageParser``)
-2. Disable operation validation by setting the ``command.disable_validation`` option to true on a command
-
-Why am I getting a 417 error response?
---------------------------------------
-
-This can occur for a number of reasons, but if you are sending PUT, POST, or PATCH requests with an
-``Expect: 100-Continue`` header, a server that does not support this header will return a 417 response. You can work
-around this by calling ``$request->removeHeader('Expect');`` after setting the entity body of a request.
diff --git a/inc/mailgun/guzzle/guzzle/docs/getting-started/installation.rst b/inc/mailgun/guzzle/guzzle/docs/getting-started/installation.rst
deleted file mode 100644
index 77d4001..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/getting-started/installation.rst
+++ /dev/null
@@ -1,154 +0,0 @@
-============
-Installation
-============
-
-Requirements
-------------
-
-#. PHP 5.3.3+ compiled with the cURL extension
-#. A recent version of cURL 7.16.2+ compiled with OpenSSL and zlib
-
-Installing Guzzle
------------------
-
-Composer
-~~~~~~~~
-
-The recommended way to install Guzzle is with `Composer <http://getcomposer.org>`_. Composer is a dependency
-management tool for PHP that allows you to declare the dependencies your project needs and installs them into your
-project.
-
-.. code-block:: bash
-
- # Install Composer
- curl -sS https://getcomposer.org/installer | php
-
- # Add Guzzle as a dependency
- php composer.phar require guzzle/guzzle:~3.9
-
-After installing, you need to require Composer's autoloader:
-
-.. code-block:: php
-
- require 'vendor/autoload.php';
-
-You can find out more on how to install Composer, configure autoloading, and other best-practices for defining
-dependencies at `getcomposer.org <http://getcomposer.org>`_.
-
-Using only specific parts of Guzzle
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-While you can always just rely on ``guzzle/guzzle``, Guzzle provides several smaller parts of Guzzle as individual
-packages available through Composer.
-
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| Package name | Description |
-+===============================================================================================+==========================================+
-| `guzzle/common <https://packagist.org/packages/guzzle/common>`_ | Provides ``Guzzle\Common`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/http <https://packagist.org/packages/guzzle/http>`_ | Provides ``Guzzle\Http`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/parser <https://packagist.org/packages/guzzle/parser>`_ | Provides ``Guzzle\Parser`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/batch <https://packagist.org/packages/guzzle/batch>`_ | Provides ``Guzzle\Batch`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/cache <https://packagist.org/packages/guzzle/cache>`_ | Provides ``Guzzle\Cache`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/inflection <https://packagist.org/packages/guzzle/inflection>`_ | Provides ``Guzzle\Inflection`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/iterator <https://packagist.org/packages/guzzle/iterator>`_ | Provides ``Guzzle\Iterator`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/log <https://packagist.org/packages/guzzle/log>`_ | Provides ``Guzzle\Log`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin <https://packagist.org/packages/guzzle/plugin>`_ | Provides ``Guzzle\Plugin`` (all plugins) |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-async <https://packagist.org/packages/guzzle/plugin-async>`_ | Provides ``Guzzle\Plugin\Async`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-backoff <https://packagist.org/packages/guzzle/plugin-backoff>`_ | Provides ``Guzzle\Plugin\BackoffPlugin`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-cache <https://packagist.org/packages/guzzle/plugin-cache>`_ | Provides ``Guzzle\Plugin\Cache`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-cookie <https://packagist.org/packages/guzzle/plugin-cookie>`_ | Provides ``Guzzle\Plugin\Cookie`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-error-response <https://packagist.org/packages/guzzle/plugin-error-response>`_ | Provides ``Guzzle\Plugin\ErrorResponse`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-history <https://packagist.org/packages/guzzle/plugin-history>`_ | Provides ``Guzzle\Plugin\History`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-log <https://packagist.org/packages/guzzle/plugin-log>`_ | Provides ``Guzzle\Plugin\Log`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-md5 <https://packagist.org/packages/guzzle/plugin-md5>`_ | Provides ``Guzzle\Plugin\Md5`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-mock <https://packagist.org/packages/guzzle/plugin-mock>`_ | Provides ``Guzzle\Plugin\Mock`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/plugin-oauth <https://packagist.org/packages/guzzle/plugin-oauth>`_ | Provides ``Guzzle\Plugin\Oauth`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/service <https://packagist.org/packages/guzzle/service>`_ | Provides ``Guzzle\Service`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-| `guzzle/stream <https://packagist.org/packages/guzzle/stream>`_ | Provides ``Guzzle\Stream`` |
-+-----------------------------------------------------------------------------------------------+------------------------------------------+
-
-Bleeding edge
-^^^^^^^^^^^^^
-
-During your development, you can keep up with the latest changes on the master branch by setting the version
-requirement for Guzzle to ``dev-master``.
-
-.. code-block:: js
-
- {
- "require": {
- "guzzle/guzzle": "dev-master"
- }
- }
-
-PEAR
-~~~~
-
-Guzzle can be installed through PEAR:
-
-.. code-block:: bash
-
- pear channel-discover guzzlephp.org/pear
- pear install guzzle/guzzle
-
-You can install a specific version of Guzzle by providing a version number suffix:
-
-.. code-block:: bash
-
- pear install guzzle/guzzle-3.9.0
-
-Contributing to Guzzle
-----------------------
-
-In order to contribute, you'll need to checkout the source from GitHub and install Guzzle's dependencies using
-Composer:
-
-.. code-block:: bash
-
- git clone https://github.com/guzzle/guzzle.git
- cd guzzle && curl -s http://getcomposer.org/installer | php && ./composer.phar install --dev
-
-Guzzle is unit tested with PHPUnit. You will need to create your own phpunit.xml file in order to run the unit tests
-(or just copy phpunit.xml.dist to phpunit.xml). Run the tests using the vendored PHPUnit binary:
-
-.. code-block:: bash
-
- vendor/bin/phpunit
-
-You'll need to install node.js v0.5.0 or newer in order to test the cURL implementation.
-
-Framework integrations
-----------------------
-
-Using Guzzle with Symfony
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Bundles are available on GitHub:
-
-- `DdeboerGuzzleBundle <https://github.com/ddeboer/GuzzleBundle>`_ for Guzzle 2
-- `MisdGuzzleBundle <https://github.com/misd-service-development/guzzle-bundle>`_ for Guzzle 3
-
-Using Guzzle with Silex
-~~~~~~~~~~~~~~~~~~~~~~~
-
-A `Guzzle Silex service provider <https://github.com/guzzle/guzzle-silex-extension>`_ is available on GitHub.
diff --git a/inc/mailgun/guzzle/guzzle/docs/getting-started/overview.rst b/inc/mailgun/guzzle/guzzle/docs/getting-started/overview.rst
deleted file mode 100644
index 505b409..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/getting-started/overview.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-=================
-Welcome to Guzzle
-=================
-
-What is Guzzle?
-~~~~~~~~~~~~~~~
-
-Guzzle is a PHP HTTP client and framework for building web service clients. Guzzle takes the pain out of sending HTTP
-requests and the redundancy out of creating web service clients.
-
-Features at a glance
---------------------
-
-- All the power of cURL with a simple interface.
-- Persistent connections and parallel requests.
-- Streams request and response bodies
-- Service descriptions for quickly building clients.
-- Powered by the Symfony2 EventDispatcher.
-- Use all of the code or only specific components.
-- Plugins for caching, logging, OAuth, mocks, and more
-- Includes a custom node.js webserver to test your clients.
-- Service descriptions for defining the inputs and outputs of an API
-- Resource iterators for traversing paginated resources
-- Batching for sending a large number of requests as efficiently as possible
-
-.. code-block:: php
-
- // Really simple using a static facade
- Guzzle\Http\StaticClient::mount();
- $response = Guzzle::get('http://guzzlephp.org');
-
- // More control using a client class
- $client = new \Guzzle\Http\Client('http://guzzlephp.org');
- $request = $client->get('/');
- $response = $request->send();
-
-License
--------
-
-Licensed using the `MIT license <http://opensource.org/licenses/MIT>`_.
-
- Copyright (c) 2013 Michael Dowling <https://github.com/mtdowling>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
-Contributing
-------------
-
-Guidelines
-~~~~~~~~~~
-
-This is still a work in progress, but there are only a few rules:
-
-1. Guzzle follows PSR-0, PSR-1, and PSR-2
-2. All pull requests must include unit tests to ensure the change works as expected and to prevent future regressions
-
-Reporting a security vulnerability
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-We want to ensure that Guzzle is a secure HTTP client library for everyone. If you've discovered a security
-vulnerability in Guzzle, we appreciate your help in disclosing it to us in a
-`responsible manner <http://en.wikipedia.org/wiki/Responsible_disclosure>`_.
-
-Publicly disclosing a vulnerability can put the entire community at risk. If you've discovered a security concern,
-please email us at security@guzzlephp.org. We'll work with you to make sure that we understand the scope of the issue,
-and that we fully address your concern. We consider correspondence sent to security@guzzlephp.org our highest priority,
-and work to address any issues that arise as quickly as possible.
-
-After a security vulnerability has been corrected, a security hotfix release will be deployed as soon as possible.
diff --git a/inc/mailgun/guzzle/guzzle/docs/http-client/client.rst b/inc/mailgun/guzzle/guzzle/docs/http-client/client.rst
deleted file mode 100644
index 723d729..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/http-client/client.rst
+++ /dev/null
@@ -1,569 +0,0 @@
-======================
-The Guzzle HTTP client
-======================
-
-Guzzle gives PHP developers complete control over HTTP requests while utilizing HTTP/1.1 best practices. Guzzle's HTTP
-functionality is a robust framework built on top of the `PHP libcurl bindings <http://www.php.net/curl>`_.
-
-The three main parts of the Guzzle HTTP client are:
-
-+--------------+-------------------------------------------------------------------------------------------------------+
-| Clients | ``Guzzle\Http\Client`` (creates and sends requests, associates a response with a request) |
-+--------------+-------------------------------------------------------------------------------------------------------+
-| Requests | ``Guzzle\Http\Message\Request`` (requests with no body), |
-| | ``Guzzle\Http\Message\EntityEnclosingRequest`` (requests with a body) |
-+--------------+-------------------------------------------------------------------------------------------------------+
-| Responses | ``Guzzle\Http\Message\Response`` |
-+--------------+-------------------------------------------------------------------------------------------------------+
-
-Creating a Client
------------------
-
-Clients create requests, send requests, and set responses on a request object. When instantiating a client object,
-you can pass an optional "base URL" and optional array of configuration options. A base URL is a
-:doc:`URI template <uri-templates>` that contains the URL of a remote server. When creating requests with a relative
-URL, the base URL of a client will be merged into the request's URL.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
-
- // Create a client and provide a base URL
- $client = new Client('https://api.github.com');
-
- $request = $client->get('/user');
- $request->setAuth('user', 'pass');
- echo $request->getUrl();
- // >>> https://api.github.com/user
-
- // You must send a request in order for the transfer to occur
- $response = $request->send();
-
- echo $response->getBody();
- // >>> {"type":"User", ...
-
- echo $response->getHeader('Content-Length');
- // >>> 792
-
- $data = $response->json();
- echo $data['type'];
- // >>> User
-
-Base URLs
-~~~~~~~~~
-
-Notice that the URL provided to the client's ``get()`` method is relative. Relative URLs will always merge into the
-base URL of the client. There are a few rules that control how the URLs are merged.
-
-.. tip::
-
- Guzzle follows `RFC 3986 <http://tools.ietf.org/html/rfc3986#section-5.2>`_ when merging base URLs and
- relative URLs.
-
-In the above example, we passed ``/user`` to the ``get()`` method of the client. This is a relative URL, so it will
-merge into the base URL of the client-- resulting in the derived URL of ``https://api.github.com/users``.
-
-``/user`` is a relative URL but uses an absolute path because it contains the leading slash. Absolute paths will
-overwrite any existing path of the base URL. If an absolute path is provided (e.g. ``/path/to/something``), then the
-path specified in the base URL of the client will be replaced with the absolute path, and the query string provided
-by the relative URL will replace the query string of the base URL.
-
-Omitting the leading slash and using relative paths will add to the path of the base URL of the client. So using a
-client base URL of ``https://api.twitter.com/v1.1`` and creating a GET request with ``statuses/user_timeline.json``
-will result in a URL of ``https://api.twitter.com/v1.1/statuses/user_timeline.json``. If a relative path and a query
-string are provided, then the relative path will be appended to the base URL path, and the query string provided will
-be merged into the query string of the base URL.
-
-If an absolute URL is provided (e.g. ``http://httpbin.org/ip``), then the request will completely use the absolute URL
-as-is without merging in any of the URL parts specified in the base URL.
-
-Configuration options
-~~~~~~~~~~~~~~~~~~~~~
-
-The second argument of the client's constructor is an array of configuration data. This can include URI template data
-or special options that alter the client's behavior:
-
-+-------------------------------+-------------------------------------------------------------------------------------+
-| ``request.options`` | Associative array of :ref:`Request options <request-options>` to apply to every |
-| | request created by the client. |
-+-------------------------------+-------------------------------------------------------------------------------------+
-| ``redirect.disable`` | Disable HTTP redirects for every request created by the client. |
-+-------------------------------+-------------------------------------------------------------------------------------+
-| ``curl.options`` | Associative array of cURL options to apply to every request created by the client. |
-| | if either the key or value of an entry in the array is a string, Guzzle will |
-| | attempt to find a matching defined cURL constant automatically (e.g. |
-| | "CURLOPT_PROXY" will be converted to the constant ``CURLOPT_PROXY``). |
-+-------------------------------+-------------------------------------------------------------------------------------+
-| ``ssl.certificate_authority`` | Set to true to use the Guzzle bundled SSL certificate bundle (this is used by |
-| | default, 'system' to use the bundle on your system, a string pointing to a file to |
-| | use a specific certificate file, a string pointing to a directory to use multiple |
-| | certificates, or ``false`` to disable SSL validation (not recommended). |
-| | |
-| | When using Guzzle inside of a phar file, the bundled SSL certificate will be |
-| | extracted to your system's temp folder, and each time a client is created an MD5 |
-| | check will be performed to ensure the integrity of the certificate. |
-+-------------------------------+-------------------------------------------------------------------------------------+
-| ``command.params`` | When using a ``Guzzle\Service\Client`` object, this is an associative array of |
-| | default options to set on each command created by the client. |
-+-------------------------------+-------------------------------------------------------------------------------------+
-
-Here's an example showing how to set various configuration options, including default headers to send with each request,
-default query string parameters to add to each request, a default auth scheme for each request, and a proxy to use for
-each request. Values can be injected into the client's base URL using variables from the configuration array.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
-
- $client = new Client('https://api.twitter.com/{version}', array(
- 'version' => 'v1.1',
- 'request.options' => array(
- 'headers' => array('Foo' => 'Bar'),
- 'query' => array('testing' => '123'),
- 'auth' => array('username', 'password', 'Basic|Digest|NTLM|Any'),
- 'proxy' => 'tcp://localhost:80'
- )
- ));
-
-Setting a custom User-Agent
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The default Guzzle User-Agent header is ``Guzzle/<Guzzle_Version> curl/<curl_version> PHP/<PHP_VERSION>``. You can
-customize the User-Agent header of a client by calling the ``setUserAgent()`` method of a Client object.
-
-.. code-block:: php
-
- // Completely override the default User-Agent
- $client->setUserAgent('Test/123');
-
- // Prepend a string to the default User-Agent
- $client->setUserAgent('Test/123', true);
-
-Creating requests with a client
--------------------------------
-
-A Client object exposes several methods used to create Request objects:
-
-* Create a custom HTTP request: ``$client->createRequest($method, $uri, array $headers, $body, $options)``
-* Create a GET request: ``$client->get($uri, array $headers, $options)``
-* Create a HEAD request: ``$client->head($uri, array $headers, $options)``
-* Create a DELETE request: ``$client->delete($uri, array $headers, $body, $options)``
-* Create a POST request: ``$client->post($uri, array $headers, $postBody, $options)``
-* Create a PUT request: ``$client->put($uri, array $headers, $body, $options)``
-* Create a PATCH request: ``$client->patch($uri, array $headers, $body, $options)``
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
-
- $client = new Client('http://baseurl.com/api/v1');
-
- // Create a GET request using Relative to base URL
- // URL of the request: http://baseurl.com/api/v1/path?query=123&value=abc)
- $request = $client->get('path?query=123&value=abc');
- $response = $request->send();
-
- // Create HEAD request using a relative URL with an absolute path
- // URL of the request: http://baseurl.com/path?query=123&value=abc
- $request = $client->head('/path?query=123&value=abc');
- $response = $request->send();
-
- // Create a DELETE request using an absolute URL
- $request = $client->delete('http://www.example.com/path?query=123&value=abc');
- $response = $request->send();
-
- // Create a PUT request using the contents of a PHP stream as the body
- // Specify custom HTTP headers
- $request = $client->put('http://www.example.com/upload', array(
- 'X-Header' => 'My Header'
- ), fopen('http://www.test.com/', 'r'));
- $response = $request->send();
-
- // Create a POST request and add the POST files manually
- $request = $client->post('http://localhost:8983/solr/update')
- ->addPostFiles(array('file' => '/path/to/documents.xml'));
- $response = $request->send();
-
- // Check if a resource supports the DELETE method
- $supportsDelete = $client->options('/path')->send()->isMethodAllowed('DELETE');
- $response = $request->send();
-
-Client objects create Request objects using a request factory (``Guzzle\Http\Message\RequestFactoryInterface``).
-You can inject a custom request factory into the Client using ``$client->setRequestFactory()``, but you can typically
-rely on a Client's default request factory.
-
-Static clients
---------------
-
-You can use Guzzle's static client facade to more easily send simple HTTP requests.
-
-.. code-block:: php
-
- // Mount the client so that you can access it at \Guzzle
- Guzzle\Http\StaticClient::mount();
- $response = Guzzle::get('http://guzzlephp.org');
-
-Each request method of the static client (e.g. ``get()``, ``post()`, ``put()``, etc) accepts an associative array of request
-options to apply to the request.
-
-.. code-block:: php
-
- $response = Guzzle::post('http://test.com', array(
- 'headers' => array('X-Foo' => 'Bar'),
- 'body' => array('Test' => '123'),
- 'timeout' => 10
- ));
-
-.. _request-options:
-
-Request options
----------------
-
-Request options can be specified when creating a request or in the ``request.options`` parameter of a client. These
-options can control various aspects of a request including: headers to send, query string data, where the response
-should be downloaded, proxies, auth, etc.
-
-headers
-~~~~~~~
-
-Associative array of headers to apply to the request. When specified in the ``$options`` argument of a client creational
-method (e.g. ``get()``, ``post()``, etc), the headers in the ``$options`` array will overwrite headers specified in the
-``$headers`` array.
-
-.. code-block:: php
-
- $request = $client->get($url, array(), array(
- 'headers' => array('X-Foo' => 'Bar')
- ));
-
-Headers can be specified on a client to add default headers to every request sent by a client.
-
-.. code-block:: php
-
- $client = new Guzzle\Http\Client();
-
- // Set a single header using path syntax
- $client->setDefaultOption('headers/X-Foo', 'Bar');
-
- // Set all headers
- $client->setDefaultOption('headers', array('X-Foo' => 'Bar'));
-
-.. note::
-
- In addition to setting request options when creating requests or using the ``setDefaultOption()`` method, any
- default client request option can be set using a client's config object:
-
- .. code-block:: php
-
- $client->getConfig()->setPath('request.options/headers/X-Foo', 'Bar');
-
-query
-~~~~~
-
-Associative array of query string parameters to the request. When specified in the ``$options`` argument of a client
-creational method, the query string parameters in the ``$options`` array will overwrite query string parameters
-specified in the `$url`.
-
-.. code-block:: php
-
- $request = $client->get($url, array(), array(
- 'query' => array('abc' => '123')
- ));
-
-Query string parameters can be specified on a client to add default query string parameters to every request sent by a
-client.
-
-.. code-block:: php
-
- $client = new Guzzle\Http\Client();
-
- // Set a single query string parameter using path syntax
- $client->setDefaultOption('query/abc', '123');
-
- // Set an array of default query string parameters
- $client->setDefaultOption('query', array('abc' => '123'));
-
-body
-~~~~
-
-Sets the body of a request. The value supplied to the body option can be a ``Guzzle\Http\EntityBodyInterface``, string,
-fopen resource, or array when sending POST requests. When a ``body`` request option is supplied, the option value will
-overwrite the ``$body`` argument of a client creational method.
-
-auth
-~~~~
-
-Specifies and array of HTTP authorization parameters parameters to use with the request. The array must contain the
-username in index [0], the password in index [1], and can optionally contain the authentication type in index [2].
-The available authentication types are: "Basic" (default), "Digest", "NTLM", or "Any".
-
-.. code-block:: php
-
- $request = $client->get($url, array(), array(
- 'auth' => array('username', 'password', 'Digest')
- ));
-
- // You can add auth headers to every request of a client
- $client->setDefaultOption('auth', array('username', 'password', 'Digest'));
-
-cookies
-~~~~~~~
-
-Specifies an associative array of cookies to add to the request.
-
-allow_redirects
-~~~~~~~~~~~~~~~
-
-Specifies whether or not the request should follow redirects. Requests will follow redirects by default. Set
-``allow_redirects`` to ``false`` to disable redirects.
-
-save_to
-~~~~~~~
-
-The ``save_to`` option specifies where the body of a response is downloaded. You can pass the path to a file, an fopen
-resource, or a ``Guzzle\Http\EntityBodyInterface`` object.
-
-See :ref:`Changing where a response is downloaded <request-set-response-body>` for more information on setting the
-`save_to` option.
-
-events
-~~~~~~
-
-The `events` option makes it easy to attach listeners to the various events emitted by a request object. The `events`
-options must be an associative array mapping an event name to a Closure or array the contains a Closure and the
-priority of the event.
-
-.. code-block:: php
-
- $request = $client->get($url, array(), array(
- 'events' => array(
- 'request.before_send' => function (\Guzzle\Common\Event $e) {
- echo 'About to send ' . $e['request'];
- }
- )
- ));
-
- // Using the static client:
- Guzzle::get($url, array(
- 'events' => array(
- 'request.before_send' => function (\Guzzle\Common\Event $e) {
- echo 'About to send ' . $e['request'];
- }
- )
- ));
-
-plugins
-~~~~~~~
-
-The `plugins` options makes it easy to attach an array of plugins to a request.
-
-.. code-block:: php
-
- // Using the static client:
- Guzzle::get($url, array(
- 'plugins' => array(
- new Guzzle\Plugin\Cache\CachePlugin(),
- new Guzzle\Plugin\Cookie\CookiePlugin()
- )
- ));
-
-exceptions
-~~~~~~~~~~
-
-The `exceptions` option can be used to disable throwing exceptions for unsuccessful HTTP response codes
-(e.g. 404, 500, etc). Set `exceptions` to false to not throw exceptions.
-
-params
-~~~~~~
-
-The `params` options can be used to specify an associative array of data parameters to add to a request. Note that
-these are not query string parameters.
-
-timeout / connect_timeout
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can specify the maximum number of seconds to allow for an entire transfer to take place before timing out using
-the `timeout` request option. You can specify the maximum number of seconds to wait while trying to connect using the
-`connect_timeout` request option. Set either of these options to 0 to wait indefinitely.
-
-.. code-block:: php
-
- $request = $client->get('http://www.example.com', array(), array(
- 'timeout' => 20,
- 'connect_timeout' => 1.5
- ));
-
-verify
-~~~~~~
-
-Set to true to enable SSL certificate validation (the default), false to disable SSL certificate validation, or supply
-the path to a CA bundle to enable verification using a custom certificate.
-
-cert
-~~~~
-
-The `cert` option lets you specify a PEM formatted SSL client certificate to use with servers that require one. If the
-certificate requires a password, provide an array with the password as the second item.
-
-This would typically be used in conjunction with the `ssl_key` option.
-
-.. code-block:: php
-
- $request = $client->get('https://www.example.com', array(), array(
- 'cert' => '/etc/pki/client_certificate.pem'
- )
-
- $request = $client->get('https://www.example.com', array(), array(
- 'cert' => array('/etc/pki/client_certificate.pem', 's3cr3tp455w0rd')
- )
-
-ssl_key
-~~~~~~~
-
-The `ssl_key` option lets you specify a file containing your PEM formatted private key, optionally protected by a password.
-Note: your password is sensitive, keep the PHP script containing it safe.
-
-This would typically be used in conjunction with the `cert` option.
-
-.. code-block:: php
-
- $request = $client->get('https://www.example.com', array(), array(
- 'ssl_key' => '/etc/pki/private_key.pem'
- )
-
- $request = $client->get('https://www.example.com', array(), array(
- 'ssl_key' => array('/etc/pki/private_key.pem', 's3cr3tp455w0rd')
- )
-
-proxy
-~~~~~
-
-The `proxy` option is used to specify an HTTP proxy (e.g. `http://username:password@192.168.16.1:10`).
-
-debug
-~~~~~
-
-The `debug` option is used to show verbose cURL output for a transfer.
-
-stream
-~~~~~~
-
-When using a static client, you can set the `stream` option to true to return a `Guzzle\Stream\Stream` object that can
-be used to pull data from a stream as needed (rather than have cURL download the entire contents of a response to a
-stream all at once).
-
-.. code-block:: php
-
- $stream = Guzzle::get('http://guzzlephp.org', array('stream' => true));
- while (!$stream->feof()) {
- echo $stream->readLine();
- }
-
-Sending requests
-----------------
-
-Requests can be sent by calling the ``send()`` method of a Request object, but you can also send requests using the
-``send()`` method of a Client.
-
-.. code-block:: php
-
- $request = $client->get('http://www.amazon.com');
- $response = $client->send($request);
-
-Sending requests in parallel
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The Client's ``send()`` method accept a single ``Guzzle\Http\Message\RequestInterface`` object or an array of
-RequestInterface objects. When an array is specified, the requests will be sent in parallel.
-
-Sending many HTTP requests serially (one at a time) can cause an unnecessary delay in a script's execution. Each
-request must complete before a subsequent request can be sent. By sending requests in parallel, a pool of HTTP
-requests can complete at the speed of the slowest request in the pool, significantly reducing the amount of time
-needed to execute multiple HTTP requests. Guzzle provides a wrapper for the curl_multi functions in PHP.
-
-Here's an example of sending three requests in parallel using a client object:
-
-.. code-block:: php
-
- use Guzzle\Common\Exception\MultiTransferException;
-
- try {
- $responses = $client->send(array(
- $client->get('http://www.google.com/'),
- $client->head('http://www.google.com/'),
- $client->get('https://www.github.com/')
- ));
- } catch (MultiTransferException $e) {
-
- echo "The following exceptions were encountered:\n";
- foreach ($e as $exception) {
- echo $exception->getMessage() . "\n";
- }
-
- echo "The following requests failed:\n";
- foreach ($e->getFailedRequests() as $request) {
- echo $request . "\n\n";
- }
-
- echo "The following requests succeeded:\n";
- foreach ($e->getSuccessfulRequests() as $request) {
- echo $request . "\n\n";
- }
- }
-
-If the requests succeed, an array of ``Guzzle\Http\Message\Response`` objects are returned. A single request failure
-will not cause the entire pool of requests to fail. Any exceptions thrown while transferring a pool of requests will
-be aggregated into a ``Guzzle\Common\Exception\MultiTransferException`` exception.
-
-Plugins and events
-------------------
-
-Guzzle provides easy to use request plugins that add behavior to requests based on signal slot event notifications
-powered by the
-`Symfony2 Event Dispatcher component <http://symfony.com/doc/2.0/components/event_dispatcher/introduction.html>`_. Any
-event listener or subscriber attached to a Client object will automatically be attached to each request created by the
-client.
-
-Using the same cookie session for each request
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Attach a ``Guzzle\Plugin\Cookie\CookiePlugin`` to a client which will in turn add support for cookies to every request
-created by a client, and each request will use the same cookie session:
-
-.. code-block:: php
-
- use Guzzle\Plugin\Cookie\CookiePlugin;
- use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
-
- // Create a new cookie plugin
- $cookiePlugin = new CookiePlugin(new ArrayCookieJar());
-
- // Add the cookie plugin to the client
- $client->addSubscriber($cookiePlugin);
-
-.. _client-events:
-
-Events emitted from a client
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A ``Guzzle\Http\Client`` object emits the following events:
-
-+------------------------------+--------------------------------------------+------------------------------------------+
-| Event name | Description | Event data |
-+==============================+============================================+==========================================+
-| client.create_request | Called when a client creates a request | * client: The client |
-| | | * request: The created request |
-+------------------------------+--------------------------------------------+------------------------------------------+
-
-.. code-block:: php
-
- use Guzzle\Common\Event;
- use Guzzle\Http\Client;
-
- $client = new Client();
-
- // Add a listener that will echo out requests as they are created
- $client->getEventDispatcher()->addListener('client.create_request', function (Event $e) {
- echo 'Client object: ' . spl_object_hash($e['client']) . "\n";
- echo "Request object: {$e['request']}\n";
- });
diff --git a/inc/mailgun/guzzle/guzzle/docs/http-client/entity-bodies.rst b/inc/mailgun/guzzle/guzzle/docs/http-client/entity-bodies.rst
deleted file mode 100644
index 823b0c0..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/http-client/entity-bodies.rst
+++ /dev/null
@@ -1,151 +0,0 @@
-===========================
-Request and response bodies
-===========================
-
-`Entity body <http://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html>`_ is the term used for the body of an HTTP
-message. The entity body of requests and responses is inherently a
-`PHP stream <http://php.net/manual/en/book.stream.php>`_ in Guzzle. The body of the request can be either a string or
-a PHP stream which are converted into a ``Guzzle\Http\EntityBody`` object using its factory method. When using a
-string, the entity body is stored in a `temp PHP stream <http://www.php.net/manual/en/wrappers.php.php>`_. The use of
-temp PHP streams helps to protect your application from running out of memory when sending or receiving large entity
-bodies in your messages. When more than 2MB of data is stored in a temp stream, it automatically stores the data on
-disk rather than in memory.
-
-EntityBody objects provide a great deal of functionality: compression, decompression, calculate the Content-MD5,
-calculate the Content-Length (when the resource is repeatable), guessing the Content-Type, and more. Guzzle doesn't
-need to load an entire entity body into a string when sending or retrieving data; entity bodies are streamed when
-being uploaded and downloaded.
-
-Here's an example of gzip compressing a text file then sending the file to a URL:
-
-.. code-block:: php
-
- use Guzzle\Http\EntityBody;
-
- $body = EntityBody::factory(fopen('/path/to/file.txt', 'r+'));
- echo $body->read(1024);
- $body->seek(0, SEEK_END);
- $body->write('foo');
- echo $body->ftell();
- $body->rewind();
-
- // Send a request using the body
- $response = $client->put('http://localhost:8080/uploads', null, $body)->send();
-
-The body of the request can be specified in the ``Client::put()`` or ``Client::post()`` method, or, you can specify
-the body of the request by calling the ``setBody()`` method of any
-``Guzzle\Http\Message\EntityEnclosingRequestInterface`` object.
-
-Compression
------------
-
-You can compress the contents of an EntityBody object using the ``compress()`` method. The compress method accepts a
-filter that must match to one of the supported
-`PHP stream filters <http://www.php.net/manual/en/filters.compression.php>`_ on your system (e.g. `zlib.deflate`,
-``bzip2.compress``, etc). Compressing an entity body will stream the entire entity body through a stream compression
-filter into a temporary PHP stream. You can uncompress an entity body using the ``uncompress()`` method and passing
-the PHP stream filter to use when decompressing the stream (e.g. ``zlib.inflate``).
-
-.. code-block:: php
-
- use Guzzle\Http\EntityBody;
-
- $body = EntityBody::factory(fopen('/tmp/test.txt', 'r+'));
- echo $body->getSize();
- // >>> 1048576
-
- // Compress using the default zlib.deflate filter
- $body->compress();
- echo $body->getSize();
- // >>> 314572
-
- // Decompress the stream
- $body->uncompress();
- echo $body->getSize();
- // >>> 1048576
-
-Decorators
-----------
-
-Guzzle provides several EntityBody decorators that can be used to add functionality to an EntityBody at runtime.
-
-IoEmittingEntityBody
-~~~~~~~~~~~~~~~~~~~~
-
-This decorator will emit events when data is read from a stream or written to a stream. Add an event subscriber to the
-entity body's ``body.read`` or ``body.write`` methods to receive notifications when data data is transferred.
-
-.. code-block:: php
-
- use Guzzle\Common\Event;
- use Guzzle\Http\EntityBody;
- use Guzzle\Http\IoEmittingEntityBody;
-
- $original = EntityBody::factory(fopen('/tmp/test.txt', 'r+'));
- $body = new IoEmittingEntityBody($original);
-
- // Listen for read events
- $body->getEventDispatcher()->addListener('body.read', function (Event $e) {
- // Grab data from the event
- $entityBody = $e['body'];
- // Amount of data retrieved from the body
- $lengthOfData = $e['length'];
- // The actual data that was read
- $data = $e['read'];
- });
-
- // Listen for write events
- $body->getEventDispatcher()->addListener('body.write', function (Event $e) {
- // Grab data from the event
- $entityBody = $e['body'];
- // The data that was written
- $data = $e['write'];
- // The actual amount of data that was written
- $data = $e['read'];
- });
-
-ReadLimitEntityBody
-~~~~~~~~~~~~~~~~~~~
-
-The ReadLimitEntityBody decorator can be used to transfer a subset or slice of an existing EntityBody object. This can
-be useful for breaking a large file into smaller pieces to be sent in chunks (e.g. Amazon S3's multipart upload API).
-
-.. code-block:: php
-
- use Guzzle\Http\EntityBody;
- use Guzzle\Http\ReadLimitEntityBody;
-
- $original = EntityBody::factory(fopen('/tmp/test.txt', 'r+'));
- echo $original->getSize();
- // >>> 1048576
-
- // Limit the size of the body to 1024 bytes and start reading from byte 2048
- $body = new ReadLimitEntityBody($original, 1024, 2048);
- echo $body->getSize();
- // >>> 1024
- echo $body->ftell();
- // >>> 0
-
-CachingEntityBody
-~~~~~~~~~~~~~~~~~
-
-The CachingEntityBody decorator is used to allow seeking over previously read bytes on non-seekable read streams. This
-can be useful when transferring a non-seekable entity body fails due to needing to rewind the stream (for example,
-resulting from a redirect). Data that is read from the remote stream will be buffered in a PHP temp stream so that
-previously read bytes are cached first in memory, then on disk.
-
-.. code-block:: php
-
- use Guzzle\Http\EntityBody;
- use Guzzle\Http\CachingEntityBody;
-
- $original = EntityBody::factory(fopen('http://www.google.com', 'r'));
- $body = new CachingEntityBody($original);
-
- $body->read(1024);
- echo $body->ftell();
- // >>> 1024
-
- $body->seek(0);
- echo $body->ftell();
- // >>> 0
diff --git a/inc/mailgun/guzzle/guzzle/docs/http-client/http-redirects.rst b/inc/mailgun/guzzle/guzzle/docs/http-client/http-redirects.rst
deleted file mode 100644
index 32ba268..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/http-client/http-redirects.rst
+++ /dev/null
@@ -1,99 +0,0 @@
-==============
-HTTP redirects
-==============
-
-By default, Guzzle will automatically follow redirects using the non-RFC compliant implementation used by most web
-browsers. This means that redirects for POST requests are followed by a GET request. You can force RFC compliance by
-enabling the strict mode on a request's parameter object:
-
-.. code-block:: php
-
- // Set per request
- $request = $client->post();
- $request->getParams()->set('redirect.strict', true);
-
- // You can set globally on a client so all requests use strict redirects
- $client->getConfig()->set('request.params', array(
- 'redirect.strict' => true
- ));
-
-By default, Guzzle will redirect up to 5 times before throwing a ``Guzzle\Http\Exception\TooManyRedirectsException``.
-You can raise or lower this value using the ``redirect.max`` parameter of a request object:
-
-.. code-block:: php
-
- $request->getParams()->set('redirect.max', 2);
-
-Redirect history
-----------------
-
-You can get the number of redirects of a request using the resulting response object's ``getRedirectCount()`` method.
-Similar to cURL's ``effective_url`` property, Guzzle provides the effective URL, or the last redirect URL that returned
-the request, in a response's ``getEffectiveUrl()`` method.
-
-When testing or debugging, it is often useful to see a history of redirects for a particular request. This can be
-achieved using the HistoryPlugin.
-
-.. code-block:: php
-
- $request = $client->get('/');
- $history = new Guzzle\Plugin\History\HistoryPlugin();
- $request->addSubscriber($history);
- $response = $request->send();
-
- // Get the last redirect URL or the URL of the request that received
- // this response
- echo $response->getEffectiveUrl();
-
- // Get the number of redirects
- echo $response->getRedirectCount();
-
- // Iterate over each sent request and response
- foreach ($history->getAll() as $transaction) {
- // Request object
- echo $transaction['request']->getUrl() . "\n";
- // Response object
- echo $transaction['response']->getEffectiveUrl() . "\n";
- }
-
- // Or, simply cast the HistoryPlugin to a string to view each request and response
- echo $history;
-
-Disabling redirects
--------------------
-
-You can disable redirects on a client by passing a configuration option in the client's constructor:
-
-.. code-block:: php
-
- $client = new Client(null, array('redirect.disable' => true));
-
-You can also disable redirects per request:
-
-.. code-block:: php
-
- $request = $client->get($url, array(), array('allow_redirects' => false));
-
-Redirects and non-repeatable streams
-------------------------------------
-
-If you are redirected when sending data from a non-repeatable stream and some of the data has been read off of the
-stream, then you will get a ``Guzzle\Http\Exception\CouldNotRewindStreamException``. You can get around this error by
-adding a custom rewind method to the entity body object being sent in the request.
-
-.. code-block:: php
-
- $request = $client->post(
- 'http://httpbin.com/redirect/2',
- null,
- fopen('http://httpbin.com/get', 'r')
- );
-
- // Add a custom function that can be used to rewind the stream
- // (reopen in this example)
- $request->getBody()->setRewindFunction(function ($body) {
- $body->setStream(fopen('http://httpbin.com/get', 'r'));
- return true;
- );
-
- $response = $client->send();
diff --git a/inc/mailgun/guzzle/guzzle/docs/http-client/request.rst b/inc/mailgun/guzzle/guzzle/docs/http-client/request.rst
deleted file mode 100644
index a8387a9..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/http-client/request.rst
+++ /dev/null
@@ -1,667 +0,0 @@
-=====================
-Using Request objects
-=====================
-
-HTTP request messages
----------------------
-
-Request objects are all about building an HTTP message. Each part of an HTTP request message can be set individually
-using methods on the request object or set in bulk using the ``setUrl()`` method. Here's the format of an HTTP request
-with each part of the request referencing the method used to change it::
-
- PUT(a) /path(b)?query=123(c) HTTP/1.1(d)
- X-Header(e): header
- Content-Length(e): 4
-
- data(f)
-
-+-------------------------+---------------------------------------------------------------------------------+
-| a. **Method** | The request method can only be set when instantiating a request |
-+-------------------------+---------------------------------------------------------------------------------+
-| b. **Path** | ``$request->setPath('/path');`` |
-+-------------------------+---------------------------------------------------------------------------------+
-| c. **Query** | ``$request->getQuery()->set('query', '123');`` |
-+-------------------------+---------------------------------------------------------------------------------+
-| d. **Protocol version** | ``$request->setProtocolVersion('1.1');`` |
-+-------------------------+---------------------------------------------------------------------------------+
-| e. **Header** | ``$request->setHeader('X-Header', 'header');`` |
-+-------------------------+---------------------------------------------------------------------------------+
-| f. **Entity Body** | ``$request->setBody('data'); // Only available with PUT, POST, PATCH, DELETE`` |
-+-------------------------+---------------------------------------------------------------------------------+
-
-Creating requests with a client
--------------------------------
-
-Client objects are responsible for creating HTTP request objects.
-
-GET requests
-~~~~~~~~~~~~
-
-`GET requests <http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3>`_ are the most common form of HTTP
-requests. When you visit a website in your browser, the HTML of the website is downloaded using a GET request. GET
-requests are idempotent requests that are typically used to download content (an entity) identified by a request URL.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
-
- $client = new Client();
-
- // Create a request that has a query string and an X-Foo header
- $request = $client->get('http://www.amazon.com?a=1', array('X-Foo' => 'Bar'));
-
- // Send the request and get the response
- $response = $request->send();
-
-You can change where the body of a response is downloaded on any request using the
-``$request->setResponseBody(string|EntityBodyInterface|resource)`` method of a request. You can also set the ``save_to``
-option of a request:
-
-.. code-block:: php
-
- // Send the response body to a file
- $request = $client->get('http://test.com', array(), array('save_to' => '/path/to/file'));
-
- // Send the response body to an fopen resource
- $request = $client->get('http://test.com', array(), array('save_to' => fopen('/path/to/file', 'w')));
-
-HEAD requests
-~~~~~~~~~~~~~
-
-`HEAD requests <http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4>`_ work exactly like GET requests except
-that they do not actually download the response body (entity) of the response message. HEAD requests are useful for
-retrieving meta information about an entity identified by a Request-URI.
-
-.. code-block:: php
-
- $client = new Guzzle\Http\Client();
- $request = $client->head('http://www.amazon.com');
- $response = $request->send();
- echo $response->getContentLength();
- // >>> Will output the Content-Length header value
-
-DELETE requests
-~~~~~~~~~~~~~~~
-
-A `DELETE method <http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.7>`_ requests that the origin server
-delete the resource identified by the Request-URI.
-
-.. code-block:: php
-
- $client = new Guzzle\Http\Client();
- $request = $client->delete('http://example.com');
- $response = $request->send();
-
-POST requests
-~~~~~~~~~~~~~
-
-While `POST requests <http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5>`_ can be used for a number of
-reasons, POST requests are often used when submitting HTML form data to a website. POST requests can include an entity
-body in the HTTP request.
-
-POST requests in Guzzle are sent with an ``application/x-www-form-urlencoded`` Content-Type header if POST fields are
-present but no files are being sent in the POST. If files are specified in the POST request, then the Content-Type
-header will become ``multipart/form-data``.
-
-The ``post()`` method of a client object accepts four arguments: the URL, optional headers, post fields, and an array of
-request options. To send files in the POST request, prepend the ``@`` symbol to the array value (just like you would if
-you were using the PHP ``curl_setopt`` function).
-
-Here's how to create a multipart/form-data POST request containing files and fields:
-
-.. code-block:: php
-
- $request = $client->post('http://httpbin.org/post', array(), array(
- 'custom_field' => 'my custom value',
- 'file_field' => '@/path/to/file.xml'
- ));
-
- $response = $request->send();
-
-.. note::
-
- Remember to **always** sanitize user input when sending POST requests:
-
- .. code-block:: php
-
- // Prevent users from accessing sensitive files by sanitizing input
- $_POST = array('firstname' => '@/etc/passwd');
- $request = $client->post('http://www.example.com', array(), array (
- 'firstname' => str_replace('@', '', $_POST['firstname'])
- ));
-
-You can alternatively build up the contents of a POST request.
-
-.. code-block:: php
-
- $request = $client->post('http://httpbin.org/post')
- ->setPostField('custom_field', 'my custom value')
- ->addPostFile('file', '/path/to/file.xml');
-
- $response = $request->send();
-
-Raw POST data
-^^^^^^^^^^^^^
-
-POST requests can also contain raw POST data that is not related to HTML forms.
-
-.. code-block:: php
-
- $request = $client->post('http://httpbin.org/post', array(), 'this is the body');
- $response = $request->send();
-
-You can set the body of POST request using the ``setBody()`` method of the
-``Guzzle\Http\Message\EntityEnclosingRequest`` object. This method accepts a string, a resource returned from
-``fopen``, or a ``Guzzle\Http\EntityBodyInterface`` object.
-
-.. code-block:: php
-
- $request = $client->post('http://httpbin.org/post');
- // Set the body of the POST to stream the contents of /path/to/large_body.txt
- $request->setBody(fopen('/path/to/large_body.txt', 'r'));
- $response = $request->send();
-
-PUT requests
-~~~~~~~~~~~~
-
-The `PUT method <http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6>`_ requests that the enclosed entity be
-stored under the supplied Request-URI. PUT requests are similar to POST requests in that they both can send an entity
-body in the request message.
-
-The body of a PUT request (any any ``Guzzle\Http\Message\EntityEnclosingRequestInterface`` object) is always stored as
-a ``Guzzle\Http\Message\EntityBodyInterface`` object. This allows a great deal of flexibility when sending data to a
-remote server. For example, you can stream the contents of a stream returned by fopen, stream the contents of a
-callback function, or simply send a string of data.
-
-.. code-block:: php
-
- $request = $client->put('http://httpbin.org/put', array(), 'this is the body');
- $response = $request->send();
-
-Just like with POST, PATH, and DELETE requests, you can set the body of a PUT request using the ``setBody()`` method.
-
-.. code-block:: php
-
- $request = $client->put('http://httpbin.org/put');
- $request->setBody(fopen('/path/to/large_body.txt', 'r'));
- $response = $request->send();
-
-PATCH requests
-~~~~~~~~~~~~~~
-
-`PATCH requests <http://tools.ietf.org/html/rfc5789>`_ are used to modify a resource.
-
-.. code-block:: php
-
- $request = $client->patch('http://httpbin.org', array(), 'this is the body');
- $response = $request->send();
-
-OPTIONS requests
-~~~~~~~~~~~~~~~~
-
-The `OPTIONS method <http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.2>`_ represents a request for
-information about the communication options available on the request/response chain identified by the Request-URI.
-
-.. code-block:: php
-
- $request = $client->options('http://httpbin.org');
- $response = $request->send();
-
- // Check if the PUT method is supported by this resource
- var_export($response->isMethodAllows('PUT'));
-
-Custom requests
-~~~~~~~~~~~~~~~
-
-You can create custom HTTP requests that use non-standard HTTP methods using the ``createRequest()`` method of a
-client object.
-
-.. code-block:: php
-
- $request = $client->createRequest('COPY', 'http://example.com/foo', array(
- 'Destination' => 'http://example.com/bar',
- 'Overwrite' => 'T'
- ));
- $response = $request->send();
-
-Query string parameters
------------------------
-
-Query string parameters of a request are owned by a request's ``Guzzle\Http\Query`` object that is accessible by
-calling ``$request->getQuery()``. The Query class extends from ``Guzzle\Common\Collection`` and allows you to set one
-or more query string parameters as key value pairs. You can set a parameter on a Query object using the
-``set($key, $value)`` method or access the query string object like an associative array. Any previously specified
-value for a key will be overwritten when using ``set()``. Use ``add($key, $value)`` to add a value to query string
-object, and in the event of a collision with an existing value at a specific key, the value will be converted to an
-array that contains all of the previously set values.
-
-.. code-block:: php
-
- $request = new Guzzle\Http\Message\Request('GET', 'http://www.example.com?foo=bar&abc=123');
-
- $query = $request->getQuery();
- echo "{$query}\n";
- // >>> foo=bar&abc=123
-
- $query->remove('abc');
- echo "{$query}\n";
- // >>> foo=bar
-
- $query->set('foo', 'baz');
- echo "{$query}\n";
- // >>> foo=baz
-
- $query->add('foo', 'bar');
- echo "{$query}\n";
- // >>> foo%5B0%5D=baz&foo%5B1%5D=bar
-
-Whoah! What happened there? When ``foo=bar`` was added to the existing ``foo=baz`` query string parameter, the
-aggregator associated with the Query object was used to help convert multi-value query string parameters into a string.
-Let's disable URL-encoding to better see what's happening.
-
-.. code-block:: php
-
- $query->useUrlEncoding(false);
- echo "{$query}\n";
- // >>> foo[0]=baz&foo[1]=bar
-
-.. note::
-
- URL encoding can be disabled by passing false, enabled by passing true, set to use RFC 1738 by passing
- ``Query::FORM_URLENCODED`` (internally uses PHP's ``urlencode`` function), or set to RFC 3986 by passing
- ``Query::RFC_3986`` (this is the default and internally uses PHP's ``rawurlencode`` function).
-
-As you can see, the multiple values were converted into query string parameters following the default PHP convention of
-adding numerically indexed square bracket suffixes to each key (``foo[0]=baz&foo[1]=bar``). The strategy used to convert
-multi-value parameters into a string can be customized using the ``setAggregator()`` method of the Query class. Guzzle
-ships with the following query string aggregators by default:
-
-1. ``Guzzle\Http\QueryAggregator\PhpAggregator``: Aggregates using PHP style brackets (e.g. ``foo[0]=baz&foo[1]=bar``)
-2. ``Guzzle\Http\QueryAggregator\DuplicateAggregator``: Performs no aggregation and allows for key value pairs to be
- repeated in a URL (e.g. ``foo=baz&foo=bar``)
-3. ``Guzzle\Http\QueryAggregator\CommaAggregator``: Aggregates using commas (e.g. ``foo=baz,bar``)
-
-.. _http-message-headers:
-
-HTTP Message Headers
---------------------
-
-HTTP message headers are case insensitive, multiple occurrences of any header can be present in an HTTP message
-(whether it's valid or not), and some servers require specific casing of particular headers. Because of this, request
-and response headers are stored in ``Guzzle\Http\Message\Header`` objects. The Header object can be cast as a string,
-counted, or iterated to retrieve each value from the header. Casting a Header object to a string will return all of
-the header values concatenated together using a glue string (typically ", ").
-
-A request (and response) object have several methods that allow you to retrieve and modify headers.
-
-* ``getHeaders()``: Get all of the headers of a message as a ``Guzzle\Http\Message\Header\HeaderCollection`` object.
-* ``getHeader($header)``: Get a specific header from a message. If the header exists, you'll get a
- ``Guzzle\Http\Message\Header`` object. If the header does not exist, this methods returns ``null``.
-* ``hasHeader($header)``: Returns true or false based on if the message has a particular header.
-* ``setHeader($header, $value)``: Set a header value and overwrite any previously set value for this header.
-* ``addHeader($header, $value)``: Add a header with a particular name. If a previous value was already set by the same,
- then the header will contain multiple values.
-* ``removeHeader($header)``: Remove a header by name from the message.
-
-.. code-block:: php
-
- $request = new Request('GET', 'http://httpbin.com/cookies');
- // addHeader will set and append to any existing header values
- $request->addHeader('Foo', 'bar');
- $request->addHeader('foo', 'baz');
- // setHeader overwrites any existing values
- $request->setHeader('Test', '123');
-
- // Request headers can be cast as a string
- echo $request->getHeader('Foo');
- // >>> bar, baz
- echo $request->getHeader('Test');
- // >>> 123
-
- // You can count the number of headers of a particular case insensitive name
- echo count($request->getHeader('foO'));
- // >>> 2
-
- // You can iterate over Header objects
- foreach ($request->getHeader('foo') as $header) {
- echo $header . "\n";
- }
-
- // You can get all of the request headers as a Guzzle\Http\Message\Header\HeaderCollection object
- $headers = $request->getHeaders();
-
- // Missing headers return NULL
- var_export($request->getHeader('Missing'));
- // >>> null
-
- // You can see all of the different variations of a header by calling raw() on the Header
- var_export($request->getHeader('foo')->raw());
-
-Setting the body of a request
------------------------------
-
-Requests that can send a body (e.g. PUT, POST, DELETE, PATCH) are instances of
-``Guzzle\Http\Message\EntityEnclosingRequestInterface``. Entity enclosing requests contain several methods that allow
-you to specify the body to send with a request.
-
-Use the ``setBody()`` method of a request to set the body that will be sent with a request. This method accepts a
-string, a resource returned by ``fopen()``, an array, or an instance of ``Guzzle\Http\EntityBodyInterface``. The body
-will then be streamed from the underlying ``EntityBodyInterface`` object owned by the request. When setting the body
-of the request, you can optionally specify a Content-Type header and whether or not to force the request to use
-chunked Transfer-Encoding.
-
-.. code-block:: php
-
- $request = $client->put('/user.json');
- $request->setBody('{"foo":"baz"}', 'application/json');
-
-Content-Type header
-~~~~~~~~~~~~~~~~~~~
-
-Guzzle will automatically add a Content-Type header to a request if the Content-Type can be guessed based on the file
-extension of the payload being sent or the file extension present in the path of a request.
-
-.. code-block:: php
-
- $request = $client->put('/user.json', array(), '{"foo":"bar"}');
- // The Content-Type was guessed based on the path of the request
- echo $request->getHeader('Content-Type');
- // >>> application/json
-
- $request = $client->put('/user.json');
- $request->setBody(fopen('/tmp/user_data.json', 'r'));
- // The Content-Type was guessed based on the path of the entity body
- echo $request->getHeader('Content-Type');
- // >>> application/json
-
-Transfer-Encoding: chunked header
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When sending HTTP requests that contain a payload, you must let the remote server know how to determine when the entire
-message has been sent. This usually is done by supplying a ``Content-Length`` header that tells the origin server the
-size of the body that is to be sent. In some cases, the size of the payload being sent in a request cannot be known
-before initiating the transfer. In these cases (when using HTTP/1.1), you can use the ``Transfer-Encoding: chunked``
-header.
-
-If the Content-Length cannot be determined (i.e. using a PHP ``http://`` stream), then Guzzle will automatically add
-the ``Transfer-Encoding: chunked`` header to the request.
-
-.. code-block:: php
-
- $request = $client->put('/user.json');
- $request->setBody(fopen('http://httpbin.org/get', 'r'));
-
- // The Content-Length could not be determined
- echo $request->getHeader('Transfer-Encoding');
- // >>> chunked
-
-See :doc:`/http-client/entity-bodies` for more information on entity bodies.
-
-Expect: 100-Continue header
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The ``Expect: 100-Continue`` header is used to help a client prevent sending a large payload to a server that will
-reject the request. This allows clients to fail fast rather than waste bandwidth sending an erroneous payload. Guzzle
-will automatically add the ``Expect: 100-Continue`` header to a request when the size of the payload exceeds 1MB or if
-the body of the request is not seekable (this helps to prevent errors when a non-seekable body request is redirected).
-
-.. note::
-
- If you find that your larger requests are taking too long to complete, you should first check if the
- ``Expect: 100-Continue`` header is being sent with the request. Some servers do not respond well to this header,
- which causes cURL to sleep for `1 second <http://curl.haxx.se/mail/lib-2010-01/0182.html>`_.
-
-POST fields and files
-~~~~~~~~~~~~~~~~~~~~~
-
-Any entity enclosing request can send POST style fields and files. This includes POST, PUT, PATCH, and DELETE requests.
-Any request that has set POST fields or files will use cURL's POST message functionality.
-
-.. code-block:: php
-
- $request = $client->post('/post');
- // Set an overwrite any previously specified value
- $request->setPostField('foo', 'bar');
- // Append a value to any existing values
- $request->getPostFields()->add('foo', 'baz');
- // Remove a POST field by name
- $request->removePostField('fizz');
-
- // Add a file to upload (forces multipart/form-data)
- $request->addPostFile('my_file', '/path/to/file', 'plain/text');
- // Remove a POST file by POST key name
- $request->removePostFile('my_other_file');
-
-.. tip::
-
- Adding a large number of POST fields to a POST request is faster if you use the ``addPostFields()`` method so that
- you can add and process multiple fields with a single call. Adding multiple POST files is also faster using
- ``addPostFiles()``.
-
-Working with cookies
---------------------
-
-Cookies can be modified and retrieved from a request using the following methods:
-
-.. code-block:: php
-
- $request->addCookie($name, $value);
- $request->removeCookie($name);
- $value = $request->getCookie($name);
- $valueArray = $request->getCookies();
-
-Use the :doc:`cookie plugin </plugins/cookie-plugin>` if you need to reuse cookies between requests.
-
-.. _request-set-response-body:
-
-Changing where a response is downloaded
-----------------------------------------
-
-When a request is sent, the body of the response will be stored in a PHP temp stream by default. You can change the
-location in which the response will be downloaded using ``$request->setResponseBody($body)`` or the ``save_to`` request
-option. This can be useful for downloading the contents of a URL to a specific file.
-
-Here's an example of using request options:
-
-.. code-block:: php
-
- $request = $this->client->get('http://example.com/large.mov', array(), array(
- 'save_to' => '/tmp/large_file.mov'
- ));
- $request->send();
- var_export(file_exists('/tmp/large_file.mov'));
- // >>> true
-
-Here's an example of using ``setResponseBody()``:
-
-.. code-block:: php
-
- $body = fopen('/tmp/large_file.mov', 'w');
- $request = $this->client->get('http://example.com/large.mov');
- $request->setResponseBody($body);
-
- // You can more easily specify the name of a file to save the contents
- // of the response to by passing a string to ``setResponseBody()``.
-
- $request = $this->client->get('http://example.com/large.mov');
- $request->setResponseBody('/tmp/large_file.mov');
-
-Custom cURL options
--------------------
-
-Most of the functionality implemented in the libcurl bindings has been simplified and abstracted by Guzzle. Developers
-who need access to `cURL specific functionality <http://www.php.net/curl_setopt>`_ can still add cURL handle
-specific behavior to Guzzle HTTP requests by modifying the cURL options collection of a request:
-
-.. code-block:: php
-
- $request->getCurlOptions()->set(CURLOPT_LOW_SPEED_LIMIT, 200);
-
-Other special options that can be set in the ``curl.options`` array include:
-
-+-------------------------+---------------------------------------------------------------------------------+
-| debug | Adds verbose cURL output to a temp stream owned by the cURL handle object |
-+-------------------------+---------------------------------------------------------------------------------+
-| progress | Instructs cURL to emit events when IO events occur. This allows you to be |
-| | notified when bytes are transferred over the wire by subscribing to a request's |
-| | ``curl.callback.read``, ``curl.callback.write``, and ``curl.callback.progress`` |
-| | events. |
-+-------------------------+---------------------------------------------------------------------------------+
-
-Request options
----------------
-
-Requests options can be specified when creating a request or in the ``request.options`` parameter of a client. These
-options can control various aspects of a request including: headers to send, query string data, where the response
-should be downloaded, proxies, auth, etc.
-
-.. code-block:: php
-
- $request = $client->get($url, $headers, array('proxy' => 'http://proxy.com'));
-
-See :ref:`Request options <request-options>` for more information.
-
-Working with errors
--------------------
-
-HTTP errors
-~~~~~~~~~~~
-
-Requests that receive a 4xx or 5xx response will throw a ``Guzzle\Http\Exception\BadResponseException``. More
-specifically, 4xx errors throw a ``Guzzle\Http\Exception\ClientErrorResponseException``, and 5xx errors throw a
-``Guzzle\Http\Exception\ServerErrorResponseException``. You can catch the specific exceptions or just catch the
-BadResponseException to deal with either type of error. Here's an example of catching a generic BadResponseException:
-
-.. code-block:: php
-
- try {
- $response = $client->get('/not_found.xml')->send();
- } catch (Guzzle\Http\Exception\BadResponseException $e) {
- echo 'Uh oh! ' . $e->getMessage();
- echo 'HTTP request URL: ' . $e->getRequest()->getUrl() . "\n";
- echo 'HTTP request: ' . $e->getRequest() . "\n";
- echo 'HTTP response status: ' . $e->getResponse()->getStatusCode() . "\n";
- echo 'HTTP response: ' . $e->getResponse() . "\n";
- }
-
-Throwing an exception when a 4xx or 5xx response is encountered is the default behavior of Guzzle requests. This
-behavior can be overridden by adding an event listener with a higher priority than -255 that stops event propagation.
-You can subscribe to ``request.error`` to receive notifications any time an unsuccessful response is received.
-
-You can change the response that will be associated with the request by calling ``setResponse()`` on the
-``$event['request']`` object passed into your listener, or by changing the ``$event['response']`` value of the
-``Guzzle\Common\Event`` object that is passed to your listener. Transparently changing the response associated with a
-request by modifying the event allows you to retry failed requests without complicating the code that uses the client.
-This might be useful for sending requests to a web service that has expiring auth tokens. When a response shows that
-your token has expired, you can get a new token, retry the request with the new token, and return the successful
-response to the user.
-
-Here's an example of retrying a request using updated authorization credentials when a 401 response is received,
-overriding the response of the original request with the new response, and still allowing the default exception
-behavior to be called when other non-200 response status codes are encountered:
-
-.. code-block:: php
-
- // Add custom error handling to any request created by this client
- $client->getEventDispatcher()->addListener('request.error', function(Event $event) {
-
- if ($event['response']->getStatusCode() == 401) {
-
- $newRequest = $event['request']->clone();
- $newRequest->setHeader('X-Auth-Header', MyApplication::getNewAuthToken());
- $newResponse = $newRequest->send();
-
- // Set the response object of the request without firing more events
- $event['response'] = $newResponse;
-
- // You can also change the response and fire the normal chain of
- // events by calling $event['request']->setResponse($newResponse);
-
- // Stop other events from firing when you override 401 responses
- $event->stopPropagation();
- }
-
- });
-
-cURL errors
-~~~~~~~~~~~
-
-Connection problems and cURL specific errors can also occur when transferring requests using Guzzle. When Guzzle
-encounters cURL specific errors while transferring a single request, a ``Guzzle\Http\Exception\CurlException`` is
-thrown with an informative error message and access to the cURL error message.
-
-A ``Guzzle\Http\Exception\MultiTransferException`` exception is thrown when a cURL specific error occurs while
-transferring multiple requests in parallel. You can then iterate over all of the exceptions encountered during the
-transfer.
-
-Plugins and events
-------------------
-
-Guzzle request objects expose various events that allow you to hook in custom logic. A request object owns a
-``Symfony\Component\EventDispatcher\EventDispatcher`` object that can be accessed by calling
-``$request->getEventDispatcher()``. You can use the event dispatcher to add listeners (a simple callback function) or
-event subscribers (classes that listen to specific events of a dispatcher). You can add event subscribers to a request
-directly by just calling ``$request->addSubscriber($mySubscriber);``.
-
-.. _request-events:
-
-Events emitted from a request
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A ``Guzzle\Http\Message\Request`` and ``Guzzle\Http\Message\EntityEnclosingRequest`` object emit the following events:
-
-+------------------------------+--------------------------------------------+------------------------------------------+
-| Event name | Description | Event data |
-+==============================+============================================+==========================================+
-| request.before_send | About to send request | * request: Request to be sent |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| request.sent | Sent the request | * request: Request that was sent |
-| | | * response: Received response |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| request.complete | Completed a full HTTP transaction | * request: Request that was sent |
-| | | * response: Received response |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| request.success | Completed a successful request | * request: Request that was sent |
-| | | * response: Received response |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| request.error | Completed an unsuccessful request | * request: Request that was sent |
-| | | * response: Received response |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| request.exception | An unsuccessful response was | * request: Request |
-| | received. | * response: Received response |
-| | | * exception: BadResponseException |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| request.receive.status_line | Received the start of a response | * line: Full response start line |
-| | | * status_code: Status code |
-| | | * reason_phrase: Reason phrase |
-| | | * previous_response: (e.g. redirect) |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| curl.callback.progress | cURL progress event (only dispatched when | * handle: CurlHandle |
-| | ``emit_io`` is set on a request's curl | * download_size: Total download size |
-| | options) | * downloaded: Bytes downloaded |
-| | | * upload_size: Total upload bytes |
-| | | * uploaded: Bytes uploaded |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| curl.callback.write | cURL event called when data is written to | * request: Request |
-| | an outgoing stream | * write: Data being written |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| curl.callback.read | cURL event called when data is written to | * request: Request |
-| | an incoming stream | * read: Data being read |
-+------------------------------+--------------------------------------------+------------------------------------------+
-
-Creating a request event listener
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Here's an example that listens to the ``request.complete`` event of a request and prints the request and response.
-
-.. code-block:: php
-
- use Guzzle\Common\Event;
-
- $request = $client->get('http://www.google.com');
-
- // Echo out the response that was received
- $request->getEventDispatcher()->addListener('request.complete', function (Event $e) {
- echo $e['request'] . "\n\n";
- echo $e['response'];
- });
diff --git a/inc/mailgun/guzzle/guzzle/docs/http-client/response.rst b/inc/mailgun/guzzle/guzzle/docs/http-client/response.rst
deleted file mode 100644
index ba48731..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/http-client/response.rst
+++ /dev/null
@@ -1,141 +0,0 @@
-======================
-Using Response objects
-======================
-
-Sending a request will return a ``Guzzle\Http\Message\Response`` object. You can view the raw HTTP response message by
-casting the Response object to a string. Casting the response to a string will return the entity body of the response
-as a string too, so this might be an expensive operation if the entity body is stored in a file or network stream. If
-you only want to see the response headers, you can call ``getRawHeaders()``.
-
-Response status line
---------------------
-
-The different parts of a response's `status line <http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1>`_
-(the first line of the response HTTP message) are easily retrievable.
-
-.. code-block:: php
-
- $response = $client->get('http://www.amazon.com')->send();
-
- echo $response->getStatusCode(); // >>> 200
- echo $response->getReasonPhrase(); // >>> OK
- echo $response->getProtocol(); // >>> HTTP
- echo $response->getProtocolVersion(); // >>> 1.1
-
-You can determine the type of the response using several helper methods:
-
-.. code-block:: php
-
- $response->isSuccessful(); // true
- $response->isInformational();
- $response->isRedirect();
- $response->isClientError();
- $response->isServerError();
-
-Response headers
-----------------
-
-The Response object contains helper methods for retrieving common response headers. These helper methods normalize the
-variations of HTTP response headers.
-
-.. code-block:: php
-
- $response->getCacheControl();
- $response->getContentType();
- $response->getContentLength();
- $response->getContentEncoding();
- $response->getContentMd5();
- $response->getEtag();
- // etc... There are methods for every known response header
-
-You can interact with the Response headers using the same exact methods used to interact with Request headers. See
-:ref:`http-message-headers` for more information.
-
-.. code-block:: php
-
- echo $response->getHeader('Content-Type');
- echo $response->getHeader('Content-Length');
- echo $response->getHeaders()['Content-Type']; // PHP 5.4
-
-Response body
--------------
-
-The entity body object of a response can be retrieved by calling ``$response->getBody()``. The response EntityBody can
-be cast to a string, or you can pass ``true`` to this method to retrieve the body as a string.
-
-.. code-block:: php
-
- $request = $client->get('http://www.amazon.com');
- $response = $request->send();
- echo $response->getBody();
-
-See :doc:`/http-client/entity-bodies` for more information on entity bodies.
-
-JSON Responses
-~~~~~~~~~~~~~~
-
-You can easily parse and use a JSON response as an array using the ``json()`` method of a response. This method will
-always return an array if the response is valid JSON or if the response body is empty. You will get an exception if you
-call this method and the response is not valid JSON.
-
-.. code-block:: php
-
- $data = $response->json();
- echo gettype($data);
- // >>> array
-
-XML Responses
-~~~~~~~~~~~~~
-
-You can easily parse and use a XML response as SimpleXMLElement object using the ``xml()`` method of a response. This
-method will always return a SimpleXMLElement object if the response is valid XML or if the response body is empty. You
-will get an exception if you call this method and the response is not valid XML.
-
-.. code-block:: php
-
- $xml = $response->xml();
- echo $xml->foo;
- // >>> Bar!
-
-Streaming responses
--------------------
-
-Some web services provide streaming APIs that allow a client to keep a HTTP request open for an extended period of
-time while polling and reading. Guzzle provides a simple way to convert HTTP request messages into
-``Guzzle\Stream\Stream`` objects so that you can send the initial headers of a request, read the response headers, and
-pull in the response body manually as needed.
-
-Here's an example using the Twitter Streaming API to track the keyword "bieber":
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Stream\PhpStreamRequestFactory;
-
- $client = new Client('https://stream.twitter.com/1');
-
- $request = $client->post('statuses/filter.json', null, array(
- 'track' => 'bieber'
- ));
-
- $request->setAuth('myusername', 'mypassword');
-
- $factory = new PhpStreamRequestFactory();
- $stream = $factory->fromRequest($request);
-
- // Read until the stream is closed
- while (!$stream->feof()) {
- // Read a line from the stream
- $line = $stream->readLine();
- // JSON decode the line of data
- $data = json_decode($line, true);
- }
-
-You can use the ``stream`` request option when using a static client to more easily create a streaming response.
-
-.. code-block:: php
-
- $stream = Guzzle::get('http://guzzlephp.org', array('stream' => true));
- while (!$stream->feof()) {
- echo $stream->readLine();
- }
diff --git a/inc/mailgun/guzzle/guzzle/docs/http-client/uri-templates.rst b/inc/mailgun/guzzle/guzzle/docs/http-client/uri-templates.rst
deleted file mode 100644
index c18ac3e..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/http-client/uri-templates.rst
+++ /dev/null
@@ -1,52 +0,0 @@
-=============
-URI templates
-=============
-
-The ``$uri`` passed to one of the client's request creational methods or the base URL of a client can utilize URI
-templates. Guzzle supports the entire `URI templates RFC <http://tools.ietf.org/html/rfc6570>`_. URI templates add a
-special syntax to URIs that replace template place holders with user defined variables.
-
-Every request created by a Guzzle HTTP client passes through a URI template so that URI template expressions are
-automatically expanded:
-
-.. code-block:: php
-
- $client = new Guzzle\Http\Client('https://example.com/', array('a' => 'hi'));
- $request = $client->get('/{a}');
-
-Because of URI template expansion, the URL of the above request will become ``https://example.com/hi``. Notice that
-the template was expanded using configuration variables of the client. You can pass in custom URI template variables
-by passing the URI of your request as an array where the first index of the array is the URI template and the second
-index of the array are template variables that are merged into the client's configuration variables.
-
-.. code-block:: php
-
- $request = $client->get(array('/test{?a,b}', array('b' => 'there')));
-
-The URL for this request will become ``https://test.com?a=hi&b=there``. URI templates aren't limited to just simple
-variable replacements; URI templates can provide an enormous amount of flexibility when creating request URIs.
-
-.. code-block:: php
-
- $request = $client->get(array('http://example.com{+path}{/segments*}{?query,data*}', array(
- 'path' => '/foo/bar',
- 'segments' => array('one', 'two'),
- 'query' => 'test',
- 'data' => array(
- 'more' => 'value'
- )
- )));
-
-The resulting URL would become ``http://example.com/foo/bar/one/two?query=test&more=value``.
-
-By default, URI template expressions are enclosed in an opening and closing brace (e.g. ``{var}``). If you are working
-with a web service that actually uses braces (e.g. Solr), then you can specify a custom regular expression to use to
-match URI template expressions.
-
-.. code-block:: php
-
- $client->getUriTemplate()->setRegex('/\<\$(.+)\>/');
- $client->get('/<$a>');
-
-You can learn about all of the different features of URI templates by reading the
-`URI templates RFC <http://tools.ietf.org/html/rfc6570>`_.
diff --git a/inc/mailgun/guzzle/guzzle/docs/index.rst b/inc/mailgun/guzzle/guzzle/docs/index.rst
deleted file mode 100644
index f76f3bb..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/index.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-.. title:: Guzzle | PHP HTTP client and framework for consuming RESTful web services
-.. toctree::
- :hidden:
-
- docs.rst
diff --git a/inc/mailgun/guzzle/guzzle/docs/iterators/guzzle-iterators.rst b/inc/mailgun/guzzle/guzzle/docs/iterators/guzzle-iterators.rst
deleted file mode 100644
index a5c7fd3..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/iterators/guzzle-iterators.rst
+++ /dev/null
@@ -1,97 +0,0 @@
-================
-Guzzle iterators
-================
-
-Guzzle provides several SPL iterators that can be used with other SPL iterators, including Guzzle resource iterators.
-Guzzle's ``guzzle/iterator`` component can also be used independently of the rest of Guzzle through Packagist and
-Composer: https://packagist.org/packages/guzzle/iterator
-
-ChunkedIterator
----------------
-
-Pulls out multiple values from an inner iterator and yields and array of values for each outer iteration -- essentially
-pulling out chunks of values from the inner iterator.
-
-.. code-block:: php
-
- use Guzzle\Iterator\ChunkedIterator;
-
- $inner = new ArrayIterator(range(0, 8));
- $chunkedIterator = new ChunkedIterator($inner, 2);
-
- foreach ($chunkedIterator as $chunk) {
- echo implode(', ', $chunk) . "\n";
- }
-
- // >>> 0, 1
- // >>> 2, 3
- // >>> 4, 5
- // >>> 6, 7
- // >>> 8
-
-FilterIterator
---------------
-
-This iterator is used to filter values out of the inner iterator. This iterator can be used when PHP 5.4's
-CallbackFilterIterator is not available.
-
-.. code-block:: php
-
- use Guzzle\Iterator\FilterIterator;
-
- $inner = new ArrayIterator(range(1, 10));
- $filterIterator = new FilterIterator($inner, function ($value) {
- return $value % 2;
- });
-
- foreach ($filterIterator as $value) {
- echo $value . "\n";
- }
-
- // >>> 2
- // >>> 4
- // >>> 6
- // >>> 8
- // >>> 10
-
-MapIterator
------------
-
-This iterator modifies the values of the inner iterator before yielding.
-
-.. code-block:: php
-
- use Guzzle\Iterator\MapIterator;
-
- $inner = new ArrayIterator(range(0, 3));
-
- $mapIterator = new MapIterator($inner, function ($value) {
- return $value * 10;
- });
-
- foreach ($mapIterator as $value) {
- echo $value . "\n";
- }
-
- // >>> 0
- // >>> 10
- // >>> 20
- // >>> 30
-
-MethodProxyIterator
--------------------
-
-This decorator is useful when you need to expose a specific method from an inner iterator that might be wrapper
-by one or more iterator decorators. This decorator proxies missing method calls to each inner iterator until one
-of the inner iterators can fulfill the call.
-
-.. code-block:: php
-
- use Guzzle\Iterator\MethodProxyIterator;
-
- $inner = new \ArrayIterator();
- $proxy = new MethodProxyIterator($inner);
-
- // Proxy method calls to the ArrayIterator
- $proxy->append('a');
- $proxy->append('b');
diff --git a/inc/mailgun/guzzle/guzzle/docs/iterators/resource-iterators.rst b/inc/mailgun/guzzle/guzzle/docs/iterators/resource-iterators.rst
deleted file mode 100644
index ce0bee5..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/iterators/resource-iterators.rst
+++ /dev/null
@@ -1,149 +0,0 @@
-==================
-Resource iterators
-==================
-
-Web services often implement pagination in their responses which requires the end-user to issue a series of consecutive
-requests in order to fetch all of the data they asked for. Users of your web service client should not be responsible
-for implementing the logic involved in iterating through pages of results. Guzzle provides a simple resource iterator
-foundation to make it easier on web service client developers to offer a useful abstraction layer.
-
-Getting an iterator from a client
----------------------------------
-
- ResourceIteratorInterface Guzzle\Service\Client::getIterator($command [, array $commandOptions, array $iteratorOptions ])
-
-The ``getIterator`` method of a ``Guzzle\Service\ClientInterface`` object provides a convenient interface for
-instantiating a resource iterator for a specific command. This method implicitly uses a
-``Guzzle\Service\Resource\ResourceIteratorFactoryInterface`` object to create resource iterators. Pass an
-instantiated command object or the name of a command in the first argument. When passing the name of a command, the
-command factory of the client will create the command by name using the ``$commandOptions`` array. The third argument
-may be used to pass an array of options to the constructor of the instantiated ``ResourceIteratorInterface`` object.
-
-.. code-block:: php
-
- $iterator = $client->getIterator('get_users');
-
- foreach ($iterator as $user) {
- echo $user['name'] . ' age ' . $user['age'] . PHP_EOL;
- }
-
-The above code sample might execute a single request or a thousand requests. As a consumer of a web service, I don't
-care. I just want to iterate over all of the users.
-
-Iterator options
-~~~~~~~~~~~~~~~~
-
-The two universal options that iterators should support are ``limit`` and ``page_size``. Using the ``limit`` option
-tells the resource iterator to attempt to limit the total number of iterated resources to a specific amount. Keep in
-mind that this is not always possible due to limitations that may be inherent to a web service. The ``page_size``
-option is used to tell a resource iterator how many resources to request per page of results. Much like the ``limit``
-option, you can not rely on getting back exactly the number of resources your specify in the ``page_size`` option.
-
-.. note::
-
- The ``limit`` and ``page_size`` options can also be specified on an iterator using the ``setLimit($limit)`` and
- ``setPageSize($pageSize)`` methods.
-
-Resolving iterator class names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The default resource iterator factory of a client object expects that your iterators are stored under the ``Model``
-folder of your client and that an iterator is names after the CamelCase name of a command followed by the word
-"Iterator". For example, if you wanted to create an iterator for the ``get_users`` command, then your iterator class
-would be ``Model\GetUsersIterator`` and would be stored in ``Model/GetUsersIterator.php``.
-
-Creating an iterator
---------------------
-
-While not required, resource iterators in Guzzle typically iterate using a ``Guzzle\Service\Command\CommandInterface``
-object. ``Guzzle\Service\Resource\ResourceIterator``, the default iterator implementation that you should extend,
-accepts a command object and array of iterator options in its constructor. The command object passed to the resource
-iterator is expected to be ready to execute and not previously executed. The resource iterator keeps a reference of
-this command and clones the original command each time a subsequent request needs to be made to fetch more data.
-
-Implement the sendRequest method
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The most important thing (and usually the only thing) you need to do when creating a resource iterator is to implement
-the ``sendRequest()`` method of the resource iterator. The ``sendRequest()`` method is called when you begin
-iterating or if there are no resources left to iterate and it you expect to retrieve more resources by making a
-subsequent request. The ``$this->command`` property of the resource iterator is updated with a cloned copy of the
-original command object passed into the constructor of the iterator. Use this command object to issue your subsequent
-requests.
-
-The ``sendRequest()`` method must return an array of the resources you retrieved from making the subsequent call.
-Returning an empty array will stop the iteration. If you suspect that your web service client will occasionally return
-an empty result set but still requires further iteration, then you must implement a sort of loop in your
-``sendRequest()`` method that will continue to issue subsequent requests until your reach the end of the paginated
-result set or until additional resources are retrieved from the web service.
-
-Update the nextToken property
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Beyond fetching more results, the ``sendRequest()`` method is responsible for updating the ``$this->nextToken``
-property of the iterator. Setting this property to anything other than null tells the iterator that issuing a
-subsequent request using the nextToken value will probably return more results. You must continually update this
-value in your ``sendRequest()`` method as each response is received from the web service.
-
-Example iterator
-----------------
-
-Let's say you want to implement a resource iterator for the ``get_users`` command of your web service. The
-``get_users`` command receives a response that contains a list of users, and if there are more pages of results to
-retrieve, returns a value called ``next_user``. This return value is known as the **next token** and should be used to
-issue subsequent requests.
-
-Assume the response to a ``get_users`` command returns JSON data that looks like this:
-
-.. code-block:: javascript
-
- {
- "users": [
- { "name": "Craig Johnson", "age": 10 },
- { "name": "Tom Barker", "age": 20 },
- { "name": "Bob Mitchell", "age": 74 }
- ],
- "next_user": "Michael Dowling"
- }
-
-Assume that because there is a ``next_user`` value, there will be more users if a subsequent request is issued. If the
-``next_user`` value is missing or null, then we know there are no more results to fetch. Let's implement a resource
-iterator for this command.
-
-.. code-block:: php
-
- namespace MyService\Model;
-
- use Guzzle\Service\Resource\ResourceIterator;
-
- /**
- * Iterate over a get_users command
- */
- class GetUsersIterator extends ResourceIterator
- {
- protected function sendRequest()
- {
- // If a next token is set, then add it to the command
- if ($this->nextToken) {
- $this->command->set('next_user', $this->nextToken);
- }
-
- // Execute the command and parse the result
- $result = $this->command->execute();
-
- // Parse the next token
- $this->nextToken = isset($result['next_user']) ? $result['next_user'] : false;
-
- return $result['users'];
- }
- }
-
-As you can see, it's pretty simple to implement an iterator. There are a few things that you should notice from this
-example:
-
-1. You do not need to create a new command in the ``sendRequest()`` method. A new command object is cloned from the
- original command passed into the constructor of the iterator before the ``sendRequest()`` method is called.
- Remember that the resource iterator expects a command that has not been executed.
-2. When the ``sendRequest()`` method is first called, you will not have a ``$this->nextToken`` value, so always check
- before setting it on a command. Notice that the next token is being updated each time a request is sent.
-3. After fetching more resources from the service, always return an array of resources.
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/async-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/async-plugin.rst
deleted file mode 100644
index 9bd8f42..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/async-plugin.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-============
-Async plugin
-============
-
-The AsyncPlugin allows you to send requests that do not wait on a response. This is handled through cURL by utilizing
-the progress event. When a request has sent all of its data to the remote server, Guzzle adds a 1ms timeout on the
-request and instructs cURL to not download the body of the response. The async plugin then catches the exception and
-adds a mock response to the request, along with an X-Guzzle-Async header to let you know that the response was not
-fully downloaded.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\Async\AsyncPlugin;
-
- $client = new Client('http://www.example.com');
- $client->addSubscriber(new AsyncPlugin());
- $response = $client->get()->send();
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/backoff-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/backoff-plugin.rst
deleted file mode 100644
index 5a76941..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/backoff-plugin.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-====================
-Backoff retry plugin
-====================
-
-The ``Guzzle\Plugin\Backoff\BackoffPlugin`` automatically retries failed HTTP requests using custom backoff strategies:
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\Backoff\BackoffPlugin;
-
- $client = new Client('http://www.test.com/');
- // Use a static factory method to get a backoff plugin using the exponential backoff strategy
- $backoffPlugin = BackoffPlugin::getExponentialBackoff();
-
- // Add the backoff plugin to the client object
- $client->addSubscriber($backoffPlugin);
-
-The BackoffPlugin's constructor accepts a ``Guzzle\Plugin\Backoff\BackoffStrategyInterface`` object that is used to
-determine when a retry should be issued and how long to delay between retries. The above code example shows how to
-attach a BackoffPlugin to a client that is pre-configured to retry failed 500 and 503 responses using truncated
-exponential backoff (emulating the behavior of Guzzle 2's ExponentialBackoffPlugin).
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/cache-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/cache-plugin.rst
deleted file mode 100644
index d2fd5df..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/cache-plugin.rst
+++ /dev/null
@@ -1,169 +0,0 @@
-=================
-HTTP Cache plugin
-=================
-
-Guzzle can leverage HTTP's caching specifications using the ``Guzzle\Plugin\Cache\CachePlugin``. The CachePlugin
-provides a private transparent proxy cache that caches HTTP responses. The caching logic, based on
-`RFC 2616 <http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html>`_, uses HTTP headers to control caching behavior,
-cache lifetime, and supports Vary, ETag, and Last-Modified based revalidation:
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Doctrine\Common\Cache\FilesystemCache;
- use Guzzle\Cache\DoctrineCacheAdapter;
- use Guzzle\Plugin\Cache\CachePlugin;
- use Guzzle\Plugin\Cache\DefaultCacheStorage;
-
- $client = new Client('http://www.test.com/');
-
- $cachePlugin = new CachePlugin(array(
- 'storage' => new DefaultCacheStorage(
- new DoctrineCacheAdapter(
- new FilesystemCache('/path/to/cache/files')
- )
- )
- ));
-
- // Add the cache plugin to the client object
- $client->addSubscriber($cachePlugin);
- $client->get('http://www.wikipedia.org/')->send();
-
- // The next request will revalidate against the origin server to see if it
- // has been modified. If a 304 response is received the response will be
- // served from cache
- $client->get('http://www.wikipedia.org/')->send();
-
-The cache plugin intercepts GET and HEAD requests before they are actually transferred to the origin server. The cache
-plugin then generates a hash key based on the request method and URL, and checks to see if a response exists in the cache. If
-a response exists in the cache, the cache adapter then checks to make sure that the caching rules associated with the response
-satisfy the request, and ensures that response still fresh. If the response is acceptable for the request any required
-revalidation, then the cached response is served instead of contacting the origin server.
-
-Vary
-----
-
-Cache keys are derived from a request method and a request URL. Multiple responses can map to the same cache key and
-stored in Guzzle's underlying cache storage object. You should use the ``Vary`` HTTP header to tell the cache storage
-object that the cache response must have been cached for a request that matches the headers specified in the Vary header
-of the request. This allows you to have specific cache entries for the same request URL but variations in a request's
-headers determine which cache entry is served. Please see the http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44
-for more information.
-
-Cache options
--------------
-
-There are several options you can add to requests or clients to modify the behavior of the cache plugin.
-
-Override cache TTL
-~~~~~~~~~~~~~~~~~~
-
-You can override the number of seconds a cacheable response is stored in the cache by setting the
-``cache.override_ttl`` parameter on the params object of a request:
-
-.. code-block:: php
-
- // If the response to the request is cacheable, then the response will be cached for 100 seconds
- $request->getParams()->set('cache.override_ttl', 100);
-
-If a response doesn't specify any freshness policy, it will be kept in cache for 3600 seconds by default.
-
-Custom caching decision
-~~~~~~~~~~~~~~~~~~~~~~~
-
-If the service you are interacting with does not return caching headers or returns responses that are normally
-something that would not be cached, you can set a custom ``can_cache`` object on the constructor of the CachePlugin
-and provide a ``Guzzle\Plugin\Cache\CanCacheInterface`` object. You can use the
-``Guzzle\Plugin\Cache\CallbackCanCacheStrategy`` to easily make a caching decision based on an HTTP request and
-response.
-
-Revalidation options
-~~~~~~~~~~~~~~~~~~~~
-
-You can change the revalidation behavior of a request using the ``cache.revalidate`` parameter. Setting this
-parameter to ``never`` will ensure that a revalidation request is never sent, and the response is always served from
-the origin server. Setting this parameter to ``skip`` will never revalidate and uses the response stored in the cache.
-
-Normalizing requests for caching
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Use the ``cache.key_filter`` parameter if you wish to strip certain query string parameters from your
-request before creating a unique hash for the request. This parameter can be useful if your requests have query
-string values that cause each request URL to be unique (thus preventing a cache hit). The ``cache.key_filter``
-format is simply a comma separated list of query string values to remove from the URL when creating a cache key.
-For example, here we are saying that the ``a`` and ``q`` query string variables should be ignored when generating a
-cache key for the request:
-
-.. code-block:: php
-
- $request->getParams()->set('cache.key_filter', 'a, q');
-
-Other options
-~~~~~~~~~~~~~
-
-There are many other options available to the CachePlugin that can meet almost any caching requirement, including
-custom revalidation implementations, custom cache key generators, custom caching decision strategies, and custom
-cache storage objects. Take a look the constructor of ``Guzzle\Plugin\Cache\CachePlugin`` for more information.
-
-Setting Client-wide cache settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can specify cache settings for every request created by a client by adding cache settings to the configuration
-options of a client.
-
-.. code-block:: php
-
- $client = new Guzzle\Http\Client('http://www.test.com', array(
- 'request.params' => array(
- 'cache.override_ttl' => 3600,
- 'params.cache.revalidate' => 'never'
- )
- ));
-
- echo $client->get('/')->getParams()->get('cache.override_ttl');
- // >>> 3600
-
- echo $client->get('/')->getParams()->get('cache.revalidate');
- // >>> never
-
-Cache revalidation
-------------------
-
-If the cache plugin determines that a response to a GET request needs revalidation, a conditional GET is transferred
-to the origin server. If the origin server returns a 304 response, then a response containing the merged headers of
-the cached response with the new response and the entity body of the cached response is returned. Custom revalidation
-strategies can be injected into a CachePlugin if needed.
-
-Cache adapters
---------------
-
-Guzzle doesn't try to reinvent the wheel when it comes to caching or logging. Plenty of other frameworks have
-excellent solutions in place that you are probably already using in your applications. Guzzle uses adapters for
-caching and logging. The cache plugin requires a cache adapter so that is can store responses in a cache. Guzzle
-currently supports cache adapters for `Doctrine 2.0 <http://www.doctrine-project.org/>`_ and the
-`Zend Framework <http://framework.zend.com>`_.
-
-Doctrine cache adapter
-~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: php
-
- use Doctrine\Common\Cache\ArrayCache;
- use Guzzle\Cache\DoctrineCacheAdapter;
- use Guzzle\Plugin\Cache\CachePlugin;
-
- $backend = new ArrayCache();
- $adapter = new DoctrineCacheAdapter($backend);
- $cache = new CachePlugin($adapter);
-
-Zend Framework cache adapter
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: php
-
- use Guzzle\Cache\ZendCacheAdapter;
- use Zend\Cache\Backend\TestBackend;
-
- $backend = new TestBackend();
- $adapter = new ZendCacheAdapter($backend);
- $cache = new CachePlugin($adapter);
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/cookie-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/cookie-plugin.rst
deleted file mode 100644
index a6cc7d9..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/cookie-plugin.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-=============
-Cookie plugin
-=============
-
-Some web services require a Cookie in order to maintain a session. The ``Guzzle\Plugin\Cookie\CookiePlugin`` will add
-cookies to requests and parse cookies from responses using a CookieJar object:
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\Cookie\CookiePlugin;
- use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
-
- $cookiePlugin = new CookiePlugin(new ArrayCookieJar());
-
- // Add the cookie plugin to a client
- $client = new Client('http://www.test.com/');
- $client->addSubscriber($cookiePlugin);
-
- // Send the request with no cookies and parse the returned cookies
- $client->get('http://www.yahoo.com/')->send();
-
- // Send the request again, noticing that cookies are being sent
- $request = $client->get('http://www.yahoo.com/');
- $request->send();
-
- echo $request;
-
-You can disable cookies per-request by setting the ``cookies.disable`` value to true on a request's params object.
-
-.. code-block:: php
-
- $request->getParams()->set('cookies.disable', true);
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/creating-plugins.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/creating-plugins.rst
deleted file mode 100644
index 0870155..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/creating-plugins.rst
+++ /dev/null
@@ -1,93 +0,0 @@
-================
-Creating plugins
-================
-
-.. highlight:: php
-
-Guzzle is extremely extensible because of the behavioral modifications that can be added to requests, clients, and
-commands using an event system. Before and after the majority of actions are taken in the library, an event is emitted
-with the name of the event and context surrounding the event. Observers can subscribe to a subject and modify the
-subject based on the events received. Guzzle's event system utilizes the Symfony2 EventDispatcher and is the backbone
-of its plugin architecture.
-
-Overview
---------
-
-Plugins must implement the ``Symfony\Component\EventDispatcher\EventSubscriberInterface`` interface. The
-``EventSubscriberInterface`` requires that your class implements a static method, ``getSubscribedEvents()``, that
-returns an associative array mapping events to methods on the object. See the
-`Symfony2 documentation <http://symfony.com/doc/2.0/book/internals.html#the-event-dispatcher>`_ for more information.
-
-Plugins can be attached to any subject, or object in Guzzle that implements that
-``Guzzle\Common\HasDispatcherInterface``.
-
-Subscribing to a subject
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can subscribe an instantiated observer to an event by calling ``addSubscriber`` on a subject.
-
-.. code-block:: php
-
- $testPlugin = new TestPlugin();
- $client->addSubscriber($testPlugin);
-
-You can also subscribe to only specific events using a closure::
-
- $client->getEventDispatcher()->addListener('request.create', function(Event $event) {
- echo $event->getName();
- echo $event['request'];
- });
-
-``Guzzle\Common\Event`` objects are passed to notified functions. The Event object has a ``getName()`` method which
-return the name of the emitted event and may contain contextual information that can be accessed like an array.
-
-Knowing what events to listen to
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Any class that implements the ``Guzzle\Common\HasDispatcherInterface`` must implement a static method,
-``getAllEvents()``, that returns an array of the events that are emitted from the object. You can browse the source
-to see each event, or you can call the static method directly in your code to get a list of available events.
-
-Event hooks
------------
-
-* :ref:`client-events`
-* :ref:`service-client-events`
-* :ref:`request-events`
-* ``Guzzle\Http\Curl\CurlMulti``:
-* :ref:`service-builder-events`
-
-Examples of the event system
-----------------------------
-
-Simple Echo plugin
-~~~~~~~~~~~~~~~~~~
-
-This simple plugin prints a string containing the request that is about to be sent by listening to the
-``request.before_send`` event::
-
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
- class EchoPlugin implements EventSubscriberInterface
- {
- public static function getSubscribedEvents()
- {
- return array('request.before_send' => 'onBeforeSend');
- }
-
- public function onBeforeSend(Guzzle\Common\Event $event)
- {
- echo 'About to send a request: ' . $event['request'] . "\n";
- }
- }
-
- $client = new Guzzle\Service\Client('http://www.test.com/');
-
- // Create the plugin and add it as an event subscriber
- $plugin = new EchoPlugin();
- $client->addSubscriber($plugin);
-
- // Send a request and notice that the request is printed to the screen
- $client->get('/')->send();
-
-Running the above code will print a string containing the HTTP request that is about to be sent.
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst
deleted file mode 100644
index 66d4a01..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-==========================
-cURL authentication plugin
-==========================
-
-.. warning::
-
- The CurlAuthPlugin is deprecated. You should use the `auth` parameter of a client to add authorization headers to
- every request created by a client.
-
- .. code-block:: php
-
- $client->setDefaultOption('auth', array('username', 'password', 'Basic|Digest|NTLM|Any'));
-
-If your web service client requires basic authorization, then you can use the CurlAuthPlugin to easily add an
-Authorization header to each request sent by the client.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\CurlAuth\CurlAuthPlugin;
-
- $client = new Client('http://www.test.com/');
-
- // Add the auth plugin to the client object
- $authPlugin = new CurlAuthPlugin('username', 'password');
- $client->addSubscriber($authPlugin);
-
- $response = $client->get('projects/1/people')->send();
- $xml = new SimpleXMLElement($response->getBody(true));
- foreach ($xml->person as $person) {
- echo $person->email . "\n";
- }
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/history-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/history-plugin.rst
deleted file mode 100644
index b96befe..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/history-plugin.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-==============
-History plugin
-==============
-
-The history plugin tracks all of the requests and responses sent through a request or client. This plugin can be
-useful for crawling or unit testing. By default, the history plugin stores up to 10 requests and responses.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\History\HistoryPlugin;
-
- $client = new Client('http://www.test.com/');
-
- // Add the history plugin to the client object
- $history = new HistoryPlugin();
- $history->setLimit(5);
- $client->addSubscriber($history);
-
- $client->get('http://www.yahoo.com/')->send();
-
- echo $history->getLastRequest();
- echo $history->getLastResponse();
- echo count($history);
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/log-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/log-plugin.rst
deleted file mode 100644
index 3e2b229..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/log-plugin.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-==========
-Log plugin
-==========
-
-Use the ``Guzzle\Plugin\Log\LogPlugin`` to view all data sent over the wire, including entity bodies and redirects.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Log\Zf1LogAdapter;
- use Guzzle\Plugin\Log\LogPlugin;
- use Guzzle\Log\MessageFormatter;
-
- $client = new Client('http://www.test.com/');
-
- $adapter = new Zf1LogAdapter(
- new \Zend_Log(new \Zend_Log_Writer_Stream('php://output'))
- );
- $logPlugin = new LogPlugin($adapter, MessageFormatter::DEBUG_FORMAT);
-
- // Attach the plugin to the client, which will in turn be attached to all
- // requests generated by the client
- $client->addSubscriber($logPlugin);
-
- $response = $client->get('http://google.com')->send();
-
-The code sample above wraps a ``Zend_Log`` object using a ``Guzzle\Log\Zf1LogAdapter``. After attaching the plugin to
-the client, all data sent over the wire will be logged to stdout.
-
-The first argument of the LogPlugin's constructor accepts a ``Guzzle\Log\LogAdapterInterface`` object. This object is
-an adapter that allows you to use the logging capabilities of your favorite log implementation. The second argument of
-the constructor accepts a ``Guzzle\Log\MessageFormatter`` or a log messaged format string. The format string uses
-variable substitution and allows you to define the log data that is important to your application. The different
-variables that can be injected are as follows:
-
-================== ====================================================================================
-Variable Substitution
-================== ====================================================================================
-{request} Full HTTP request message
-{response} Full HTTP response message
-{ts} Timestamp
-{host} Host of the request
-{method} Method of the request
-{url} URL of the request
-{host} Host of the request
-{protocol} Request protocol
-{version} Protocol version
-{resource} Resource of the request (path + query + fragment)
-{port} Port of the request
-{hostname} Hostname of the machine that sent the request
-{code} Status code of the response (if available)
-{phrase} Reason phrase of the response (if available)
-{curl_error} Curl error message (if available)
-{curl_code} Curl error code (if available)
-{curl_stderr} Curl standard error (if available)
-{connect_time} Time in seconds it took to establish the connection (if available)
-{total_time} Total transaction time in seconds for last transfer (if available)
-{req_header_*} Replace `*` with the lowercased name of a request header to add to the message
-{res_header_*} Replace `*` with the lowercased name of a response header to add to the message
-{req_body} Request body
-{res_body} Response body
-================== ====================================================================================
-
-The LogPlugin has a helper method that can be used when debugging that will output the full HTTP request and
-response of a transaction:
-
-.. code-block:: php
-
- $client->addSubscriber(LogPlugin::getDebugPlugin());
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst
deleted file mode 100644
index 1b1cfa8..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-====================
-MD5 validator plugin
-====================
-
-Entity bodies can sometimes be modified over the wire due to a faulty TCP transport or misbehaving proxy. If an HTTP
-response contains a Content-MD5 header, then a MD5 hash of the entity body of a response can be compared against the
-Content-MD5 header of the response to determine if the response was delivered intact. The
-``Guzzle\Plugin\Md5\Md5ValidatorPlugin`` will throw an ``UnexpectedValueException`` if the calculated MD5 hash does
-not match the Content-MD5 header value:
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\Md5\Md5ValidatorPlugin;
-
- $client = new Client('http://www.test.com/');
-
- $md5Plugin = new Md5ValidatorPlugin();
-
- // Add the md5 plugin to the client object
- $client->addSubscriber($md5Plugin);
-
- $request = $client->get('http://www.yahoo.com/');
- $request->send();
-
-Calculating the MD5 hash of a large entity body or an entity body that was transferred using a Content-Encoding is an
-expensive operation. When working in high performance applications, you might consider skipping the MD5 hash
-validation for entity bodies bigger than a certain size or Content-Encoded entity bodies
-(see ``Guzzle\Plugin\Md5\Md5ValidatorPlugin`` for more information).
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/mock-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/mock-plugin.rst
deleted file mode 100644
index 4900cb5..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/mock-plugin.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-===========
-Mock plugin
-===========
-
-The mock plugin is useful for testing Guzzle clients. The mock plugin allows you to queue an array of responses that
-will satisfy requests sent from a client by consuming the request queue in FIFO order.
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\Mock\MockPlugin;
- use Guzzle\Http\Message\Response;
-
- $client = new Client('http://www.test.com/');
-
- $mock = new MockPlugin();
- $mock->addResponse(new Response(200))
- ->addResponse(new Response(404));
-
- // Add the mock plugin to the client object
- $client->addSubscriber($mock);
-
- // The following request will receive a 200 response from the plugin
- $client->get('http://www.example.com/')->send();
-
- // The following request will receive a 404 response from the plugin
- $client->get('http://www.test.com/')->send();
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/oauth-plugin.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/oauth-plugin.rst
deleted file mode 100644
index e67eaba..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/oauth-plugin.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-============
-OAuth plugin
-============
-
-Guzzle ships with an OAuth 1.0 plugin that can sign requests using a consumer key, consumer secret, OAuth token,
-and OAuth secret. Here's an example showing how to send an authenticated request to the Twitter REST API:
-
-.. code-block:: php
-
- use Guzzle\Http\Client;
- use Guzzle\Plugin\Oauth\OauthPlugin;
-
- $client = new Client('http://api.twitter.com/1');
- $oauth = new OauthPlugin(array(
- 'consumer_key' => 'my_key',
- 'consumer_secret' => 'my_secret',
- 'token' => 'my_token',
- 'token_secret' => 'my_token_secret'
- ));
- $client->addSubscriber($oauth);
-
- $response = $client->get('statuses/public_timeline.json')->send();
-
-If you need to use a custom signing method, you can pass a ``signature_method`` configuration option in the
-constructor of the OAuth plugin. The ``signature_method`` option must be a callable variable that accepts a string to
-sign and signing key and returns a signed string.
-
-.. note::
-
- You can omit the ``token`` and ``token_secret`` options to use two-legged OAuth.
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/plugins-list.rst.inc b/inc/mailgun/guzzle/guzzle/docs/plugins/plugins-list.rst.inc
deleted file mode 100644
index 8d6d09b..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/plugins-list.rst.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-* :doc:`/plugins/async-plugin`
-* :doc:`/plugins/backoff-plugin`
-* :doc:`/plugins/cache-plugin`
-* :doc:`/plugins/cookie-plugin`
-* :doc:`/plugins/history-plugin`
-* :doc:`/plugins/log-plugin`
-* :doc:`/plugins/md5-validator-plugin`
-* :doc:`/plugins/mock-plugin`
-* :doc:`/plugins/oauth-plugin`
diff --git a/inc/mailgun/guzzle/guzzle/docs/plugins/plugins-overview.rst b/inc/mailgun/guzzle/guzzle/docs/plugins/plugins-overview.rst
deleted file mode 100644
index 19ae57e..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/plugins/plugins-overview.rst
+++ /dev/null
@@ -1,59 +0,0 @@
-======================
-Plugin system overview
-======================
-
-The workflow of sending a request and parsing a response is driven by Guzzle's event system, which is powered by the
-`Symfony2 Event Dispatcher component <http://symfony.com/doc/current/components/event_dispatcher/introduction.html>`_.
-
-Any object in Guzzle that emits events will implement the ``Guzzle\Common\HasEventDispatcher`` interface. You can add
-event subscribers directly to these objects using the ``addSubscriber()`` method, or you can grab the
-``Symfony\Component\EventDispatcher\EventDispatcher`` object owned by the object using ``getEventDispatcher()`` and
-add a listener or event subscriber.
-
-Adding event subscribers to clients
------------------------------------
-
-Any event subscriber or event listener attached to the EventDispatcher of a ``Guzzle\Http\Client`` or
-``Guzzle\Service\Client`` object will automatically be attached to all request objects created by the client. This
-allows you to attach, for example, a HistoryPlugin to a client object, and from that point on, every request sent
-through that client will utilize the HistoryPlugin.
-
-.. code-block:: php
-
- use Guzzle\Plugin\History\HistoryPlugin;
- use Guzzle\Service\Client;
-
- $client = new Client();
-
- // Create a history plugin and attach it to the client
- $history = new HistoryPlugin();
- $client->addSubscriber($history);
-
- // Create and send a request. This request will also utilize the HistoryPlugin
- $client->get('http://httpbin.org')->send();
-
- // Echo out the last sent request by the client
- echo $history->getLastRequest();
-
-.. tip::
-
- :doc:`Create event subscribers <creating-plugins>`, or *plugins*, to implement reusable logic that can be
- shared across clients. Event subscribers are also easier to test than anonymous functions.
-
-Pre-Built plugins
------------------
-
-Guzzle provides easy to use request plugins that add behavior to requests based on signal slot event notifications
-powered by the Symfony2 Event Dispatcher component.
-
-* :doc:`async-plugin`
-* :doc:`backoff-plugin`
-* :doc:`cache-plugin`
-* :doc:`cookie-plugin`
-* :doc:`curl-auth-plugin`
-* :doc:`history-plugin`
-* :doc:`log-plugin`
-* :doc:`md5-validator-plugin`
-* :doc:`mock-plugin`
-* :doc:`oauth-plugin`
-
diff --git a/inc/mailgun/guzzle/guzzle/docs/requirements.txt b/inc/mailgun/guzzle/guzzle/docs/requirements.txt
deleted file mode 100644
index f62e318..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Sphinx>=1.2b1
-guzzle_sphinx_theme>=0.5.0
diff --git a/inc/mailgun/guzzle/guzzle/docs/testing/unit-testing.rst b/inc/mailgun/guzzle/guzzle/docs/testing/unit-testing.rst
deleted file mode 100644
index f4297af..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/testing/unit-testing.rst
+++ /dev/null
@@ -1,201 +0,0 @@
-===========================
-Unit Testing Guzzle clients
-===========================
-
-Guzzle provides several tools that will enable you to easily unit test your web service clients.
-
-* PHPUnit integration
-* Mock responses
-* node.js web server for integration testing
-
-PHPUnit integration
--------------------
-
-Guzzle is unit tested using `PHPUnit <http://www.phpunit.de/>`_. Your web service client's unit tests should extend
-``Guzzle\Tests\GuzzleTestCase`` so that you can take advantage of some of the built in helpers.
-
-In order to unit test your client, a developer would need to copy phpunit.xml.dist to phpunit.xml and make any needed
-modifications. As a best practice and security measure for you and your contributors, it is recommended to add an
-ignore statement to your SCM so that phpunit.xml is ignored.
-
-Bootstrapping
-~~~~~~~~~~~~~
-
-Your web service client should have a tests/ folder that contains a bootstrap.php file. The bootstrap.php file
-responsible for autoloading and configuring a ``Guzzle\Service\Builder\ServiceBuilder`` that is used throughout your
-unit tests for loading a configured client. You can add custom parameters to your phpunit.xml file that expects users
-to provide the path to their configuration data.
-
-.. code-block:: php
-
- Guzzle\Tests\GuzzleTestCase::setServiceBuilder(Aws\Common\Aws::factory($_SERVER['CONFIG']));
-
- Guzzle\Tests\GuzzleTestCase::setServiceBuilder(Guzzle\Service\Builder\ServiceBuilder::factory(array(
- 'test.unfuddle' => array(
- 'class' => 'Guzzle.Unfuddle.UnfuddleClient',
- 'params' => array(
- 'username' => 'test_user',
- 'password' => '****',
- 'subdomain' => 'test'
- )
- )
- )));
-
-The above code registers a service builder that can be used throughout your unit tests. You would then be able to
-retrieve an instantiated and configured Unfuddle client by calling ``$this->getServiceBuilder()->get('test.unfuddle)``.
-The above code assumes that ``$_SERVER['CONFIG']`` contains the path to a file that stores service description
-configuration.
-
-Unit testing remote APIs
-------------------------
-
-Mock responses
-~~~~~~~~~~~~~~
-
-One of the benefits of unit testing is the ability to quickly determine if there are errors in your code. If your
-unit tests run slowly, then they become tedious and will likely be run less frequently. Guzzle's philosophy on unit
-testing web service clients is that no network access should be required to run the unit tests. This means that
-responses are served from mock responses or local servers. By adhering to this principle, tests will run much faster
-and will not require an external resource to be available. The problem with this approach is that your mock responses
-must first be gathered and then subsequently updated each time the remote API changes.
-
-Integration testing over the internet
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can perform integration testing with a web service over the internet by making calls directly to the service. If
-the web service you are requesting uses a complex signing algorithm or some other specific implementation, then you
-may want to include at least one actual network test that can be run specifically through the command line using
-`PHPUnit group annotations <http://www.phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.group>`_.
-
-@group internet annotation
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When creating tests that require an internet connection, it is recommended that you add ``@group internet`` annotations
-to your unit tests to specify which tests require network connectivity.
-
-You can then `run PHPUnit tests <http://www.phpunit.de/manual/current/en/textui.html>`_ that exclude the @internet
-group by running ``phpunit --exclude-group internet``.
-
-API credentials
-^^^^^^^^^^^^^^^
-
-If API credentials are required to run your integration tests, you must add ``<php>`` parameters to your
-phpunit.xml.dist file and extract these parameters in your bootstrap.php file.
-
-.. code-block:: xml
-
- <?xml version="1.0" encoding="UTF-8"?>
- <phpunit bootstrap="./tests/bootstrap.php" colors="true">
- <php>
- <!-- Specify the path to a service configuration file -->
- <server name="CONFIG" value="test_services.json" />
- <!-- Or, specify each require parameter individually -->
- <server name="API_USER" value="change_me" />
- <server name="API_PASSWORD" value="****" />
- </php>
- <testsuites>
- <testsuite name="guzzle-service">
- <directory suffix="Test.php">./Tests</directory>
- </testsuite>
- </testsuites>
- </phpunit>
-
-You can then extract the ``server`` variables in your bootstrap.php file by grabbing them from the ``$_SERVER``
-superglobal: ``$apiUser = $_SERVER['API_USER'];``
-
-Further reading
-^^^^^^^^^^^^^^^
-
-A good discussion on the topic of testing remote APIs can be found in Sebastian Bergmann's
-`Real-World Solutions for Developing High-Quality PHP Frameworks and Applications <http://www.amazon.com/dp/0470872497>`_.
-
-Queueing Mock responses
------------------------
-
-Mock responses can be used to test if requests are being generated correctly and responses and handled correctly by
-your client. Mock responses can be queued up for a client using the ``$this->setMockResponse($client, $path)`` method
-of your test class. Pass the client you are adding mock responses to and a single path or array of paths to mock
-response files relative to the ``/tests/mock/ folder``. This will queue one or more mock responses for your client by
-creating a simple observer on the client. Mock response files must contain a full HTTP response message:
-
-.. code-block:: none
-
- HTTP/1.1 200 OK
- Date: Wed, 25 Nov 2009 12:00:00 GMT
- Connection: close
- Server: AmazonS3
- Content-Type: application/xml
-
- <?xml version="1.0" encoding="UTF-8"?>
- <LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">EU</LocationConstraint>
-
-After queuing mock responses for a client, you can get an array of the requests that were sent by the client that
-were issued a mock response by calling ``$this->getMockedRequests()``.
-
-You can also use the ``Guzzle\Plugin\Mock\MockPlugin`` object directly with your clients.
-
-.. code-block:: php
-
- $plugin = new Guzzle\Plugin\Mock\MockPlugin();
- $plugin->addResponse(new Guzzle\Http\Message\Response(200));
- $client = new Guzzle\Http\Client();
- $client->addSubscriber($plugin);
-
- // The following request will get the mock response from the plugin in FIFO order
- $request = $client->get('http://www.test.com/');
- $request->send();
-
- // The MockPlugin maintains a list of requests that were mocked
- $this->assertContainsOnly($request, $plugin->getReceivedRequests());
-
-node.js web server for integration testing
-------------------------------------------
-
-Using mock responses is usually enough when testing a web service client. If your client needs to add custom cURL
-options to requests, then you should use the node.js test web server to ensure that your HTTP request message is
-being created correctly.
-
-Guzzle is based around PHP's libcurl bindings. cURL sometimes modifies an HTTP request message based on
-``CURLOPT_*`` options. Headers that are added to your request by cURL will not be accounted for if you inject mock
-responses into your tests. Additionally, some request entity bodies cannot be loaded by the client before transmitting
-it to the sever (for example, when using a client as a sort of proxy and streaming content from a remote server). You
-might also need to inspect the entity body of a ``multipart/form-data`` POST request.
-
-.. note::
-
- You can skip all of the tests that require the node.js test web server by excluding the ``server`` group:
- ``phpunit --exclude-group server``
-
-Using the test server
-~~~~~~~~~~~~~~~~~~~~~
-
-The node.js test server receives requests and returns queued responses. The test server exposes a simple API that is
-used to enqueue responses and inspect the requests that it has received.
-
-Retrieve the server object by calling ``$this->getServer()``. If the node.js server is not running, it will be
-started as a forked process and an object that interfaces with the server will be returned. (note: stopping the
-server is handled internally by Guzzle.)
-
-You can queue an HTTP response or an array of responses by calling ``$this->getServer()->enqueue()``:
-
-.. code-block:: php
-
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
-
-The above code queues a single 200 response with an empty body. Responses are queued using a FIFO order; this
-response will be returned by the server when it receives the first request and then removed from the queue. If a
-request is received by a server with no queued responses, an exception will be thrown in your unit test.
-
-You can inspect the requests that the server has retrieved by calling ``$this->getServer()->getReceivedRequests()``.
-This method accepts an optional ``$hydrate`` parameter that specifies if you are retrieving an array of string HTTP
-requests or an array of ``Guzzle\Http\RequestInterface`` subclassed objects. "Hydrating" the requests will allow
-greater flexibility in your unit tests so that you can easily assert the state of the various parts of a request.
-
-You will need to modify the base_url of your web service client in order to use it against the test server.
-
-.. code-block:: php
-
- $client = $this->getServiceBuilder()->get('my_client');
- $client->setBaseUrl($this->getServer()->getUrl());
-
-After running the above code, all calls made from the ``$client`` object will be sent to the test web server.
diff --git a/inc/mailgun/guzzle/guzzle/docs/webservice-client/guzzle-service-descriptions.rst b/inc/mailgun/guzzle/guzzle/docs/webservice-client/guzzle-service-descriptions.rst
deleted file mode 100644
index ad6070b..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/webservice-client/guzzle-service-descriptions.rst
+++ /dev/null
@@ -1,619 +0,0 @@
-===========================
-Guzzle service descriptions
-===========================
-
-Guzzle allows you to serialize HTTP requests and parse HTTP responses using a DSL called a service descriptions.
-Service descriptions define web service APIs by documenting each operation, the operation's parameters, validation
-options for each parameter, an operation's response, how the response is parsed, and any errors that can be raised for
-an operation. Writing a service description for a web service allows you to more quickly consume a web service than
-writing concrete commands for each web service operation.
-
-Guzzle service descriptions can be representing using a PHP array or JSON document. Guzzle's service descriptions are
-heavily inspired by `Swagger <http://swagger.wordnik.com/>`_.
-
-Service description schema
-==========================
-
-A Guzzle Service description must match the following JSON schema document. This document can also serve as a guide when
-implementing a Guzzle service description.
-
-Download the schema here: :download:`Guzzle JSON schema document </_downloads/guzzle-schema-1.0.json>`
-
-.. class:: overflow-height-500px
-
- .. literalinclude:: ../_downloads/guzzle-schema-1.0.json
- :language: json
-
-Top-level attributes
---------------------
-
-Service descriptions are comprised of the following top-level attributes:
-
-.. code-block:: json
-
- {
- "name": "string",
- "apiVersion": "string|number",
- "baseUrl": "string",
- "description": "string",
- "operations": {},
- "models": {},
- "includes": ["string.php", "string.json"]
- }
-
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| Property Name | Value | Description |
-+=========================================+=========================+=======================================================================================================================+
-| name | string | Name of the web service |
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| apiVersion | string|number | Version identifier that the service description is compatible with |
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| baseUrl or basePath | string | Base URL of the web service. Any relative URI specified in an operation will be merged with the baseUrl using the |
-| | | process defined in RFC 2396. Some clients require custom logic to determine the baseUrl. In those cases, it is best |
-| | | to not include a baseUrl in the service description, but rather allow the factory method of the client to configure |
-| | | the client’s baseUrl. |
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| description | string | Short summary of the web service |
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| operations | object containing | Operations of the service. The key is the name of the operation and value is the attributes of the operation. |
-| | :ref:`operation-schema` | |
-| | | |
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| models | object containing | Schema models that can be referenced throughout the service description. Models can be used to define how an HTTP |
-| | :ref:`model-schema` | response is parsed into a ``Guzzle\Service\Resource\Model`` object when an operation uses a ``model`` ``responseType``|
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| includes | array of .js, | Service description files to include and extend from (can be a .json, .js, or .php file) |
-| | .json, or .php | |
-| | files. | |
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-| (any additional properties) | mixed | Any additional properties specified as top-level attributes are allowed and will be treated as arbitrary data |
-+-----------------------------------------+-------------------------+-----------------------------------------------------------------------------------------------------------------------+
-
-.. _operation-schema:
-
-Operations
-----------
-
-Operations are the actions that can be taken on a service. Each operation is given a unique name and has a distinct
-endpoint and HTTP method. If an API has a ``DELETE /users/:id`` operation, a satisfactory operation name might be
-``DeleteUser`` with a parameter of ``id`` that is inserted into the URI.
-
-.. class:: overflow-height-250px
-
- .. code-block:: json
-
- {
- "operations": {
- "operationName": {
- "extends": "string",
- "httpMethod": "GET|POST|PUT|DELETE|PATCH|string",
- "uri": "string",
- "summary": "string",
- "class": "string",
- "responseClass": "string",
- "responseNotes": "string",
- "type": "string",
- "description": "string",
- "responseType": "primitive|class|(model by name)|documentation|(string)",
- "deprecated": false,
- "errorResponses": [
- {
- "code": 500,
- "reason": "Unexpected Error",
- "class": "string"
- }
- ],
- "data": {
- "foo": "bar",
- "baz": "bam"
- },
- "parameters": {}
- }
- }
- }
-
-.. csv-table::
- :header: "Property Name", "Value", "Description"
- :widths: 20, 15, 65
-
- "extends", "string", "Extend from another operation by name. The parent operation must be defined before the child."
- "httpMethod", "string", "HTTP method used with the operation (e.g. GET, POST, PUT, DELETE, PATCH, etc)"
- "uri", "string", "URI of the operation. The uri attribute can contain URI templates. The variables of the URI template are parameters of the operation with a location value of uri"
- "summary", "string", "Short summary of what the operation does"
- "class", "string", "Custom class to instantiate instead of the default Guzzle\\Service\\Command\\OperationCommand. Using this attribute allows you to define an operation using a service description, but allows more customized logic to be implemented in user-land code."
- "responseClass", "string", "Defined what is returned from the method. Can be a primitive, class name, or model name. You can specify the name of a class to return a more customized result from the operation (for example, a domain model object). When using the name of a PHP class, the class must implement ``Guzzle\Service\Command\ResponseClassInterface``."
- "responseNotes", "string", "A description of the response returned by the operation"
- "responseType", "string", "The type of response that the operation creates: one of primitive, class, model, or documentation. If not specified, this value will be automatically inferred based on whether or not there is a model matching the name, if a matching class name is found, or set to 'primitive' by default."
- "deprecated", "boolean", "Whether or not the operation is deprecated"
- "errorResponses", "array", "Errors that could occur while executing the operation. Each item of the array is an object that can contain a 'code' (HTTP response status code of the error), 'reason' (reason phrase or description of the error), and 'class' (an exception class that will be raised when this error is encountered)"
- "data", "object", "Any arbitrary data to associate with the operation"
- "parameters", "object containing :ref:`parameter-schema` objects", "Parameters of the operation. Parameters are used to define how input data is serialized into a HTTP request."
- "additionalParameters", "A single :ref:`parameter-schema` object", "Validation and serialization rules for any parameter supplied to the operation that was not explicitly defined."
-
-additionalParameters
-~~~~~~~~~~~~~~~~~~~~
-
-When a webservice offers a large number of parameters that all are set in the same location (for example the query
-string or a JSON document), defining each parameter individually can require a lot of time and repetition. Furthermore,
-some web services allow for completely arbitrary parameters to be supplied for an operation. The
-``additionalParameters`` attribute can be used to solve both of these issues.
-
-As an example, we can define a Twitter API operation quite easily using ``additionalParameters``. The
-GetMentions operation accepts a large number of query string parameters. Defining each of these parameters
-is ideal because it provide much more introspection for the client and opens the possibility to use the description with
-other tools (e.g. a documentation generator). However, you can very quickly provide a "catch-all" serialization rule
-that will place any custom parameters supplied to an operation the generated request's query string parameters.
-
-.. class:: overflow-height-250px
-
- .. code-block:: json
-
- {
- "name": "Twitter",
- "apiVersion": "1.1",
- "baseUrl": "https://api.twitter.com/1.1",
- "operations": {
- "GetMentions": {
- "httpMethod": "GET",
- "uri": "statuses/mentions_timeline.json",
- "responseClass": "GetMentionsOutput",
- "additionalParameters": {
- "location": "query"
- }
- }
- },
- "models": {
- "GetMentionsOutput": {
- "type": "object",
- "additionalProperties": {
- "location": "json"
- }
- }
- }
- }
-
-responseClass
-~~~~~~~~~~~~~
-
-The ``responseClass`` attribute is used to define the return value of an operation (what is returned by calling the
-``getResult()`` method of a command object). The value set in the responseClass attribute can be one of "primitive"
-(meaning the result with be primitive type like a string), a class name meaning the result will be an instance of a
-specific user-land class, or a model name meaning the result will be a ``Guzzle\Service\Resource\Model`` object that
-uses a :ref:`model schema <model-schema>` to define how the HTTP response is parsed.
-
-.. note::
-
- Using a class name with a ``responseClass`` will only work if it is supported by the ``class`` that is instantiated
- for the operation. Keep this in mind when specifying a custom ``class`` attribute that points to a custom
- ``Guzzle\Service\Command\CommandInterface`` class. The default ``class``,
- ``Guzzle\Service\Command\OperationCommand``, does support setting custom ``class`` attributes.
-
-You can specify the name of a class to return a more customized result from the operation (for example, a domain model
-object). When using the name of a PHP class, the class must implement ``Guzzle\Service\Command\ResponseClassInterface``.
-Here's a very simple example of implementing a custom responseClass object.
-
-.. code-block:: json
-
- {
- "operations": {
- "test": {
- "responseClass": "MyApplication\\User"
- }
- }
- }
-
-.. code-block:: php
-
- namespace MyApplication;
-
- use Guzzle\Service\Command\ResponseClassInterface;
- use Guzzle\Service\Command\OperationCommand;
-
- class User implements ResponseClassInterface
- {
- protected $name;
-
- public static function fromCommand(OperationCommand $command)
- {
- $response = $command->getResponse();
- $xml = $response->xml();
-
- return new self((string) $xml->name);
- }
-
- public function __construct($name)
- {
- $this->name = $name;
- }
- }
-
-errorResponses
-~~~~~~~~~~~~~~
-
-``errorResponses`` is an array containing objects that define the errors that could occur while executing the
-operation. Each item of the array is an object that can contain a 'code' (HTTP response status code of the error),
-'reason' (reason phrase or description of the error), and 'class' (an exception class that will be raised when this
-error is encountered).
-
-ErrorResponsePlugin
-^^^^^^^^^^^^^^^^^^^
-
-Error responses are by default only used for documentation. If you don't need very complex exception logic for your web
-service errors, then you can use the ``Guzzle\Plugin\ErrorResponse\ErrorResponsePlugin`` to automatically throw defined
-exceptions when one of the ``errorResponse`` rules are matched. The error response plugin will listen for the
-``request.complete`` event of a request created by a command object. Every response (including a successful response) is
-checked against the list of error responses for an exact match using the following order of checks:
-
-1. Does the errorResponse have a defined ``class``?
-2. Is the errorResponse ``code`` equal to the status code of the response?
-3. Is the errorResponse ``reason`` equal to the reason phrase of the response?
-4. Throw the exception stored in the ``class`` attribute of the errorResponse.
-
-The ``class`` attribute must point to a class that implements
-``Guzzle\Plugin\ErrorResponse\ErrorResponseExceptionInterface``. This interface requires that an error response class
-implements ``public static function fromCommand(CommandInterface $command, Response $response)``. This method must
-return an object that extends from ``\Exception``. After an exception is returned, it is thrown by the plugin.
-
-.. _parameter-schema:
-
-Parameter schema
-----------------
-
-Parameters in both operations and models are represented using the
-`JSON schema <http://tools.ietf.org/id/draft-zyp-json-schema-04.html>`_ syntax.
-
-.. csv-table::
- :header: "Property Name", "Value", "Description"
- :widths: 20, 15, 65
-
- "name", "string", "Unique name of the parameter"
- "type", "string|array", "Type of variable (string, number, integer, boolean, object, array, numeric, null, any). Types are using for validation and determining the structure of a parameter. You can use a union type by providing an array of simple types. If one of the union types matches the provided value, then the value is valid."
- "instanceOf", "string", "When the type is an object, you can specify the class that the object must implement"
- "required", "boolean", "Whether or not the parameter is required"
- "default", "mixed", "Default value to use if no value is supplied"
- "static", "boolean", "Set to true to specify that the parameter value cannot be changed from the default setting"
- "description", "string", "Documentation of the parameter"
- "location", "string", "The location of a request used to apply a parameter. Custom locations can be registered with a command, but the defaults are uri, query, statusCode, reasonPhrase, header, body, json, xml, postField, postFile, responseBody"
- "sentAs", "string", "Specifies how the data being modeled is sent over the wire. For example, you may wish to include certain headers in a response model that have a normalized casing of FooBar, but the actual header is x-foo-bar. In this case, sentAs would be set to x-foo-bar."
- "filters", "array", "Array of functions to to run a parameter value through."
-
-filters
-~~~~~~~
-
-Each value in the array must be a string containing the full class path to a static method or an array of complex
-filter information. You can specify static methods of classes using the full namespace class name followed by
-"::" (e.g. ``FooBar::baz()``). Some filters require arguments in order to properly filter a value. For complex filters,
-use an object containing a ``method`` attribute pointing to a function, and an ``args`` attribute containing an
-array of positional arguments to pass to the function. Arguments can contain keywords that are replaced when filtering
-a value: ``@value`` is replaced with the value being filtered, and ``@api`` is replaced with the actual Parameter
-object.
-
-.. code-block:: json
-
- {
- "filters": [
- "strtolower",
- {
- "method": "MyClass::convertString",
- "args": [ "test", "@value", "@api" ]
- }
- ]
- }
-
-The above example will filter a parameter using ``strtolower``. It will then call the ``convertString`` static method
-of ``MyClass``, passing in "test", the actual value of the parameter, and a ``Guzzle\Service\Description\Parameter``
-object.
-
-Operation parameter location attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The location field of top-level parameters control how a parameter is serialized when generating a request.
-
-uri location
-^^^^^^^^^^^^
-
-Parameters are injected into the ``uri`` attribute of the operation using
-`URI-template expansion <http://tools.ietf.org/html/rfc6570>`_.
-
-.. code-block:: json
-
- {
- "operations": {
- "uriTest": {
- "uri": "/test/{testValue}",
- "parameters": {
- "testValue": {
- "location": "uri"
- }
- }
- }
- }
- }
-
-query location
-^^^^^^^^^^^^^^
-
-Parameters are injected into the query string of a request. Query values can be nested, which would result in a PHP
-style nested query string. The name of a parameter is the default name of the query string parameter added to the
-request. You can override this behavior by specifying the ``sentAs`` attribute on the parameter.
-
-.. code-block:: json
-
- {
- "operations": {
- "queryTest": {
- "parameters": {
- "testValue": {
- "location": "query",
- "sentAs": "test_value"
- }
- }
- }
- }
- }
-
-header location
-^^^^^^^^^^^^^^^
-
-Parameters are injected as headers on an HTTP request. The name of the parameter is used as the name of the header by
-default. You can change the name of the header created by the parameter using the ``sentAs`` attribute.
-
-Headers that are of type ``object`` will be added as multiple headers to a request using the key of the input array as
-the header key. Setting a ``sentAs`` attribute along with a type ``object`` will use the value of ``sentAs`` as a
-prefix for each header key.
-
-body location
-^^^^^^^^^^^^^
-
-Parameters are injected as the body of a request. The input of these parameters may be anything that can be cast to a
-string or a ``Guzzle\Http\EntityBodyInterface`` object.
-
-postField location
-^^^^^^^^^^^^^^^^^^
-
-Parameters are inserted as POST fields in a request. Nested values may be supplied and will be represented using
-PHP style nested query strings. The POST field name is the same as the parameter name by default. You can use the
-``sentAs`` parameter to override the POST field name.
-
-postFile location
-^^^^^^^^^^^^^^^^^
-
-Parameters are added as POST files. A postFile value may be a string pointing to a local filename or a
-``Guzzle\Http\Message\PostFileInterface`` object. The name of the POST file will be the name of the parameter by
-default. You can use a custom POST file name by using the ``sentAs`` attribute.
-
-Supports "string" and "array" types.
-
-json location
-^^^^^^^^^^^^^
-
-Parameters are added to the body of a request as top level keys of a JSON document. Nested values may be specified,
-with any number of nested ``Guzzle\Common\ToArrayInterface`` objects. When JSON parameters are specified, the
-``Content-Type`` of the request will change to ``application/json`` if a ``Content-Type`` has not already been specified
-on the request.
-
-xml location
-^^^^^^^^^^^^
-
-Parameters are added to the body of a request as top level nodes of an XML document. Nested values may be specified,
-with any number of nested ``Guzzle\Common\ToArrayInterface`` objects. When XML parameters are specified, the
-``Content-Type`` of the request will change to ``application/xml`` if a ``Content-Type`` has not already been specified
-on the request.
-
-responseBody location
-^^^^^^^^^^^^^^^^^^^^^
-
-Specifies the EntityBody of a response. This can be used to download the response body to a file or a custom Guzzle
-EntityBody object.
-
-No location
-^^^^^^^^^^^
-
-If a parameter has no location attribute, then the parameter is simply used as a data value.
-
-Other locations
-^^^^^^^^^^^^^^^
-
-Custom locations can be registered as new locations or override default locations if needed.
-
-.. _model-schema:
-
-Model Schema
-------------
-
-Models are used in service descriptions to provide generic JSON schema definitions that can be extended from or used in
-``$ref`` attributes. Models can also be referenced in a ``responseClass`` attribute to provide valuable output to an
-operation. Models are JSON schema documents and use the exact syntax and attributes used in parameters.
-
-Response Models
-~~~~~~~~~~~~~~~
-
-Response models describe how a response is parsed into a ``Guzzle\Service\Resource\Model`` object. Response models are
-always modeled as JSON schema objects. When an HTTP response is parsed using a response model, the rules specified on
-each property of a response model will translate 1:1 as keys in a PHP associative array. When a ``sentAs`` attribute is
-found in response model parameters, the value retrieved from the HTTP response is retrieved using the ``sentAs``
-parameter but stored in the response model using the name of the parameter.
-
-The location field of top-level parameters in a response model tell response parsers how data is retrieved from a
-response.
-
-statusCode location
-^^^^^^^^^^^^^^^^^^^
-
-Retrieves the status code of the response.
-
-reasonPhrase location
-^^^^^^^^^^^^^^^^^^^^^
-
-Retrieves the reason phrase of the response.
-
-header location
-^^^^^^^^^^^^^^^
-
-Retrieves a header from the HTTP response.
-
-body location
-^^^^^^^^^^^^^
-
-Retrieves the body of an HTTP response.
-
-json location
-^^^^^^^^^^^^^
-
-Retrieves a top-level parameter from a JSON document contained in an HTTP response.
-
-You can use ``additionalProperties`` if the JSON document is wrapped in an outer array. This allows you to parse the
-contents of each item in the array using the parsing rules defined in the ``additionalProperties`` schema.
-
-xml location
-^^^^^^^^^^^^
-
-Retrieves a top-level node value from an XML document contained in an HTTP response.
-
-Other locations
-^^^^^^^^^^^^^^^
-
-Custom locations can be registered as new locations or override default locations if needed.
-
-Example service description
----------------------------
-
-Let's say you're interacting with a web service called 'Foo' that allows for the following routes and methods::
-
- GET/POST /users
- GET/DELETE /users/:id
-
-The following JSON service description implements this simple web service:
-
-.. class:: overflow-height-500px
-
- .. code-block:: json
-
- {
- "name": "Foo",
- "apiVersion": "2012-10-14",
- "baseUrl": "http://api.foo.com",
- "description": "Foo is an API that allows you to Baz Bar",
- "operations": {
- "GetUsers": {
- "httpMethod": "GET",
- "uri": "/users",
- "summary": "Gets a list of users",
- "responseClass": "GetUsersOutput"
- },
- "CreateUser": {
- "httpMethod": "POST",
- "uri": "/users",
- "summary": "Creates a new user",
- "responseClass": "CreateUserOutput",
- "parameters": {
- "name": {
- "location": "json",
- "type": "string"
- },
- "age": {
- "location": "json",
- "type": "integer"
- }
- }
- },
- "GetUser": {
- "httpMethod": "GET",
- "uri": "/users/{id}",
- "summary": "Retrieves a single user",
- "responseClass": "GetUserOutput",
- "parameters": {
- "id": {
- "location": "uri",
- "description": "User to retrieve by ID",
- "required": true
- }
- }
- },
- "DeleteUser": {
- "httpMethod": "DELETE",
- "uri": "/users/{id}",
- "summary": "Deletes a user",
- "responseClass": "DeleteUserOutput",
- "parameters": {
- "id": {
- "location": "uri",
- "description": "User to delete by ID",
- "required": true
- }
- }
- }
- },
- "models": {
- "GetUsersOutput": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "location": "json",
- "type": "string"
- },
- "age": {
- "location": "json",
- "type": "integer"
- }
- }
- }
- },
- "CreateUserOutput": {
- "type": "object",
- "properties": {
- "id": {
- "location": "json",
- "type": "string"
- },
- "location": {
- "location": "header",
- "sentAs": "Location",
- "type": "string"
- }
- }
- },
- "GetUserOutput": {
- "type": "object",
- "properties": {
- "name": {
- "location": "json",
- "type": "string"
- },
- "age": {
- "location": "json",
- "type": "integer"
- }
- }
- },
- "DeleteUserOutput": {
- "type": "object",
- "properties": {
- "status": {
- "location": "statusCode",
- "type": "integer"
- }
- }
- }
- }
- }
-
-If you attach this service description to a client, you would completely configure the client to interact with the
-Foo web service and provide valuable response models for each operation.
-
-.. code-block:: php
-
- use Guzzle\Service\Description\ServiceDescription;
-
- $description = ServiceDescription::factory('/path/to/client.json');
- $client->setDescription($description);
-
- $command = $client->getCommand('DeleteUser', array('id' => 123));
- $responseModel = $client->execute($command);
- echo $responseModel['status'];
-
-.. note::
-
- You can add the service description to your client's factory method or constructor.
diff --git a/inc/mailgun/guzzle/guzzle/docs/webservice-client/using-the-service-builder.rst b/inc/mailgun/guzzle/guzzle/docs/webservice-client/using-the-service-builder.rst
deleted file mode 100644
index b7113d6..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/webservice-client/using-the-service-builder.rst
+++ /dev/null
@@ -1,316 +0,0 @@
-=======================
-Using a service builder
-=======================
-
-The best way to instantiate Guzzle web service clients is to let Guzzle handle building the clients for you using a
-ServiceBuilder. A ServiceBuilder is responsible for creating concrete client objects based on configuration settings
-and helps to manage credentials for different environments.
-
-You don't have to use a service builder, but they help to decouple your application from concrete classes and help to
-share configuration data across multiple clients. Consider the following example. Here we are creating two clients that
-require the same API public key and secret key. The clients are created using their ``factory()`` methods.
-
-.. code-block:: php
-
- use MyService\FooClient;
- use MyService\BarClient;
-
- $foo = FooClient::factory(array(
- 'key' => 'abc',
- 'secret' => '123',
- 'custom' => 'and above all'
- ));
-
- $bar = BarClient::factory(array(
- 'key' => 'abc',
- 'secret' => '123',
- 'custom' => 'listen to me'
- ));
-
-The redundant specification of the API keys can be removed using a service builder.
-
-.. code-block:: php
-
- use Guzzle\Service\Builder\ServiceBuilder;
-
- $builder = ServiceBuilder::factory(array(
- 'services' => array(
- 'abstract_client' => array(
- 'params' => array(
- 'key' => 'abc',
- 'secret' => '123'
- )
- ),
- 'foo' => array(
- 'extends' => 'abstract_client',
- 'class' => 'MyService\FooClient',
- 'params' => array(
- 'custom' => 'and above all'
- )
- ),
- 'bar' => array(
- 'extends' => 'abstract_client',
- 'class' => 'MyService\FooClient',
- 'params' => array(
- 'custom' => 'listen to me'
- )
- )
- )
- ));
-
- $foo = $builder->get('foo');
- $bar = $builder->get('bar');
-
-You can make managing your API keys even easier by saving the service builder configuration in a JSON format in a
-.json file.
-
-Creating a service builder
---------------------------
-
-A ServiceBuilder can source information from an array, an PHP include file that returns an array, or a JSON file.
-
-.. code-block:: php
-
- use Guzzle\Service\Builder\ServiceBuilder;
-
- // Source service definitions from a JSON file
- $builder = ServiceBuilder::factory('services.json');
-
-Sourcing data from an array
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Data can be source from a PHP array. The array must contain an associative ``services`` array that maps the name of a
-client to the configuration information used by the service builder to create the client. Clients are given names
-which are used to identify how a client is retrieved from a service builder. This can be useful for using multiple
-accounts for the same service or creating development clients vs. production clients.
-
-.. code-block:: php
-
- $services = array(
- 'includes' => array(
- '/path/to/other/services.json',
- '/path/to/other/php_services.php'
- ),
- 'services' => array(
- 'abstract.foo' => array(
- 'params' => array(
- 'username' => 'foo',
- 'password' => 'bar'
- )
- ),
- 'bar' => array(
- 'extends' => 'abstract.foo',
- 'class' => 'MyClientClass',
- 'params' => array(
- 'other' => 'abc'
- )
- )
- )
- );
-
-A service builder configuration array contains two top-level array keys:
-
-+------------+---------------------------------------------------------------------------------------------------------+
-| Key | Description |
-+============+=========================================================================================================+
-| includes | Array of paths to JSON or PHP include files to include in the configuration. |
-+------------+---------------------------------------------------------------------------------------------------------+
-| services | Associative array of defined services that can be created by the service builder. Each service can |
-| | contain the following keys: |
-| | |
-| | +------------+----------------------------------------------------------------------------------------+ |
-| | | Key | Description | |
-| | +============+========================================================================================+ |
-| | | class | The concrete class to instantiate that implements the | |
-| | | | ``Guzzle\Common\FromConfigInterface``. | |
-| | +------------+----------------------------------------------------------------------------------------+ |
-| | | extends | The name of a previously defined service to extend from | |
-| | +------------+----------------------------------------------------------------------------------------+ |
-| | | params | Associative array of parameters to pass to the factory method of the service it is | |
-| | | | instantiated | |
-| | +------------+----------------------------------------------------------------------------------------+ |
-| | | alias | An alias that can be used in addition to the array key for retrieving a client from | |
-| | | | the service builder. | |
-| | +------------+----------------------------------------------------------------------------------------+ |
-+------------+---------------------------------------------------------------------------------------------------------+
-
-The first client defined, ``abstract.foo``, is used as a placeholder of shared configuration values. Any service
-extending abstract.foo will inherit its params. As an example, this can be useful when clients share the same username
-and password.
-
-The next client, ``bar``, extends from ``abstract.foo`` using the ``extends`` attribute referencing the client from
-which to extend. Additional parameters can be merged into the original service definition when extending a parent
-service.
-
-.. important::
-
- Each client that you intend to instantiate must specify a ``class`` attribute that references the full class name
- of the client being created. The class referenced in the ``class`` parameter must implement a static ``factory()``
- method that accepts an array or ``Guzzle\Common\Collection`` object and returns an instantiated object.
-
-Sourcing from a PHP include
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can create service builder configurations using a PHP include file. This can be useful if you wish to take
-advantage of an opcode cache like APC to speed up the process of loading and processing the configuration. The PHP
-include file is the same format as an array, but you simply create a PHP script that returns an array and save the
-file with the .php file extension.
-
-.. code-block:: php
-
- <?php return array('services' => '...');
- // Saved as config.php
-
-This configuration file can then be used with a service builder.
-
-.. code-block:: php
-
- $builder = ServiceBuilder::factory('/path/to/config.php');
-
-Sourcing from a JSON document
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use JSON documents to serialize your service descriptions. The JSON format uses the exact same structure as
-the PHP array syntax, but it's just serialized using JSON.
-
-.. code-block:: javascript
-
- {
- "includes": ["/path/to/other/services.json", "/path/to/other/php_services.php"],
- "services": {
- "abstract.foo": {
- "params": {
- "username": "foo",
- "password": "bar"
- }
- },
- "bar": {
- "extends": "abstract.foo",
- "class": "MyClientClass",
- "params": {
- "other": "abc"
- }
- }
- }
- }
-
-Referencing other clients in parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If one of your clients depends on another client as one of its parameters, you can reference that client by name by
-enclosing the client's reference key in ``{}``.
-
-.. code-block:: javascript
-
- {
- "services": {
- "token": {
- "class": "My\Token\TokenFactory",
- "params": {
- "access_key": "xyz"
- }
- },
- "client": {
- "class": "My\Client",
- "params": {
- "token_client": "{token}",
- "version": "1.0"
- }
- }
- }
- }
-
-When ``client`` is constructed by the service builder, the service builder will first create the ``token`` service
-and then inject the token service into ``client``'s factory method in the ``token_client`` parameter.
-
-Retrieving clients from a service builder
------------------------------------------
-
-Clients are referenced using a customizable name you provide in your service definition. The ServiceBuilder is a sort
-of multiton object-- it will only instantiate a client once and return that client for subsequent retrievals. Clients
-are retrieved by name (the array key used in the configuration) or by the ``alias`` setting of a service.
-
-Here's an example of retrieving a client from your ServiceBuilder:
-
-.. code-block:: php
-
- $client = $builder->get('foo');
-
- // You can also use the ServiceBuilder object as an array
- $client = $builder['foo'];
-
-Creating throwaway clients
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can get a "throwaway" client (a client that is not persisted by the ServiceBuilder) by passing ``true`` in the
-second argument of ``ServiceBuilder::get()``. This allows you to create a client that will not be returned by other
-parts of your code that use the service builder. Instead of passing ``true``, you can pass an array of configuration
-settings that will override the configuration settings specified in the service builder.
-
-.. code-block:: php
-
- // Get a throwaway client and overwrite the "custom" setting of the client
- $foo = $builder->get('foo', array(
- 'custom' => 'in this world there are rules'
- ));
-
-Getting raw configuration settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can get the raw configuration settings provided to the service builder for a specific service using the
-``getData($name)`` method of a service builder. This method will null if the service was not found in the service
-builder or an array of configuration settings if the service was found.
-
-.. code-block:: php
-
- $data = $builder->getData('foo');
- echo $data['key'] . "\n";
- echo $data['secret'] . "\n";
- echo $data['custom'] . "\n";
-
-Adding a plugin to all clients
-------------------------------
-
-You can add a plugin to all clients created by a service builder using the ``addGlobalPlugin($plugin)`` method of a
-service builder and passing a ``Symfony\Component\EventDispatcher\EventSubscriberInterface`` object. The service builder
-will then attach each global plugin to every client as it is created. This allows you to, for example, add a LogPlugin
-to every request created by a service builder for easy debugging.
-
-.. code-block:: php
-
- use Guzzle\Plugin\Log\LogPlugin;
-
- // Add a debug log plugin to every client as it is created
- $builder->addGlobalPlugin(LogPlugin::getDebugPlugin());
-
- $foo = $builder->get('foo');
- $foo->get('/')->send();
- // Should output all of the data sent over the wire
-
-.. _service-builder-events:
-
-Events emitted from a service builder
--------------------------------------
-
-A ``Guzzle\Service\Builder\ServiceBuilder`` object emits the following events:
-
-+-------------------------------+--------------------------------------------+-----------------------------------------+
-| Event name | Description | Event data |
-+===============================+============================================+=========================================+
-| service_builder.create_client | Called when a client is created | * client: The created client object |
-+-------------------------------+--------------------------------------------+-----------------------------------------+
-
-.. code-block:: php
-
- use Guzzle\Common\Event;
- use Guzzle\Service\Builder\ServiceBuilder;
-
- $builder = ServiceBuilder::factory('/path/to/config.json');
-
- // Add an event listener to print out each client client as it is created
- $builder->getEventDispatcher()->addListener('service_builder.create_client', function (Event $e) {
- echo 'Client created: ' . get_class($e['client']) . "\n";
- });
-
- $foo = $builder->get('foo');
- // Should output the class used for the "foo" client
diff --git a/inc/mailgun/guzzle/guzzle/docs/webservice-client/webservice-client.rst b/inc/mailgun/guzzle/guzzle/docs/webservice-client/webservice-client.rst
deleted file mode 100644
index 7ec771e..0000000
--- a/inc/mailgun/guzzle/guzzle/docs/webservice-client/webservice-client.rst
+++ /dev/null
@@ -1,659 +0,0 @@
-======================
-The web service client
-======================
-
-The ``Guzzle\Service`` namespace contains various abstractions that help to make it easier to interact with a web
-service API, including commands, service descriptions, and resource iterators.
-
-In this chapter, we'll build a simple `Twitter API client <https://dev.twitter.com/docs/api/1.1>`_.
-
-Creating a client
-=================
-
-A class that extends from ``Guzzle\Service\Client`` or implements ``Guzzle\Service\ClientInterface`` must implement a
-``factory()`` method in order to be used with a :doc:`service builder <using-the-service-builder>`.
-
-Factory method
---------------
-
-You can use the ``factory()`` method of a client directly if you do not need a service builder.
-
-.. code-block:: php
-
- use mtdowling\TwitterClient;
-
- // Create a client and pass an array of configuration data
- $twitter = TwitterClient::factory(array(
- 'consumer_key' => '****',
- 'consumer_secret' => '****',
- 'token' => '****',
- 'token_secret' => '****'
- ));
-
-.. note::
-
- If you'd like to follow along, here's how to get your Twitter API credentials:
-
- 1. Visit https://dev.twitter.com/apps
- 2. Click on an application that you've created
- 3. Click on the "OAuth tool" tab
- 4. Copy all of the settings under "OAuth Settings"
-
-Implementing a factory method
------------------------------
-
-Creating a client and its factory method is pretty simple. You just need to implement ``Guzzle\Service\ClientInterface``
-or extend from ``Guzzle\Service\Client``.
-
-.. code-block:: php
-
- namespace mtdowling;
-
- use Guzzle\Common\Collection;
- use Guzzle\Plugin\Oauth\OauthPlugin;
- use Guzzle\Service\Client;
- use Guzzle\Service\Description\ServiceDescription;
-
- /**
- * A simple Twitter API client
- */
- class TwitterClient extends Client
- {
- public static function factory($config = array())
- {
- // Provide a hash of default client configuration options
- $default = array('base_url' => 'https://api.twitter.com/1.1');
-
- // The following values are required when creating the client
- $required = array(
- 'base_url',
- 'consumer_key',
- 'consumer_secret',
- 'token',
- 'token_secret'
- );
-
- // Merge in default settings and validate the config
- $config = Collection::fromConfig($config, $default, $required);
-
- // Create a new Twitter client
- $client = new self($config->get('base_url'), $config);
-
- // Ensure that the OauthPlugin is attached to the client
- $client->addSubscriber(new OauthPlugin($config->toArray()));
-
- return $client;
- }
- }
-
-Service Builder
----------------
-
-A service builder is used to easily create web service clients, provides a simple configuration driven approach to
-creating clients, and allows you to share configuration settings across multiple clients. You can find out more about
-Guzzle's service builder in :doc:`using-the-service-builder`.
-
-.. code-block:: php
-
- use Guzzle\Service\Builder\ServiceBuilder;
-
- // Create a service builder and provide client configuration data
- $builder = ServiceBuilder::factory('/path/to/client_config.json');
-
- // Get the client from the service builder by name
- $twitter = $builder->get('twitter');
-
-The above example assumes you have JSON data similar to the following stored in "/path/to/client_config.json":
-
-.. code-block:: json
-
- {
- "services": {
- "twitter": {
- "class": "mtdowling\\TwitterClient",
- "params": {
- "consumer_key": "****",
- "consumer_secret": "****",
- "token": "****",
- "token_secret": "****"
- }
- }
- }
- }
-
-.. note::
-
- A service builder becomes much more valuable when using multiple web service clients in a single application or
- if you need to utilize the same client with varying configuration settings (e.g. multiple accounts).
-
-Commands
-========
-
-Commands are a concept in Guzzle that helps to hide the underlying implementation of an API by providing an easy to use
-parameter driven object for each action of an API. A command is responsible for accepting an array of configuration
-parameters, serializing an HTTP request, and parsing an HTTP response. Following the
-`command pattern <http://en.wikipedia.org/wiki/Command_pattern>`_, commands in Guzzle offer a greater level of
-flexibility when implementing and utilizing a web service client.
-
-Executing commands
-------------------
-
-You must explicitly execute a command after creating a command using the ``getCommand()`` method. A command has an
-``execute()`` method that may be called, or you can use the ``execute()`` method of a client object and pass in the
-command object. Calling either of these execute methods will return the result value of the command. The result value is
-the result of parsing the HTTP response with the ``process()`` method.
-
-.. code-block:: php
-
- // Get a command from the client and pass an array of parameters
- $command = $twitter->getCommand('getMentions', array(
- 'count' => 5
- ));
-
- // Other parameters can be set on the command after it is created
- $command['trim_user'] = false;
-
- // Execute the command using the command object.
- // The result value contains an array of JSON data from the response
- $result = $command->execute();
-
- // You can retrieve the result of the command later too
- $result = $command->getResult().
-
-Command object also contains methods that allow you to inspect the HTTP request and response that was utilized with
-the command.
-
-.. code-block:: php
-
- $request = $command->getRequest();
- $response = $command->getResponse();
-
-.. note::
-
- The format and notation used to retrieve commands from a client can be customized by injecting a custom command
- factory, ``Guzzle\Service\Command\Factory\FactoryInterface``, on the client using ``$client->setCommandFactory()``.
-
-Executing with magic methods
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When using method missing magic methods with a command, the command will be executed right away and the result of the
-command is returned.
-
-.. code-block:: php
-
- $jsonData = $twitter->getMentions(array(
- 'count' => 5,
- 'trim_user' => true
- ));
-
-Creating commands
------------------
-
-Commands are created using either the ``getCommand()`` method of a client or a magic missing method of a client. Using
-the ``getCommand()`` method allows you to create a command without executing it, allowing for customization of the
-command or the request serialized by the command.
-
-When a client attempts to create a command, it uses the client's ``Guzzle\Service\Command\Factory\FactoryInterface``.
-By default, Guzzle will utilize a command factory that first looks for a concrete class for a particular command
-(concrete commands) followed by a command defined by a service description (operation commands). We'll learn more about
-concrete commands and operation commands later in this chapter.
-
-.. code-block:: php
-
- // Get a command from the twitter client.
- $command = $twitter->getCommand('getMentions');
- $result = $command->execute();
-
-Unless you've skipped ahead, running the above code will throw an exception.
-
- PHP Fatal error: Uncaught exception 'Guzzle\Common\Exception\InvalidArgumentException' with message
- 'Command was not found matching getMentions'
-
-This exception was thrown because the "getMentions" command has not yet been implemented. Let's implement one now.
-
-Concrete commands
-~~~~~~~~~~~~~~~~~
-
-Commands can be created in one of two ways: create a concrete command class that extends
-``Guzzle\Service\Command\AbstractCommand`` or
-:doc:`create an OperationCommand based on a service description <guzzle-service-descriptions>`. The recommended
-approach is to use a service description to define your web service, but you can use concrete commands when custom
-logic must be implemented for marshaling or unmarshaling a HTTP message.
-
-Commands are the method in which you abstract away the underlying format of the requests that need to be sent to take
-action on a web service. Commands in Guzzle are meant to be built by executing a series of setter methods on a command
-object. Commands are only validated right before they are executed. A ``Guzzle\Service\Client`` object is responsible
-for executing commands. Commands created for your web service must implement
-``Guzzle\Service\Command\CommandInterface``, but it's easier to extend the ``Guzzle\Service\Command\AbstractCommand``
-class, implement the ``build()`` method, and optionally implement the ``process()`` method.
-
-Serializing requests
-^^^^^^^^^^^^^^^^^^^^
-
-The ``build()`` method of a command is responsible for using the arguments of the command to build and serialize a
-HTTP request and set the request on the ``$request`` property of the command object. This step is usually taken care of
-for you when using a service description driven command that uses the default
-``Guzzle\Service\Command\OperationCommand``. You may wish to implement the process method yourself when you aren't
-using a service description or need to implement more complex request serialization.
-
-.. important::::
-
- When implementing a custom ``build()`` method, be sure to set the class property of ``$this->request`` to an
- instantiated and ready to send request.
-
-The following example shows how to implement the ``getMentions``
-`Twitter API <https://dev.twitter.com/docs/api/1.1/get/statuses/mentions_timeline>`_ method using a concrete command.
-
-.. code-block:: php
-
- namespace mtdowling\Twitter\Command;
-
- use Guzzle\Service\Command\AbstractCommand;
-
- class GetMentions extends AbstractCommand
- {
- protected function build()
- {
- // Create the request property of the command
- $this->request = $this->client->get('statuses/mentions_timeline.json');
-
- // Grab the query object of the request because we will use it for
- // serializing command parameters on the request
- $query = $this->request->getQuery();
-
- if ($this['count']) {
- $query->set('count', $this['count']);
- }
-
- if ($this['since_id']) {
- $query->set('since_id', $this['since_id']);
- }
-
- if ($this['max_id']) {
- $query->set('max_id', $this['max_id']);
- }
-
- if ($this['trim_user'] !== null) {
- $query->set('trim_user', $this['trim_user'] ? 'true' : 'false');
- }
-
- if ($this['contributor_details'] !== null) {
- $query->set('contributor_details', $this['contributor_details'] ? 'true' : 'false');
- }
-
- if ($this['include_entities'] !== null) {
- $query->set('include_entities', $this['include_entities'] ? 'true' : 'false');
- }
- }
- }
-
-By default, a client will attempt to find concrete command classes under the ``Command`` namespace of a client. First
-the client will attempt to find an exact match for the name of the command to the name of the command class. If an
-exact match is not found, the client will calculate a class name using inflection. This is calculated based on the
-folder hierarchy of a command and converting the CamelCased named commands into snake_case. Here are some examples on
-how the command names are calculated:
-
-#. ``Foo\Command\JarJar`` **->** jar_jar
-#. ``Foo\Command\Test`` **->** test
-#. ``Foo\Command\People\GetCurrentPerson`` **->** people.get_current_person
-
-Notice how any sub-namespace beneath ``Command`` is converted from ``\`` to ``.`` (a period). CamelCasing is converted
-to lowercased snake_casing (e.g. JarJar == jar_jar).
-
-Parsing responses
-^^^^^^^^^^^^^^^^^
-
-The ``process()`` method of a command is responsible for converting an HTTP response into something more useful. For
-example, a service description operation that has specified a model object in the ``responseClass`` attribute of the
-operation will set a ``Guzzle\Service\Resource\Model`` object as the result of the command. This behavior can be
-completely modified as needed-- even if you are using operations and responseClass models. Simply implement a custom
-``process()`` method that sets the ``$this->result`` class property to whatever you choose. You can reuse parts of the
-default Guzzle response parsing functionality or get inspiration from existing code by using
-``Guzzle\Service\Command\OperationResponseParser`` and ``Guzzle\Service\Command\DefaultResponseParser`` classes.
-
-If you do not implement a custom ``process()`` method and are not using a service description, then Guzzle will attempt
-to guess how a response should be processed based on the Content-Type header of the response. Because the Twitter API
-sets a ``Content-Type: application/json`` header on this response, we do not need to implement any custom response
-parsing.
-
-Operation commands
-~~~~~~~~~~~~~~~~~~
-
-Operation commands are commands in which the serialization of an HTTP request and the parsing of an HTTP response are
-driven by a Guzzle service description. Because request serialization, validation, and response parsing are
-described using a DSL, creating operation commands is a much faster process than writing concrete commands.
-
-Creating operation commands for our Twitter client can remove a great deal of redundancy from the previous concrete
-command, and allows for a deeper runtime introspection of the API. Here's an example service description we can use to
-create the Twitter API client:
-
-.. code-block:: json
-
- {
- "name": "Twitter",
- "apiVersion": "1.1",
- "baseUrl": "https://api.twitter.com/1.1",
- "description": "Twitter REST API client",
- "operations": {
- "GetMentions": {
- "httpMethod": "GET",
- "uri": "statuses/mentions_timeline.json",
- "summary": "Returns the 20 most recent mentions for the authenticating user.",
- "responseClass": "GetMentionsOutput",
- "parameters": {
- "count": {
- "description": "Specifies the number of tweets to try and retrieve",
- "type": "integer",
- "location": "query"
- },
- "since_id": {
- "description": "Returns results with an ID greater than the specified ID",
- "type": "integer",
- "location": "query"
- },
- "max_id": {
- "description": "Returns results with an ID less than or equal to the specified ID.",
- "type": "integer",
- "location": "query"
- },
- "trim_user": {
- "description": "Limits the amount of data returned for each user",
- "type": "boolean",
- "location": "query"
- },
- "contributor_details": {
- "description": "Adds more data to contributor elements",
- "type": "boolean",
- "location": "query"
- },
- "include_entities": {
- "description": "The entities node will be disincluded when set to false.",
- "type": "boolean",
- "location": "query"
- }
- }
- }
- },
- "models": {
- "GetMentionsOutput": {
- "type": "object",
- "additionalProperties": {
- "location": "json"
- }
- }
- }
- }
-
-If you're lazy, you can define the API in a less descriptive manner using ``additionalParameters``.
-``additionalParameters`` define the serialization and validation rules of parameters that are not explicitly defined
-in a service description.
-
-.. code-block:: json
-
- {
- "name": "Twitter",
- "apiVersion": "1.1",
- "baseUrl": "https://api.twitter.com/1.1",
- "description": "Twitter REST API client",
- "operations": {
- "GetMentions": {
- "httpMethod": "GET",
- "uri": "statuses/mentions_timeline.json",
- "summary": "Returns the 20 most recent mentions for the authenticating user.",
- "responseClass": "GetMentionsOutput",
- "additionalParameters": {
- "location": "query"
- }
- }
- },
- "models": {
- "GetMentionsOutput": {
- "type": "object",
- "additionalProperties": {
- "location": "json"
- }
- }
- }
- }
-
-You should attach the service description to the client at the end of the client's factory method:
-
-.. code-block:: php
-
- // ...
- class TwitterClient extends Client
- {
- public static function factory($config = array())
- {
- // ... same code as before ...
-
- // Set the service description
- $client->setDescription(ServiceDescription::factory('path/to/twitter.json'));
-
- return $client;
- }
- }
-
-The client can now use operations defined in the service description instead of requiring you to create concrete
-command classes. Feel free to delete the concrete command class we created earlier.
-
-.. code-block:: php
-
- $jsonData = $twitter->getMentions(array(
- 'count' => 5,
- 'trim_user' => true
- ));
-
-Executing commands in parallel
-------------------------------
-
-Much like HTTP requests, Guzzle allows you to send multiple commands in parallel. You can send commands in parallel by
-passing an array of command objects to a client's ``execute()`` method. The client will serialize each request and
-send them all in parallel. If an error is encountered during the transfer, then a
-``Guzzle\Service\Exception\CommandTransferException`` is thrown, which allows you to retrieve a list of commands that
-succeeded and a list of commands that failed.
-
-.. code-block:: php
-
- use Guzzle\Service\Exception\CommandTransferException;
-
- $commands = array();
- $commands[] = $twitter->getCommand('getMentions');
- $commands[] = $twitter->getCommand('otherCommandName');
- // etc...
-
- try {
- $result = $client->execute($commands);
- foreach ($result as $command) {
- echo $command->getName() . ': ' . $command->getResponse()->getStatusCode() . "\n";
- }
- } catch (CommandTransferException $e) {
- // Get an array of the commands that succeeded
- foreach ($e->getSuccessfulCommands() as $command) {
- echo $command->getName() . " succeeded\n";
- }
- // Get an array of the commands that failed
- foreach ($e->getFailedCommands() as $command) {
- echo $command->getName() . " failed\n";
- }
- }
-
-.. note::
-
- All commands executed from a client using an array must originate from the same client.
-
-Special command options
------------------------
-
-Guzzle exposes several options that help to control how commands are validated, serialized, and parsed.
-Command options can be specified when creating a command or in the ``command.params`` parameter in the
-``Guzzle\Service\Client``.
-
-=========================== ============================================================================================
-command.request_options Option used to add :ref:`Request options <request-options>` to the request created by a
- command
-command.hidden_params An array of the names of parameters ignored by the ``additionalParameters`` parameter schema
-command.disable_validation Set to true to disable JSON schema validation of the command's input parameters
-command.response_processing Determines how the default response parser will parse the command. One of "raw" no parsing,
- "model" (the default method used to parse commands using response models defined in service
- descriptions)
-command.headers (deprecated) Option used to specify custom headers. Use ``command.request_options`` instead
-command.on_complete (deprecated) Option used to add an onComplete method to a command. Use
- ``command.after_send`` event instead
-command.response_body (deprecated) Option used to change the entity body used to store a response.
- Use ``command.request_options`` instead
-=========================== ============================================================================================
-
-Advanced client configuration
-=============================
-
-Default command parameters
---------------------------
-
-When creating a client object, you can specify default command parameters to pass into all commands. Any key value pair
-present in the ``command.params`` settings of a client will be added as default parameters to any command created
-by the client.
-
-.. code-block:: php
-
- $client = new Guzzle\Service\Client(array(
- 'command.params' => array(
- 'default_1' => 'foo',
- 'another' => 'bar'
- )
- ));
-
-Magic methods
--------------
-
-Client objects will, by default, attempt to create and execute commands when a missing method is invoked on a client.
-This powerful concept applies to both concrete commands and operation commands powered by a service description. This
-makes it appear to the end user that you have defined actual methods on a client object, when in fact, the methods are
-invoked using PHP's magic ``__call`` method.
-
-The ``__call`` method uses the ``getCommand()`` method of a client, which uses the client's internal
-``Guzzle\Service\Command\Factory\FactoryInterface`` object. The default command factory allows you to instantiate
-operations defined in a client's service description. The method in which a client determines which command to
-execute is defined as follows:
-
-1. The client will first try to find a literal match for an operation in the service description.
-2. If the literal match is not found, the client will try to uppercase the first character of the operation and find
- the match again.
-3. If a match is still not found, the command factory will inflect the method name from CamelCase to snake_case and
- attempt to find a matching command.
-4. If a command still does not match, an exception is thrown.
-
-.. code-block:: php
-
- // Use the magic method
- $result = $twitter->getMentions();
-
- // This is exactly the same as:
- $result = $twitter->getCommand('getMentions')->execute();
-
-You can disable magic methods on a client by passing ``false`` to the ``enableMagicMethod()`` method.
-
-Custom command factory
-----------------------
-
-A client by default uses the ``Guzzle\Service\Command\Factory\CompositeFactory`` which allows multiple command
-factories to attempt to create a command by a certain name. The default CompositeFactory uses a ``ConcreteClassFactory``
-and a ``ServiceDescriptionFactory`` if a service description is specified on a client. You can specify a custom
-command factory if your client requires custom command creation logic using the ``setCommandFactory()`` method of
-a client.
-
-Custom resource Iterator factory
---------------------------------
-
-Resource iterators can be retrieved from a client using the ``getIterator($name)`` method of a client. This method uses
-a client's internal ``Guzzle\Service\Resource\ResourceIteratorFactoryInterface`` object. A client by default uses a
-``Guzzle\Service\Resource\ResourceIteratorClassFactory`` to attempt to find concrete classes that implement resource
-iterators. The default factory will first look for matching iterators in the ``Iterator`` subdirectory of the client
-followed by the ``Model`` subdirectory of a client. Use the ``setResourceIteratorFactory()`` method of a client to
-specify a custom resource iterator factory.
-
-Plugins and events
-==================
-
-``Guzzle\Service\Client`` exposes various events that allow you to hook in custom logic. A client object owns a
-``Symfony\Component\EventDispatcher\EventDispatcher`` object that can be accessed by calling
-``$client->getEventDispatcher()``. You can use the event dispatcher to add listeners (a simple callback function) or
-event subscribers (classes that listen to specific events of a dispatcher).
-
-.. _service-client-events:
-
-Events emitted from a Service Client
-------------------------------------
-
-A ``Guzzle\Service\Client`` object emits the following events:
-
-+------------------------------+--------------------------------------------+------------------------------------------+
-| Event name | Description | Event data |
-+==============================+============================================+==========================================+
-| client.command.create | The client created a command object | * client: Client object |
-| | | * command: Command object |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| command.before_prepare | Before a command is validated and built. | * command: Command being prepared |
-| | This is also before a request is created. | |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| command.after_prepare | After a command instantiates and | * command: Command that was prepared |
-| | configures its request object. | |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| command.before_send | The client is about to execute a prepared | * command: Command to execute |
-| | command | |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| command.after_send | The client successfully completed | * command: The command that was executed |
-| | executing a command | |
-+------------------------------+--------------------------------------------+------------------------------------------+
-| command.parse_response | Called when ``responseType`` is ``class`` | * command: The command with a response |
-| | and the response is about to be parsed. | about to be parsed. |
-+------------------------------+--------------------------------------------+------------------------------------------+
-
-.. code-block:: php
-
- use Guzzle\Common\Event;
- use Guzzle\Service\Client;
-
- $client = new Client();
-
- // create an event listener that operates on request objects
- $client->getEventDispatcher()->addListener('command.after_prepare', function (Event $event) {
- $command = $event['command'];
- $request = $command->getRequest();
-
- // do something with request
- });
-
-.. code-block:: php
-
- use Guzzle\Common\Event;
- use Guzzle\Common\Client;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
- class EventSubscriber implements EventSubscriberInterface
- {
- public static function getSubscribedEvents()
- {
- return array(
- 'client.command.create' => 'onCommandCreate',
- 'command.parse_response' => 'onParseResponse'
- );
- }
-
- public function onCommandCreate(Event $event)
- {
- $client = $event['client'];
- $command = $event['command'];
- // operate on client and command
- }
-
- public function onParseResponse(Event $event)
- {
- $command = $event['command'];
- // operate on the command
- }
- }
-
- $client = new Client();
-
- $client->addSubscriber(new EventSubscriber());
diff --git a/inc/mailgun/guzzle/guzzle/phar-stub.php b/inc/mailgun/guzzle/guzzle/phar-stub.php
deleted file mode 100644
index cc2b53f..0000000
--- a/inc/mailgun/guzzle/guzzle/phar-stub.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-Phar::mapPhar('guzzle.phar');
-
-require_once 'phar://guzzle.phar/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php';
-
-$classLoader = new Symfony\Component\ClassLoader\UniversalClassLoader();
-$classLoader->registerNamespaces(array(
- 'Guzzle' => 'phar://guzzle.phar/src',
- 'Symfony\\Component\\EventDispatcher' => 'phar://guzzle.phar/vendor/symfony/event-dispatcher',
- 'Doctrine' => 'phar://guzzle.phar/vendor/doctrine/common/lib',
- 'Monolog' => 'phar://guzzle.phar/vendor/monolog/monolog/src'
-));
-$classLoader->register();
-
-__HALT_COMPILER();
diff --git a/inc/mailgun/guzzle/guzzle/phing/build.properties.dist b/inc/mailgun/guzzle/guzzle/phing/build.properties.dist
deleted file mode 100644
index c60d3d9..0000000
--- a/inc/mailgun/guzzle/guzzle/phing/build.properties.dist
+++ /dev/null
@@ -1,16 +0,0 @@
-# you may need to update this if you're working on a fork.
-guzzle.remote=git@github.com:guzzle/guzzle.git
-
-# github credentials -- only used by GitHub API calls to create subtree repos
-github.basicauth=username:password
-# for the subtree split and testing
-github.org=guzzle
-
-# your git path
-cmd.git=git
-
-# your composer command
-cmd.composer=composer
-
-# test server start
-cmd.testserver=node
diff --git a/inc/mailgun/guzzle/guzzle/phing/imports/dependencies.xml b/inc/mailgun/guzzle/guzzle/phing/imports/dependencies.xml
deleted file mode 100644
index e40e037..0000000
--- a/inc/mailgun/guzzle/guzzle/phing/imports/dependencies.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project basedir="../../" default="install-dependencies">
-
- <property name="cmd.composer" value="" />
- <property name="cmd.git" value="" />
- <property name="cmd.testserver" value="" />
-
- <!--
- Our custom tasks
- -->
- <taskdef name="composerlint" classname="phing.tasks.ComposerLintTask" />
- <taskdef name="guzzlesubsplit" classname="phing.tasks.GuzzleSubSplitTask" />
- <taskdef name="guzzlepear" classname="phing.tasks.GuzzlePearPharPackageTask" />
-
- <target name="find-git">
- <if>
- <contains string="${cmd.git}" substring="git" />
- <then>
- <echo>using git at ${cmd.git}</echo>
- </then>
- <else>
- <exec command="which git" outputProperty="cmd.git" />
- <echo>found git at ${cmd.git}</echo>
- </else>
- </if>
- </target>
-
- <target name="clean-dependencies">
- <delete dir="${project.basedir}/vendor"/>
- <delete file="${project.basedir}/composer.lock" />
- </target>
-
-</project>
diff --git a/inc/mailgun/guzzle/guzzle/phing/imports/deploy.xml b/inc/mailgun/guzzle/guzzle/phing/imports/deploy.xml
deleted file mode 100644
index 109e5ec..0000000
--- a/inc/mailgun/guzzle/guzzle/phing/imports/deploy.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project basedir="../../" default="deploy">
-
- <property name="git.status" value=""/>
- <property name="git.currentbranch" value=""/>
- <target name="check-git-branch-status">
- <exec command="git status -s -b" outputProperty="git.currentbranch" />
- <echo msg="${git.currentbranch}"/>
- <if>
- <contains string="${git.currentbranch}" substring="${head}"/>
- <then>
- <echo>On branch ${head}</echo>
- </then>
- <else>
- <fail message="-Dhead=${head} arg did not match ${git.currentbranch}"/>
- </else>
- </if>
- <exec command="git status -s" outputProperty="git.status" />
- <if>
- <equals arg1="${git.status}" arg2="" trim="true"/>
- <then>
- <echo>working directory clean</echo>
- </then>
- <else>
- <echo>${git.status}</echo>
- <fail message="Working directory isn't clean." />
- </else>
- </if>
- </target>
-
- <property name="version.changelog" value=""/>
- <property name="version.version" value=""/>
- <target name="check-changelog-version">
- <exec executable="fgrep" outputProperty="version.changelog">
- <arg value="${new.version} ("/>
- <arg value="${project.basedir}/CHANGELOG.md"/>
- </exec>
- <if>
- <equals arg1="${version.changelog}" arg2="" trim="true"/>
- <then>
- <fail message="${new.version} not mentioned in CHANGELOG"/>
- </then>
- </if>
-
- <exec executable="fgrep" outputProperty="version.version">
- <arg value="const VERSION = '${new.version}'"/>
- <arg value="${project.basedir}/src/Guzzle/Common/Version.php"/>
- </exec>
- <if>
- <equals arg1="${version.version}" arg2="" trim="true"/>
- <then>
- <fail message="${new.version} not mentioned in Guzzle\Common\Version"/>
- </then>
- </if>
-
- <echo>ChangeLog Match: ${version.changelog}</echo>
- <echo>Guzzle\Common\Version Match: ${version.version}</echo>
- </target>
-
- <target name="help" description="HELP AND REMINDERS about what you can do with this project">
- <echo>releasing: phing -Dnew.version=3.0.x -Dhead=master release</echo>
- <echo>--</echo>
- <exec command="phing -l" passthru="true"/>
- </target>
-
- <target name="release" depends="check-changelog-version,check-git-branch-status"
- description="tag, subtree split, package, deploy: Use: phing -Dnew.version=[TAG] -Dhead=[BRANCH] release">
- <if>
- <isset property="new.version" />
- <then>
- <if>
- <contains string="${new.version}" substring="v" casesensitive="false" />
- <then>
- <fail message="Please specify version as [0-9].[0-9].[0-9]. (I'll add v for you.)"/>
- </then>
- <else>
-
- <echo>BEGINNING RELEASE FOR ${new.version}</echo>
-
- <!-- checkout the specified branch -->
- <!-- <gitcheckout repository="${repo.dir}" branchname="${head}" gitPath="${cmd.git}" /> -->
- <!-- Ensure that the tag exists -->
- <!-- push the tag up so subsplit will get it -->
- <!--gitpush repository="${repo.dir}" tags="true" gitPath="${cmd.git}" /-->
-
- <!-- now do the subsplits -->
- <guzzlesubsplit
- repository="${repo.dir}"
- remote="${guzzle.remote}"
- heads="${head}"
- tags="v${new.version}"
- base="src"
- subIndicatorFile="composer.json"
- gitPath="${cmd.git}" />
-
- <!-- Copy .md files into the PEAR package -->
- <copy file="${repo.dir}/LICENSE" tofile=".subsplit/src/Guzzle/LICENSE.md" />
- <copy file="${repo.dir}/README.md" tofile=".subsplit/src/Guzzle/README.md" />
- <copy file="${repo.dir}/CHANGELOG.md" tofile=".subsplit/src/Guzzle/CHANGELOG.md" />
-
- <!-- and now the pear packages -->
- <guzzlepear
- version="${new.version}"
- makephar="true"
- />
- </else>
-
- </if>
- </then>
-
- <else>
- <echo>Tip: to create a new release, do: phing -Dnew.version=[TAG] -Dhead=[BRANCH] release</echo>
- </else>
-
- </if>
- </target>
-
- <target name="pear-channel">
- <guzzlepear version="${new.version}" deploy="true" makephar="true" />
- </target>
-
- <target name="package-phar" description="Create a phar with an autoloader">
- <pharpackage
- destfile="${dir.output}/guzzle.phar"
- basedir="${project.basedir}/.subsplit"
- stub="phar-stub.php"
- signature="md5">
- <fileset dir="${project.basedir}/.subsplit">
- <include name="src/**/*.php" />
- <include name="src/**/*.pem" />
- <include name="vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php" />
- <include name="vendor/symfony/event-dispatcher/**/*.php" />
- <include name="vendor/doctrine/common/lib/Doctrine/Common/Cache/*.php" />
- <include name="vendor/monolog/monolog/src/**/*.php" />
- </fileset>
- <metadata>
- <element name="author" value="Michael Dowling" />
- </metadata>
- </pharpackage>
- </target>
-
-</project>
diff --git a/inc/mailgun/guzzle/guzzle/phing/tasks/ComposerLintTask.php b/inc/mailgun/guzzle/guzzle/phing/tasks/ComposerLintTask.php
deleted file mode 100644
index 3b70409..0000000
--- a/inc/mailgun/guzzle/guzzle/phing/tasks/ComposerLintTask.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-/**
- * Phing task for composer validation.
- *
- * @copyright 2012 Clay Loveless <clay@php.net>
- * @license http://claylo.mit-license.org/2012/ MIT License
- */
-
-require_once 'phing/Task.php';
-
-class ComposerLintTask extends Task
-{
- protected $dir = null;
- protected $file = null;
- protected $passthru = false;
- protected $composer = null;
-
- /**
- * The setter for the dir
- *
- * @param string $str Directory to crawl recursively for composer files
- */
- public function setDir($str)
- {
- $this->dir = $str;
- }
-
- /**
- * The setter for the file
- *
- * @param string $str Individual file to validate
- */
- public function setFile($str)
- {
- $this->file = $str;
- }
-
- /**
- * Whether to use PHP's passthru() function instead of exec()
- *
- * @param boolean $passthru If passthru shall be used
- */
- public function setPassthru($passthru)
- {
- $this->passthru = (bool) $passthru;
- }
-
- /**
- * Composer to execute. If unset, will attempt composer.phar in project
- * basedir, and if that fails, will attempt global composer
- * installation.
- *
- * @param string $str Individual file to validate
- */
- public function setComposer($str)
- {
- $this->file = $str;
- }
-
- /**
- * The init method: do init steps
- */
- public function init()
- {
- // nothing needed here
- }
-
- /**
- * The main entry point
- */
- public function main()
- {
- if ($this->composer === null) {
- $this->findComposer();
- }
-
- $files = array();
- if (!empty($this->file) && file_exists($this->file)) {
- $files[] = $this->file;
- }
-
- if (!empty($this->dir)) {
- $found = $this->findFiles();
- foreach ($found as $file) {
- $files[] = $this->dir . DIRECTORY_SEPARATOR . $file;
- }
- }
-
- foreach ($files as $file) {
-
- $cmd = $this->composer . ' validate ' . $file;
- $cmd = escapeshellcmd($cmd);
-
- if ($this->passthru) {
- $retval = null;
- passthru($cmd, $retval);
- if ($retval == 1) {
- throw new BuildException('invalid composer.json');
- }
- } else {
- $out = array();
- $retval = null;
- exec($cmd, $out, $retval);
- if ($retval == 1) {
- $err = join("\n", $out);
- throw new BuildException($err);
- } else {
- $this->log($out[0]);
- }
- }
-
- }
-
- }
-
- /**
- * Find the composer.json files using Phing's directory scanner
- *
- * @return array
- */
- protected function findFiles()
- {
- $ds = new DirectoryScanner();
- $ds->setBasedir($this->dir);
- $ds->setIncludes(array('**/composer.json'));
- $ds->scan();
- return $ds->getIncludedFiles();
- }
-
- /**
- * Find composer installation
- *
- */
- protected function findComposer()
- {
- $basedir = $this->project->getBasedir();
- $php = $this->project->getProperty('php.interpreter');
-
- if (file_exists($basedir . '/composer.phar')) {
- $this->composer = "$php $basedir/composer.phar";
- } else {
- $out = array();
- exec('which composer', $out);
- if (empty($out)) {
- throw new BuildException(
- 'Could not determine composer location.'
- );
- }
- $this->composer = $out[0];
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/phing/tasks/GuzzlePearPharPackageTask.php b/inc/mailgun/guzzle/guzzle/phing/tasks/GuzzlePearPharPackageTask.php
deleted file mode 100644
index f72a6b5..0000000
--- a/inc/mailgun/guzzle/guzzle/phing/tasks/GuzzlePearPharPackageTask.php
+++ /dev/null
@@ -1,338 +0,0 @@
-<?php
-/**
- * This file is part of Guzzle's build process.
- *
- * @copyright 2012 Clay Loveless <clay@php.net>
- * @license http://claylo.mit-license.org/2012/ MIT License
- */
-
-require_once 'phing/Task.php';
-require_once 'PEAR/PackageFileManager2.php';
-require_once 'PEAR/PackageFileManager/File.php';
-require_once 'PEAR/Packager.php';
-
-class GuzzlePearPharPackageTask extends Task
-{
- private $version;
- private $deploy = true;
- private $makephar = true;
-
- private $subpackages = array();
-
- public function setVersion($str)
- {
- $this->version = $str;
- }
-
- public function getVersion()
- {
- return $this->version;
- }
-
- public function setDeploy($deploy)
- {
- $this->deploy = (bool) $deploy;
- }
-
- public function getDeploy()
- {
- return $this->deploy;
- }
-
- public function setMakephar($makephar)
- {
- $this->makephar = (bool) $makephar;
- }
-
- public function getMakephar()
- {
- return $this->makephar;
- }
-
- private $basedir;
- private $guzzleinfo;
- private $changelog_release_date;
- private $changelog_notes = '-';
-
- public function main()
- {
- $this->basedir = $this->getProject()->getBasedir();
-
- if (!is_dir((string) $this->basedir.'/.subsplit')) {
- throw new BuildException('PEAR packaging requires .subsplit directory');
- }
-
- // main composer file
- $composer_file = file_get_contents((string) $this->basedir.'/.subsplit/composer.json');
- $this->guzzleinfo = json_decode($composer_file, true);
-
- // make sure we have a target
- $pearwork = (string) $this->basedir . '/build/pearwork';
- if (!is_dir($pearwork)) {
- mkdir($pearwork, 0777, true);
- }
- $pearlogs = (string) $this->basedir . '/build/artifacts/logs';
- if (!is_dir($pearlogs)) {
- mkdir($pearlogs, 0777, true);
- }
-
- $version = $this->getVersion();
- $this->grabChangelog();
- if ($version[0] == '2') {
- $this->log('building single PEAR package');
- $this->buildSinglePackage();
- } else {
- // $this->log("building PEAR subpackages");
- // $this->createSubPackages();
- // $this->log("building PEAR bundle package");
- $this->buildSinglePackage();
- }
-
- if ($this->getMakephar()) {
- $this->log("building PHAR");
- $this->getProject()->executeTarget('package-phar');
- }
-
- if ($this->getDeploy()) {
- $this->doDeployment();
- }
- }
-
- public function doDeployment()
- {
- $basedir = (string) $this->basedir;
- $this->log('beginning PEAR/PHAR deployment');
-
- chdir($basedir . '/build/pearwork');
- if (!is_dir('./channel')) {
- mkdir('./channel');
- }
-
- // Pull the PEAR channel down locally
- passthru('aws s3 sync s3://pear.guzzlephp.org ./channel');
-
- // add PEAR packages
- foreach (scandir('./') as $file) {
- if (substr($file, -4) == '.tgz') {
- passthru('pirum add ./channel ' . $file);
- }
- }
-
- // if we have a new phar, add it
- if ($this->getMakephar() && file_exists($basedir . '/build/artifacts/guzzle.phar')) {
- rename($basedir . '/build/artifacts/guzzle.phar', './channel/guzzle.phar');
- }
-
- // Sync up with the S3 bucket
- chdir($basedir . '/build/pearwork/channel');
- passthru('aws s3 sync . s3://pear.guzzlephp.org');
- }
-
- public function buildSinglePackage()
- {
- $v = $this->getVersion();
- $apiversion = $v[0] . '.0.0';
-
- $opts = array(
- 'packagedirectory' => (string) $this->basedir . '/.subsplit/src/',
- 'filelistgenerator' => 'file',
- 'ignore' => array('*composer.json'),
- 'baseinstalldir' => '/',
- 'packagefile' => 'package.xml'
- //'outputdirectory' => (string) $this->basedir . '/build/pearwork/'
- );
- $pfm = new PEAR_PackageFileManager2();
- $pfm->setOptions($opts);
- $pfm->addRole('md', 'doc');
- $pfm->addRole('pem', 'php');
- $pfm->setPackage('Guzzle');
- $pfm->setSummary("Object-oriented PHP HTTP Client for PHP 5.3+");
- $pfm->setDescription($this->guzzleinfo['description']);
- $pfm->setPackageType('php');
- $pfm->setChannel('guzzlephp.org/pear');
- $pfm->setAPIVersion($apiversion);
- $pfm->setReleaseVersion($this->getVersion());
- $pfm->setAPIStability('stable');
- $pfm->setReleaseStability('stable');
- $pfm->setNotes($this->changelog_notes);
- $pfm->setPackageType('php');
- $pfm->setLicense('MIT', 'http://github.com/guzzle/guzzle/blob/master/LICENSE');
- $pfm->addMaintainer('lead', 'mtdowling', 'Michael Dowling', 'mtdowling@gmail.com', 'yes');
- $pfm->setDate($this->changelog_release_date);
- $pfm->generateContents();
-
- $phpdep = $this->guzzleinfo['require']['php'];
- $phpdep = str_replace('>=', '', $phpdep);
- $pfm->setPhpDep($phpdep);
- $pfm->addExtensionDep('required', 'curl');
- $pfm->setPearinstallerDep('1.4.6');
- $pfm->addPackageDepWithChannel('required', 'EventDispatcher', 'pear.symfony.com', '2.1.0');
- if (!empty($this->subpackages)) {
- foreach ($this->subpackages as $package) {
- $pkg = dirname($package);
- $pkg = str_replace('/', '_', $pkg);
- $pfm->addConflictingPackageDepWithChannel($pkg, 'guzzlephp.org/pear', false, $apiversion);
- }
- }
-
- ob_start();
- $startdir = getcwd();
- chdir((string) $this->basedir . '/build/pearwork');
-
- echo "DEBUGGING GENERATED PACKAGE FILE\n";
- $result = $pfm->debugPackageFile();
- if ($result) {
- $out = $pfm->writePackageFile();
- echo "\n\n\nWRITE PACKAGE FILE RESULT:\n";
- var_dump($out);
- // load up package file and build package
- $packager = new PEAR_Packager();
- echo "\n\n\nBUILDING PACKAGE FROM PACKAGE FILE:\n";
- $dest_package = $packager->package($opts['packagedirectory'].'package.xml');
- var_dump($dest_package);
- } else {
- echo "\n\n\nDEBUGGING RESULT:\n";
- var_dump($result);
- }
- echo "removing package.xml";
- unlink($opts['packagedirectory'].'package.xml');
- $log = ob_get_clean();
- file_put_contents((string) $this->basedir . '/build/artifacts/logs/pear_package.log', $log);
- chdir($startdir);
- }
-
- public function createSubPackages()
- {
- $this->findComponents();
-
- foreach ($this->subpackages as $package) {
- $baseinstalldir = dirname($package);
- $dir = (string) $this->basedir.'/.subsplit/src/' . $baseinstalldir;
- $composer_file = file_get_contents((string) $this->basedir.'/.subsplit/src/'. $package);
- $package_info = json_decode($composer_file, true);
- $this->log('building ' . $package_info['target-dir'] . ' subpackage');
- $this->buildSubPackage($dir, $baseinstalldir, $package_info);
- }
- }
-
- public function buildSubPackage($dir, $baseinstalldir, $info)
- {
- $package = str_replace('/', '_', $baseinstalldir);
- $opts = array(
- 'packagedirectory' => $dir,
- 'filelistgenerator' => 'file',
- 'ignore' => array('*composer.json', '*package.xml'),
- 'baseinstalldir' => '/' . $info['target-dir'],
- 'packagefile' => 'package.xml'
- );
- $pfm = new PEAR_PackageFileManager2();
- $pfm->setOptions($opts);
- $pfm->setPackage($package);
- $pfm->setSummary($info['description']);
- $pfm->setDescription($info['description']);
- $pfm->setPackageType('php');
- $pfm->setChannel('guzzlephp.org/pear');
- $pfm->setAPIVersion('3.0.0');
- $pfm->setReleaseVersion($this->getVersion());
- $pfm->setAPIStability('stable');
- $pfm->setReleaseStability('stable');
- $pfm->setNotes($this->changelog_notes);
- $pfm->setPackageType('php');
- $pfm->setLicense('MIT', 'http://github.com/guzzle/guzzle/blob/master/LICENSE');
- $pfm->addMaintainer('lead', 'mtdowling', 'Michael Dowling', 'mtdowling@gmail.com', 'yes');
- $pfm->setDate($this->changelog_release_date);
- $pfm->generateContents();
-
- $phpdep = $this->guzzleinfo['require']['php'];
- $phpdep = str_replace('>=', '', $phpdep);
- $pfm->setPhpDep($phpdep);
- $pfm->setPearinstallerDep('1.4.6');
-
- foreach ($info['require'] as $type => $version) {
- if ($type == 'php') {
- continue;
- }
- if ($type == 'symfony/event-dispatcher') {
- $pfm->addPackageDepWithChannel('required', 'EventDispatcher', 'pear.symfony.com', '2.1.0');
- }
- if ($type == 'ext-curl') {
- $pfm->addExtensionDep('required', 'curl');
- }
- if (substr($type, 0, 6) == 'guzzle') {
- $gdep = str_replace('/', ' ', $type);
- $gdep = ucwords($gdep);
- $gdep = str_replace(' ', '_', $gdep);
- $pfm->addPackageDepWithChannel('required', $gdep, 'guzzlephp.org/pear', $this->getVersion());
- }
- }
-
- // can't have main Guzzle package AND sub-packages
- $pfm->addConflictingPackageDepWithChannel('Guzzle', 'guzzlephp.org/pear', false, $apiversion);
-
- ob_start();
- $startdir = getcwd();
- chdir((string) $this->basedir . '/build/pearwork');
-
- echo "DEBUGGING GENERATED PACKAGE FILE\n";
- $result = $pfm->debugPackageFile();
- if ($result) {
- $out = $pfm->writePackageFile();
- echo "\n\n\nWRITE PACKAGE FILE RESULT:\n";
- var_dump($out);
- // load up package file and build package
- $packager = new PEAR_Packager();
- echo "\n\n\nBUILDING PACKAGE FROM PACKAGE FILE:\n";
- $dest_package = $packager->package($opts['packagedirectory'].'/package.xml');
- var_dump($dest_package);
- } else {
- echo "\n\n\nDEBUGGING RESULT:\n";
- var_dump($result);
- }
- echo "removing package.xml";
- unlink($opts['packagedirectory'].'/package.xml');
- $log = ob_get_clean();
- file_put_contents((string) $this->basedir . '/build/artifacts/logs/pear_package_'.$package.'.log', $log);
- chdir($startdir);
- }
-
- public function findComponents()
- {
- $ds = new DirectoryScanner();
- $ds->setBasedir((string) $this->basedir.'/.subsplit/src');
- $ds->setIncludes(array('**/composer.json'));
- $ds->scan();
- $files = $ds->getIncludedFiles();
- $this->subpackages = $files;
- }
-
- public function grabChangelog()
- {
- $cl = file((string) $this->basedir.'/.subsplit/CHANGELOG.md');
- $notes = '';
- $in_version = false;
- $release_date = null;
-
- foreach ($cl as $line) {
- $line = trim($line);
- if (preg_match('/^\* '.$this->getVersion().' \(([0-9\-]+)\)$/', $line, $matches)) {
- $release_date = $matches[1];
- $in_version = true;
- continue;
- }
- if ($in_version && empty($line) && empty($notes)) {
- continue;
- }
- if ($in_version && ! empty($line)) {
- $notes .= $line."\n";
- }
- if ($in_version && empty($line) && !empty($notes)) {
- $in_version = false;
- }
- }
- $this->changelog_release_date = $release_date;
-
- if (! empty($notes)) {
- $this->changelog_notes = $notes;
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/phing/tasks/GuzzleSubSplitTask.php b/inc/mailgun/guzzle/guzzle/phing/tasks/GuzzleSubSplitTask.php
deleted file mode 100644
index 5d56a5b..0000000
--- a/inc/mailgun/guzzle/guzzle/phing/tasks/GuzzleSubSplitTask.php
+++ /dev/null
@@ -1,385 +0,0 @@
-<?php
-/**
- * Phing wrapper around git subsplit.
- *
- * @see https://github.com/dflydev/git-subsplit
- * @copyright 2012 Clay Loveless <clay@php.net>
- * @license http://claylo.mit-license.org/2012/ MIT License
- */
-
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-// base - base of tree to split out
-// subIndicatorFile - composer.json, package.xml?
-class GuzzleSubSplitTask extends GitBaseTask
-{
- /**
- * What git repository to pull from and publish to
- */
- protected $remote = null;
-
- /**
- * Publish for comma-separated heads instead of all heads
- */
- protected $heads = null;
-
- /**
- * Publish for comma-separated tags instead of all tags
- */
- protected $tags = null;
-
- /**
- * Base of the tree RELATIVE TO .subsplit working dir
- */
- protected $base = null;
-
- /**
- * The presence of this file will indicate that the directory it resides
- * in is at the top level of a split.
- */
- protected $subIndicatorFile = 'composer.json';
-
- /**
- * Do everything except actually send the update.
- */
- protected $dryRun = null;
-
- /**
- * Do not sync any heads.
- */
- protected $noHeads = false;
-
- /**
- * Do not sync any tags.
- */
- protected $noTags = false;
-
- /**
- * The splits we found in the heads
- */
- protected $splits;
-
- public function setRemote($str)
- {
- $this->remote = $str;
- }
-
- public function getRemote()
- {
- return $this->remote;
- }
-
- public function setHeads($str)
- {
- $this->heads = explode(',', $str);
- }
-
- public function getHeads()
- {
- return $this->heads;
- }
-
- public function setTags($str)
- {
- $this->tags = explode(',', $str);
- }
-
- public function getTags()
- {
- return $this->tags;
- }
-
- public function setBase($str)
- {
- $this->base = $str;
- }
-
- public function getBase()
- {
- return $this->base;
- }
-
- public function setSubIndicatorFile($str)
- {
- $this->subIndicatorFile = $str;
- }
-
- public function getSubIndicatorFile()
- {
- return $this->subIndicatorFile;
- }
-
- public function setDryRun($bool)
- {
- $this->dryRun = (bool) $bool;
- }
-
- public function getDryRun()
- {
- return $this->dryRun;
- }
-
- public function setNoHeads($bool)
- {
- $this->noHeads = (bool) $bool;
- }
-
- public function getNoHeads()
- {
- return $this->noHeads;
- }
-
- public function setNoTags($bool)
- {
- $this->noTags = (bool) $bool;
- }
-
- public function getNoTags()
- {
- return $this->noTags;
- }
-
- /**
- * GitClient from VersionControl_Git
- */
- protected $client = null;
-
- /**
- * The main entry point
- */
- public function main()
- {
- $repo = $this->getRepository();
- if (empty($repo)) {
- throw new BuildException('"repository" is a required parameter');
- }
-
- $remote = $this->getRemote();
- if (empty($remote)) {
- throw new BuildException('"remote" is a required parameter');
- }
-
- chdir($repo);
- $this->client = $this->getGitClient(false, $repo);
-
- // initalized yet?
- if (!is_dir('.subsplit')) {
- $this->subsplitInit();
- } else {
- // update
- $this->subsplitUpdate();
- }
-
- // find all splits based on heads requested
- $this->findSplits();
-
- // check that GitHub has the repos
- $this->verifyRepos();
-
- // execute the subsplits
- $this->publish();
- }
-
- public function publish()
- {
- $this->log('DRY RUN ONLY FOR NOW');
- $base = $this->getBase();
- $base = rtrim($base, '/') . '/';
- $org = $this->getOwningTarget()->getProject()->getProperty('github.org');
-
- $splits = array();
-
- $heads = $this->getHeads();
- foreach ($heads as $head) {
- foreach ($this->splits[$head] as $component => $meta) {
- $splits[] = $base . $component . ':git@github.com:'. $org.'/'.$meta['repo'];
- }
-
- $cmd = 'git subsplit publish ';
- $cmd .= escapeshellarg(implode(' ', $splits));
-
- if ($this->getNoHeads()) {
- $cmd .= ' --no-heads';
- } else {
- $cmd .= ' --heads='.$head;
- }
-
- if ($this->getNoTags()) {
- $cmd .= ' --no-tags';
- } else {
- if ($this->getTags()) {
- $cmd .= ' --tags=' . escapeshellarg(implode(' ', $this->getTags()));
- }
- }
-
- passthru($cmd);
- }
- }
-
- /**
- * Runs `git subsplit update`
- */
- public function subsplitUpdate()
- {
- $repo = $this->getRepository();
- $this->log('git-subsplit update...');
- $cmd = $this->client->getCommand('subsplit');
- $cmd->addArgument('update');
- try {
- $cmd->execute();
- } catch (Exception $e) {
- throw new BuildException('git subsplit update failed'. $e);
- }
- chdir($repo . '/.subsplit');
- passthru('php ../composer.phar update --dev');
- chdir($repo);
- }
-
- /**
- * Runs `git subsplit init` based on the remote repository.
- */
- public function subsplitInit()
- {
- $remote = $this->getRemote();
- $cmd = $this->client->getCommand('subsplit');
- $this->log('running git-subsplit init ' . $remote);
-
- $cmd->setArguments(array(
- 'init',
- $remote
- ));
-
- try {
- $output = $cmd->execute();
- } catch (Exception $e) {
- throw new BuildException('git subsplit init failed'. $e);
- }
- $this->log(trim($output), Project::MSG_INFO);
- $repo = $this->getRepository();
- chdir($repo . '/.subsplit');
- passthru('php ../composer.phar install --dev');
- chdir($repo);
- }
-
- /**
- * Find the composer.json files using Phing's directory scanner
- *
- * @return array
- */
- protected function findSplits()
- {
- $this->log("checking heads for subsplits");
- $repo = $this->getRepository();
- $base = $this->getBase();
-
- $splits = array();
- $heads = $this->getHeads();
-
- if (!empty($base)) {
- $base = '/' . ltrim($base, '/');
- } else {
- $base = '/';
- }
-
- chdir($repo . '/.subsplit');
- foreach ($heads as $head) {
- $splits[$head] = array();
-
- // check each head requested *BEFORE* the actual subtree split command gets it
- passthru("git checkout '$head'");
- $ds = new DirectoryScanner();
- $ds->setBasedir($repo . '/.subsplit' . $base);
- $ds->setIncludes(array('**/'.$this->subIndicatorFile));
- $ds->scan();
- $files = $ds->getIncludedFiles();
-
- // Process the files we found
- foreach ($files as $file) {
- $pkg = file_get_contents($repo . '/.subsplit' . $base .'/'. $file);
- $pkg_json = json_decode($pkg, true);
- $name = $pkg_json['name'];
- $component = str_replace('/composer.json', '', $file);
- // keep this for split cmd
- $tmpreponame = explode('/', $name);
- $reponame = $tmpreponame[1];
- $splits[$head][$component]['repo'] = $reponame;
- $nscomponent = str_replace('/', '\\', $component);
- $splits[$head][$component]['desc'] = "[READ ONLY] Subtree split of $nscomponent: " . $pkg_json['description'];
- }
- }
-
- // go back to how we found it
- passthru("git checkout master");
- chdir($repo);
- $this->splits = $splits;
- }
-
- /**
- * Based on list of repositories we determined we *should* have, talk
- * to GitHub and make sure they're all there.
- *
- */
- protected function verifyRepos()
- {
- $this->log('verifying GitHub target repos');
- $github_org = $this->getOwningTarget()->getProject()->getProperty('github.org');
- $github_creds = $this->getOwningTarget()->getProject()->getProperty('github.basicauth');
-
- if ($github_creds == 'username:password') {
- $this->log('Skipping GitHub repo checks. Update github.basicauth in build.properties to verify repos.', 1);
- return;
- }
-
- $ch = curl_init('https://api.github.com/orgs/'.$github_org.'/repos?type=all');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_USERPWD, $github_creds);
- // change this when we know we can use our bundled CA bundle!
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- $result = curl_exec($ch);
- curl_close($ch);
- $repos = json_decode($result, true);
- $existing_repos = array();
-
- // parse out the repos we found on GitHub
- foreach ($repos as $repo) {
- $tmpreponame = explode('/', $repo['full_name']);
- $reponame = $tmpreponame[1];
- $existing_repos[$reponame] = $repo['description'];
- }
-
- $heads = $this->getHeads();
- foreach ($heads as $head) {
- foreach ($this->splits[$head] as $component => $meta) {
-
- $reponame = $meta['repo'];
-
- if (!isset($existing_repos[$reponame])) {
- $this->log("Creating missing repo $reponame");
- $payload = array(
- 'name' => $reponame,
- 'description' => $meta['desc'],
- 'homepage' => 'http://www.guzzlephp.org/',
- 'private' => true,
- 'has_issues' => false,
- 'has_wiki' => false,
- 'has_downloads' => true,
- 'auto_init' => false
- );
- $ch = curl_init('https://api.github.com/orgs/'.$github_org.'/repos');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_USERPWD, $github_creds);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
- // change this when we know we can use our bundled CA bundle!
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- $result = curl_exec($ch);
- echo "Response code: ".curl_getinfo($ch, CURLINFO_HTTP_CODE)."\n";
- curl_close($ch);
- } else {
- $this->log("Repo $reponame exists", 2);
- }
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/phpunit.xml.dist b/inc/mailgun/guzzle/guzzle/phpunit.xml.dist
deleted file mode 100644
index 208fdc0..0000000
--- a/inc/mailgun/guzzle/guzzle/phpunit.xml.dist
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit bootstrap="./tests/bootstrap.php"
- colors="true"
- processIsolation="false"
- stopOnFailure="false"
- syntaxCheck="false"
- convertErrorsToExceptions="true"
- convertNoticesToExceptions="true"
- convertWarningsToExceptions="true"
- testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader">
-
- <testsuites>
- <testsuite>
- <directory>./tests/Guzzle/Tests</directory>
- </testsuite>
- </testsuites>
-
- <logging>
- <log type="junit" target="build/artifacts/logs/junit.xml" logIncompleteSkipped="false" />
- </logging>
-
- <filter>
- <whitelist>
- <directory suffix=".php">./src/Guzzle</directory>
- <exclude>
- <directory suffix="Interface.php">./src/Guzzle</directory>
- <file>./src/Guzzle/Common/Exception/GuzzleException.php</file>
- <file>./src/Guzzle/Http/Exception/HttpException.php</file>
- <file>./src/Guzzle/Http/Exception/ServerErrorResponseException.php</file>
- <file>./src/Guzzle/Http/Exception/ClientErrorResponseException.php</file>
- <file>./src/Guzzle/Http/Exception/TooManyRedirectsException.php</file>
- <file>./src/Guzzle/Http/Exception/CouldNotRewindStreamException.php</file>
- <file>./src/Guzzle/Common/Exception/BadMethodCallException.php</file>
- <file>./src/Guzzle/Common/Exception/InvalidArgumentException.php</file>
- <file>./src/Guzzle/Common/Exception/RuntimeException.php</file>
- <file>./src/Guzzle/Common/Exception/UnexpectedValueException.php</file>
- <file>./src/Guzzle/Service/Exception/ClientNotFoundException.php</file>
- <file>./src/Guzzle/Service/Exception/CommandException.php</file>
- <file>./src/Guzzle/Service/Exception/DescriptionBuilderException.php</file>
- <file>./src/Guzzle/Service/Exception/ServiceBuilderException.php</file>
- <file>./src/Guzzle/Service/Exception/ServiceNotFoundException.php</file>
- <file>./src/Guzzle/Service/Exception/ValidationException.php</file>
- <file>./src/Guzzle/Service/Exception/JsonException.php</file>
- </exclude>
- </whitelist>
- </filter>
-
-</phpunit>
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php
deleted file mode 100644
index 0625d71..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-/**
- * Abstract decorator used when decorating a BatchInterface
- */
-abstract class AbstractBatchDecorator implements BatchInterface
-{
- /** @var BatchInterface Decorated batch object */
- protected $decoratedBatch;
-
- /**
- * @param BatchInterface $decoratedBatch BatchInterface that is being decorated
- */
- public function __construct(BatchInterface $decoratedBatch)
- {
- $this->decoratedBatch = $decoratedBatch;
- }
-
- /**
- * Allow decorators to implement custom methods
- *
- * @param string $method Missing method name
- * @param array $args Method arguments
- *
- * @return mixed
- * @codeCoverageIgnore
- */
- public function __call($method, array $args)
- {
- return call_user_func_array(array($this->decoratedBatch, $method), $args);
- }
-
- public function add($item)
- {
- $this->decoratedBatch->add($item);
-
- return $this;
- }
-
- public function flush()
- {
- return $this->decoratedBatch->flush();
- }
-
- public function isEmpty()
- {
- return $this->decoratedBatch->isEmpty();
- }
-
- /**
- * Trace the decorators associated with the batch
- *
- * @return array
- */
- public function getDecorators()
- {
- $found = array($this);
- if (method_exists($this->decoratedBatch, 'getDecorators')) {
- $found = array_merge($found, $this->decoratedBatch->getDecorators());
- }
-
- return $found;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Batch.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Batch.php
deleted file mode 100644
index 4d41c54..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Batch.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Batch\Exception\BatchTransferException;
-
-/**
- * Default batch implementation used to convert queued items into smaller chunks of batches using a
- * {@see BatchDivisorIterface} and transfers each batch using a {@see BatchTransferInterface}.
- *
- * Any exception encountered during a flush operation will throw a {@see BatchTransferException} object containing the
- * batch that failed. After an exception is encountered, you can flush the batch again to attempt to finish transferring
- * any previously created batches or queued items.
- */
-class Batch implements BatchInterface
-{
- /** @var \SplQueue Queue of items in the queue */
- protected $queue;
-
- /** @var array Divided batches to be transferred */
- protected $dividedBatches;
-
- /** @var BatchTransferInterface */
- protected $transferStrategy;
-
- /** @var BatchDivisorInterface */
- protected $divisionStrategy;
-
- /**
- * @param BatchTransferInterface $transferStrategy Strategy used to transfer items
- * @param BatchDivisorInterface $divisionStrategy Divisor used to create batches
- */
- public function __construct(BatchTransferInterface $transferStrategy, BatchDivisorInterface $divisionStrategy)
- {
- $this->transferStrategy = $transferStrategy;
- $this->divisionStrategy = $divisionStrategy;
- $this->queue = new \SplQueue();
- $this->queue->setIteratorMode(\SplQueue::IT_MODE_DELETE);
- $this->dividedBatches = array();
- }
-
- public function add($item)
- {
- $this->queue->enqueue($item);
-
- return $this;
- }
-
- public function flush()
- {
- $this->createBatches();
-
- $items = array();
- foreach ($this->dividedBatches as $batchIndex => $dividedBatch) {
- while ($dividedBatch->valid()) {
- $batch = $dividedBatch->current();
- $dividedBatch->next();
- try {
- $this->transferStrategy->transfer($batch);
- $items = array_merge($items, $batch);
- } catch (\Exception $e) {
- throw new BatchTransferException($batch, $items, $e, $this->transferStrategy, $this->divisionStrategy);
- }
- }
- // Keep the divided batch down to a minimum in case of a later exception
- unset($this->dividedBatches[$batchIndex]);
- }
-
- return $items;
- }
-
- public function isEmpty()
- {
- return count($this->queue) == 0 && count($this->dividedBatches) == 0;
- }
-
- /**
- * Create batches for any queued items
- */
- protected function createBatches()
- {
- if (count($this->queue)) {
- if ($batches = $this->divisionStrategy->createBatches($this->queue)) {
- // Convert arrays into iterators
- if (is_array($batches)) {
- $batches = new \ArrayIterator($batches);
- }
- $this->dividedBatches[] = $batches;
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchBuilder.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchBuilder.php
deleted file mode 100644
index ea99b4d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchBuilder.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\RuntimeException;
-
-/**
- * Builder used to create custom batch objects
- */
-class BatchBuilder
-{
- /** @var bool Whether or not the batch should automatically flush*/
- protected $autoFlush = false;
-
- /** @var bool Whether or not to maintain a batch history */
- protected $history = false;
-
- /** @var bool Whether or not to buffer exceptions encountered in transfer */
- protected $exceptionBuffering = false;
-
- /** @var mixed Callable to invoke each time a flush completes */
- protected $afterFlush;
-
- /** @var BatchTransferInterface Object used to transfer items in the queue */
- protected $transferStrategy;
-
- /** @var BatchDivisorInterface Object used to divide the queue into batches */
- protected $divisorStrategy;
-
- /** @var array of Mapped transfer strategies by handle name */
- protected static $mapping = array(
- 'request' => 'Guzzle\Batch\BatchRequestTransfer',
- 'command' => 'Guzzle\Batch\BatchCommandTransfer'
- );
-
- /**
- * Create a new instance of the BatchBuilder
- *
- * @return BatchBuilder
- */
- public static function factory()
- {
- return new self();
- }
-
- /**
- * Automatically flush the batch when the size of the queue reaches a certain threshold. Adds {@see FlushingBatch}.
- *
- * @param $threshold Number of items to allow in the queue before a flush
- *
- * @return BatchBuilder
- */
- public function autoFlushAt($threshold)
- {
- $this->autoFlush = $threshold;
-
- return $this;
- }
-
- /**
- * Maintain a history of all items that have been transferred using the batch. Adds {@see HistoryBatch}.
- *
- * @return BatchBuilder
- */
- public function keepHistory()
- {
- $this->history = true;
-
- return $this;
- }
-
- /**
- * Buffer exceptions thrown during transfer so that you can transfer as much as possible, and after a transfer
- * completes, inspect each exception that was thrown. Enables the {@see ExceptionBufferingBatch} decorator.
- *
- * @return BatchBuilder
- */
- public function bufferExceptions()
- {
- $this->exceptionBuffering = true;
-
- return $this;
- }
-
- /**
- * Notify a callable each time a batch flush completes. Enables the {@see NotifyingBatch} decorator.
- *
- * @param mixed $callable Callable function to notify
- *
- * @return BatchBuilder
- * @throws InvalidArgumentException if the argument is not callable
- */
- public function notify($callable)
- {
- $this->afterFlush = $callable;
-
- return $this;
- }
-
- /**
- * Configures the batch to transfer batches of requests. Associates a {@see \Guzzle\Http\BatchRequestTransfer}
- * object as both the transfer and divisor strategy.
- *
- * @param int $batchSize Batch size for each batch of requests
- *
- * @return BatchBuilder
- */
- public function transferRequests($batchSize = 50)
- {
- $className = self::$mapping['request'];
- $this->transferStrategy = new $className($batchSize);
- $this->divisorStrategy = $this->transferStrategy;
-
- return $this;
- }
-
- /**
- * Configures the batch to transfer batches commands. Associates as
- * {@see \Guzzle\Service\Command\BatchCommandTransfer} as both the transfer and divisor strategy.
- *
- * @param int $batchSize Batch size for each batch of commands
- *
- * @return BatchBuilder
- */
- public function transferCommands($batchSize = 50)
- {
- $className = self::$mapping['command'];
- $this->transferStrategy = new $className($batchSize);
- $this->divisorStrategy = $this->transferStrategy;
-
- return $this;
- }
-
- /**
- * Specify the strategy used to divide the queue into an array of batches
- *
- * @param BatchDivisorInterface $divisorStrategy Strategy used to divide a batch queue into batches
- *
- * @return BatchBuilder
- */
- public function createBatchesWith(BatchDivisorInterface $divisorStrategy)
- {
- $this->divisorStrategy = $divisorStrategy;
-
- return $this;
- }
-
- /**
- * Specify the strategy used to transport the items when flush is called
- *
- * @param BatchTransferInterface $transferStrategy How items are transferred
- *
- * @return BatchBuilder
- */
- public function transferWith(BatchTransferInterface $transferStrategy)
- {
- $this->transferStrategy = $transferStrategy;
-
- return $this;
- }
-
- /**
- * Create and return the instantiated batch
- *
- * @return BatchInterface
- * @throws RuntimeException if no transfer strategy has been specified
- */
- public function build()
- {
- if (!$this->transferStrategy) {
- throw new RuntimeException('No transfer strategy has been specified');
- }
-
- if (!$this->divisorStrategy) {
- throw new RuntimeException('No divisor strategy has been specified');
- }
-
- $batch = new Batch($this->transferStrategy, $this->divisorStrategy);
-
- if ($this->exceptionBuffering) {
- $batch = new ExceptionBufferingBatch($batch);
- }
-
- if ($this->afterFlush) {
- $batch = new NotifyingBatch($batch, $this->afterFlush);
- }
-
- if ($this->autoFlush) {
- $batch = new FlushingBatch($batch, $this->autoFlush);
- }
-
- if ($this->history) {
- $batch = new HistoryBatch($batch);
- }
-
- return $batch;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php
deleted file mode 100644
index e0a2d95..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * Divides batches using a callable
- */
-class BatchClosureDivisor implements BatchDivisorInterface
-{
- /** @var callable Method used to divide the batches */
- protected $callable;
-
- /** @var mixed $context Context passed to the callable */
- protected $context;
-
- /**
- * @param callable $callable Method used to divide the batches. The method must accept an \SplQueue and return an
- * array of arrays containing the divided items.
- * @param mixed $context Optional context to pass to the batch divisor
- *
- * @throws InvalidArgumentException if the callable is not callable
- */
- public function __construct($callable, $context = null)
- {
- if (!is_callable($callable)) {
- throw new InvalidArgumentException('Must pass a callable');
- }
-
- $this->callable = $callable;
- $this->context = $context;
- }
-
- public function createBatches(\SplQueue $queue)
- {
- return call_user_func($this->callable, $queue, $this->context);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureTransfer.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureTransfer.php
deleted file mode 100644
index 9cbf1ab..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchClosureTransfer.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * Batch transfer strategy where transfer logic can be defined via a Closure.
- * This class is to be used with {@see Guzzle\Batch\BatchInterface}
- */
-class BatchClosureTransfer implements BatchTransferInterface
-{
- /** @var callable A closure that performs the transfer */
- protected $callable;
-
- /** @var mixed $context Context passed to the callable */
- protected $context;
-
- /**
- * @param mixed $callable Callable that performs the transfer. This function should accept two arguments:
- * (array $batch, mixed $context).
- * @param mixed $context Optional context to pass to the batch divisor
- *
- * @throws InvalidArgumentException
- */
- public function __construct($callable, $context = null)
- {
- if (!is_callable($callable)) {
- throw new InvalidArgumentException('Argument must be callable');
- }
-
- $this->callable = $callable;
- $this->context = $context;
- }
-
- public function transfer(array $batch)
- {
- return empty($batch) ? null : call_user_func($this->callable, $batch, $this->context);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchCommandTransfer.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchCommandTransfer.php
deleted file mode 100644
index d55ac7d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchCommandTransfer.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Batch\BatchTransferInterface;
-use Guzzle\Batch\BatchDivisorInterface;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Exception\InconsistentClientTransferException;
-
-/**
- * Efficiently transfers multiple commands in parallel per client
- * This class is to be used with {@see Guzzle\Batch\BatchInterface}
- */
-class BatchCommandTransfer implements BatchTransferInterface, BatchDivisorInterface
-{
- /** @var int Size of each command batch */
- protected $batchSize;
-
- /**
- * @param int $batchSize Size of each batch
- */
- public function __construct($batchSize = 50)
- {
- $this->batchSize = $batchSize;
- }
-
- /**
- * Creates batches by grouping commands by their associated client
- * {@inheritdoc}
- */
- public function createBatches(\SplQueue $queue)
- {
- $groups = new \SplObjectStorage();
- foreach ($queue as $item) {
- if (!$item instanceof CommandInterface) {
- throw new InvalidArgumentException('All items must implement Guzzle\Service\Command\CommandInterface');
- }
- $client = $item->getClient();
- if (!$groups->contains($client)) {
- $groups->attach($client, new \ArrayObject(array($item)));
- } else {
- $groups[$client]->append($item);
- }
- }
-
- $batches = array();
- foreach ($groups as $batch) {
- $batches = array_merge($batches, array_chunk($groups[$batch]->getArrayCopy(), $this->batchSize));
- }
-
- return $batches;
- }
-
- public function transfer(array $batch)
- {
- if (empty($batch)) {
- return;
- }
-
- // Get the client of the first found command
- $client = reset($batch)->getClient();
-
- // Keep a list of all commands with invalid clients
- $invalid = array_filter($batch, function ($command) use ($client) {
- return $command->getClient() !== $client;
- });
-
- if (!empty($invalid)) {
- throw new InconsistentClientTransferException($invalid);
- }
-
- $client->execute($batch);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchDivisorInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchDivisorInterface.php
deleted file mode 100644
index 0214f05..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchDivisorInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-/**
- * Interface used for dividing a queue of items into an array of batches
- */
-interface BatchDivisorInterface
-{
- /**
- * Divide a queue of items into an array batches
- *
- * @param \SplQueue $queue Queue of items to divide into batches. Items are removed as they are iterated.
- *
- * @return array|\Traversable Returns an array or Traversable object that contains arrays of items to transfer
- */
- public function createBatches(\SplQueue $queue);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchInterface.php
deleted file mode 100644
index 28ea65c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-/**
- * Interface for efficiently transferring items in a queue using batches
- */
-interface BatchInterface
-{
- /**
- * Add an item to the queue
- *
- * @param mixed $item Item to add
- *
- * @return self
- */
- public function add($item);
-
- /**
- * Flush the batch and transfer the items
- *
- * @return array Returns an array flushed items
- */
- public function flush();
-
- /**
- * Check if the batch is empty and has further items to transfer
- *
- * @return bool
- */
- public function isEmpty();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchRequestTransfer.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchRequestTransfer.php
deleted file mode 100644
index 4d8489c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchRequestTransfer.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Batch\BatchTransferInterface;
-use Guzzle\Batch\BatchDivisorInterface;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * Batch transfer strategy used to efficiently transfer a batch of requests.
- * This class is to be used with {@see Guzzle\Batch\BatchInterface}
- */
-class BatchRequestTransfer implements BatchTransferInterface, BatchDivisorInterface
-{
- /** @var int Size of each command batch */
- protected $batchSize;
-
- /**
- * Constructor used to specify how large each batch should be
- *
- * @param int $batchSize Size of each batch
- */
- public function __construct($batchSize = 50)
- {
- $this->batchSize = $batchSize;
- }
-
- /**
- * Creates batches of requests by grouping requests by their associated curl multi object.
- * {@inheritdoc}
- */
- public function createBatches(\SplQueue $queue)
- {
- // Create batches by client objects
- $groups = new \SplObjectStorage();
- foreach ($queue as $item) {
- if (!$item instanceof RequestInterface) {
- throw new InvalidArgumentException('All items must implement Guzzle\Http\Message\RequestInterface');
- }
- $client = $item->getClient();
- if (!$groups->contains($client)) {
- $groups->attach($client, array($item));
- } else {
- $current = $groups[$client];
- $current[] = $item;
- $groups[$client] = $current;
- }
- }
-
- $batches = array();
- foreach ($groups as $batch) {
- $batches = array_merge($batches, array_chunk($groups[$batch], $this->batchSize));
- }
-
- return $batches;
- }
-
- public function transfer(array $batch)
- {
- if ($batch) {
- reset($batch)->getClient()->send($batch);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchSizeDivisor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchSizeDivisor.php
deleted file mode 100644
index 67f90a5..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchSizeDivisor.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-/**
- * Divides batches into smaller batches under a certain size
- */
-class BatchSizeDivisor implements BatchDivisorInterface
-{
- /** @var int Size of each batch */
- protected $size;
-
- /** @param int $size Size of each batch */
- public function __construct($size)
- {
- $this->size = $size;
- }
-
- /**
- * Set the size of each batch
- *
- * @param int $size Size of each batch
- *
- * @return BatchSizeDivisor
- */
- public function setSize($size)
- {
- $this->size = $size;
-
- return $this;
- }
-
- /**
- * Get the size of each batch
- *
- * @return int
- */
- public function getSize()
- {
- return $this->size;
- }
-
- public function createBatches(\SplQueue $queue)
- {
- return array_chunk(iterator_to_array($queue, false), $this->size);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchTransferInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchTransferInterface.php
deleted file mode 100644
index 2e0b60d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/BatchTransferInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-/**
- * Interface used for transferring batches of items
- */
-interface BatchTransferInterface
-{
- /**
- * Transfer an array of items
- *
- * @param array $batch Array of items to transfer
- */
- public function transfer(array $batch);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Exception/BatchTransferException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Exception/BatchTransferException.php
deleted file mode 100644
index 2e1f817..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/Exception/BatchTransferException.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-namespace Guzzle\Batch\Exception;
-
-use Guzzle\Common\Exception\GuzzleException;
-use Guzzle\Batch\BatchTransferInterface as TransferStrategy;
-use Guzzle\Batch\BatchDivisorInterface as DivisorStrategy;
-
-/**
- * Exception thrown during a batch transfer
- */
-class BatchTransferException extends \Exception implements GuzzleException
-{
- /** @var array The batch being sent when the exception occurred */
- protected $batch;
-
- /** @var TransferStrategy The transfer strategy in use when the exception occurred */
- protected $transferStrategy;
-
- /** @var DivisorStrategy The divisor strategy in use when the exception occurred */
- protected $divisorStrategy;
-
- /** @var array Items transferred at the point in which the exception was encountered */
- protected $transferredItems;
-
- /**
- * @param array $batch The batch being sent when the exception occurred
- * @param array $transferredItems Items transferred at the point in which the exception was encountered
- * @param \Exception $exception Exception encountered
- * @param TransferStrategy $transferStrategy The transfer strategy in use when the exception occurred
- * @param DivisorStrategy $divisorStrategy The divisor strategy in use when the exception occurred
- */
- public function __construct(
- array $batch,
- array $transferredItems,
- \Exception $exception,
- TransferStrategy $transferStrategy = null,
- DivisorStrategy $divisorStrategy = null
- ) {
- $this->batch = $batch;
- $this->transferredItems = $transferredItems;
- $this->transferStrategy = $transferStrategy;
- $this->divisorStrategy = $divisorStrategy;
- parent::__construct(
- 'Exception encountered while transferring batch: ' . $exception->getMessage(),
- $exception->getCode(),
- $exception
- );
- }
-
- /**
- * Get the batch that we being sent when the exception occurred
- *
- * @return array
- */
- public function getBatch()
- {
- return $this->batch;
- }
-
- /**
- * Get the items transferred at the point in which the exception was encountered
- *
- * @return array
- */
- public function getTransferredItems()
- {
- return $this->transferredItems;
- }
-
- /**
- * Get the transfer strategy
- *
- * @return TransferStrategy
- */
- public function getTransferStrategy()
- {
- return $this->transferStrategy;
- }
-
- /**
- * Get the divisor strategy
- *
- * @return DivisorStrategy
- */
- public function getDivisorStrategy()
- {
- return $this->divisorStrategy;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/ExceptionBufferingBatch.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/ExceptionBufferingBatch.php
deleted file mode 100644
index d7a8928..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/ExceptionBufferingBatch.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Batch\Exception\BatchTransferException;
-
-/**
- * BatchInterface decorator used to buffer exceptions encountered during a transfer. The exceptions can then later be
- * processed after a batch flush has completed.
- */
-class ExceptionBufferingBatch extends AbstractBatchDecorator
-{
- /** @var array Array of BatchTransferException exceptions */
- protected $exceptions = array();
-
- public function flush()
- {
- $items = array();
-
- while (!$this->decoratedBatch->isEmpty()) {
- try {
- $transferredItems = $this->decoratedBatch->flush();
- } catch (BatchTransferException $e) {
- $this->exceptions[] = $e;
- $transferredItems = $e->getTransferredItems();
- }
- $items = array_merge($items, $transferredItems);
- }
-
- return $items;
- }
-
- /**
- * Get the buffered exceptions
- *
- * @return array Array of BatchTransferException objects
- */
- public function getExceptions()
- {
- return $this->exceptions;
- }
-
- /**
- * Clear the buffered exceptions
- */
- public function clearExceptions()
- {
- $this->exceptions = array();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/FlushingBatch.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/FlushingBatch.php
deleted file mode 100644
index 367b684..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/FlushingBatch.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-/**
- * BatchInterface decorator used to add automatic flushing of the queue when the size of the queue reaches a threshold.
- */
-class FlushingBatch extends AbstractBatchDecorator
-{
- /** @var int The threshold for which to automatically flush */
- protected $threshold;
-
- /** @var int Current number of items known to be in the queue */
- protected $currentTotal = 0;
-
- /**
- * @param BatchInterface $decoratedBatch BatchInterface that is being decorated
- * @param int $threshold Flush when the number in queue matches the threshold
- */
- public function __construct(BatchInterface $decoratedBatch, $threshold)
- {
- $this->threshold = $threshold;
- parent::__construct($decoratedBatch);
- }
-
- /**
- * Set the auto-flush threshold
- *
- * @param int $threshold The auto-flush threshold
- *
- * @return FlushingBatch
- */
- public function setThreshold($threshold)
- {
- $this->threshold = $threshold;
-
- return $this;
- }
-
- /**
- * Get the auto-flush threshold
- *
- * @return int
- */
- public function getThreshold()
- {
- return $this->threshold;
- }
-
- public function add($item)
- {
- $this->decoratedBatch->add($item);
- if (++$this->currentTotal >= $this->threshold) {
- $this->currentTotal = 0;
- $this->decoratedBatch->flush();
- }
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/HistoryBatch.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/HistoryBatch.php
deleted file mode 100644
index e345fdc..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/HistoryBatch.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-/**
- * BatchInterface decorator used to keep a history of items that were added to the batch. You must clear the history
- * manually to remove items from the history.
- */
-class HistoryBatch extends AbstractBatchDecorator
-{
- /** @var array Items in the history */
- protected $history = array();
-
- public function add($item)
- {
- $this->history[] = $item;
- $this->decoratedBatch->add($item);
-
- return $this;
- }
-
- /**
- * Get the batch history
- *
- * @return array
- */
- public function getHistory()
- {
- return $this->history;
- }
-
- /**
- * Clear the batch history
- */
- public function clearHistory()
- {
- $this->history = array();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/NotifyingBatch.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/NotifyingBatch.php
deleted file mode 100644
index 96d04da..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/NotifyingBatch.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Guzzle\Batch;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * BatchInterface decorator used to call a method each time flush is called
- */
-class NotifyingBatch extends AbstractBatchDecorator
-{
- /** @var mixed Callable to call */
- protected $callable;
-
- /**
- * @param BatchInterface $decoratedBatch Batch object to decorate
- * @param mixed $callable Callable to call
- *
- * @throws InvalidArgumentException
- */
- public function __construct(BatchInterface $decoratedBatch, $callable)
- {
- if (!is_callable($callable)) {
- throw new InvalidArgumentException('The passed argument is not callable');
- }
-
- $this->callable = $callable;
- parent::__construct($decoratedBatch);
- }
-
- public function flush()
- {
- $items = $this->decoratedBatch->flush();
- call_user_func($this->callable, $items);
-
- return $items;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/composer.json
deleted file mode 100644
index 12404d3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Batch/composer.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "guzzle/batch",
- "description": "Guzzle batch component for batching requests, commands, or custom transfers",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["batch", "HTTP", "REST", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/common": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Batch": "" }
- },
- "suggest": {
- "guzzle/http": "self.version",
- "guzzle/service": "self.version"
- },
- "target-dir": "Guzzle/Batch",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/AbstractCacheAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/AbstractCacheAdapter.php
deleted file mode 100644
index a5c5271..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/AbstractCacheAdapter.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-/**
- * Abstract cache adapter
- */
-abstract class AbstractCacheAdapter implements CacheAdapterInterface
-{
- protected $cache;
-
- /**
- * Get the object owned by the adapter
- *
- * @return mixed
- */
- public function getCacheObject()
- {
- return $this->cache;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterFactory.php
deleted file mode 100644
index 94e6234..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterFactory.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-use Doctrine\Common\Cache\Cache;
-use Guzzle\Common\Version;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Common\FromConfigInterface;
-use Zend\Cache\Storage\StorageInterface;
-
-/**
- * Generates cache adapters from any number of known cache implementations
- */
-class CacheAdapterFactory implements FromConfigInterface
-{
- /**
- * Create a Guzzle cache adapter based on an array of options
- *
- * @param mixed $cache Cache value
- *
- * @return CacheAdapterInterface
- * @throws InvalidArgumentException
- */
- public static function fromCache($cache)
- {
- if (!is_object($cache)) {
- throw new InvalidArgumentException('Cache must be one of the known cache objects');
- }
-
- if ($cache instanceof CacheAdapterInterface) {
- return $cache;
- } elseif ($cache instanceof Cache) {
- return new DoctrineCacheAdapter($cache);
- } elseif ($cache instanceof StorageInterface) {
- return new Zf2CacheAdapter($cache);
- } else {
- throw new InvalidArgumentException('Unknown cache type: ' . get_class($cache));
- }
- }
-
- /**
- * Create a Guzzle cache adapter based on an array of options
- *
- * @param array $config Array of configuration options
- *
- * @return CacheAdapterInterface
- * @throws InvalidArgumentException
- * @deprecated This will be removed in a future version
- * @codeCoverageIgnore
- */
- public static function factory($config = array())
- {
- Version::warn(__METHOD__ . ' is deprecated');
- if (!is_array($config)) {
- throw new InvalidArgumentException('$config must be an array');
- }
-
- if (!isset($config['cache.adapter']) && !isset($config['cache.provider'])) {
- $config['cache.adapter'] = 'Guzzle\Cache\NullCacheAdapter';
- $config['cache.provider'] = null;
- } else {
- // Validate that the options are valid
- foreach (array('cache.adapter', 'cache.provider') as $required) {
- if (!isset($config[$required])) {
- throw new InvalidArgumentException("{$required} is a required CacheAdapterFactory option");
- }
- if (is_string($config[$required])) {
- // Convert dot notation to namespaces
- $config[$required] = str_replace('.', '\\', $config[$required]);
- if (!class_exists($config[$required])) {
- throw new InvalidArgumentException("{$config[$required]} is not a valid class for {$required}");
- }
- }
- }
- // Instantiate the cache provider
- if (is_string($config['cache.provider'])) {
- $args = isset($config['cache.provider.args']) ? $config['cache.provider.args'] : null;
- $config['cache.provider'] = self::createObject($config['cache.provider'], $args);
- }
- }
-
- // Instantiate the cache adapter using the provider and options
- if (is_string($config['cache.adapter'])) {
- $args = isset($config['cache.adapter.args']) ? $config['cache.adapter.args'] : array();
- array_unshift($args, $config['cache.provider']);
- $config['cache.adapter'] = self::createObject($config['cache.adapter'], $args);
- }
-
- return $config['cache.adapter'];
- }
-
- /**
- * Create a class using an array of constructor arguments
- *
- * @param string $className Class name
- * @param array $args Arguments for the class constructor
- *
- * @return mixed
- * @throws RuntimeException
- * @deprecated
- * @codeCoverageIgnore
- */
- private static function createObject($className, array $args = null)
- {
- try {
- if (!$args) {
- return new $className;
- } else {
- $c = new \ReflectionClass($className);
- return $c->newInstanceArgs($args);
- }
- } catch (\Exception $e) {
- throw new RuntimeException($e->getMessage(), $e->getCode(), $e);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterInterface.php
deleted file mode 100644
index 970c9e2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterInterface.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-/**
- * Interface for cache adapters.
- *
- * Cache adapters allow Guzzle to utilize various frameworks for caching HTTP responses.
- *
- * @link http://www.doctrine-project.org/ Inspired by Doctrine 2
- */
-interface CacheAdapterInterface
-{
- /**
- * Test if an entry exists in the cache.
- *
- * @param string $id cache id The cache id of the entry to check for.
- * @param array $options Array of cache adapter options
- *
- * @return bool Returns TRUE if a cache entry exists for the given cache id, FALSE otherwise.
- */
- public function contains($id, array $options = null);
-
- /**
- * Deletes a cache entry.
- *
- * @param string $id cache id
- * @param array $options Array of cache adapter options
- *
- * @return bool TRUE on success, FALSE on failure
- */
- public function delete($id, array $options = null);
-
- /**
- * Fetches an entry from the cache.
- *
- * @param string $id cache id The id of the cache entry to fetch.
- * @param array $options Array of cache adapter options
- *
- * @return string The cached data or FALSE, if no cache entry exists for the given id.
- */
- public function fetch($id, array $options = null);
-
- /**
- * Puts data into the cache.
- *
- * @param string $id The cache id
- * @param string $data The cache entry/data
- * @param int|bool $lifeTime The lifetime. If != false, sets a specific lifetime for this cache entry
- * @param array $options Array of cache adapter options
- *
- * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
- */
- public function save($id, $data, $lifeTime = false, array $options = null);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php
deleted file mode 100644
index c7a3df4..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/ClosureCacheAdapter.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-/**
- * Cache adapter that defers to closures for implementation
- */
-class ClosureCacheAdapter implements CacheAdapterInterface
-{
- /**
- * @var array Mapping of method names to callables
- */
- protected $callables;
-
- /**
- * The callables array is an array mapping the actions of the cache adapter to callables.
- * - contains: Callable that accepts an $id and $options argument
- * - delete: Callable that accepts an $id and $options argument
- * - fetch: Callable that accepts an $id and $options argument
- * - save: Callable that accepts an $id, $data, $lifeTime, and $options argument
- *
- * @param array $callables array of action names to callable
- *
- * @throws \InvalidArgumentException if the callable is not callable
- */
- public function __construct(array $callables)
- {
- // Validate each key to ensure it exists and is callable
- foreach (array('contains', 'delete', 'fetch', 'save') as $key) {
- if (!array_key_exists($key, $callables) || !is_callable($callables[$key])) {
- throw new \InvalidArgumentException("callables must contain a callable {$key} key");
- }
- }
-
- $this->callables = $callables;
- }
-
- public function contains($id, array $options = null)
- {
- return call_user_func($this->callables['contains'], $id, $options);
- }
-
- public function delete($id, array $options = null)
- {
- return call_user_func($this->callables['delete'], $id, $options);
- }
-
- public function fetch($id, array $options = null)
- {
- return call_user_func($this->callables['fetch'], $id, $options);
- }
-
- public function save($id, $data, $lifeTime = false, array $options = null)
- {
- return call_user_func($this->callables['save'], $id, $data, $lifeTime, $options);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/DoctrineCacheAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/DoctrineCacheAdapter.php
deleted file mode 100644
index e1aaf9f..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/DoctrineCacheAdapter.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-use Doctrine\Common\Cache\Cache;
-
-/**
- * Doctrine 2 cache adapter
- *
- * @link http://www.doctrine-project.org/
- */
-class DoctrineCacheAdapter extends AbstractCacheAdapter
-{
- /**
- * @param Cache $cache Doctrine cache object
- */
- public function __construct(Cache $cache)
- {
- $this->cache = $cache;
- }
-
- public function contains($id, array $options = null)
- {
- return $this->cache->contains($id);
- }
-
- public function delete($id, array $options = null)
- {
- return $this->cache->delete($id);
- }
-
- public function fetch($id, array $options = null)
- {
- return $this->cache->fetch($id);
- }
-
- public function save($id, $data, $lifeTime = false, array $options = null)
- {
- return $this->cache->save($id, $data, $lifeTime !== false ? $lifeTime : 0);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/NullCacheAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/NullCacheAdapter.php
deleted file mode 100644
index 68bd4af..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/NullCacheAdapter.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-/**
- * Null cache adapter
- */
-class NullCacheAdapter extends AbstractCacheAdapter
-{
- public function __construct() {}
-
- public function contains($id, array $options = null)
- {
- return false;
- }
-
- public function delete($id, array $options = null)
- {
- return true;
- }
-
- public function fetch($id, array $options = null)
- {
- return false;
- }
-
- public function save($id, $data, $lifeTime = false, array $options = null)
- {
- return true;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf1CacheAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf1CacheAdapter.php
deleted file mode 100644
index 48f8e24..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf1CacheAdapter.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-use Guzzle\Common\Version;
-
-/**
- * Zend Framework 1 cache adapter
- *
- * @link http://framework.zend.com/manual/en/zend.cache.html
- * @deprecated
- * @codeCoverageIgnore
- */
-class Zf1CacheAdapter extends AbstractCacheAdapter
-{
- /**
- * @param \Zend_Cache_Backend $cache Cache object to wrap
- */
- public function __construct(\Zend_Cache_Backend $cache)
- {
- Version::warn(__CLASS__ . ' is deprecated. Upgrade to ZF2 or use PsrCacheAdapter');
- $this->cache = $cache;
- }
-
- public function contains($id, array $options = null)
- {
- return $this->cache->test($id);
- }
-
- public function delete($id, array $options = null)
- {
- return $this->cache->remove($id);
- }
-
- public function fetch($id, array $options = null)
- {
- return $this->cache->load($id);
- }
-
- public function save($id, $data, $lifeTime = false, array $options = null)
- {
- return $this->cache->save($data, $id, array(), $lifeTime);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf2CacheAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf2CacheAdapter.php
deleted file mode 100644
index 1fc18a5..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/Zf2CacheAdapter.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace Guzzle\Cache;
-
-use Zend\Cache\Storage\StorageInterface;
-
-/**
- * Zend Framework 2 cache adapter
- *
- * @link http://packages.zendframework.com/docs/latest/manual/en/zend.cache.html
- */
-class Zf2CacheAdapter extends AbstractCacheAdapter
-{
- /**
- * @param StorageInterface $cache Zend Framework 2 cache adapter
- */
- public function __construct(StorageInterface $cache)
- {
- $this->cache = $cache;
- }
-
- public function contains($id, array $options = null)
- {
- return $this->cache->hasItem($id);
- }
-
- public function delete($id, array $options = null)
- {
- return $this->cache->removeItem($id);
- }
-
- public function fetch($id, array $options = null)
- {
- return $this->cache->getItem($id);
- }
-
- public function save($id, $data, $lifeTime = false, array $options = null)
- {
- return $this->cache->setItem($id, $data);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/composer.json
deleted file mode 100644
index a5d999b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Cache/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/cache",
- "description": "Guzzle cache adapter component",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["cache", "adapter", "zf", "doctrine", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/common": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Cache": "" }
- },
- "target-dir": "Guzzle/Cache",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/AbstractHasDispatcher.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/AbstractHasDispatcher.php
deleted file mode 100644
index d1e842b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/AbstractHasDispatcher.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Guzzle\Common;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Class that holds an event dispatcher
- */
-class AbstractHasDispatcher implements HasDispatcherInterface
-{
- /** @var EventDispatcherInterface */
- protected $eventDispatcher;
-
- public static function getAllEvents()
- {
- return array();
- }
-
- public function setEventDispatcher(EventDispatcherInterface $eventDispatcher)
- {
- $this->eventDispatcher = $eventDispatcher;
-
- return $this;
- }
-
- public function getEventDispatcher()
- {
- if (!$this->eventDispatcher) {
- $this->eventDispatcher = new EventDispatcher();
- }
-
- return $this->eventDispatcher;
- }
-
- public function dispatch($eventName, array $context = array())
- {
- return $this->getEventDispatcher()->dispatch($eventName, new Event($context));
- }
-
- public function addSubscriber(EventSubscriberInterface $subscriber)
- {
- $this->getEventDispatcher()->addSubscriber($subscriber);
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Collection.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Collection.php
deleted file mode 100644
index 5cb1535..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Collection.php
+++ /dev/null
@@ -1,403 +0,0 @@
-<?php
-
-namespace Guzzle\Common;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\RuntimeException;
-
-/**
- * Key value pair collection object
- */
-class Collection implements \ArrayAccess, \IteratorAggregate, \Countable, ToArrayInterface
-{
- /** @var array Data associated with the object. */
- protected $data;
-
- /**
- * @param array $data Associative array of data to set
- */
- public function __construct(array $data = array())
- {
- $this->data = $data;
- }
-
- /**
- * Create a new collection from an array, validate the keys, and add default values where missing
- *
- * @param array $config Configuration values to apply.
- * @param array $defaults Default parameters
- * @param array $required Required parameter names
- *
- * @return self
- * @throws InvalidArgumentException if a parameter is missing
- */
- public static function fromConfig(array $config = array(), array $defaults = array(), array $required = array())
- {
- $data = $config + $defaults;
-
- if ($missing = array_diff($required, array_keys($data))) {
- throw new InvalidArgumentException('Config is missing the following keys: ' . implode(', ', $missing));
- }
-
- return new self($data);
- }
-
- public function count()
- {
- return count($this->data);
- }
-
- public function getIterator()
- {
- return new \ArrayIterator($this->data);
- }
-
- public function toArray()
- {
- return $this->data;
- }
-
- /**
- * Removes all key value pairs
- *
- * @return Collection
- */
- public function clear()
- {
- $this->data = array();
-
- return $this;
- }
-
- /**
- * Get all or a subset of matching key value pairs
- *
- * @param array $keys Pass an array of keys to retrieve only a subset of key value pairs
- *
- * @return array Returns an array of all matching key value pairs
- */
- public function getAll(array $keys = null)
- {
- return $keys ? array_intersect_key($this->data, array_flip($keys)) : $this->data;
- }
-
- /**
- * Get a specific key value.
- *
- * @param string $key Key to retrieve.
- *
- * @return mixed|null Value of the key or NULL
- */
- public function get($key)
- {
- return isset($this->data[$key]) ? $this->data[$key] : null;
- }
-
- /**
- * Set a key value pair
- *
- * @param string $key Key to set
- * @param mixed $value Value to set
- *
- * @return Collection Returns a reference to the object
- */
- public function set($key, $value)
- {
- $this->data[$key] = $value;
-
- return $this;
- }
-
- /**
- * Add a value to a key. If a key of the same name has already been added, the key value will be converted into an
- * array and the new value will be pushed to the end of the array.
- *
- * @param string $key Key to add
- * @param mixed $value Value to add to the key
- *
- * @return Collection Returns a reference to the object.
- */
- public function add($key, $value)
- {
- if (!array_key_exists($key, $this->data)) {
- $this->data[$key] = $value;
- } elseif (is_array($this->data[$key])) {
- $this->data[$key][] = $value;
- } else {
- $this->data[$key] = array($this->data[$key], $value);
- }
-
- return $this;
- }
-
- /**
- * Remove a specific key value pair
- *
- * @param string $key A key to remove
- *
- * @return Collection
- */
- public function remove($key)
- {
- unset($this->data[$key]);
-
- return $this;
- }
-
- /**
- * Get all keys in the collection
- *
- * @return array
- */
- public function getKeys()
- {
- return array_keys($this->data);
- }
-
- /**
- * Returns whether or not the specified key is present.
- *
- * @param string $key The key for which to check the existence.
- *
- * @return bool
- */
- public function hasKey($key)
- {
- return array_key_exists($key, $this->data);
- }
-
- /**
- * Case insensitive search the keys in the collection
- *
- * @param string $key Key to search for
- *
- * @return bool|string Returns false if not found, otherwise returns the key
- */
- public function keySearch($key)
- {
- foreach (array_keys($this->data) as $k) {
- if (!strcasecmp($k, $key)) {
- return $k;
- }
- }
-
- return false;
- }
-
- /**
- * Checks if any keys contains a certain value
- *
- * @param string $value Value to search for
- *
- * @return mixed Returns the key if the value was found FALSE if the value was not found.
- */
- public function hasValue($value)
- {
- return array_search($value, $this->data);
- }
-
- /**
- * Replace the data of the object with the value of an array
- *
- * @param array $data Associative array of data
- *
- * @return Collection Returns a reference to the object
- */
- public function replace(array $data)
- {
- $this->data = $data;
-
- return $this;
- }
-
- /**
- * Add and merge in a Collection or array of key value pair data.
- *
- * @param Collection|array $data Associative array of key value pair data
- *
- * @return Collection Returns a reference to the object.
- */
- public function merge($data)
- {
- foreach ($data as $key => $value) {
- $this->add($key, $value);
- }
-
- return $this;
- }
-
- /**
- * Over write key value pairs in this collection with all of the data from an array or collection.
- *
- * @param array|\Traversable $data Values to override over this config
- *
- * @return self
- */
- public function overwriteWith($data)
- {
- if (is_array($data)) {
- $this->data = $data + $this->data;
- } elseif ($data instanceof Collection) {
- $this->data = $data->toArray() + $this->data;
- } else {
- foreach ($data as $key => $value) {
- $this->data[$key] = $value;
- }
- }
-
- return $this;
- }
-
- /**
- * Returns a Collection containing all the elements of the collection after applying the callback function to each
- * one. The Closure should accept three parameters: (string) $key, (string) $value, (array) $context and return a
- * modified value
- *
- * @param \Closure $closure Closure to apply
- * @param array $context Context to pass to the closure
- * @param bool $static Set to TRUE to use the same class as the return rather than returning a Collection
- *
- * @return Collection
- */
- public function map(\Closure $closure, array $context = array(), $static = true)
- {
- $collection = $static ? new static() : new self();
- foreach ($this as $key => $value) {
- $collection->add($key, $closure($key, $value, $context));
- }
-
- return $collection;
- }
-
- /**
- * Iterates over each key value pair in the collection passing them to the Closure. If the Closure function returns
- * true, the current value from input is returned into the result Collection. The Closure must accept three
- * parameters: (string) $key, (string) $value and return Boolean TRUE or FALSE for each value.
- *
- * @param \Closure $closure Closure evaluation function
- * @param bool $static Set to TRUE to use the same class as the return rather than returning a Collection
- *
- * @return Collection
- */
- public function filter(\Closure $closure, $static = true)
- {
- $collection = ($static) ? new static() : new self();
- foreach ($this->data as $key => $value) {
- if ($closure($key, $value)) {
- $collection->add($key, $value);
- }
- }
-
- return $collection;
- }
-
- public function offsetExists($offset)
- {
- return isset($this->data[$offset]);
- }
-
- public function offsetGet($offset)
- {
- return isset($this->data[$offset]) ? $this->data[$offset] : null;
- }
-
- public function offsetSet($offset, $value)
- {
- $this->data[$offset] = $value;
- }
-
- public function offsetUnset($offset)
- {
- unset($this->data[$offset]);
- }
-
- /**
- * Set a value into a nested array key. Keys will be created as needed to set the value.
- *
- * @param string $path Path to set
- * @param mixed $value Value to set at the key
- *
- * @return self
- * @throws RuntimeException when trying to setPath using a nested path that travels through a scalar value
- */
- public function setPath($path, $value)
- {
- $current =& $this->data;
- $queue = explode('/', $path);
- while (null !== ($key = array_shift($queue))) {
- if (!is_array($current)) {
- throw new RuntimeException("Trying to setPath {$path}, but {$key} is set and is not an array");
- } elseif (!$queue) {
- $current[$key] = $value;
- } elseif (isset($current[$key])) {
- $current =& $current[$key];
- } else {
- $current[$key] = array();
- $current =& $current[$key];
- }
- }
-
- return $this;
- }
-
- /**
- * Gets a value from the collection using an array path (e.g. foo/baz/bar would retrieve bar from two nested arrays)
- * Allows for wildcard searches which recursively combine matches up to the level at which the wildcard occurs. This
- * can be useful for accepting any key of a sub-array and combining matching keys from each diverging path.
- *
- * @param string $path Path to traverse and retrieve a value from
- * @param string $separator Character used to add depth to the search
- * @param mixed $data Optional data to descend into (used when wildcards are encountered)
- *
- * @return mixed|null
- */
- public function getPath($path, $separator = '/', $data = null)
- {
- if ($data === null) {
- $data =& $this->data;
- }
-
- $path = is_array($path) ? $path : explode($separator, $path);
- while (null !== ($part = array_shift($path))) {
- if (!is_array($data)) {
- return null;
- } elseif (isset($data[$part])) {
- $data =& $data[$part];
- } elseif ($part != '*') {
- return null;
- } else {
- // Perform a wildcard search by diverging and merging paths
- $result = array();
- foreach ($data as $value) {
- if (!$path) {
- $result = array_merge_recursive($result, (array) $value);
- } elseif (null !== ($test = $this->getPath($path, $separator, $value))) {
- $result = array_merge_recursive($result, (array) $test);
- }
- }
- return $result;
- }
- }
-
- return $data;
- }
-
- /**
- * Inject configuration settings into an input string
- *
- * @param string $input Input to inject
- *
- * @return string
- * @deprecated
- */
- public function inject($input)
- {
- Version::warn(__METHOD__ . ' is deprecated');
- $replace = array();
- foreach ($this->data as $key => $val) {
- $replace['{' . $key . '}'] = $val;
- }
-
- return strtr($input, $replace);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Event.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Event.php
deleted file mode 100644
index fad76a9..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Event.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace Guzzle\Common;
-
-use Symfony\Component\EventDispatcher\Event as SymfonyEvent;
-
-/**
- * Default event for Guzzle notifications
- */
-class Event extends SymfonyEvent implements ToArrayInterface, \ArrayAccess, \IteratorAggregate
-{
- /** @var array */
- private $context;
-
- /**
- * @param array $context Contextual information
- */
- public function __construct(array $context = array())
- {
- $this->context = $context;
- }
-
- public function getIterator()
- {
- return new \ArrayIterator($this->context);
- }
-
- public function offsetGet($offset)
- {
- return isset($this->context[$offset]) ? $this->context[$offset] : null;
- }
-
- public function offsetSet($offset, $value)
- {
- $this->context[$offset] = $value;
- }
-
- public function offsetExists($offset)
- {
- return isset($this->context[$offset]);
- }
-
- public function offsetUnset($offset)
- {
- unset($this->context[$offset]);
- }
-
- public function toArray()
- {
- return $this->context;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/BadMethodCallException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/BadMethodCallException.php
deleted file mode 100644
index 08d1c72..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-namespace Guzzle\Common\Exception;
-
-class BadMethodCallException extends \BadMethodCallException implements GuzzleException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/ExceptionCollection.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/ExceptionCollection.php
deleted file mode 100644
index 750e483..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/ExceptionCollection.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-namespace Guzzle\Common\Exception;
-
-/**
- * Collection of exceptions
- */
-class ExceptionCollection extends \Exception implements GuzzleException, \IteratorAggregate, \Countable
-{
- /** @var array Array of Exceptions */
- protected $exceptions = array();
-
- /** @var string Succinct exception message not including sub-exceptions */
- private $shortMessage;
-
- public function __construct($message = '', $code = 0, \Exception $previous = null)
- {
- parent::__construct($message, $code, $previous);
- $this->shortMessage = $message;
- }
-
- /**
- * Set all of the exceptions
- *
- * @param array $exceptions Array of exceptions
- *
- * @return self
- */
- public function setExceptions(array $exceptions)
- {
- $this->exceptions = array();
- foreach ($exceptions as $exception) {
- $this->add($exception);
- }
-
- return $this;
- }
-
- /**
- * Add exceptions to the collection
- *
- * @param ExceptionCollection|\Exception $e Exception to add
- *
- * @return ExceptionCollection;
- */
- public function add($e)
- {
- $this->exceptions[] = $e;
- if ($this->message) {
- $this->message .= "\n";
- }
-
- $this->message .= $this->getExceptionMessage($e, 0);
-
- return $this;
- }
-
- /**
- * Get the total number of request exceptions
- *
- * @return int
- */
- public function count()
- {
- return count($this->exceptions);
- }
-
- /**
- * Allows array-like iteration over the request exceptions
- *
- * @return \ArrayIterator
- */
- public function getIterator()
- {
- return new \ArrayIterator($this->exceptions);
- }
-
- /**
- * Get the first exception in the collection
- *
- * @return \Exception
- */
- public function getFirst()
- {
- return $this->exceptions ? $this->exceptions[0] : null;
- }
-
- private function getExceptionMessage(\Exception $e, $depth = 0)
- {
- static $sp = ' ';
- $prefix = $depth ? str_repeat($sp, $depth) : '';
- $message = "{$prefix}(" . get_class($e) . ') ' . $e->getFile() . ' line ' . $e->getLine() . "\n";
-
- if ($e instanceof self) {
- if ($e->shortMessage) {
- $message .= "\n{$prefix}{$sp}" . str_replace("\n", "\n{$prefix}{$sp}", $e->shortMessage) . "\n";
- }
- foreach ($e as $ee) {
- $message .= "\n" . $this->getExceptionMessage($ee, $depth + 1);
- }
- } else {
- $message .= "\n{$prefix}{$sp}" . str_replace("\n", "\n{$prefix}{$sp}", $e->getMessage()) . "\n";
- $message .= "\n{$prefix}{$sp}" . str_replace("\n", "\n{$prefix}{$sp}", $e->getTraceAsString()) . "\n";
- }
-
- return str_replace(getcwd(), '.', $message);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/GuzzleException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/GuzzleException.php
deleted file mode 100644
index 458e6f2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/GuzzleException.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Guzzle\Common\Exception;
-
-/**
- * Guzzle exception
- */
-interface GuzzleException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/InvalidArgumentException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/InvalidArgumentException.php
deleted file mode 100644
index ae674be..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-namespace Guzzle\Common\Exception;
-
-class InvalidArgumentException extends \InvalidArgumentException implements GuzzleException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/RuntimeException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/RuntimeException.php
deleted file mode 100644
index 9254094..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/RuntimeException.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-namespace Guzzle\Common\Exception;
-
-class RuntimeException extends \RuntimeException implements GuzzleException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/UnexpectedValueException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/UnexpectedValueException.php
deleted file mode 100644
index 843c017..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Exception/UnexpectedValueException.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-namespace Guzzle\Common\Exception;
-
-class UnexpectedValueException extends \UnexpectedValueException implements GuzzleException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/FromConfigInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/FromConfigInterface.php
deleted file mode 100644
index c8b1317..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/FromConfigInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Common;
-
-/**
- * Interfaces that adds a factory method which is used to instantiate a class from an array of configuration options.
- */
-interface FromConfigInterface
-{
- /**
- * Static factory method used to turn an array or collection of configuration data into an instantiated object.
- *
- * @param array|Collection $config Configuration data
- *
- * @return FromConfigInterface
- */
- public static function factory($config = array());
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/HasDispatcherInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/HasDispatcherInterface.php
deleted file mode 100644
index 8067598..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/HasDispatcherInterface.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-namespace Guzzle\Common;
-
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Holds an event dispatcher
- */
-interface HasDispatcherInterface
-{
- /**
- * Get a list of all of the events emitted from the class
- *
- * @return array
- */
- public static function getAllEvents();
-
- /**
- * Set the EventDispatcher of the request
- *
- * @param EventDispatcherInterface $eventDispatcher
- *
- * @return self
- */
- public function setEventDispatcher(EventDispatcherInterface $eventDispatcher);
-
- /**
- * Get the EventDispatcher of the request
- *
- * @return EventDispatcherInterface
- */
- public function getEventDispatcher();
-
- /**
- * Helper to dispatch Guzzle events and set the event name on the event
- *
- * @param string $eventName Name of the event to dispatch
- * @param array $context Context of the event
- *
- * @return Event Returns the created event object
- */
- public function dispatch($eventName, array $context = array());
-
- /**
- * Add an event subscriber to the dispatcher
- *
- * @param EventSubscriberInterface $subscriber Event subscriber
- *
- * @return self
- */
- public function addSubscriber(EventSubscriberInterface $subscriber);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/ToArrayInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/ToArrayInterface.php
deleted file mode 100644
index 245328c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/ToArrayInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-namespace Guzzle\Common;
-
-/**
- * An object that can be represented as an array
- */
-interface ToArrayInterface
-{
- /**
- * Get the array representation of an object
- *
- * @return array
- */
- public function toArray();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Version.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Version.php
deleted file mode 100644
index 1a171c3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/Version.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Guzzle\Common;
-
-/**
- * Guzzle version information
- */
-class Version
-{
- const VERSION = '3.9.3';
-
- /**
- * @var bool Set this value to true to enable warnings for deprecated functionality use. This should be on in your
- * unit tests, but probably not in production.
- */
- public static $emitWarnings = false;
-
- /**
- * Emit a deprecation warning
- *
- * @param string $message Warning message
- */
- public static function warn($message)
- {
- if (self::$emitWarnings) {
- trigger_error('Deprecation warning: ' . $message, E_USER_DEPRECATED);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/composer.json
deleted file mode 100644
index c02fa69..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Common/composer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "guzzle/common",
- "homepage": "http://guzzlephp.org/",
- "description": "Common libraries used by Guzzle",
- "keywords": ["common", "event", "exception", "collection"],
- "license": "MIT",
- "require": {
- "php": ">=5.3.2",
- "symfony/event-dispatcher": ">=2.1"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Common": "" }
- },
- "target-dir": "Guzzle/Common",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/AbstractEntityBodyDecorator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/AbstractEntityBodyDecorator.php
deleted file mode 100644
index 5005a88..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/AbstractEntityBodyDecorator.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Stream\Stream;
-
-/**
- * Abstract decorator used to wrap entity bodies
- */
-class AbstractEntityBodyDecorator implements EntityBodyInterface
-{
- /** @var EntityBodyInterface Decorated entity body */
- protected $body;
-
- /**
- * @param EntityBodyInterface $body Entity body to decorate
- */
- public function __construct(EntityBodyInterface $body)
- {
- $this->body = $body;
- }
-
- public function __toString()
- {
- return (string) $this->body;
- }
-
- /**
- * Allow decorators to implement custom methods
- *
- * @param string $method Missing method name
- * @param array $args Method arguments
- *
- * @return mixed
- */
- public function __call($method, array $args)
- {
- return call_user_func_array(array($this->body, $method), $args);
- }
-
- public function close()
- {
- return $this->body->close();
- }
-
- public function setRewindFunction($callable)
- {
- $this->body->setRewindFunction($callable);
-
- return $this;
- }
-
- public function rewind()
- {
- return $this->body->rewind();
- }
-
- public function compress($filter = 'zlib.deflate')
- {
- return $this->body->compress($filter);
- }
-
- public function uncompress($filter = 'zlib.inflate')
- {
- return $this->body->uncompress($filter);
- }
-
- public function getContentLength()
- {
- return $this->getSize();
- }
-
- public function getContentType()
- {
- return $this->body->getContentType();
- }
-
- public function getContentMd5($rawOutput = false, $base64Encode = false)
- {
- $hash = Stream::getHash($this, 'md5', $rawOutput);
-
- return $hash && $base64Encode ? base64_encode($hash) : $hash;
- }
-
- public function getContentEncoding()
- {
- return $this->body->getContentEncoding();
- }
-
- public function getMetaData($key = null)
- {
- return $this->body->getMetaData($key);
- }
-
- public function getStream()
- {
- return $this->body->getStream();
- }
-
- public function setStream($stream, $size = 0)
- {
- $this->body->setStream($stream, $size);
-
- return $this;
- }
-
- public function detachStream()
- {
- $this->body->detachStream();
-
- return $this;
- }
-
- public function getWrapper()
- {
- return $this->body->getWrapper();
- }
-
- public function getWrapperData()
- {
- return $this->body->getWrapperData();
- }
-
- public function getStreamType()
- {
- return $this->body->getStreamType();
- }
-
- public function getUri()
- {
- return $this->body->getUri();
- }
-
- public function getSize()
- {
- return $this->body->getSize();
- }
-
- public function isReadable()
- {
- return $this->body->isReadable();
- }
-
- public function isRepeatable()
- {
- return $this->isSeekable() && $this->isReadable();
- }
-
- public function isWritable()
- {
- return $this->body->isWritable();
- }
-
- public function isConsumed()
- {
- return $this->body->isConsumed();
- }
-
- /**
- * Alias of isConsumed()
- * {@inheritdoc}
- */
- public function feof()
- {
- return $this->isConsumed();
- }
-
- public function isLocal()
- {
- return $this->body->isLocal();
- }
-
- public function isSeekable()
- {
- return $this->body->isSeekable();
- }
-
- public function setSize($size)
- {
- $this->body->setSize($size);
-
- return $this;
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- return $this->body->seek($offset, $whence);
- }
-
- public function read($length)
- {
- return $this->body->read($length);
- }
-
- public function write($string)
- {
- return $this->body->write($string);
- }
-
- public function readLine($maxLength = null)
- {
- return $this->body->readLine($maxLength);
- }
-
- public function ftell()
- {
- return $this->body->ftell();
- }
-
- public function getCustomData($key)
- {
- return $this->body->getCustomData($key);
- }
-
- public function setCustomData($key, $value)
- {
- $this->body->setCustomData($key, $value);
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/CachingEntityBody.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/CachingEntityBody.php
deleted file mode 100644
index c65c136..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/CachingEntityBody.php
+++ /dev/null
@@ -1,229 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-/**
- * EntityBody decorator that can cache previously read bytes from a sequentially read tstream
- */
-class CachingEntityBody extends AbstractEntityBodyDecorator
-{
- /** @var EntityBody Remote stream used to actually pull data onto the buffer */
- protected $remoteStream;
-
- /** @var int The number of bytes to skip reading due to a write on the temporary buffer */
- protected $skipReadBytes = 0;
-
- /**
- * We will treat the buffer object as the body of the entity body
- * {@inheritdoc}
- */
- public function __construct(EntityBodyInterface $body)
- {
- $this->remoteStream = $body;
- $this->body = new EntityBody(fopen('php://temp', 'r+'));
- }
-
- /**
- * Will give the contents of the buffer followed by the exhausted remote stream.
- *
- * Warning: Loads the entire stream into memory
- *
- * @return string
- */
- public function __toString()
- {
- $pos = $this->ftell();
- $this->rewind();
-
- $str = '';
- while (!$this->isConsumed()) {
- $str .= $this->read(16384);
- }
-
- $this->seek($pos);
-
- return $str;
- }
-
- public function getSize()
- {
- return max($this->body->getSize(), $this->remoteStream->getSize());
- }
-
- /**
- * {@inheritdoc}
- * @throws RuntimeException When seeking with SEEK_END or when seeking past the total size of the buffer stream
- */
- public function seek($offset, $whence = SEEK_SET)
- {
- if ($whence == SEEK_SET) {
- $byte = $offset;
- } elseif ($whence == SEEK_CUR) {
- $byte = $offset + $this->ftell();
- } else {
- throw new RuntimeException(__CLASS__ . ' supports only SEEK_SET and SEEK_CUR seek operations');
- }
-
- // You cannot skip ahead past where you've read from the remote stream
- if ($byte > $this->body->getSize()) {
- throw new RuntimeException(
- "Cannot seek to byte {$byte} when the buffered stream only contains {$this->body->getSize()} bytes"
- );
- }
-
- return $this->body->seek($byte);
- }
-
- public function rewind()
- {
- return $this->seek(0);
- }
-
- /**
- * Does not support custom rewind functions
- *
- * @throws RuntimeException
- */
- public function setRewindFunction($callable)
- {
- throw new RuntimeException(__CLASS__ . ' does not support custom stream rewind functions');
- }
-
- public function read($length)
- {
- // Perform a regular read on any previously read data from the buffer
- $data = $this->body->read($length);
- $remaining = $length - strlen($data);
-
- // More data was requested so read from the remote stream
- if ($remaining) {
- // If data was written to the buffer in a position that would have been filled from the remote stream,
- // then we must skip bytes on the remote stream to emulate overwriting bytes from that position. This
- // mimics the behavior of other PHP stream wrappers.
- $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes);
-
- if ($this->skipReadBytes) {
- $len = strlen($remoteData);
- $remoteData = substr($remoteData, $this->skipReadBytes);
- $this->skipReadBytes = max(0, $this->skipReadBytes - $len);
- }
-
- $data .= $remoteData;
- $this->body->write($remoteData);
- }
-
- return $data;
- }
-
- public function write($string)
- {
- // When appending to the end of the currently read stream, you'll want to skip bytes from being read from
- // the remote stream to emulate other stream wrappers. Basically replacing bytes of data of a fixed length.
- $overflow = (strlen($string) + $this->ftell()) - $this->remoteStream->ftell();
- if ($overflow > 0) {
- $this->skipReadBytes += $overflow;
- }
-
- return $this->body->write($string);
- }
-
- /**
- * {@inheritdoc}
- * @link http://php.net/manual/en/function.fgets.php
- */
- public function readLine($maxLength = null)
- {
- $buffer = '';
- $size = 0;
- while (!$this->isConsumed()) {
- $byte = $this->read(1);
- $buffer .= $byte;
- // Break when a new line is found or the max length - 1 is reached
- if ($byte == PHP_EOL || ++$size == $maxLength - 1) {
- break;
- }
- }
-
- return $buffer;
- }
-
- public function isConsumed()
- {
- return $this->body->isConsumed() && $this->remoteStream->isConsumed();
- }
-
- /**
- * Close both the remote stream and buffer stream
- */
- public function close()
- {
- return $this->remoteStream->close() && $this->body->close();
- }
-
- public function setStream($stream, $size = 0)
- {
- $this->remoteStream->setStream($stream, $size);
- }
-
- public function getContentType()
- {
- return $this->remoteStream->getContentType();
- }
-
- public function getContentEncoding()
- {
- return $this->remoteStream->getContentEncoding();
- }
-
- public function getMetaData($key = null)
- {
- return $this->remoteStream->getMetaData($key);
- }
-
- public function getStream()
- {
- return $this->remoteStream->getStream();
- }
-
- public function getWrapper()
- {
- return $this->remoteStream->getWrapper();
- }
-
- public function getWrapperData()
- {
- return $this->remoteStream->getWrapperData();
- }
-
- public function getStreamType()
- {
- return $this->remoteStream->getStreamType();
- }
-
- public function getUri()
- {
- return $this->remoteStream->getUri();
- }
-
- /**
- * Always retrieve custom data from the remote stream
- * {@inheritdoc}
- */
- public function getCustomData($key)
- {
- return $this->remoteStream->getCustomData($key);
- }
-
- /**
- * Always set custom data on the remote stream
- * {@inheritdoc}
- */
- public function setCustomData($key, $value)
- {
- $this->remoteStream->setCustomData($key, $value);
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Client.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Client.php
deleted file mode 100644
index 3d7298d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Client.php
+++ /dev/null
@@ -1,524 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Common\Exception\ExceptionCollection;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Common\Version;
-use Guzzle\Parser\ParserRegistry;
-use Guzzle\Parser\UriTemplate\UriTemplateInterface;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Message\RequestFactoryInterface;
-use Guzzle\Http\Curl\CurlMultiInterface;
-use Guzzle\Http\Curl\CurlMultiProxy;
-use Guzzle\Http\Curl\CurlHandle;
-use Guzzle\Http\Curl\CurlVersion;
-
-/**
- * HTTP client
- */
-class Client extends AbstractHasDispatcher implements ClientInterface
-{
- /** @deprecated Use [request.options][params] */
- const REQUEST_PARAMS = 'request.params';
-
- const REQUEST_OPTIONS = 'request.options';
- const CURL_OPTIONS = 'curl.options';
- const SSL_CERT_AUTHORITY = 'ssl.certificate_authority';
- const DISABLE_REDIRECTS = RedirectPlugin::DISABLE;
- const DEFAULT_SELECT_TIMEOUT = 1.0;
- const MAX_HANDLES = 3;
-
- /** @var Collection Default HTTP headers to set on each request */
- protected $defaultHeaders;
-
- /** @var string The user agent string to set on each request */
- protected $userAgent;
-
- /** @var Collection Parameter object holding configuration data */
- private $config;
-
- /** @var Url Base URL of the client */
- private $baseUrl;
-
- /** @var CurlMultiInterface CurlMulti object used internally */
- private $curlMulti;
-
- /** @var UriTemplateInterface URI template owned by the client */
- private $uriTemplate;
-
- /** @var RequestFactoryInterface Request factory used by the client */
- protected $requestFactory;
-
- public static function getAllEvents()
- {
- return array(self::CREATE_REQUEST);
- }
-
- /**
- * @param string $baseUrl Base URL of the web service
- * @param array|Collection $config Configuration settings
- *
- * @throws RuntimeException if cURL is not installed
- */
- public function __construct($baseUrl = '', $config = null)
- {
- if (!extension_loaded('curl')) {
- // @codeCoverageIgnoreStart
- throw new RuntimeException('The PHP cURL extension must be installed to use Guzzle.');
- // @codeCoverageIgnoreEnd
- }
- $this->setConfig($config ?: new Collection());
- $this->initSsl();
- $this->setBaseUrl($baseUrl);
- $this->defaultHeaders = new Collection();
- $this->setRequestFactory(RequestFactory::getInstance());
- $this->userAgent = $this->getDefaultUserAgent();
- if (!$this->config[self::DISABLE_REDIRECTS]) {
- $this->addSubscriber(new RedirectPlugin());
- }
- }
-
- final public function setConfig($config)
- {
- if ($config instanceof Collection) {
- $this->config = $config;
- } elseif (is_array($config)) {
- $this->config = new Collection($config);
- } else {
- throw new InvalidArgumentException('Config must be an array or Collection');
- }
-
- return $this;
- }
-
- final public function getConfig($key = false)
- {
- return $key ? $this->config[$key] : $this->config;
- }
-
- /**
- * Set a default request option on the client that will be used as a default for each request
- *
- * @param string $keyOrPath request.options key (e.g. allow_redirects) or path to a nested key (e.g. headers/foo)
- * @param mixed $value Value to set
- *
- * @return $this
- */
- public function setDefaultOption($keyOrPath, $value)
- {
- $keyOrPath = self::REQUEST_OPTIONS . '/' . $keyOrPath;
- $this->config->setPath($keyOrPath, $value);
-
- return $this;
- }
-
- /**
- * Retrieve a default request option from the client
- *
- * @param string $keyOrPath request.options key (e.g. allow_redirects) or path to a nested key (e.g. headers/foo)
- *
- * @return mixed|null
- */
- public function getDefaultOption($keyOrPath)
- {
- $keyOrPath = self::REQUEST_OPTIONS . '/' . $keyOrPath;
-
- return $this->config->getPath($keyOrPath);
- }
-
- final public function setSslVerification($certificateAuthority = true, $verifyPeer = true, $verifyHost = 2)
- {
- $opts = $this->config[self::CURL_OPTIONS] ?: array();
-
- if ($certificateAuthority === true) {
- // use bundled CA bundle, set secure defaults
- $opts[CURLOPT_CAINFO] = __DIR__ . '/Resources/cacert.pem';
- $opts[CURLOPT_SSL_VERIFYPEER] = true;
- $opts[CURLOPT_SSL_VERIFYHOST] = 2;
- } elseif ($certificateAuthority === false) {
- unset($opts[CURLOPT_CAINFO]);
- $opts[CURLOPT_SSL_VERIFYPEER] = false;
- $opts[CURLOPT_SSL_VERIFYHOST] = 0;
- } elseif ($verifyPeer !== true && $verifyPeer !== false && $verifyPeer !== 1 && $verifyPeer !== 0) {
- throw new InvalidArgumentException('verifyPeer must be 1, 0 or boolean');
- } elseif ($verifyHost !== 0 && $verifyHost !== 1 && $verifyHost !== 2) {
- throw new InvalidArgumentException('verifyHost must be 0, 1 or 2');
- } else {
- $opts[CURLOPT_SSL_VERIFYPEER] = $verifyPeer;
- $opts[CURLOPT_SSL_VERIFYHOST] = $verifyHost;
- if (is_file($certificateAuthority)) {
- unset($opts[CURLOPT_CAPATH]);
- $opts[CURLOPT_CAINFO] = $certificateAuthority;
- } elseif (is_dir($certificateAuthority)) {
- unset($opts[CURLOPT_CAINFO]);
- $opts[CURLOPT_CAPATH] = $certificateAuthority;
- } else {
- throw new RuntimeException(
- 'Invalid option passed to ' . self::SSL_CERT_AUTHORITY . ': ' . $certificateAuthority
- );
- }
- }
-
- $this->config->set(self::CURL_OPTIONS, $opts);
-
- return $this;
- }
-
- public function createRequest($method = 'GET', $uri = null, $headers = null, $body = null, array $options = array())
- {
- if (!$uri) {
- $url = $this->getBaseUrl();
- } else {
- if (!is_array($uri)) {
- $templateVars = null;
- } else {
- list($uri, $templateVars) = $uri;
- }
- if (strpos($uri, '://')) {
- // Use absolute URLs as-is
- $url = $this->expandTemplate($uri, $templateVars);
- } else {
- $url = Url::factory($this->getBaseUrl())->combine($this->expandTemplate($uri, $templateVars));
- }
- }
-
- // If default headers are provided, then merge them under any explicitly provided headers for the request
- if (count($this->defaultHeaders)) {
- if (!$headers) {
- $headers = $this->defaultHeaders->toArray();
- } elseif (is_array($headers)) {
- $headers += $this->defaultHeaders->toArray();
- } elseif ($headers instanceof Collection) {
- $headers = $headers->toArray() + $this->defaultHeaders->toArray();
- }
- }
-
- return $this->prepareRequest($this->requestFactory->create($method, (string) $url, $headers, $body), $options);
- }
-
- public function getBaseUrl($expand = true)
- {
- return $expand ? $this->expandTemplate($this->baseUrl) : $this->baseUrl;
- }
-
- public function setBaseUrl($url)
- {
- $this->baseUrl = $url;
-
- return $this;
- }
-
- public function setUserAgent($userAgent, $includeDefault = false)
- {
- if ($includeDefault) {
- $userAgent .= ' ' . $this->getDefaultUserAgent();
- }
- $this->userAgent = $userAgent;
-
- return $this;
- }
-
- /**
- * Get the default User-Agent string to use with Guzzle
- *
- * @return string
- */
- public function getDefaultUserAgent()
- {
- return 'Guzzle/' . Version::VERSION
- . ' curl/' . CurlVersion::getInstance()->get('version')
- . ' PHP/' . PHP_VERSION;
- }
-
- public function get($uri = null, $headers = null, $options = array())
- {
- // BC compat: $options can be a string, resource, etc to specify where the response body is downloaded
- return is_array($options)
- ? $this->createRequest('GET', $uri, $headers, null, $options)
- : $this->createRequest('GET', $uri, $headers, $options);
- }
-
- public function head($uri = null, $headers = null, array $options = array())
- {
- return $this->createRequest('HEAD', $uri, $headers, null, $options);
- }
-
- public function delete($uri = null, $headers = null, $body = null, array $options = array())
- {
- return $this->createRequest('DELETE', $uri, $headers, $body, $options);
- }
-
- public function put($uri = null, $headers = null, $body = null, array $options = array())
- {
- return $this->createRequest('PUT', $uri, $headers, $body, $options);
- }
-
- public function patch($uri = null, $headers = null, $body = null, array $options = array())
- {
- return $this->createRequest('PATCH', $uri, $headers, $body, $options);
- }
-
- public function post($uri = null, $headers = null, $postBody = null, array $options = array())
- {
- return $this->createRequest('POST', $uri, $headers, $postBody, $options);
- }
-
- public function options($uri = null, array $options = array())
- {
- return $this->createRequest('OPTIONS', $uri, $options);
- }
-
- public function send($requests)
- {
- if (!($requests instanceof RequestInterface)) {
- return $this->sendMultiple($requests);
- }
-
- try {
- /** @var $requests RequestInterface */
- $this->getCurlMulti()->add($requests)->send();
- return $requests->getResponse();
- } catch (ExceptionCollection $e) {
- throw $e->getFirst();
- }
- }
-
- /**
- * Set a curl multi object to be used internally by the client for transferring requests.
- *
- * @param CurlMultiInterface $curlMulti Multi object
- *
- * @return self
- */
- public function setCurlMulti(CurlMultiInterface $curlMulti)
- {
- $this->curlMulti = $curlMulti;
-
- return $this;
- }
-
- /**
- * @return CurlMultiInterface|CurlMultiProxy
- */
- public function getCurlMulti()
- {
- if (!$this->curlMulti) {
- $this->curlMulti = new CurlMultiProxy(
- self::MAX_HANDLES,
- $this->getConfig('select_timeout') ?: self::DEFAULT_SELECT_TIMEOUT
- );
- }
-
- return $this->curlMulti;
- }
-
- public function setRequestFactory(RequestFactoryInterface $factory)
- {
- $this->requestFactory = $factory;
-
- return $this;
- }
-
- /**
- * Set the URI template expander to use with the client
- *
- * @param UriTemplateInterface $uriTemplate URI template expander
- *
- * @return self
- */
- public function setUriTemplate(UriTemplateInterface $uriTemplate)
- {
- $this->uriTemplate = $uriTemplate;
-
- return $this;
- }
-
- /**
- * Expand a URI template while merging client config settings into the template variables
- *
- * @param string $template Template to expand
- * @param array $variables Variables to inject
- *
- * @return string
- */
- protected function expandTemplate($template, array $variables = null)
- {
- $expansionVars = $this->getConfig()->toArray();
- if ($variables) {
- $expansionVars = $variables + $expansionVars;
- }
-
- return $this->getUriTemplate()->expand($template, $expansionVars);
- }
-
- /**
- * Get the URI template expander used by the client
- *
- * @return UriTemplateInterface
- */
- protected function getUriTemplate()
- {
- if (!$this->uriTemplate) {
- $this->uriTemplate = ParserRegistry::getInstance()->getParser('uri_template');
- }
-
- return $this->uriTemplate;
- }
-
- /**
- * Send multiple requests in parallel
- *
- * @param array $requests Array of RequestInterface objects
- *
- * @return array Returns an array of Response objects
- */
- protected function sendMultiple(array $requests)
- {
- $curlMulti = $this->getCurlMulti();
- foreach ($requests as $request) {
- $curlMulti->add($request);
- }
- $curlMulti->send();
-
- /** @var $request RequestInterface */
- $result = array();
- foreach ($requests as $request) {
- $result[] = $request->getResponse();
- }
-
- return $result;
- }
-
- /**
- * Prepare a request to be sent from the Client by adding client specific behaviors and properties to the request.
- *
- * @param RequestInterface $request Request to prepare for the client
- * @param array $options Options to apply to the request
- *
- * @return RequestInterface
- */
- protected function prepareRequest(RequestInterface $request, array $options = array())
- {
- $request->setClient($this)->setEventDispatcher(clone $this->getEventDispatcher());
-
- if ($curl = $this->config[self::CURL_OPTIONS]) {
- $request->getCurlOptions()->overwriteWith(CurlHandle::parseCurlConfig($curl));
- }
-
- if ($params = $this->config[self::REQUEST_PARAMS]) {
- Version::warn('request.params is deprecated. Use request.options to add default request options.');
- $request->getParams()->overwriteWith($params);
- }
-
- if ($this->userAgent && !$request->hasHeader('User-Agent')) {
- $request->setHeader('User-Agent', $this->userAgent);
- }
-
- if ($defaults = $this->config[self::REQUEST_OPTIONS]) {
- $this->requestFactory->applyOptions($request, $defaults, RequestFactoryInterface::OPTIONS_AS_DEFAULTS);
- }
-
- if ($options) {
- $this->requestFactory->applyOptions($request, $options);
- }
-
- $this->dispatch('client.create_request', array('client' => $this, 'request' => $request));
-
- return $request;
- }
-
- /**
- * Initializes SSL settings
- */
- protected function initSsl()
- {
- $authority = $this->config[self::SSL_CERT_AUTHORITY];
-
- if ($authority === 'system') {
- return;
- }
-
- if ($authority === null) {
- $authority = true;
- }
-
- if ($authority === true && substr(__FILE__, 0, 7) == 'phar://') {
- $authority = self::extractPharCacert(__DIR__ . '/Resources/cacert.pem');
- }
-
- $this->setSslVerification($authority);
- }
-
- /**
- * @deprecated
- */
- public function getDefaultHeaders()
- {
- Version::warn(__METHOD__ . ' is deprecated. Use the request.options array to retrieve default request options');
- return $this->defaultHeaders;
- }
-
- /**
- * @deprecated
- */
- public function setDefaultHeaders($headers)
- {
- Version::warn(__METHOD__ . ' is deprecated. Use the request.options array to specify default request options');
- if ($headers instanceof Collection) {
- $this->defaultHeaders = $headers;
- } elseif (is_array($headers)) {
- $this->defaultHeaders = new Collection($headers);
- } else {
- throw new InvalidArgumentException('Headers must be an array or Collection');
- }
-
- return $this;
- }
-
- /**
- * @deprecated
- */
- public function preparePharCacert($md5Check = true)
- {
- return sys_get_temp_dir() . '/guzzle-cacert.pem';
- }
-
- /**
- * Copies the phar cacert from a phar into the temp directory.
- *
- * @param string $pharCacertPath Path to the phar cacert. For example:
- * 'phar://aws.phar/Guzzle/Http/Resources/cacert.pem'
- *
- * @return string Returns the path to the extracted cacert file.
- * @throws \RuntimeException Throws if the phar cacert cannot be found or
- * the file cannot be copied to the temp dir.
- */
- public static function extractPharCacert($pharCacertPath)
- {
- // Copy the cacert.pem file from the phar if it is not in the temp
- // folder.
- $certFile = sys_get_temp_dir() . '/guzzle-cacert.pem';
-
- if (!file_exists($pharCacertPath)) {
- throw new \RuntimeException("Could not find $pharCacertPath");
- }
-
- if (!file_exists($certFile) ||
- filesize($certFile) != filesize($pharCacertPath)
- ) {
- if (!copy($pharCacertPath, $certFile)) {
- throw new \RuntimeException(
- "Could not copy {$pharCacertPath} to {$certFile}: "
- . var_export(error_get_last(), true)
- );
- }
- }
-
- return $certFile;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php
deleted file mode 100644
index 10e4de2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\HasDispatcherInterface;
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * Client interface for send HTTP requests
- */
-interface ClientInterface extends HasDispatcherInterface
-{
- const CREATE_REQUEST = 'client.create_request';
-
- /** @var string RFC 1123 HTTP-Date */
- const HTTP_DATE = 'D, d M Y H:i:s \G\M\T';
-
- /**
- * Set the configuration object to use with the client
- *
- * @param array|Collection $config Parameters that define how the client behaves
- *
- * @return self
- */
- public function setConfig($config);
-
- /**
- * Get a configuration setting or all of the configuration settings. The Collection result of this method can be
- * modified to change the configuration settings of a client.
- *
- * A client should honor the following special values:
- *
- * - request.options: Associative array of default RequestFactory options to apply to each request
- * - request.params: Associative array of request parameters (data values) to apply to each request
- * - curl.options: Associative array of cURL configuration settings to apply to each request
- * - ssl.certificate_authority: Path a CAINFO, CAPATH, true to use strict defaults, or false to disable verification
- * - redirect.disable: Set to true to disable redirects
- *
- * @param bool|string $key Configuration value to retrieve. Set to FALSE to retrieve all values of the client.
- * The object return can be modified, and modifications will affect the client's config.
- * @return mixed|Collection
- * @see \Guzzle\Http\Message\RequestFactoryInterface::applyOptions for a full list of request.options options
- */
- public function getConfig($key = false);
-
- /**
- * Create and return a new {@see RequestInterface} configured for the client.
- *
- * Use an absolute path to override the base path of the client, or a relative path to append to the base path of
- * the client. The URI can contain the query string as well. Use an array to provide a URI template and additional
- * variables to use in the URI template expansion.
- *
- * @param string $method HTTP method. Defaults to GET
- * @param string|array $uri Resource URI.
- * @param array|Collection $headers HTTP headers
- * @param string|resource|array|EntityBodyInterface $body Entity body of request (POST/PUT) or response (GET)
- * @param array $options Array of options to apply to the request
- *
- * @return RequestInterface
- * @throws InvalidArgumentException if a URI array is passed that does not contain exactly two elements: the URI
- * followed by template variables
- */
- public function createRequest(
- $method = RequestInterface::GET,
- $uri = null,
- $headers = null,
- $body = null,
- array $options = array()
- );
-
- /**
- * Create a GET request for the client
- *
- * @param string|array $uri Resource URI
- * @param array|Collection $headers HTTP headers
- * @param array $options Options to apply to the request. For BC compatibility, you can also pass a
- * string to tell Guzzle to download the body of the response to a particular
- * location. Use the 'body' option instead for forward compatibility.
- * @return RequestInterface
- * @see Guzzle\Http\ClientInterface::createRequest()
- */
- public function get($uri = null, $headers = null, $options = array());
-
- /**
- * Create a HEAD request for the client
- *
- * @param string|array $uri Resource URI
- * @param array|Collection $headers HTTP headers
- * @param array $options Options to apply to the request
- *
- * @return RequestInterface
- * @see Guzzle\Http\ClientInterface::createRequest()
- */
- public function head($uri = null, $headers = null, array $options = array());
-
- /**
- * Create a DELETE request for the client
- *
- * @param string|array $uri Resource URI
- * @param array|Collection $headers HTTP headers
- * @param string|resource|EntityBodyInterface $body Body to send in the request
- * @param array $options Options to apply to the request
- *
- * @return EntityEnclosingRequestInterface
- * @see Guzzle\Http\ClientInterface::createRequest()
- */
- public function delete($uri = null, $headers = null, $body = null, array $options = array());
-
- /**
- * Create a PUT request for the client
- *
- * @param string|array $uri Resource URI
- * @param array|Collection $headers HTTP headers
- * @param string|resource|EntityBodyInterface $body Body to send in the request
- * @param array $options Options to apply to the request
- *
- * @return EntityEnclosingRequestInterface
- * @see Guzzle\Http\ClientInterface::createRequest()
- */
- public function put($uri = null, $headers = null, $body = null, array $options = array());
-
- /**
- * Create a PATCH request for the client
- *
- * @param string|array $uri Resource URI
- * @param array|Collection $headers HTTP headers
- * @param string|resource|EntityBodyInterface $body Body to send in the request
- * @param array $options Options to apply to the request
- *
- * @return EntityEnclosingRequestInterface
- * @see Guzzle\Http\ClientInterface::createRequest()
- */
- public function patch($uri = null, $headers = null, $body = null, array $options = array());
-
- /**
- * Create a POST request for the client
- *
- * @param string|array $uri Resource URI
- * @param array|Collection $headers HTTP headers
- * @param array|Collection|string|EntityBodyInterface $postBody POST body. Can be a string, EntityBody, or
- * associative array of POST fields to send in the body of the
- * request. Prefix a value in the array with the @ symbol to
- * reference a file.
- * @param array $options Options to apply to the request
- *
- * @return EntityEnclosingRequestInterface
- * @see Guzzle\Http\ClientInterface::createRequest()
- */
- public function post($uri = null, $headers = null, $postBody = null, array $options = array());
-
- /**
- * Create an OPTIONS request for the client
- *
- * @param string|array $uri Resource URI
- * @param array $options Options to apply to the request
- *
- * @return RequestInterface
- * @see Guzzle\Http\ClientInterface::createRequest()
- */
- public function options($uri = null, array $options = array());
-
- /**
- * Sends a single request or an array of requests in parallel
- *
- * @param array|RequestInterface $requests One or more RequestInterface objects to send
- *
- * @return \Guzzle\Http\Message\Response|array Returns a single Response or an array of Response objects
- */
- public function send($requests);
-
- /**
- * Get the client's base URL as either an expanded or raw URI template
- *
- * @param bool $expand Set to FALSE to get the raw base URL without URI template expansion
- *
- * @return string|null
- */
- public function getBaseUrl($expand = true);
-
- /**
- * Set the base URL of the client
- *
- * @param string $url The base service endpoint URL of the webservice
- *
- * @return self
- */
- public function setBaseUrl($url);
-
- /**
- * Set the User-Agent header to be used on all requests from the client
- *
- * @param string $userAgent User agent string
- * @param bool $includeDefault Set to true to prepend the value to Guzzle's default user agent string
- *
- * @return self
- */
- public function setUserAgent($userAgent, $includeDefault = false);
-
- /**
- * Set SSL verification options.
- *
- * Setting $certificateAuthority to TRUE will result in the bundled cacert.pem being used to verify against the
- * remote host.
- *
- * Alternate certificates to verify against can be specified with the $certificateAuthority option set to the full
- * path to a certificate file, or the path to a directory containing certificates.
- *
- * Setting $certificateAuthority to FALSE will turn off peer verification, unset the bundled cacert.pem, and
- * disable host verification. Please don't do this unless you really know what you're doing, and why you're doing
- * it.
- *
- * @param string|bool $certificateAuthority bool, file path, or directory path
- * @param bool $verifyPeer FALSE to stop from verifying the peer's certificate.
- * @param int $verifyHost Set to 1 to check the existence of a common name in the SSL peer
- * certificate. 2 to check the existence of a common name and also verify
- * that it matches the hostname provided.
- * @return self
- */
- public function setSslVerification($certificateAuthority = true, $verifyPeer = true, $verifyHost = 2);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlHandle.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlHandle.php
deleted file mode 100644
index efba5d1..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlHandle.php
+++ /dev/null
@@ -1,464 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Curl;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Common\Collection;
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Parser\ParserRegistry;
-use Guzzle\Http\Url;
-
-/**
- * Immutable wrapper for a cURL handle
- */
-class CurlHandle
-{
- const BODY_AS_STRING = 'body_as_string';
- const PROGRESS = 'progress';
- const DEBUG = 'debug';
-
- /** @var Collection Curl options */
- protected $options;
-
- /** @var resource Curl resource handle */
- protected $handle;
-
- /** @var int CURLE_* error */
- protected $errorNo = CURLE_OK;
-
- /**
- * Factory method to create a new curl handle based on an HTTP request.
- *
- * There are some helpful options you can set to enable specific behavior:
- * - debug: Set to true to enable cURL debug functionality to track the actual headers sent over the wire.
- * - progress: Set to true to enable progress function callbacks.
- *
- * @param RequestInterface $request Request
- *
- * @return CurlHandle
- * @throws RuntimeException
- */
- public static function factory(RequestInterface $request)
- {
- $requestCurlOptions = $request->getCurlOptions();
- $mediator = new RequestMediator($request, $requestCurlOptions->get('emit_io'));
- $tempContentLength = null;
- $method = $request->getMethod();
- $bodyAsString = $requestCurlOptions->get(self::BODY_AS_STRING);
-
- // Prepare url
- $url = (string)$request->getUrl();
- if(($pos = strpos($url, '#')) !== false ){
- // strip fragment from url
- $url = substr($url, 0, $pos);
- }
-
- // Array of default cURL options.
- $curlOptions = array(
- CURLOPT_URL => $url,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_RETURNTRANSFER => false,
- CURLOPT_HEADER => false,
- CURLOPT_PORT => $request->getPort(),
- CURLOPT_HTTPHEADER => array(),
- CURLOPT_WRITEFUNCTION => array($mediator, 'writeResponseBody'),
- CURLOPT_HEADERFUNCTION => array($mediator, 'receiveResponseHeader'),
- CURLOPT_HTTP_VERSION => $request->getProtocolVersion() === '1.0'
- ? CURL_HTTP_VERSION_1_0 : CURL_HTTP_VERSION_1_1,
- // Verifies the authenticity of the peer's certificate
- CURLOPT_SSL_VERIFYPEER => 1,
- // Certificate must indicate that the server is the server to which you meant to connect
- CURLOPT_SSL_VERIFYHOST => 2
- );
-
- if (defined('CURLOPT_PROTOCOLS')) {
- // Allow only HTTP and HTTPS protocols
- $curlOptions[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
- }
-
- // Add CURLOPT_ENCODING if Accept-Encoding header is provided
- if ($acceptEncodingHeader = $request->getHeader('Accept-Encoding')) {
- $curlOptions[CURLOPT_ENCODING] = (string) $acceptEncodingHeader;
- // Let cURL set the Accept-Encoding header, prevents duplicate values
- $request->removeHeader('Accept-Encoding');
- }
-
- // Enable curl debug information if the 'debug' param was set
- if ($requestCurlOptions->get('debug')) {
- $curlOptions[CURLOPT_STDERR] = fopen('php://temp', 'r+');
- // @codeCoverageIgnoreStart
- if (false === $curlOptions[CURLOPT_STDERR]) {
- throw new RuntimeException('Unable to create a stream for CURLOPT_STDERR');
- }
- // @codeCoverageIgnoreEnd
- $curlOptions[CURLOPT_VERBOSE] = true;
- }
-
- // Specify settings according to the HTTP method
- if ($method == 'GET') {
- $curlOptions[CURLOPT_HTTPGET] = true;
- } elseif ($method == 'HEAD') {
- $curlOptions[CURLOPT_NOBODY] = true;
- // HEAD requests do not use a write function
- unset($curlOptions[CURLOPT_WRITEFUNCTION]);
- } elseif (!($request instanceof EntityEnclosingRequest)) {
- $curlOptions[CURLOPT_CUSTOMREQUEST] = $method;
- } else {
-
- $curlOptions[CURLOPT_CUSTOMREQUEST] = $method;
-
- // Handle sending raw bodies in a request
- if ($request->getBody()) {
- // You can send the body as a string using curl's CURLOPT_POSTFIELDS
- if ($bodyAsString) {
- $curlOptions[CURLOPT_POSTFIELDS] = (string) $request->getBody();
- // Allow curl to add the Content-Length for us to account for the times when
- // POST redirects are followed by GET requests
- if ($tempContentLength = $request->getHeader('Content-Length')) {
- $tempContentLength = (int) (string) $tempContentLength;
- }
- // Remove the curl generated Content-Type header if none was set manually
- if (!$request->hasHeader('Content-Type')) {
- $curlOptions[CURLOPT_HTTPHEADER][] = 'Content-Type:';
- }
- } else {
- $curlOptions[CURLOPT_UPLOAD] = true;
- // Let cURL handle setting the Content-Length header
- if ($tempContentLength = $request->getHeader('Content-Length')) {
- $tempContentLength = (int) (string) $tempContentLength;
- $curlOptions[CURLOPT_INFILESIZE] = $tempContentLength;
- }
- // Add a callback for curl to read data to send with the request only if a body was specified
- $curlOptions[CURLOPT_READFUNCTION] = array($mediator, 'readRequestBody');
- // Attempt to seek to the start of the stream
- $request->getBody()->seek(0);
- }
-
- } else {
-
- // Special handling for POST specific fields and files
- $postFields = false;
- if (count($request->getPostFiles())) {
- $postFields = $request->getPostFields()->useUrlEncoding(false)->urlEncode();
- foreach ($request->getPostFiles() as $key => $data) {
- $prefixKeys = count($data) > 1;
- foreach ($data as $index => $file) {
- // Allow multiple files in the same key
- $fieldKey = $prefixKeys ? "{$key}[{$index}]" : $key;
- $postFields[$fieldKey] = $file->getCurlValue();
- }
- }
- } elseif (count($request->getPostFields())) {
- $postFields = (string) $request->getPostFields()->useUrlEncoding(true);
- }
-
- if ($postFields !== false) {
- if ($method == 'POST') {
- unset($curlOptions[CURLOPT_CUSTOMREQUEST]);
- $curlOptions[CURLOPT_POST] = true;
- }
- $curlOptions[CURLOPT_POSTFIELDS] = $postFields;
- $request->removeHeader('Content-Length');
- }
- }
-
- // If the Expect header is not present, prevent curl from adding it
- if (!$request->hasHeader('Expect')) {
- $curlOptions[CURLOPT_HTTPHEADER][] = 'Expect:';
- }
- }
-
- // If a Content-Length header was specified but we want to allow curl to set one for us
- if (null !== $tempContentLength) {
- $request->removeHeader('Content-Length');
- }
-
- // Set custom cURL options
- foreach ($requestCurlOptions->toArray() as $key => $value) {
- if (is_numeric($key)) {
- $curlOptions[$key] = $value;
- }
- }
-
- // Do not set an Accept header by default
- if (!isset($curlOptions[CURLOPT_ENCODING])) {
- $curlOptions[CURLOPT_HTTPHEADER][] = 'Accept:';
- }
-
- // Add any custom headers to the request. Empty headers will cause curl to not send the header at all.
- foreach ($request->getHeaderLines() as $line) {
- $curlOptions[CURLOPT_HTTPHEADER][] = $line;
- }
-
- // Add the content-length header back if it was temporarily removed
- if (null !== $tempContentLength) {
- $request->setHeader('Content-Length', $tempContentLength);
- }
-
- // Apply the options to a new cURL handle.
- $handle = curl_init();
-
- // Enable the progress function if the 'progress' param was set
- if ($requestCurlOptions->get('progress')) {
- // Wrap the function in a function that provides the curl handle to the mediator's progress function
- // Using this rather than injecting the handle into the mediator prevents a circular reference
- $curlOptions[CURLOPT_PROGRESSFUNCTION] = function () use ($mediator, $handle) {
- $args = func_get_args();
- $args[] = $handle;
-
- // PHP 5.5 pushed the handle onto the start of the args
- if (is_resource($args[0])) {
- array_shift($args);
- }
-
- call_user_func_array(array($mediator, 'progress'), $args);
- };
- $curlOptions[CURLOPT_NOPROGRESS] = false;
- }
-
- curl_setopt_array($handle, $curlOptions);
-
- return new static($handle, $curlOptions);
- }
-
- /**
- * Construct a new CurlHandle object that wraps a cURL handle
- *
- * @param resource $handle Configured cURL handle resource
- * @param Collection|array $options Curl options to use with the handle
- *
- * @throws InvalidArgumentException
- */
- public function __construct($handle, $options)
- {
- if (!is_resource($handle)) {
- throw new InvalidArgumentException('Invalid handle provided');
- }
- if (is_array($options)) {
- $this->options = new Collection($options);
- } elseif ($options instanceof Collection) {
- $this->options = $options;
- } else {
- throw new InvalidArgumentException('Expected array or Collection');
- }
- $this->handle = $handle;
- }
-
- /**
- * Destructor
- */
- public function __destruct()
- {
- $this->close();
- }
-
- /**
- * Close the curl handle
- */
- public function close()
- {
- if (is_resource($this->handle)) {
- curl_close($this->handle);
- }
- $this->handle = null;
- }
-
- /**
- * Check if the handle is available and still OK
- *
- * @return bool
- */
- public function isAvailable()
- {
- return is_resource($this->handle);
- }
-
- /**
- * Get the last error that occurred on the cURL handle
- *
- * @return string
- */
- public function getError()
- {
- return $this->isAvailable() ? curl_error($this->handle) : '';
- }
-
- /**
- * Get the last error number that occurred on the cURL handle
- *
- * @return int
- */
- public function getErrorNo()
- {
- if ($this->errorNo) {
- return $this->errorNo;
- }
-
- return $this->isAvailable() ? curl_errno($this->handle) : CURLE_OK;
- }
-
- /**
- * Set the curl error number
- *
- * @param int $error Error number to set
- *
- * @return CurlHandle
- */
- public function setErrorNo($error)
- {
- $this->errorNo = $error;
-
- return $this;
- }
-
- /**
- * Get cURL curl_getinfo data
- *
- * @param int $option Option to retrieve. Pass null to retrieve all data as an array.
- *
- * @return array|mixed
- */
- public function getInfo($option = null)
- {
- if (!is_resource($this->handle)) {
- return null;
- }
-
- if (null !== $option) {
- return curl_getinfo($this->handle, $option) ?: null;
- }
-
- return curl_getinfo($this->handle) ?: array();
- }
-
- /**
- * Get the stderr output
- *
- * @param bool $asResource Set to TRUE to get an fopen resource
- *
- * @return string|resource|null
- */
- public function getStderr($asResource = false)
- {
- $stderr = $this->getOptions()->get(CURLOPT_STDERR);
- if (!$stderr) {
- return null;
- }
-
- if ($asResource) {
- return $stderr;
- }
-
- fseek($stderr, 0);
- $e = stream_get_contents($stderr);
- fseek($stderr, 0, SEEK_END);
-
- return $e;
- }
-
- /**
- * Get the URL that this handle is connecting to
- *
- * @return Url
- */
- public function getUrl()
- {
- return Url::factory($this->options->get(CURLOPT_URL));
- }
-
- /**
- * Get the wrapped curl handle
- *
- * @return resource|null Returns the cURL handle or null if it was closed
- */
- public function getHandle()
- {
- return $this->isAvailable() ? $this->handle : null;
- }
-
- /**
- * Get the cURL setopt options of the handle. Changing values in the return object will have no effect on the curl
- * handle after it is created.
- *
- * @return Collection
- */
- public function getOptions()
- {
- return $this->options;
- }
-
- /**
- * Update a request based on the log messages of the CurlHandle
- *
- * @param RequestInterface $request Request to update
- */
- public function updateRequestFromTransfer(RequestInterface $request)
- {
- if (!$request->getResponse()) {
- return;
- }
-
- // Update the transfer stats of the response
- $request->getResponse()->setInfo($this->getInfo());
-
- if (!$log = $this->getStderr(true)) {
- return;
- }
-
- // Parse the cURL stderr output for outgoing requests
- $headers = '';
- fseek($log, 0);
- while (($line = fgets($log)) !== false) {
- if ($line && $line[0] == '>') {
- $headers = substr(trim($line), 2) . "\r\n";
- while (($line = fgets($log)) !== false) {
- if ($line[0] == '*' || $line[0] == '<') {
- break;
- } else {
- $headers .= trim($line) . "\r\n";
- }
- }
- }
- }
-
- // Add request headers to the request exactly as they were sent
- if ($headers) {
- $parsed = ParserRegistry::getInstance()->getParser('message')->parseRequest($headers);
- if (!empty($parsed['headers'])) {
- $request->setHeaders(array());
- foreach ($parsed['headers'] as $name => $value) {
- $request->setHeader($name, $value);
- }
- }
- if (!empty($parsed['version'])) {
- $request->setProtocolVersion($parsed['version']);
- }
- }
- }
-
- /**
- * Parse the config and replace curl.* configurators into the constant based values so it can be used elsewhere
- *
- * @param array|Collection $config The configuration we want to parse
- *
- * @return array
- */
- public static function parseCurlConfig($config)
- {
- $curlOptions = array();
- foreach ($config as $key => $value) {
- if (is_string($key) && defined($key)) {
- // Convert constants represented as string to constant int values
- $key = constant($key);
- }
- if (is_string($value) && defined($value)) {
- $value = constant($value);
- }
- $curlOptions[$key] = $value;
- }
-
- return $curlOptions;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php
deleted file mode 100644
index 9e4e637..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php
+++ /dev/null
@@ -1,423 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Curl;
-
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Common\Event;
-use Guzzle\Http\Exception\MultiTransferException;
-use Guzzle\Http\Exception\CurlException;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Exception\RequestException;
-
-/**
- * Send {@see RequestInterface} objects in parallel using curl_multi
- */
-class CurlMulti extends AbstractHasDispatcher implements CurlMultiInterface
-{
- /** @var resource cURL multi handle. */
- protected $multiHandle;
-
- /** @var array Attached {@see RequestInterface} objects. */
- protected $requests;
-
- /** @var \SplObjectStorage RequestInterface to CurlHandle hash */
- protected $handles;
-
- /** @var array Hash mapping curl handle resource IDs to request objects */
- protected $resourceHash;
-
- /** @var array Queued exceptions */
- protected $exceptions = array();
-
- /** @var array Requests that succeeded */
- protected $successful = array();
-
- /** @var array cURL multi error values and codes */
- protected $multiErrors = array(
- CURLM_BAD_HANDLE => array('CURLM_BAD_HANDLE', 'The passed-in handle is not a valid CURLM handle.'),
- CURLM_BAD_EASY_HANDLE => array('CURLM_BAD_EASY_HANDLE', "An easy handle was not good/valid. It could mean that it isn't an easy handle at all, or possibly that the handle already is in used by this or another multi handle."),
- CURLM_OUT_OF_MEMORY => array('CURLM_OUT_OF_MEMORY', 'You are doomed.'),
- CURLM_INTERNAL_ERROR => array('CURLM_INTERNAL_ERROR', 'This can only be returned if libcurl bugs. Please report it to us!')
- );
-
- /** @var float */
- protected $selectTimeout;
-
- public function __construct($selectTimeout = 1.0)
- {
- $this->selectTimeout = $selectTimeout;
- $this->multiHandle = curl_multi_init();
- // @codeCoverageIgnoreStart
- if ($this->multiHandle === false) {
- throw new CurlException('Unable to create multi handle');
- }
- // @codeCoverageIgnoreEnd
- $this->reset();
- }
-
- public function __destruct()
- {
- if (is_resource($this->multiHandle)) {
- curl_multi_close($this->multiHandle);
- }
- }
-
- public function add(RequestInterface $request)
- {
- $this->requests[] = $request;
- // If requests are currently transferring and this is async, then the
- // request must be prepared now as the send() method is not called.
- $this->beforeSend($request);
- $this->dispatch(self::ADD_REQUEST, array('request' => $request));
-
- return $this;
- }
-
- public function all()
- {
- return $this->requests;
- }
-
- public function remove(RequestInterface $request)
- {
- $this->removeHandle($request);
- if (($index = array_search($request, $this->requests, true)) !== false) {
- $request = $this->requests[$index];
- unset($this->requests[$index]);
- $this->requests = array_values($this->requests);
- $this->dispatch(self::REMOVE_REQUEST, array('request' => $request));
- return true;
- }
-
- return false;
- }
-
- public function reset($hard = false)
- {
- // Remove each request
- if ($this->requests) {
- foreach ($this->requests as $request) {
- $this->remove($request);
- }
- }
-
- $this->handles = new \SplObjectStorage();
- $this->requests = $this->resourceHash = $this->exceptions = $this->successful = array();
- }
-
- public function send()
- {
- $this->perform();
- $exceptions = $this->exceptions;
- $successful = $this->successful;
- $this->reset();
-
- if ($exceptions) {
- $this->throwMultiException($exceptions, $successful);
- }
- }
-
- public function count()
- {
- return count($this->requests);
- }
-
- /**
- * Build and throw a MultiTransferException
- *
- * @param array $exceptions Exceptions encountered
- * @param array $successful Successful requests
- * @throws MultiTransferException
- */
- protected function throwMultiException(array $exceptions, array $successful)
- {
- $multiException = new MultiTransferException('Errors during multi transfer');
-
- while ($e = array_shift($exceptions)) {
- $multiException->addFailedRequestWithException($e['request'], $e['exception']);
- }
-
- // Add successful requests
- foreach ($successful as $request) {
- if (!$multiException->containsRequest($request)) {
- $multiException->addSuccessfulRequest($request);
- }
- }
-
- throw $multiException;
- }
-
- /**
- * Prepare for sending
- *
- * @param RequestInterface $request Request to prepare
- * @throws \Exception on error preparing the request
- */
- protected function beforeSend(RequestInterface $request)
- {
- try {
- $state = $request->setState(RequestInterface::STATE_TRANSFER);
- if ($state == RequestInterface::STATE_TRANSFER) {
- $this->addHandle($request);
- } else {
- // Requests might decide they don't need to be sent just before
- // transfer (e.g. CachePlugin)
- $this->remove($request);
- if ($state == RequestInterface::STATE_COMPLETE) {
- $this->successful[] = $request;
- }
- }
- } catch (\Exception $e) {
- // Queue the exception to be thrown when sent
- $this->removeErroredRequest($request, $e);
- }
- }
-
- private function addHandle(RequestInterface $request)
- {
- $handle = $this->createCurlHandle($request)->getHandle();
- $this->checkCurlResult(
- curl_multi_add_handle($this->multiHandle, $handle)
- );
- }
-
- /**
- * Create a curl handle for a request
- *
- * @param RequestInterface $request Request
- *
- * @return CurlHandle
- */
- protected function createCurlHandle(RequestInterface $request)
- {
- $wrapper = CurlHandle::factory($request);
- $this->handles[$request] = $wrapper;
- $this->resourceHash[(int) $wrapper->getHandle()] = $request;
-
- return $wrapper;
- }
-
- /**
- * Get the data from the multi handle
- */
- protected function perform()
- {
- $event = new Event(array('curl_multi' => $this));
-
- while ($this->requests) {
- // Notify each request as polling
- $blocking = $total = 0;
- foreach ($this->requests as $request) {
- ++$total;
- $event['request'] = $request;
- $request->getEventDispatcher()->dispatch(self::POLLING_REQUEST, $event);
- // The blocking variable just has to be non-falsey to block the loop
- if ($request->getParams()->hasKey(self::BLOCKING)) {
- ++$blocking;
- }
- }
- if ($blocking == $total) {
- // Sleep to prevent eating CPU because no requests are actually pending a select call
- usleep(500);
- } else {
- $this->executeHandles();
- }
- }
- }
-
- /**
- * Execute and select curl handles
- */
- private function executeHandles()
- {
- // The first curl_multi_select often times out no matter what, but is usually required for fast transfers
- $selectTimeout = 0.001;
- $active = false;
- do {
- while (($mrc = curl_multi_exec($this->multiHandle, $active)) == CURLM_CALL_MULTI_PERFORM);
- $this->checkCurlResult($mrc);
- $this->processMessages();
- if ($active && curl_multi_select($this->multiHandle, $selectTimeout) === -1) {
- // Perform a usleep if a select returns -1: https://bugs.php.net/bug.php?id=61141
- usleep(150);
- }
- $selectTimeout = $this->selectTimeout;
- } while ($active);
- }
-
- /**
- * Process any received curl multi messages
- */
- private function processMessages()
- {
- while ($done = curl_multi_info_read($this->multiHandle)) {
- $request = $this->resourceHash[(int) $done['handle']];
- try {
- $this->processResponse($request, $this->handles[$request], $done);
- $this->successful[] = $request;
- } catch (\Exception $e) {
- $this->removeErroredRequest($request, $e);
- }
- }
- }
-
- /**
- * Remove a request that encountered an exception
- *
- * @param RequestInterface $request Request to remove
- * @param \Exception $e Exception encountered
- */
- protected function removeErroredRequest(RequestInterface $request, \Exception $e = null)
- {
- $this->exceptions[] = array('request' => $request, 'exception' => $e);
- $this->remove($request);
- $this->dispatch(self::MULTI_EXCEPTION, array('exception' => $e, 'all_exceptions' => $this->exceptions));
- }
-
- /**
- * Check for errors and fix headers of a request based on a curl response
- *
- * @param RequestInterface $request Request to process
- * @param CurlHandle $handle Curl handle object
- * @param array $curl Array returned from curl_multi_info_read
- *
- * @throws CurlException on Curl error
- */
- protected function processResponse(RequestInterface $request, CurlHandle $handle, array $curl)
- {
- // Set the transfer stats on the response
- $handle->updateRequestFromTransfer($request);
- // Check if a cURL exception occurred, and if so, notify things
- $curlException = $this->isCurlException($request, $handle, $curl);
-
- // Always remove completed curl handles. They can be added back again
- // via events if needed (e.g. ExponentialBackoffPlugin)
- $this->removeHandle($request);
-
- if (!$curlException) {
- if ($this->validateResponseWasSet($request)) {
- $state = $request->setState(
- RequestInterface::STATE_COMPLETE,
- array('handle' => $handle)
- );
- // Only remove the request if it wasn't resent as a result of
- // the state change
- if ($state != RequestInterface::STATE_TRANSFER) {
- $this->remove($request);
- }
- }
- return;
- }
-
- // Set the state of the request to an error
- $state = $request->setState(RequestInterface::STATE_ERROR, array('exception' => $curlException));
- // Allow things to ignore the error if possible
- if ($state != RequestInterface::STATE_TRANSFER) {
- $this->remove($request);
- }
-
- // The error was not handled, so fail
- if ($state == RequestInterface::STATE_ERROR) {
- /** @var CurlException $curlException */
- throw $curlException;
- }
- }
-
- /**
- * Remove a curl handle from the curl multi object
- *
- * @param RequestInterface $request Request that owns the handle
- */
- protected function removeHandle(RequestInterface $request)
- {
- if (isset($this->handles[$request])) {
- $handle = $this->handles[$request];
- curl_multi_remove_handle($this->multiHandle, $handle->getHandle());
- unset($this->handles[$request]);
- unset($this->resourceHash[(int) $handle->getHandle()]);
- $handle->close();
- }
- }
-
- /**
- * Check if a cURL transfer resulted in what should be an exception
- *
- * @param RequestInterface $request Request to check
- * @param CurlHandle $handle Curl handle object
- * @param array $curl Array returned from curl_multi_info_read
- *
- * @return CurlException|bool
- */
- private function isCurlException(RequestInterface $request, CurlHandle $handle, array $curl)
- {
- if (CURLM_OK == $curl['result'] || CURLM_CALL_MULTI_PERFORM == $curl['result']) {
- return false;
- }
-
- $handle->setErrorNo($curl['result']);
- $e = new CurlException(sprintf('[curl] %s: %s [url] %s',
- $handle->getErrorNo(), $handle->getError(), $handle->getUrl()));
- $e->setCurlHandle($handle)
- ->setRequest($request)
- ->setCurlInfo($handle->getInfo())
- ->setError($handle->getError(), $handle->getErrorNo());
-
- return $e;
- }
-
- /**
- * Throw an exception for a cURL multi response if needed
- *
- * @param int $code Curl response code
- * @throws CurlException
- */
- private function checkCurlResult($code)
- {
- if ($code != CURLM_OK && $code != CURLM_CALL_MULTI_PERFORM) {
- throw new CurlException(isset($this->multiErrors[$code])
- ? "cURL error: {$code} ({$this->multiErrors[$code][0]}): cURL message: {$this->multiErrors[$code][1]}"
- : 'Unexpected cURL error: ' . $code
- );
- }
- }
-
- /**
- * @link https://github.com/guzzle/guzzle/issues/710
- */
- private function validateResponseWasSet(RequestInterface $request)
- {
- if ($request->getResponse()) {
- return true;
- }
-
- $body = $request instanceof EntityEnclosingRequestInterface
- ? $request->getBody()
- : null;
-
- if (!$body) {
- $rex = new RequestException(
- 'No response was received for a request with no body. This'
- . ' could mean that you are saturating your network.'
- );
- $rex->setRequest($request);
- $this->removeErroredRequest($request, $rex);
- } elseif (!$body->isSeekable() || !$body->seek(0)) {
- // Nothing we can do with this. Sorry!
- $rex = new RequestException(
- 'The connection was unexpectedly closed. The request would'
- . ' have been retried, but attempting to rewind the'
- . ' request body failed.'
- );
- $rex->setRequest($request);
- $this->removeErroredRequest($request, $rex);
- } else {
- $this->remove($request);
- // Add the request back to the batch to retry automatically.
- $this->requests[] = $request;
- $this->addHandle($request);
- }
-
- return false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiInterface.php
deleted file mode 100644
index 0ead757..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiInterface.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Curl;
-
-use Guzzle\Common\HasDispatcherInterface;
-use Guzzle\Common\Exception\ExceptionCollection;
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * Interface for sending a pool of {@see RequestInterface} objects in parallel
- */
-interface CurlMultiInterface extends \Countable, HasDispatcherInterface
-{
- const POLLING_REQUEST = 'curl_multi.polling_request';
- const ADD_REQUEST = 'curl_multi.add_request';
- const REMOVE_REQUEST = 'curl_multi.remove_request';
- const MULTI_EXCEPTION = 'curl_multi.exception';
- const BLOCKING = 'curl_multi.blocking';
-
- /**
- * Add a request to the pool.
- *
- * @param RequestInterface $request Request to add
- *
- * @return CurlMultiInterface
- */
- public function add(RequestInterface $request);
-
- /**
- * Get an array of attached {@see RequestInterface} objects
- *
- * @return array
- */
- public function all();
-
- /**
- * Remove a request from the pool.
- *
- * @param RequestInterface $request Request to remove
- *
- * @return bool Returns true on success or false on failure
- */
- public function remove(RequestInterface $request);
-
- /**
- * Reset the state and remove any attached RequestInterface objects
- *
- * @param bool $hard Set to true to close and reopen any open multi handles
- */
- public function reset($hard = false);
-
- /**
- * Send a pool of {@see RequestInterface} requests.
- *
- * @throws ExceptionCollection if any requests threw exceptions during the transfer.
- */
- public function send();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiProxy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiProxy.php
deleted file mode 100644
index c5b80a7..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiProxy.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Curl;
-
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * Proxies requests and connections to a pool of internal curl_multi handles. Each recursive call will add requests
- * to the next available CurlMulti handle.
- */
-class CurlMultiProxy extends AbstractHasDispatcher implements CurlMultiInterface
-{
- protected $handles = array();
- protected $groups = array();
- protected $queued = array();
- protected $maxHandles;
- protected $selectTimeout;
-
- /**
- * @param int $maxHandles The maximum number of idle CurlMulti handles to allow to remain open
- * @param float $selectTimeout timeout for curl_multi_select
- */
- public function __construct($maxHandles = 3, $selectTimeout = 1.0)
- {
- $this->maxHandles = $maxHandles;
- $this->selectTimeout = $selectTimeout;
- // You can get some weird "Too many open files" errors when sending a large amount of requests in parallel.
- // These two statements autoload classes before a system runs out of file descriptors so that you can get back
- // valuable error messages if you run out.
- class_exists('Guzzle\Http\Message\Response');
- class_exists('Guzzle\Http\Exception\CurlException');
- }
-
- public function add(RequestInterface $request)
- {
- $this->queued[] = $request;
-
- return $this;
- }
-
- public function all()
- {
- $requests = $this->queued;
- foreach ($this->handles as $handle) {
- $requests = array_merge($requests, $handle->all());
- }
-
- return $requests;
- }
-
- public function remove(RequestInterface $request)
- {
- foreach ($this->queued as $i => $r) {
- if ($request === $r) {
- unset($this->queued[$i]);
- return true;
- }
- }
-
- foreach ($this->handles as $handle) {
- if ($handle->remove($request)) {
- return true;
- }
- }
-
- return false;
- }
-
- public function reset($hard = false)
- {
- $this->queued = array();
- $this->groups = array();
- foreach ($this->handles as $handle) {
- $handle->reset();
- }
- if ($hard) {
- $this->handles = array();
- }
-
- return $this;
- }
-
- public function send()
- {
- if ($this->queued) {
- $group = $this->getAvailableHandle();
- // Add this handle to a list of handles than is claimed
- $this->groups[] = $group;
- while ($request = array_shift($this->queued)) {
- $group->add($request);
- }
- try {
- $group->send();
- array_pop($this->groups);
- $this->cleanupHandles();
- } catch (\Exception $e) {
- // Remove the group and cleanup if an exception was encountered and no more requests in group
- if (!$group->count()) {
- array_pop($this->groups);
- $this->cleanupHandles();
- }
- throw $e;
- }
- }
- }
-
- public function count()
- {
- return count($this->all());
- }
-
- /**
- * Get an existing available CurlMulti handle or create a new one
- *
- * @return CurlMulti
- */
- protected function getAvailableHandle()
- {
- // Grab a handle that is not claimed
- foreach ($this->handles as $h) {
- if (!in_array($h, $this->groups, true)) {
- return $h;
- }
- }
-
- // All are claimed, so create one
- $handle = new CurlMulti($this->selectTimeout);
- $handle->setEventDispatcher($this->getEventDispatcher());
- $this->handles[] = $handle;
-
- return $handle;
- }
-
- /**
- * Trims down unused CurlMulti handles to limit the number of open connections
- */
- protected function cleanupHandles()
- {
- if ($diff = max(0, count($this->handles) - $this->maxHandles)) {
- for ($i = count($this->handles) - 1; $i > 0 && $diff > 0; $i--) {
- if (!count($this->handles[$i])) {
- unset($this->handles[$i]);
- $diff--;
- }
- }
- $this->handles = array_values($this->handles);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlVersion.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlVersion.php
deleted file mode 100644
index c3f99dd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/CurlVersion.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Curl;
-
-/**
- * Class used for querying curl_version data
- */
-class CurlVersion
-{
- /** @var array curl_version() information */
- protected $version;
-
- /** @var CurlVersion */
- protected static $instance;
-
- /** @var string Default user agent */
- protected $userAgent;
-
- /**
- * @return CurlVersion
- */
- public static function getInstance()
- {
- if (!self::$instance) {
- self::$instance = new self();
- }
-
- return self::$instance;
- }
-
- /**
- * Get all of the curl_version() data
- *
- * @return array
- */
- public function getAll()
- {
- if (!$this->version) {
- $this->version = curl_version();
- }
-
- return $this->version;
- }
-
- /**
- * Get a specific type of curl information
- *
- * @param string $type Version information to retrieve. This value is one of:
- * - version_number: cURL 24 bit version number
- * - version: cURL version number, as a string
- * - ssl_version_number: OpenSSL 24 bit version number
- * - ssl_version: OpenSSL version number, as a string
- * - libz_version: zlib version number, as a string
- * - host: Information about the host where cURL was built
- * - features: A bitmask of the CURL_VERSION_XXX constants
- * - protocols: An array of protocols names supported by cURL
- *
- * @return string|float|bool if the $type is found, and false if not found
- */
- public function get($type)
- {
- $version = $this->getAll();
-
- return isset($version[$type]) ? $version[$type] : false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/RequestMediator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/RequestMediator.php
deleted file mode 100644
index 5d1a0cd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Curl/RequestMediator.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Curl;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\Response;
-
-/**
- * Mediator between curl handles and request objects
- */
-class RequestMediator
-{
- /** @var RequestInterface */
- protected $request;
-
- /** @var bool Whether or not to emit read/write events */
- protected $emitIo;
-
- /**
- * @param RequestInterface $request Request to mediate
- * @param bool $emitIo Set to true to dispatch events on input and output
- */
- public function __construct(RequestInterface $request, $emitIo = false)
- {
- $this->request = $request;
- $this->emitIo = $emitIo;
- }
-
- /**
- * Receive a response header from curl
- *
- * @param resource $curl Curl handle
- * @param string $header Received header
- *
- * @return int
- */
- public function receiveResponseHeader($curl, $header)
- {
- static $normalize = array("\r", "\n");
- $length = strlen($header);
- $header = str_replace($normalize, '', $header);
-
- if (strpos($header, 'HTTP/') === 0) {
-
- $startLine = explode(' ', $header, 3);
- $code = $startLine[1];
- $status = isset($startLine[2]) ? $startLine[2] : '';
-
- // Only download the body of the response to the specified response
- // body when a successful response is received.
- if ($code >= 200 && $code < 300) {
- $body = $this->request->getResponseBody();
- } else {
- $body = EntityBody::factory();
- }
-
- $response = new Response($code, null, $body);
- $response->setStatus($code, $status);
- $this->request->startResponse($response);
-
- $this->request->dispatch('request.receive.status_line', array(
- 'request' => $this,
- 'line' => $header,
- 'status_code' => $code,
- 'reason_phrase' => $status
- ));
-
- } elseif ($pos = strpos($header, ':')) {
- $this->request->getResponse()->addHeader(
- trim(substr($header, 0, $pos)),
- trim(substr($header, $pos + 1))
- );
- }
-
- return $length;
- }
-
- /**
- * Received a progress notification
- *
- * @param int $downloadSize Total download size
- * @param int $downloaded Amount of bytes downloaded
- * @param int $uploadSize Total upload size
- * @param int $uploaded Amount of bytes uploaded
- * @param resource $handle CurlHandle object
- */
- public function progress($downloadSize, $downloaded, $uploadSize, $uploaded, $handle = null)
- {
- $this->request->dispatch('curl.callback.progress', array(
- 'request' => $this->request,
- 'handle' => $handle,
- 'download_size' => $downloadSize,
- 'downloaded' => $downloaded,
- 'upload_size' => $uploadSize,
- 'uploaded' => $uploaded
- ));
- }
-
- /**
- * Write data to the response body of a request
- *
- * @param resource $curl Curl handle
- * @param string $write Data that was received
- *
- * @return int
- */
- public function writeResponseBody($curl, $write)
- {
- if ($this->emitIo) {
- $this->request->dispatch('curl.callback.write', array(
- 'request' => $this->request,
- 'write' => $write
- ));
- }
-
- if ($response = $this->request->getResponse()) {
- return $response->getBody()->write($write);
- } else {
- // Unexpected data received before response headers - abort transfer
- return 0;
- }
- }
-
- /**
- * Read data from the request body and send it to curl
- *
- * @param resource $ch Curl handle
- * @param resource $fd File descriptor
- * @param int $length Amount of data to read
- *
- * @return string
- */
- public function readRequestBody($ch, $fd, $length)
- {
- if (!($body = $this->request->getBody())) {
- return '';
- }
-
- $read = (string) $body->read($length);
- if ($this->emitIo) {
- $this->request->dispatch('curl.callback.read', array('request' => $this->request, 'read' => $read));
- }
-
- return $read;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBody.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBody.php
deleted file mode 100644
index b60d170..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBody.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\Version;
-use Guzzle\Stream\Stream;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Mimetypes;
-
-/**
- * Entity body used with an HTTP request or response
- */
-class EntityBody extends Stream implements EntityBodyInterface
-{
- /** @var bool Content-Encoding of the entity body if known */
- protected $contentEncoding = false;
-
- /** @var callable Method to invoke for rewinding a stream */
- protected $rewindFunction;
-
- /**
- * Create a new EntityBody based on the input type
- *
- * @param resource|string|EntityBody $resource Entity body data
- * @param int $size Size of the data contained in the resource
- *
- * @return EntityBody
- * @throws InvalidArgumentException if the $resource arg is not a resource or string
- */
- public static function factory($resource = '', $size = null)
- {
- if ($resource instanceof EntityBodyInterface) {
- return $resource;
- }
-
- switch (gettype($resource)) {
- case 'string':
- return self::fromString($resource);
- case 'resource':
- return new static($resource, $size);
- case 'object':
- if (method_exists($resource, '__toString')) {
- return self::fromString((string) $resource);
- }
- break;
- case 'array':
- return self::fromString(http_build_query($resource));
- }
-
- throw new InvalidArgumentException('Invalid resource type');
- }
-
- public function setRewindFunction($callable)
- {
- if (!is_callable($callable)) {
- throw new InvalidArgumentException('Must specify a callable');
- }
-
- $this->rewindFunction = $callable;
-
- return $this;
- }
-
- public function rewind()
- {
- return $this->rewindFunction ? call_user_func($this->rewindFunction, $this) : parent::rewind();
- }
-
- /**
- * Create a new EntityBody from a string
- *
- * @param string $string String of data
- *
- * @return EntityBody
- */
- public static function fromString($string)
- {
- $stream = fopen('php://temp', 'r+');
- if ($string !== '') {
- fwrite($stream, $string);
- rewind($stream);
- }
-
- return new static($stream);
- }
-
- public function compress($filter = 'zlib.deflate')
- {
- $result = $this->handleCompression($filter);
- $this->contentEncoding = $result ? $filter : false;
-
- return $result;
- }
-
- public function uncompress($filter = 'zlib.inflate')
- {
- $offsetStart = 0;
-
- // When inflating gzipped data, the first 10 bytes must be stripped
- // if a gzip header is present
- if ($filter == 'zlib.inflate') {
- // @codeCoverageIgnoreStart
- if (!$this->isReadable() || ($this->isConsumed() && !$this->isSeekable())) {
- return false;
- }
- // @codeCoverageIgnoreEnd
- if (stream_get_contents($this->stream, 3, 0) === "\x1f\x8b\x08") {
- $offsetStart = 10;
- }
- }
-
- $this->contentEncoding = false;
-
- return $this->handleCompression($filter, $offsetStart);
- }
-
- public function getContentLength()
- {
- return $this->getSize();
- }
-
- public function getContentType()
- {
- return $this->getUri() ? Mimetypes::getInstance()->fromFilename($this->getUri()) : null;
- }
-
- public function getContentMd5($rawOutput = false, $base64Encode = false)
- {
- if ($hash = self::getHash($this, 'md5', $rawOutput)) {
- return $hash && $base64Encode ? base64_encode($hash) : $hash;
- } else {
- return false;
- }
- }
-
- /**
- * Calculate the MD5 hash of an entity body
- *
- * @param EntityBodyInterface $body Entity body to calculate the hash for
- * @param bool $rawOutput Whether or not to use raw output
- * @param bool $base64Encode Whether or not to base64 encode raw output (only if raw output is true)
- *
- * @return bool|string Returns an MD5 string on success or FALSE on failure
- * @deprecated This will be deprecated soon
- * @codeCoverageIgnore
- */
- public static function calculateMd5(EntityBodyInterface $body, $rawOutput = false, $base64Encode = false)
- {
- Version::warn(__CLASS__ . ' is deprecated. Use getContentMd5()');
- return $body->getContentMd5($rawOutput, $base64Encode);
- }
-
- public function setStreamFilterContentEncoding($streamFilterContentEncoding)
- {
- $this->contentEncoding = $streamFilterContentEncoding;
-
- return $this;
- }
-
- public function getContentEncoding()
- {
- return strtr($this->contentEncoding, array(
- 'zlib.deflate' => 'gzip',
- 'bzip2.compress' => 'compress'
- )) ?: false;
- }
-
- protected function handleCompression($filter, $offsetStart = 0)
- {
- // @codeCoverageIgnoreStart
- if (!$this->isReadable() || ($this->isConsumed() && !$this->isSeekable())) {
- return false;
- }
- // @codeCoverageIgnoreEnd
-
- $handle = fopen('php://temp', 'r+');
- $filter = @stream_filter_append($handle, $filter, STREAM_FILTER_WRITE);
- if (!$filter) {
- return false;
- }
-
- // Seek to the offset start if possible
- $this->seek($offsetStart);
- while ($data = fread($this->stream, 8096)) {
- fwrite($handle, $data);
- }
-
- fclose($this->stream);
- $this->stream = $handle;
- stream_filter_remove($filter);
- $stat = fstat($this->stream);
- $this->size = $stat['size'];
- $this->rebuildCache();
- $this->seek(0);
-
- // Remove any existing rewind function as the underlying stream has been replaced
- $this->rewindFunction = null;
-
- return true;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBodyInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBodyInterface.php
deleted file mode 100644
index e640f57..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/EntityBodyInterface.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Stream\StreamInterface;
-
-/**
- * Entity body used with an HTTP request or response
- */
-interface EntityBodyInterface extends StreamInterface
-{
- /**
- * Specify a custom callback used to rewind a non-seekable stream. This can be useful entity enclosing requests
- * that are redirected.
- *
- * @param mixed $callable Callable to invoke to rewind a non-seekable stream. The callback must accept an
- * EntityBodyInterface object, perform the rewind if possible, and return a boolean
- * representing whether or not the rewind was successful.
- * @return self
- */
- public function setRewindFunction($callable);
-
- /**
- * If the stream is readable, compress the data in the stream using deflate compression. The uncompressed stream is
- * then closed, and the compressed stream then becomes the wrapped stream.
- *
- * @param string $filter Compression filter
- *
- * @return bool Returns TRUE on success or FALSE on failure
- */
- public function compress($filter = 'zlib.deflate');
-
- /**
- * Decompress a deflated string. Once uncompressed, the uncompressed string is then used as the wrapped stream.
- *
- * @param string $filter De-compression filter
- *
- * @return bool Returns TRUE on success or FALSE on failure
- */
- public function uncompress($filter = 'zlib.inflate');
-
- /**
- * Get the Content-Length of the entity body if possible (alias of getSize)
- *
- * @return int|bool Returns the Content-Length or false on failure
- */
- public function getContentLength();
-
- /**
- * Guess the Content-Type of a local stream
- *
- * @return string|null
- * @see http://www.php.net/manual/en/function.finfo-open.php
- */
- public function getContentType();
-
- /**
- * Get an MD5 checksum of the stream's contents
- *
- * @param bool $rawOutput Whether or not to use raw output
- * @param bool $base64Encode Whether or not to base64 encode raw output (only if raw output is true)
- *
- * @return bool|string Returns an MD5 string on success or FALSE on failure
- */
- public function getContentMd5($rawOutput = false, $base64Encode = false);
-
- /**
- * Get the Content-Encoding of the EntityBody
- *
- * @return bool|string
- */
- public function getContentEncoding();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php
deleted file mode 100644
index 0ed0b47..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Http request exception thrown when a bad response is received
- */
-class BadResponseException extends RequestException
-{
- /** @var Response */
- private $response;
-
- /**
- * Factory method to create a new response exception based on the response code.
- *
- * @param RequestInterface $request Request
- * @param Response $response Response received
- *
- * @return BadResponseException
- */
- public static function factory(RequestInterface $request, Response $response)
- {
- if ($response->isClientError()) {
- $label = 'Client error response';
- $class = __NAMESPACE__ . '\\ClientErrorResponseException';
- } elseif ($response->isServerError()) {
- $label = 'Server error response';
- $class = __NAMESPACE__ . '\\ServerErrorResponseException';
- } else {
- $label = 'Unsuccessful response';
- $class = __CLASS__;
- }
-
- $message = $label . PHP_EOL . implode(PHP_EOL, array(
- '[status code] ' . $response->getStatusCode(),
- '[reason phrase] ' . $response->getReasonPhrase(),
- '[url] ' . $request->getUrl(),
- ));
-
- $e = new $class($message);
- $e->setResponse($response);
- $e->setRequest($request);
-
- return $e;
- }
-
- /**
- * Set the response that caused the exception
- *
- * @param Response $response Response to set
- */
- public function setResponse(Response $response)
- {
- $this->response = $response;
- }
-
- /**
- * Get the response that caused the exception
- *
- * @return Response
- */
- public function getResponse()
- {
- return $this->response;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ClientErrorResponseException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ClientErrorResponseException.php
deleted file mode 100644
index 04d7ddc..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ClientErrorResponseException.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-/**
- * Exception when a client error is encountered (4xx codes)
- */
-class ClientErrorResponseException extends BadResponseException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CouldNotRewindStreamException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CouldNotRewindStreamException.php
deleted file mode 100644
index 63e4ec7..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CouldNotRewindStreamException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-class CouldNotRewindStreamException extends RuntimeException implements HttpException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CurlException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CurlException.php
deleted file mode 100644
index a6a744a..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/CurlException.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-use Guzzle\Http\Curl\CurlHandle;
-
-/**
- * cURL request exception
- */
-class CurlException extends RequestException
-{
- private $curlError;
- private $curlErrorNo;
- private $handle;
- private $curlInfo = array();
-
- /**
- * Set the cURL error message
- *
- * @param string $error Curl error
- * @param int $number Curl error number
- *
- * @return self
- */
- public function setError($error, $number)
- {
- $this->curlError = $error;
- $this->curlErrorNo = $number;
-
- return $this;
- }
-
- /**
- * Set the associated curl handle
- *
- * @param CurlHandle $handle Curl handle
- *
- * @return self
- */
- public function setCurlHandle(CurlHandle $handle)
- {
- $this->handle = $handle;
-
- return $this;
- }
-
- /**
- * Get the associated cURL handle
- *
- * @return CurlHandle|null
- */
- public function getCurlHandle()
- {
- return $this->handle;
- }
-
- /**
- * Get the associated cURL error message
- *
- * @return string|null
- */
- public function getError()
- {
- return $this->curlError;
- }
-
- /**
- * Get the associated cURL error number
- *
- * @return int|null
- */
- public function getErrorNo()
- {
- return $this->curlErrorNo;
- }
-
- /**
- * Returns curl information about the transfer
- *
- * @return array
- */
- public function getCurlInfo()
- {
- return $this->curlInfo;
- }
-
- /**
- * Set curl transfer information
- *
- * @param array $info Array of curl transfer information
- *
- * @return self
- * @link http://php.net/manual/en/function.curl-getinfo.php
- */
- public function setCurlInfo(array $info)
- {
- $this->curlInfo = $info;
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/HttpException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/HttpException.php
deleted file mode 100644
index ee87295..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/HttpException.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-use Guzzle\Common\Exception\GuzzleException;
-
-/**
- * Http exception interface
- */
-interface HttpException extends GuzzleException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/MultiTransferException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/MultiTransferException.php
deleted file mode 100644
index 91e384d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/MultiTransferException.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-use Guzzle\Common\Exception\ExceptionCollection;
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * Exception encountered during a multi transfer
- */
-class MultiTransferException extends ExceptionCollection
-{
- protected $successfulRequests = array();
- protected $failedRequests = array();
- protected $exceptionForRequest = array();
-
- /**
- * Get all of the requests in the transfer
- *
- * @return array
- */
- public function getAllRequests()
- {
- return array_merge($this->successfulRequests, $this->failedRequests);
- }
-
- /**
- * Add to the array of successful requests
- *
- * @param RequestInterface $request Successful request
- *
- * @return self
- */
- public function addSuccessfulRequest(RequestInterface $request)
- {
- $this->successfulRequests[] = $request;
-
- return $this;
- }
-
- /**
- * Add to the array of failed requests
- *
- * @param RequestInterface $request Failed request
- *
- * @return self
- */
- public function addFailedRequest(RequestInterface $request)
- {
- $this->failedRequests[] = $request;
-
- return $this;
- }
-
- /**
- * Add to the array of failed requests and associate with exceptions
- *
- * @param RequestInterface $request Failed request
- * @param \Exception $exception Exception to add and associate with
- *
- * @return self
- */
- public function addFailedRequestWithException(RequestInterface $request, \Exception $exception)
- {
- $this->add($exception)
- ->addFailedRequest($request)
- ->exceptionForRequest[spl_object_hash($request)] = $exception;
-
- return $this;
- }
-
- /**
- * Get the Exception that caused the given $request to fail
- *
- * @param RequestInterface $request Failed command
- *
- * @return \Exception|null
- */
- public function getExceptionForFailedRequest(RequestInterface $request)
- {
- $oid = spl_object_hash($request);
-
- return isset($this->exceptionForRequest[$oid]) ? $this->exceptionForRequest[$oid] : null;
- }
-
- /**
- * Set all of the successful requests
- *
- * @param array Array of requests
- *
- * @return self
- */
- public function setSuccessfulRequests(array $requests)
- {
- $this->successfulRequests = $requests;
-
- return $this;
- }
-
- /**
- * Set all of the failed requests
- *
- * @param array Array of requests
- *
- * @return self
- */
- public function setFailedRequests(array $requests)
- {
- $this->failedRequests = $requests;
-
- return $this;
- }
-
- /**
- * Get an array of successful requests sent in the multi transfer
- *
- * @return array
- */
- public function getSuccessfulRequests()
- {
- return $this->successfulRequests;
- }
-
- /**
- * Get an array of failed requests sent in the multi transfer
- *
- * @return array
- */
- public function getFailedRequests()
- {
- return $this->failedRequests;
- }
-
- /**
- * Check if the exception object contains a request
- *
- * @param RequestInterface $request Request to check
- *
- * @return bool
- */
- public function containsRequest(RequestInterface $request)
- {
- return in_array($request, $this->failedRequests, true) || in_array($request, $this->successfulRequests, true);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/RequestException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/RequestException.php
deleted file mode 100644
index 274df2c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/RequestException.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * Http request exception
- */
-class RequestException extends RuntimeException implements HttpException
-{
- /** @var RequestInterface */
- protected $request;
-
- /**
- * Set the request that caused the exception
- *
- * @param RequestInterface $request Request to set
- *
- * @return RequestException
- */
- public function setRequest(RequestInterface $request)
- {
- $this->request = $request;
-
- return $this;
- }
-
- /**
- * Get the request that caused the exception
- *
- * @return RequestInterface
- */
- public function getRequest()
- {
- return $this->request;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ServerErrorResponseException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ServerErrorResponseException.php
deleted file mode 100644
index f0f7cfe..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/ServerErrorResponseException.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-/**
- * Exception when a server error is encountered (5xx codes)
- */
-class ServerErrorResponseException extends BadResponseException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/TooManyRedirectsException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/TooManyRedirectsException.php
deleted file mode 100644
index 2aa43d1..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Exception/TooManyRedirectsException.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Exception;
-
-class TooManyRedirectsException extends BadResponseException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/IoEmittingEntityBody.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/IoEmittingEntityBody.php
deleted file mode 100644
index 4cc17a8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/IoEmittingEntityBody.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\HasDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * EntityBody decorator that emits events for read and write methods
- */
-class IoEmittingEntityBody extends AbstractEntityBodyDecorator implements HasDispatcherInterface
-{
- /** @var EventDispatcherInterface */
- protected $eventDispatcher;
-
- public static function getAllEvents()
- {
- return array('body.read', 'body.write');
- }
-
- /**
- * {@inheritdoc}
- * @codeCoverageIgnore
- */
- public function setEventDispatcher(EventDispatcherInterface $eventDispatcher)
- {
- $this->eventDispatcher = $eventDispatcher;
-
- return $this;
- }
-
- public function getEventDispatcher()
- {
- if (!$this->eventDispatcher) {
- $this->eventDispatcher = new EventDispatcher();
- }
-
- return $this->eventDispatcher;
- }
-
- public function dispatch($eventName, array $context = array())
- {
- return $this->getEventDispatcher()->dispatch($eventName, new Event($context));
- }
-
- /**
- * {@inheritdoc}
- * @codeCoverageIgnore
- */
- public function addSubscriber(EventSubscriberInterface $subscriber)
- {
- $this->getEventDispatcher()->addSubscriber($subscriber);
-
- return $this;
- }
-
- public function read($length)
- {
- $event = array(
- 'body' => $this,
- 'length' => $length,
- 'read' => $this->body->read($length)
- );
- $this->dispatch('body.read', $event);
-
- return $event['read'];
- }
-
- public function write($string)
- {
- $event = array(
- 'body' => $this,
- 'write' => $string,
- 'result' => $this->body->write($string)
- );
- $this->dispatch('body.write', $event);
-
- return $event['result'];
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/AbstractMessage.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/AbstractMessage.php
deleted file mode 100644
index 0d066ff..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/AbstractMessage.php
+++ /dev/null
@@ -1,220 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Version;
-use Guzzle\Common\Collection;
-use Guzzle\Http\Message\Header\HeaderCollection;
-use Guzzle\Http\Message\Header\HeaderFactory;
-use Guzzle\Http\Message\Header\HeaderFactoryInterface;
-use Guzzle\Http\Message\Header\HeaderInterface;
-
-/**
- * Abstract HTTP request/response message
- */
-abstract class AbstractMessage implements MessageInterface
-{
- /** @var array HTTP header collection */
- protected $headers;
-
- /** @var HeaderFactoryInterface $headerFactory */
- protected $headerFactory;
-
- /** @var Collection Custom message parameters that are extendable by plugins */
- protected $params;
-
- /** @var string Message protocol */
- protected $protocol = 'HTTP';
-
- /** @var string HTTP protocol version of the message */
- protected $protocolVersion = '1.1';
-
- public function __construct()
- {
- $this->params = new Collection();
- $this->headerFactory = new HeaderFactory();
- $this->headers = new HeaderCollection();
- }
-
- /**
- * Set the header factory to use to create headers
- *
- * @param HeaderFactoryInterface $factory
- *
- * @return self
- */
- public function setHeaderFactory(HeaderFactoryInterface $factory)
- {
- $this->headerFactory = $factory;
-
- return $this;
- }
-
- public function getParams()
- {
- return $this->params;
- }
-
- public function addHeader($header, $value)
- {
- if (isset($this->headers[$header])) {
- $this->headers[$header]->add($value);
- } elseif ($value instanceof HeaderInterface) {
- $this->headers[$header] = $value;
- } else {
- $this->headers[$header] = $this->headerFactory->createHeader($header, $value);
- }
-
- return $this;
- }
-
- public function addHeaders(array $headers)
- {
- foreach ($headers as $key => $value) {
- $this->addHeader($key, $value);
- }
-
- return $this;
- }
-
- public function getHeader($header)
- {
- return $this->headers[$header];
- }
-
- public function getHeaders()
- {
- return $this->headers;
- }
-
- public function getHeaderLines()
- {
- $headers = array();
- foreach ($this->headers as $value) {
- $headers[] = $value->getName() . ': ' . $value;
- }
-
- return $headers;
- }
-
- public function setHeader($header, $value)
- {
- unset($this->headers[$header]);
- $this->addHeader($header, $value);
-
- return $this;
- }
-
- public function setHeaders(array $headers)
- {
- $this->headers->clear();
- foreach ($headers as $key => $value) {
- $this->addHeader($key, $value);
- }
-
- return $this;
- }
-
- public function hasHeader($header)
- {
- return isset($this->headers[$header]);
- }
-
- public function removeHeader($header)
- {
- unset($this->headers[$header]);
-
- return $this;
- }
-
- /**
- * @deprecated Use $message->getHeader()->parseParams()
- * @codeCoverageIgnore
- */
- public function getTokenizedHeader($header, $token = ';')
- {
- Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader()->parseParams()');
- if ($this->hasHeader($header)) {
- $data = new Collection();
- foreach ($this->getHeader($header)->parseParams() as $values) {
- foreach ($values as $key => $value) {
- if ($value === '') {
- $data->set($data->count(), $key);
- } else {
- $data->add($key, $value);
- }
- }
- }
- return $data;
- }
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function setTokenizedHeader($header, $data, $token = ';')
- {
- Version::warn(__METHOD__ . ' is deprecated.');
- return $this;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function getCacheControlDirective($directive)
- {
- Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->getDirective()');
- if (!($header = $this->getHeader('Cache-Control'))) {
- return null;
- }
-
- return $header->getDirective($directive);
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function hasCacheControlDirective($directive)
- {
- Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->hasDirective()');
- if ($header = $this->getHeader('Cache-Control')) {
- return $header->hasDirective($directive);
- } else {
- return false;
- }
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function addCacheControlDirective($directive, $value = true)
- {
- Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->addDirective()');
- if (!($header = $this->getHeader('Cache-Control'))) {
- $this->addHeader('Cache-Control', '');
- $header = $this->getHeader('Cache-Control');
- }
-
- $header->addDirective($directive, $value);
-
- return $this;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function removeCacheControlDirective($directive)
- {
- Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->removeDirective()');
- if ($header = $this->getHeader('Cache-Control')) {
- $header->removeDirective($directive);
- }
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequest.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequest.php
deleted file mode 100644
index 212850a..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequest.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Http\QueryString;
-use Guzzle\Http\RedirectPlugin;
-use Guzzle\Http\Exception\RequestException;
-
-/**
- * HTTP request that sends an entity-body in the request message (POST, PUT, PATCH, DELETE)
- */
-class EntityEnclosingRequest extends Request implements EntityEnclosingRequestInterface
-{
- /** @var int When the size of the body is greater than 1MB, then send Expect: 100-Continue */
- protected $expectCutoff = 1048576;
-
- /** @var EntityBodyInterface $body Body of the request */
- protected $body;
-
- /** @var QueryString POST fields to use in the EntityBody */
- protected $postFields;
-
- /** @var array POST files to send with the request */
- protected $postFiles = array();
-
- public function __construct($method, $url, $headers = array())
- {
- $this->postFields = new QueryString();
- parent::__construct($method, $url, $headers);
- }
-
- /**
- * @return string
- */
- public function __toString()
- {
- // Only attempt to include the POST data if it's only fields
- if (count($this->postFields) && empty($this->postFiles)) {
- return parent::__toString() . (string) $this->postFields;
- }
-
- return parent::__toString() . $this->body;
- }
-
- public function setState($state, array $context = array())
- {
- parent::setState($state, $context);
- if ($state == self::STATE_TRANSFER && !$this->body && !count($this->postFields) && !count($this->postFiles)) {
- $this->setHeader('Content-Length', 0)->removeHeader('Transfer-Encoding');
- }
-
- return $this->state;
- }
-
- public function setBody($body, $contentType = null)
- {
- $this->body = EntityBody::factory($body);
-
- // Auto detect the Content-Type from the path of the request if possible
- if ($contentType === null && !$this->hasHeader('Content-Type')) {
- $contentType = $this->body->getContentType();
- }
-
- if ($contentType) {
- $this->setHeader('Content-Type', $contentType);
- }
-
- // Always add the Expect 100-Continue header if the body cannot be rewound. This helps with redirects.
- if (!$this->body->isSeekable() && $this->expectCutoff !== false) {
- $this->setHeader('Expect', '100-Continue');
- }
-
- // Set the Content-Length header if it can be determined
- $size = $this->body->getContentLength();
- if ($size !== null && $size !== false) {
- $this->setHeader('Content-Length', $size);
- if ($size > $this->expectCutoff) {
- $this->setHeader('Expect', '100-Continue');
- }
- } elseif (!$this->hasHeader('Content-Length')) {
- if ('1.1' == $this->protocolVersion) {
- $this->setHeader('Transfer-Encoding', 'chunked');
- } else {
- throw new RequestException(
- 'Cannot determine Content-Length and cannot use chunked Transfer-Encoding when using HTTP/1.0'
- );
- }
- }
-
- return $this;
- }
-
- public function getBody()
- {
- return $this->body;
- }
-
- /**
- * Set the size that the entity body of the request must exceed before adding the Expect: 100-Continue header.
- *
- * @param int|bool $size Cutoff in bytes. Set to false to never send the expect header (even with non-seekable data)
- *
- * @return self
- */
- public function setExpectHeaderCutoff($size)
- {
- $this->expectCutoff = $size;
- if ($size === false || !$this->body) {
- $this->removeHeader('Expect');
- } elseif ($this->body && $this->body->getSize() && $this->body->getSize() > $size) {
- $this->setHeader('Expect', '100-Continue');
- }
-
- return $this;
- }
-
- public function configureRedirects($strict = false, $maxRedirects = 5)
- {
- $this->getParams()->set(RedirectPlugin::STRICT_REDIRECTS, $strict);
- if ($maxRedirects == 0) {
- $this->getParams()->set(RedirectPlugin::DISABLE, true);
- } else {
- $this->getParams()->set(RedirectPlugin::MAX_REDIRECTS, $maxRedirects);
- }
-
- return $this;
- }
-
- public function getPostField($field)
- {
- return $this->postFields->get($field);
- }
-
- public function getPostFields()
- {
- return $this->postFields;
- }
-
- public function setPostField($key, $value)
- {
- $this->postFields->set($key, $value);
- $this->processPostFields();
-
- return $this;
- }
-
- public function addPostFields($fields)
- {
- $this->postFields->merge($fields);
- $this->processPostFields();
-
- return $this;
- }
-
- public function removePostField($field)
- {
- $this->postFields->remove($field);
- $this->processPostFields();
-
- return $this;
- }
-
- public function getPostFiles()
- {
- return $this->postFiles;
- }
-
- public function getPostFile($fieldName)
- {
- return isset($this->postFiles[$fieldName]) ? $this->postFiles[$fieldName] : null;
- }
-
- public function removePostFile($fieldName)
- {
- unset($this->postFiles[$fieldName]);
- $this->processPostFields();
-
- return $this;
- }
-
- public function addPostFile($field, $filename = null, $contentType = null, $postname = null)
- {
- $data = null;
-
- if ($field instanceof PostFileInterface) {
- $data = $field;
- } elseif (is_array($filename)) {
- // Allow multiple values to be set in a single key
- foreach ($filename as $file) {
- $this->addPostFile($field, $file, $contentType);
- }
- return $this;
- } elseif (!is_string($filename)) {
- throw new RequestException('The path to a file must be a string');
- } elseif (!empty($filename)) {
- // Adding an empty file will cause cURL to error out
- $data = new PostFile($field, $filename, $contentType, $postname);
- }
-
- if ($data) {
- if (!isset($this->postFiles[$data->getFieldName()])) {
- $this->postFiles[$data->getFieldName()] = array($data);
- } else {
- $this->postFiles[$data->getFieldName()][] = $data;
- }
- $this->processPostFields();
- }
-
- return $this;
- }
-
- public function addPostFiles(array $files)
- {
- foreach ($files as $key => $file) {
- if ($file instanceof PostFileInterface) {
- $this->addPostFile($file, null, null, false);
- } elseif (is_string($file)) {
- // Convert non-associative array keys into 'file'
- if (is_numeric($key)) {
- $key = 'file';
- }
- $this->addPostFile($key, $file, null, false);
- } else {
- throw new RequestException('File must be a string or instance of PostFileInterface');
- }
- }
-
- return $this;
- }
-
- /**
- * Determine what type of request should be sent based on post fields
- */
- protected function processPostFields()
- {
- if (!$this->postFiles) {
- $this->removeHeader('Expect')->setHeader('Content-Type', self::URL_ENCODED);
- } else {
- $this->setHeader('Content-Type', self::MULTIPART);
- if ($this->expectCutoff !== false) {
- $this->setHeader('Expect', '100-Continue');
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequestInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequestInterface.php
deleted file mode 100644
index 49ad459..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequestInterface.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Http\Exception\RequestException;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Http\QueryString;
-
-/**
- * HTTP request that sends an entity-body in the request message (POST, PUT)
- */
-interface EntityEnclosingRequestInterface extends RequestInterface
-{
- const URL_ENCODED = 'application/x-www-form-urlencoded; charset=utf-8';
- const MULTIPART = 'multipart/form-data';
-
- /**
- * Set the body of the request
- *
- * @param string|resource|EntityBodyInterface $body Body to use in the entity body of the request
- * @param string $contentType Content-Type to set. Leave null to use an existing
- * Content-Type or to guess the Content-Type
- * @return self
- * @throws RequestException if the protocol is < 1.1 and Content-Length can not be determined
- */
- public function setBody($body, $contentType = null);
-
- /**
- * Get the body of the request if set
- *
- * @return EntityBodyInterface|null
- */
- public function getBody();
-
- /**
- * Get a POST field from the request
- *
- * @param string $field Field to retrieve
- *
- * @return mixed|null
- */
- public function getPostField($field);
-
- /**
- * Get the post fields that will be used in the request
- *
- * @return QueryString
- */
- public function getPostFields();
-
- /**
- * Set a POST field value
- *
- * @param string $key Key to set
- * @param string $value Value to set
- *
- * @return self
- */
- public function setPostField($key, $value);
-
- /**
- * Add POST fields to use in the request
- *
- * @param QueryString|array $fields POST fields
- *
- * @return self
- */
- public function addPostFields($fields);
-
- /**
- * Remove a POST field or file by name
- *
- * @param string $field Name of the POST field or file to remove
- *
- * @return self
- */
- public function removePostField($field);
-
- /**
- * Returns an associative array of POST field names to PostFileInterface objects
- *
- * @return array
- */
- public function getPostFiles();
-
- /**
- * Get a POST file from the request
- *
- * @param string $fieldName POST fields to retrieve
- *
- * @return array|null Returns an array wrapping an array of PostFileInterface objects
- */
- public function getPostFile($fieldName);
-
- /**
- * Remove a POST file from the request
- *
- * @param string $fieldName POST file field name to remove
- *
- * @return self
- */
- public function removePostFile($fieldName);
-
- /**
- * Add a POST file to the upload
- *
- * @param string $field POST field to use (e.g. file). Used to reference content from the server.
- * @param string $filename Full path to the file. Do not include the @ symbol.
- * @param string $contentType Optional Content-Type to add to the Content-Disposition.
- * Default behavior is to guess. Set to false to not specify.
- * @param string $postname The name of the file, when posted. (e.g. rename the file)
- * @return self
- */
- public function addPostFile($field, $filename = null, $contentType = null, $postname = null);
-
- /**
- * Add POST files to use in the upload
- *
- * @param array $files An array of POST fields => filenames where filename can be a string or PostFileInterface
- *
- * @return self
- */
- public function addPostFiles(array $files);
-
- /**
- * Configure how redirects are handled for the request
- *
- * @param bool $strict Set to true to follow strict RFC compliance when redirecting POST requests. Most
- * browsers with follow a 301-302 redirect for a POST request with a GET request. This is
- * the default behavior of Guzzle. Enable strict redirects to redirect these responses
- * with a POST rather than a GET request.
- * @param int $maxRedirects Specify the maximum number of allowed redirects. Set to 0 to disable redirects.
- *
- * @return self
- */
- public function configureRedirects($strict = false, $maxRedirects = 5);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header.php
deleted file mode 100644
index 50597b2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Version;
-use Guzzle\Http\Message\Header\HeaderInterface;
-
-/**
- * Represents a header and all of the values stored by that header
- */
-class Header implements HeaderInterface
-{
- protected $values = array();
- protected $header;
- protected $glue;
-
- /**
- * @param string $header Name of the header
- * @param array|string $values Values of the header as an array or a scalar
- * @param string $glue Glue used to combine multiple values into a string
- */
- public function __construct($header, $values = array(), $glue = ',')
- {
- $this->header = trim($header);
- $this->glue = $glue;
-
- foreach ((array) $values as $value) {
- foreach ((array) $value as $v) {
- $this->values[] = $v;
- }
- }
- }
-
- public function __toString()
- {
- return implode($this->glue . ' ', $this->toArray());
- }
-
- public function add($value)
- {
- $this->values[] = $value;
-
- return $this;
- }
-
- public function getName()
- {
- return $this->header;
- }
-
- public function setName($name)
- {
- $this->header = $name;
-
- return $this;
- }
-
- public function setGlue($glue)
- {
- $this->glue = $glue;
-
- return $this;
- }
-
- public function getGlue()
- {
- return $this->glue;
- }
-
- /**
- * Normalize the header to be a single header with an array of values.
- *
- * If any values of the header contains the glue string value (e.g. ","), then the value will be exploded into
- * multiple entries in the header.
- *
- * @return self
- */
- public function normalize()
- {
- $values = $this->toArray();
-
- for ($i = 0, $total = count($values); $i < $total; $i++) {
- if (strpos($values[$i], $this->glue) !== false) {
- // Explode on glue when the glue is not inside of a comma
- foreach (preg_split('/' . preg_quote($this->glue) . '(?=([^"]*"[^"]*")*[^"]*$)/', $values[$i]) as $v) {
- $values[] = trim($v);
- }
- unset($values[$i]);
- }
- }
-
- $this->values = array_values($values);
-
- return $this;
- }
-
- public function hasValue($searchValue)
- {
- return in_array($searchValue, $this->toArray());
- }
-
- public function removeValue($searchValue)
- {
- $this->values = array_values(array_filter($this->values, function ($value) use ($searchValue) {
- return $value != $searchValue;
- }));
-
- return $this;
- }
-
- public function toArray()
- {
- return $this->values;
- }
-
- public function count()
- {
- return count($this->toArray());
- }
-
- public function getIterator()
- {
- return new \ArrayIterator($this->toArray());
- }
-
- public function parseParams()
- {
- $params = $matches = array();
- $callback = array($this, 'trimHeader');
-
- // Normalize the header into a single array and iterate over all values
- foreach ($this->normalize()->toArray() as $val) {
- $part = array();
- foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
- if (!preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
- continue;
- }
- $pieces = array_map($callback, $matches[0]);
- $part[$pieces[0]] = isset($pieces[1]) ? $pieces[1] : '';
- }
- if ($part) {
- $params[] = $part;
- }
- }
-
- return $params;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function hasExactHeader($header)
- {
- Version::warn(__METHOD__ . ' is deprecated');
- return $this->header == $header;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function raw()
- {
- Version::warn(__METHOD__ . ' is deprecated. Use toArray()');
- return $this->toArray();
- }
-
- /**
- * Trim a header by removing excess spaces and wrapping quotes
- *
- * @param $str
- *
- * @return string
- */
- protected function trimHeader($str)
- {
- static $trimmed = "\"' \n\t";
-
- return trim($str, $trimmed);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/CacheControl.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/CacheControl.php
deleted file mode 100644
index 77789e5..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/CacheControl.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message\Header;
-
-use Guzzle\Http\Message\Header;
-
-/**
- * Provides helpful functionality for Cache-Control headers
- */
-class CacheControl extends Header
-{
- /** @var array */
- protected $directives;
-
- public function add($value)
- {
- parent::add($value);
- $this->directives = null;
- }
-
- public function removeValue($searchValue)
- {
- parent::removeValue($searchValue);
- $this->directives = null;
- }
-
- /**
- * Check if a specific cache control directive exists
- *
- * @param string $param Directive to retrieve
- *
- * @return bool
- */
- public function hasDirective($param)
- {
- $directives = $this->getDirectives();
-
- return isset($directives[$param]);
- }
-
- /**
- * Get a specific cache control directive
- *
- * @param string $param Directive to retrieve
- *
- * @return string|bool|null
- */
- public function getDirective($param)
- {
- $directives = $this->getDirectives();
-
- return isset($directives[$param]) ? $directives[$param] : null;
- }
-
- /**
- * Add a cache control directive
- *
- * @param string $param Directive to add
- * @param string $value Value to set
- *
- * @return self
- */
- public function addDirective($param, $value)
- {
- $directives = $this->getDirectives();
- $directives[$param] = $value;
- $this->updateFromDirectives($directives);
-
- return $this;
- }
-
- /**
- * Remove a cache control directive by name
- *
- * @param string $param Directive to remove
- *
- * @return self
- */
- public function removeDirective($param)
- {
- $directives = $this->getDirectives();
- unset($directives[$param]);
- $this->updateFromDirectives($directives);
-
- return $this;
- }
-
- /**
- * Get an associative array of cache control directives
- *
- * @return array
- */
- public function getDirectives()
- {
- if ($this->directives === null) {
- $this->directives = array();
- foreach ($this->parseParams() as $collection) {
- foreach ($collection as $key => $value) {
- $this->directives[$key] = $value === '' ? true : $value;
- }
- }
- }
-
- return $this->directives;
- }
-
- /**
- * Updates the header value based on the parsed directives
- *
- * @param array $directives Array of cache control directives
- */
- protected function updateFromDirectives(array $directives)
- {
- $this->directives = $directives;
- $this->values = array();
-
- foreach ($directives as $key => $value) {
- $this->values[] = $value === true ? $key : "{$key}={$value}";
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderCollection.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderCollection.php
deleted file mode 100644
index 8c7f6ae..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderCollection.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message\Header;
-
-use Guzzle\Common\ToArrayInterface;
-
-/**
- * Provides a case-insensitive collection of headers
- */
-class HeaderCollection implements \IteratorAggregate, \Countable, \ArrayAccess, ToArrayInterface
-{
- /** @var array */
- protected $headers;
-
- public function __construct($headers = array())
- {
- $this->headers = $headers;
- }
-
- public function __clone()
- {
- foreach ($this->headers as &$header) {
- $header = clone $header;
- }
- }
-
- /**
- * Clears the header collection
- */
- public function clear()
- {
- $this->headers = array();
- }
-
- /**
- * Set a header on the collection
- *
- * @param HeaderInterface $header Header to add
- *
- * @return self
- */
- public function add(HeaderInterface $header)
- {
- $this->headers[strtolower($header->getName())] = $header;
-
- return $this;
- }
-
- /**
- * Get an array of header objects
- *
- * @return array
- */
- public function getAll()
- {
- return $this->headers;
- }
-
- /**
- * Alias of offsetGet
- */
- public function get($key)
- {
- return $this->offsetGet($key);
- }
-
- public function count()
- {
- return count($this->headers);
- }
-
- public function offsetExists($offset)
- {
- return isset($this->headers[strtolower($offset)]);
- }
-
- public function offsetGet($offset)
- {
- $l = strtolower($offset);
-
- return isset($this->headers[$l]) ? $this->headers[$l] : null;
- }
-
- public function offsetSet($offset, $value)
- {
- $this->add($value);
- }
-
- public function offsetUnset($offset)
- {
- unset($this->headers[strtolower($offset)]);
- }
-
- public function getIterator()
- {
- return new \ArrayIterator($this->headers);
- }
-
- public function toArray()
- {
- $result = array();
- foreach ($this->headers as $header) {
- $result[$header->getName()] = $header->toArray();
- }
-
- return $result;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactory.php
deleted file mode 100644
index 0273be5..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactory.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message\Header;
-
-use Guzzle\Http\Message\Header;
-
-/**
- * Default header factory implementation
- */
-class HeaderFactory implements HeaderFactoryInterface
-{
- /** @var array */
- protected $mapping = array(
- 'cache-control' => 'Guzzle\Http\Message\Header\CacheControl',
- 'link' => 'Guzzle\Http\Message\Header\Link',
- );
-
- public function createHeader($header, $value = null)
- {
- $lowercase = strtolower($header);
-
- return isset($this->mapping[$lowercase])
- ? new $this->mapping[$lowercase]($header, $value)
- : new Header($header, $value);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactoryInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactoryInterface.php
deleted file mode 100644
index 9457cf6..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactoryInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message\Header;
-
-/**
- * Interface for creating headers
- */
-interface HeaderFactoryInterface
-{
- /**
- * Create a header from a header name and a single value
- *
- * @param string $header Name of the header to create
- * @param string $value Value to set on the header
- *
- * @return HeaderInterface
- */
- public function createHeader($header, $value = null);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderInterface.php
deleted file mode 100644
index adcc78e..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderInterface.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message\Header;
-
-use Guzzle\Common\ToArrayInterface;
-
-interface HeaderInterface extends ToArrayInterface, \Countable, \IteratorAggregate
-{
- /**
- * Convert the header to a string
- *
- * @return string
- */
- public function __toString();
-
- /**
- * Add a value to the list of header values
- *
- * @param string $value Value to add to the header
- *
- * @return self
- */
- public function add($value);
-
- /**
- * Get the name of the header
- *
- * @return string
- */
- public function getName();
-
- /**
- * Change the name of the header
- *
- * @param string $name Name to change to
- *
- * @return self
- */
- public function setName($name);
-
- /**
- * Change the glue used to implode the values
- *
- * @param string $glue Glue used to implode multiple values
- *
- * @return self
- */
- public function setGlue($glue);
-
- /**
- * Get the glue used to implode multiple values into a string
- *
- * @return string
- */
- public function getGlue();
-
- /**
- * Check if the collection of headers has a particular value
- *
- * @param string $searchValue Value to search for
- *
- * @return bool
- */
- public function hasValue($searchValue);
-
- /**
- * Remove a specific value from the header
- *
- * @param string $searchValue Value to remove
- *
- * @return self
- */
- public function removeValue($searchValue);
-
- /**
- * Parse a header containing ";" separated data into an array of associative arrays representing the header
- * key value pair data of the header. When a parameter does not contain a value, but just contains a key, this
- * function will inject a key with a '' string value.
- *
- * @return array
- */
- public function parseParams();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/Link.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/Link.php
deleted file mode 100644
index a9fb961..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Header/Link.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message\Header;
-
-use Guzzle\Http\Message\Header;
-
-/**
- * Provides helpful functionality for link headers
- */
-class Link extends Header
-{
- /**
- * Add a link to the header
- *
- * @param string $url Link URL
- * @param string $rel Link rel
- * @param array $params Other link parameters
- *
- * @return self
- */
- public function addLink($url, $rel, array $params = array())
- {
- $values = array("<{$url}>", "rel=\"{$rel}\"");
-
- foreach ($params as $k => $v) {
- $values[] = "{$k}=\"{$v}\"";
- }
-
- return $this->add(implode('; ', $values));
- }
-
- /**
- * Check if a specific link exists for a given rel attribute
- *
- * @param string $rel rel value
- *
- * @return bool
- */
- public function hasLink($rel)
- {
- return $this->getLink($rel) !== null;
- }
-
- /**
- * Get a specific link for a given rel attribute
- *
- * @param string $rel Rel value
- *
- * @return array|null
- */
- public function getLink($rel)
- {
- foreach ($this->getLinks() as $link) {
- if (isset($link['rel']) && $link['rel'] == $rel) {
- return $link;
- }
- }
-
- return null;
- }
-
- /**
- * Get an associative array of links
- *
- * For example:
- * Link: <http:/.../front.jpeg>; rel=front; type="image/jpeg", <http://.../back.jpeg>; rel=back; type="image/jpeg"
- *
- * <code>
- * var_export($response->getLinks());
- * array(
- * array(
- * 'url' => 'http:/.../front.jpeg',
- * 'rel' => 'back',
- * 'type' => 'image/jpeg',
- * )
- * )
- * </code>
- *
- * @return array
- */
- public function getLinks()
- {
- $links = $this->parseParams();
-
- foreach ($links as &$link) {
- $key = key($link);
- unset($link[$key]);
- $link['url'] = trim($key, '<> ');
- }
-
- return $links;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/MessageInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/MessageInterface.php
deleted file mode 100644
index 62bcd43..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/MessageInterface.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-/**
- * Request and response message interface
- */
-interface MessageInterface
-{
- /**
- * Get application and plugin specific parameters set on the message.
- *
- * @return \Guzzle\Common\Collection
- */
- public function getParams();
-
- /**
- * Add a header to an existing collection of headers.
- *
- * @param string $header Header name to add
- * @param string $value Value of the header
- *
- * @return self
- */
- public function addHeader($header, $value);
-
- /**
- * Add and merge in an array of HTTP headers.
- *
- * @param array $headers Associative array of header data.
- *
- * @return self
- */
- public function addHeaders(array $headers);
-
- /**
- * Retrieve an HTTP header by name. Performs a case-insensitive search of all headers.
- *
- * @param string $header Header to retrieve.
- *
- * @return Header|null
- */
- public function getHeader($header);
-
- /**
- * Get all headers as a collection
- *
- * @return \Guzzle\Http\Message\Header\HeaderCollection
- */
- public function getHeaders();
-
- /**
- * Check if the specified header is present.
- *
- * @param string $header The header to check.
- *
- * @return bool
- */
- public function hasHeader($header);
-
- /**
- * Remove a specific HTTP header.
- *
- * @param string $header HTTP header to remove.
- *
- * @return self
- */
- public function removeHeader($header);
-
- /**
- * Set an HTTP header and overwrite any existing value for the header
- *
- * @param string $header Name of the header to set.
- * @param mixed $value Value to set.
- *
- * @return self
- */
- public function setHeader($header, $value);
-
- /**
- * Overwrite all HTTP headers with the supplied array of headers
- *
- * @param array $headers Associative array of header data.
- *
- * @return self
- */
- public function setHeaders(array $headers);
-
- /**
- * Get an array of message header lines (e.g. ["Host: example.com", ...])
- *
- * @return array
- */
- public function getHeaderLines();
-
- /**
- * Get the raw message headers as a string
- *
- * @return string
- */
- public function getRawHeaders();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFile.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFile.php
deleted file mode 100644
index 141e66d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFile.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Version;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Mimetypes;
-
-/**
- * POST file upload
- */
-class PostFile implements PostFileInterface
-{
- protected $fieldName;
- protected $contentType;
- protected $filename;
- protected $postname;
-
- /**
- * @param string $fieldName Name of the field
- * @param string $filename Local path to the file
- * @param string $postname Remote post file name
- * @param string $contentType Content-Type of the upload
- */
- public function __construct($fieldName, $filename, $contentType = null, $postname = null)
- {
- $this->fieldName = $fieldName;
- $this->setFilename($filename);
- $this->postname = $postname ? $postname : basename($filename);
- $this->contentType = $contentType ?: $this->guessContentType();
- }
-
- public function setFieldName($name)
- {
- $this->fieldName = $name;
-
- return $this;
- }
-
- public function getFieldName()
- {
- return $this->fieldName;
- }
-
- public function setFilename($filename)
- {
- // Remove leading @ symbol
- if (strpos($filename, '@') === 0) {
- $filename = substr($filename, 1);
- }
-
- if (!is_readable($filename)) {
- throw new InvalidArgumentException("Unable to open {$filename} for reading");
- }
-
- $this->filename = $filename;
-
- return $this;
- }
-
- public function setPostname($postname)
- {
- $this->postname = $postname;
-
- return $this;
- }
-
- public function getFilename()
- {
- return $this->filename;
- }
-
- public function getPostname()
- {
- return $this->postname;
- }
-
- public function setContentType($type)
- {
- $this->contentType = $type;
-
- return $this;
- }
-
- public function getContentType()
- {
- return $this->contentType;
- }
-
- public function getCurlValue()
- {
- // PHP 5.5 introduced a CurlFile object that deprecates the old @filename syntax
- // See: https://wiki.php.net/rfc/curl-file-upload
- if (function_exists('curl_file_create')) {
- return curl_file_create($this->filename, $this->contentType, $this->postname);
- }
-
- // Use the old style if using an older version of PHP
- $value = "@{$this->filename};filename=" . $this->postname;
- if ($this->contentType) {
- $value .= ';type=' . $this->contentType;
- }
-
- return $value;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function getCurlString()
- {
- Version::warn(__METHOD__ . ' is deprecated. Use getCurlValue()');
- return $this->getCurlValue();
- }
-
- /**
- * Determine the Content-Type of the file
- */
- protected function guessContentType()
- {
- return Mimetypes::getInstance()->fromFilename($this->filename) ?: 'application/octet-stream';
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFileInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFileInterface.php
deleted file mode 100644
index 7f0779d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/PostFileInterface.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * POST file upload
- */
-interface PostFileInterface
-{
- /**
- * Set the name of the field
- *
- * @param string $name Field name
- *
- * @return self
- */
- public function setFieldName($name);
-
- /**
- * Get the name of the field
- *
- * @return string
- */
- public function getFieldName();
-
- /**
- * Set the path to the file
- *
- * @param string $path Full path to the file
- *
- * @return self
- * @throws InvalidArgumentException if the file cannot be read
- */
- public function setFilename($path);
-
- /**
- * Set the post name of the file
- *
- * @param string $name The new name of the file
- *
- * @return self
- */
- public function setPostname($name);
-
- /**
- * Get the full path to the file
- *
- * @return string
- */
- public function getFilename();
-
- /**
- * Get the post name of the file
- *
- * @return string
- */
- public function getPostname();
-
- /**
- * Set the Content-Type of the file
- *
- * @param string $type Content type
- *
- * @return self
- */
- public function setContentType($type);
-
- /**
- * Get the Content-Type of the file
- *
- * @return string
- */
- public function getContentType();
-
- /**
- * Get a cURL ready string or CurlFile object for the upload
- *
- * @return string
- */
- public function getCurlValue();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Request.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Request.php
deleted file mode 100644
index f218cd5..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Request.php
+++ /dev/null
@@ -1,638 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Version;
-use Guzzle\Common\Event;
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Exception\RequestException;
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Http\ClientInterface;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Http\Message\Header\HeaderInterface;
-use Guzzle\Http\Url;
-use Guzzle\Parser\ParserRegistry;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * HTTP request class to send requests
- */
-class Request extends AbstractMessage implements RequestInterface
-{
- /** @var EventDispatcherInterface */
- protected $eventDispatcher;
-
- /** @var Url HTTP Url */
- protected $url;
-
- /** @var string HTTP method (GET, PUT, POST, DELETE, HEAD, OPTIONS, TRACE) */
- protected $method;
-
- /** @var ClientInterface */
- protected $client;
-
- /** @var Response Response of the request */
- protected $response;
-
- /** @var EntityBodyInterface Response body */
- protected $responseBody;
-
- /** @var string State of the request object */
- protected $state;
-
- /** @var string Authentication username */
- protected $username;
-
- /** @var string Auth password */
- protected $password;
-
- /** @var Collection cURL specific transfer options */
- protected $curlOptions;
-
- /** @var bool */
- protected $isRedirect = false;
-
- public static function getAllEvents()
- {
- return array(
- // Called when receiving or uploading data through cURL
- 'curl.callback.read', 'curl.callback.write', 'curl.callback.progress',
- // Cloning a request
- 'request.clone',
- // About to send the request, sent request, completed transaction
- 'request.before_send', 'request.sent', 'request.complete',
- // A request received a successful response
- 'request.success',
- // A request received an unsuccessful response
- 'request.error',
- // An exception is being thrown because of an unsuccessful response
- 'request.exception',
- // Received response status line
- 'request.receive.status_line'
- );
- }
-
- /**
- * @param string $method HTTP method
- * @param string|Url $url HTTP URL to connect to. The URI scheme, host header, and URI are parsed from the
- * full URL. If query string parameters are present they will be parsed as well.
- * @param array|Collection $headers HTTP headers
- */
- public function __construct($method, $url, $headers = array())
- {
- parent::__construct();
- $this->method = strtoupper($method);
- $this->curlOptions = new Collection();
- $this->setUrl($url);
-
- if ($headers) {
- // Special handling for multi-value headers
- foreach ($headers as $key => $value) {
- // Deal with collisions with Host and Authorization
- if ($key == 'host' || $key == 'Host') {
- $this->setHeader($key, $value);
- } elseif ($value instanceof HeaderInterface) {
- $this->addHeader($key, $value);
- } else {
- foreach ((array) $value as $v) {
- $this->addHeader($key, $v);
- }
- }
- }
- }
-
- $this->setState(self::STATE_NEW);
- }
-
- public function __clone()
- {
- if ($this->eventDispatcher) {
- $this->eventDispatcher = clone $this->eventDispatcher;
- }
- $this->curlOptions = clone $this->curlOptions;
- $this->params = clone $this->params;
- $this->url = clone $this->url;
- $this->response = $this->responseBody = null;
- $this->headers = clone $this->headers;
-
- $this->setState(RequestInterface::STATE_NEW);
- $this->dispatch('request.clone', array('request' => $this));
- }
-
- /**
- * Get the HTTP request as a string
- *
- * @return string
- */
- public function __toString()
- {
- return $this->getRawHeaders() . "\r\n\r\n";
- }
-
- /**
- * Default method that will throw exceptions if an unsuccessful response is received.
- *
- * @param Event $event Received
- * @throws BadResponseException if the response is not successful
- */
- public static function onRequestError(Event $event)
- {
- $e = BadResponseException::factory($event['request'], $event['response']);
- $event['request']->setState(self::STATE_ERROR, array('exception' => $e) + $event->toArray());
- throw $e;
- }
-
- public function setClient(ClientInterface $client)
- {
- $this->client = $client;
-
- return $this;
- }
-
- public function getClient()
- {
- return $this->client;
- }
-
- public function getRawHeaders()
- {
- $protocolVersion = $this->protocolVersion ?: '1.1';
-
- return trim($this->method . ' ' . $this->getResource()) . ' '
- . strtoupper(str_replace('https', 'http', $this->url->getScheme()))
- . '/' . $protocolVersion . "\r\n" . implode("\r\n", $this->getHeaderLines());
- }
-
- public function setUrl($url)
- {
- if ($url instanceof Url) {
- $this->url = $url;
- } else {
- $this->url = Url::factory($url);
- }
-
- // Update the port and host header
- $this->setPort($this->url->getPort());
-
- if ($this->url->getUsername() || $this->url->getPassword()) {
- $this->setAuth($this->url->getUsername(), $this->url->getPassword());
- // Remove the auth info from the URL
- $this->url->setUsername(null);
- $this->url->setPassword(null);
- }
-
- return $this;
- }
-
- public function send()
- {
- if (!$this->client) {
- throw new RuntimeException('A client must be set on the request');
- }
-
- return $this->client->send($this);
- }
-
- public function getResponse()
- {
- return $this->response;
- }
-
- public function getQuery($asString = false)
- {
- return $asString
- ? (string) $this->url->getQuery()
- : $this->url->getQuery();
- }
-
- public function getMethod()
- {
- return $this->method;
- }
-
- public function getScheme()
- {
- return $this->url->getScheme();
- }
-
- public function setScheme($scheme)
- {
- $this->url->setScheme($scheme);
-
- return $this;
- }
-
- public function getHost()
- {
- return $this->url->getHost();
- }
-
- public function setHost($host)
- {
- $this->url->setHost($host);
- $this->setPort($this->url->getPort());
-
- return $this;
- }
-
- public function getProtocolVersion()
- {
- return $this->protocolVersion;
- }
-
- public function setProtocolVersion($protocol)
- {
- $this->protocolVersion = $protocol;
-
- return $this;
- }
-
- public function getPath()
- {
- return '/' . ltrim($this->url->getPath(), '/');
- }
-
- public function setPath($path)
- {
- $this->url->setPath($path);
-
- return $this;
- }
-
- public function getPort()
- {
- return $this->url->getPort();
- }
-
- public function setPort($port)
- {
- $this->url->setPort($port);
-
- // Include the port in the Host header if it is not the default port for the scheme of the URL
- $scheme = $this->url->getScheme();
- if ($port && (($scheme == 'http' && $port != 80) || ($scheme == 'https' && $port != 443))) {
- $this->headers['host'] = $this->headerFactory->createHeader('Host', $this->url->getHost() . ':' . $port);
- } else {
- $this->headers['host'] = $this->headerFactory->createHeader('Host', $this->url->getHost());
- }
-
- return $this;
- }
-
- public function getUsername()
- {
- return $this->username;
- }
-
- public function getPassword()
- {
- return $this->password;
- }
-
- public function setAuth($user, $password = '', $scheme = CURLAUTH_BASIC)
- {
- static $authMap = array(
- 'basic' => CURLAUTH_BASIC,
- 'digest' => CURLAUTH_DIGEST,
- 'ntlm' => CURLAUTH_NTLM,
- 'any' => CURLAUTH_ANY
- );
-
- // If we got false or null, disable authentication
- if (!$user) {
- $this->password = $this->username = null;
- $this->removeHeader('Authorization');
- $this->getCurlOptions()->remove(CURLOPT_HTTPAUTH);
- return $this;
- }
-
- if (!is_numeric($scheme)) {
- $scheme = strtolower($scheme);
- if (!isset($authMap[$scheme])) {
- throw new InvalidArgumentException($scheme . ' is not a valid authentication type');
- }
- $scheme = $authMap[$scheme];
- }
-
- $this->username = $user;
- $this->password = $password;
-
- // Bypass CURL when using basic auth to promote connection reuse
- if ($scheme == CURLAUTH_BASIC) {
- $this->getCurlOptions()->remove(CURLOPT_HTTPAUTH);
- $this->setHeader('Authorization', 'Basic ' . base64_encode($this->username . ':' . $this->password));
- } else {
- $this->getCurlOptions()
- ->set(CURLOPT_HTTPAUTH, $scheme)
- ->set(CURLOPT_USERPWD, $this->username . ':' . $this->password);
- }
-
- return $this;
- }
-
- public function getResource()
- {
- $resource = $this->getPath();
- if ($query = (string) $this->url->getQuery()) {
- $resource .= '?' . $query;
- }
-
- return $resource;
- }
-
- public function getUrl($asObject = false)
- {
- return $asObject ? clone $this->url : (string) $this->url;
- }
-
- public function getState()
- {
- return $this->state;
- }
-
- public function setState($state, array $context = array())
- {
- $oldState = $this->state;
- $this->state = $state;
-
- switch ($state) {
- case self::STATE_NEW:
- $this->response = null;
- break;
- case self::STATE_TRANSFER:
- if ($oldState !== $state) {
- // Fix Content-Length and Transfer-Encoding collisions
- if ($this->hasHeader('Transfer-Encoding') && $this->hasHeader('Content-Length')) {
- $this->removeHeader('Transfer-Encoding');
- }
- $this->dispatch('request.before_send', array('request' => $this));
- }
- break;
- case self::STATE_COMPLETE:
- if ($oldState !== $state) {
- $this->processResponse($context);
- $this->responseBody = null;
- }
- break;
- case self::STATE_ERROR:
- if (isset($context['exception'])) {
- $this->dispatch('request.exception', array(
- 'request' => $this,
- 'response' => isset($context['response']) ? $context['response'] : $this->response,
- 'exception' => isset($context['exception']) ? $context['exception'] : null
- ));
- }
- }
-
- return $this->state;
- }
-
- public function getCurlOptions()
- {
- return $this->curlOptions;
- }
-
- public function startResponse(Response $response)
- {
- $this->state = self::STATE_TRANSFER;
- $response->setEffectiveUrl((string) $this->getUrl());
- $this->response = $response;
-
- return $this;
- }
-
- public function setResponse(Response $response, $queued = false)
- {
- $response->setEffectiveUrl((string) $this->url);
-
- if ($queued) {
- $ed = $this->getEventDispatcher();
- $ed->addListener('request.before_send', $f = function ($e) use ($response, &$f, $ed) {
- $e['request']->setResponse($response);
- $ed->removeListener('request.before_send', $f);
- }, -9999);
- } else {
- $this->response = $response;
- // If a specific response body is specified, then use it instead of the response's body
- if ($this->responseBody && !$this->responseBody->getCustomData('default') && !$response->isRedirect()) {
- $this->getResponseBody()->write((string) $this->response->getBody());
- } else {
- $this->responseBody = $this->response->getBody();
- }
- $this->setState(self::STATE_COMPLETE);
- }
-
- return $this;
- }
-
- public function setResponseBody($body)
- {
- // Attempt to open a file for writing if a string was passed
- if (is_string($body)) {
- // @codeCoverageIgnoreStart
- if (!($body = fopen($body, 'w+'))) {
- throw new InvalidArgumentException('Could not open ' . $body . ' for writing');
- }
- // @codeCoverageIgnoreEnd
- }
-
- $this->responseBody = EntityBody::factory($body);
-
- return $this;
- }
-
- public function getResponseBody()
- {
- if ($this->responseBody === null) {
- $this->responseBody = EntityBody::factory()->setCustomData('default', true);
- }
-
- return $this->responseBody;
- }
-
- /**
- * Determine if the response body is repeatable (readable + seekable)
- *
- * @return bool
- * @deprecated Use getResponseBody()->isSeekable()
- * @codeCoverageIgnore
- */
- public function isResponseBodyRepeatable()
- {
- Version::warn(__METHOD__ . ' is deprecated. Use $request->getResponseBody()->isRepeatable()');
- return !$this->responseBody ? true : $this->responseBody->isRepeatable();
- }
-
- public function getCookies()
- {
- if ($cookie = $this->getHeader('Cookie')) {
- $data = ParserRegistry::getInstance()->getParser('cookie')->parseCookie($cookie);
- return $data['cookies'];
- }
-
- return array();
- }
-
- public function getCookie($name)
- {
- $cookies = $this->getCookies();
-
- return isset($cookies[$name]) ? $cookies[$name] : null;
- }
-
- public function addCookie($name, $value)
- {
- if (!$this->hasHeader('Cookie')) {
- $this->setHeader('Cookie', "{$name}={$value}");
- } else {
- $this->getHeader('Cookie')->add("{$name}={$value}");
- }
-
- // Always use semicolons to separate multiple cookie headers
- $this->getHeader('Cookie')->setGlue(';');
-
- return $this;
- }
-
- public function removeCookie($name)
- {
- if ($cookie = $this->getHeader('Cookie')) {
- foreach ($cookie as $cookieValue) {
- if (strpos($cookieValue, $name . '=') === 0) {
- $cookie->removeValue($cookieValue);
- }
- }
- }
-
- return $this;
- }
-
- public function setEventDispatcher(EventDispatcherInterface $eventDispatcher)
- {
- $this->eventDispatcher = $eventDispatcher;
- $this->eventDispatcher->addListener('request.error', array(__CLASS__, 'onRequestError'), -255);
-
- return $this;
- }
-
- public function getEventDispatcher()
- {
- if (!$this->eventDispatcher) {
- $this->setEventDispatcher(new EventDispatcher());
- }
-
- return $this->eventDispatcher;
- }
-
- public function dispatch($eventName, array $context = array())
- {
- $context['request'] = $this;
-
- return $this->getEventDispatcher()->dispatch($eventName, new Event($context));
- }
-
- public function addSubscriber(EventSubscriberInterface $subscriber)
- {
- $this->getEventDispatcher()->addSubscriber($subscriber);
-
- return $this;
- }
-
- /**
- * Get an array containing the request and response for event notifications
- *
- * @return array
- */
- protected function getEventArray()
- {
- return array(
- 'request' => $this,
- 'response' => $this->response
- );
- }
-
- /**
- * Process a received response
- *
- * @param array $context Contextual information
- * @throws RequestException|BadResponseException on unsuccessful responses
- */
- protected function processResponse(array $context = array())
- {
- if (!$this->response) {
- // If no response, then processResponse shouldn't have been called
- $e = new RequestException('Error completing request');
- $e->setRequest($this);
- throw $e;
- }
-
- $this->state = self::STATE_COMPLETE;
-
- // A request was sent, but we don't know if we'll send more or if the final response will be successful
- $this->dispatch('request.sent', $this->getEventArray() + $context);
-
- // Some response processors will remove the response or reset the state (example: ExponentialBackoffPlugin)
- if ($this->state == RequestInterface::STATE_COMPLETE) {
-
- // The request completed, so the HTTP transaction is complete
- $this->dispatch('request.complete', $this->getEventArray());
-
- // If the response is bad, allow listeners to modify it or throw exceptions. You can change the response by
- // modifying the Event object in your listeners or calling setResponse() on the request
- if ($this->response->isError()) {
- $event = new Event($this->getEventArray());
- $this->getEventDispatcher()->dispatch('request.error', $event);
- // Allow events of request.error to quietly change the response
- if ($event['response'] !== $this->response) {
- $this->response = $event['response'];
- }
- }
-
- // If a successful response was received, dispatch an event
- if ($this->response->isSuccessful()) {
- $this->dispatch('request.success', $this->getEventArray());
- }
- }
- }
-
- /**
- * @deprecated Use Guzzle\Plugin\Cache\DefaultCanCacheStrategy
- * @codeCoverageIgnore
- */
- public function canCache()
- {
- Version::warn(__METHOD__ . ' is deprecated. Use Guzzle\Plugin\Cache\DefaultCanCacheStrategy.');
- if (class_exists('Guzzle\Plugin\Cache\DefaultCanCacheStrategy')) {
- $canCache = new \Guzzle\Plugin\Cache\DefaultCanCacheStrategy();
- return $canCache->canCacheRequest($this);
- } else {
- return false;
- }
- }
-
- /**
- * @deprecated Use the history plugin (not emitting a warning as this is built-into the RedirectPlugin for now)
- * @codeCoverageIgnore
- */
- public function setIsRedirect($isRedirect)
- {
- $this->isRedirect = $isRedirect;
-
- return $this;
- }
-
- /**
- * @deprecated Use the history plugin
- * @codeCoverageIgnore
- */
- public function isRedirect()
- {
- Version::warn(__METHOD__ . ' is deprecated. Use the HistoryPlugin to track this.');
- return $this->isRedirect;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactory.php
deleted file mode 100644
index ba00a76..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactory.php
+++ /dev/null
@@ -1,359 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\RedirectPlugin;
-use Guzzle\Http\Url;
-use Guzzle\Parser\ParserRegistry;
-
-/**
- * Default HTTP request factory used to create the default {@see Request} and {@see EntityEnclosingRequest} objects.
- */
-class RequestFactory implements RequestFactoryInterface
-{
- /** @var RequestFactory Singleton instance of the default request factory */
- protected static $instance;
-
- /** @var array Hash of methods available to the class (provides fast isset() lookups) */
- protected $methods;
-
- /** @var string Class to instantiate for requests with no body */
- protected $requestClass = 'Guzzle\\Http\\Message\\Request';
-
- /** @var string Class to instantiate for requests with a body */
- protected $entityEnclosingRequestClass = 'Guzzle\\Http\\Message\\EntityEnclosingRequest';
-
- /**
- * Get a cached instance of the default request factory
- *
- * @return RequestFactory
- */
- public static function getInstance()
- {
- // @codeCoverageIgnoreStart
- if (!static::$instance) {
- static::$instance = new static();
- }
- // @codeCoverageIgnoreEnd
-
- return static::$instance;
- }
-
- public function __construct()
- {
- $this->methods = array_flip(get_class_methods(__CLASS__));
- }
-
- public function fromMessage($message)
- {
- $parsed = ParserRegistry::getInstance()->getParser('message')->parseRequest($message);
-
- if (!$parsed) {
- return false;
- }
-
- $request = $this->fromParts($parsed['method'], $parsed['request_url'],
- $parsed['headers'], $parsed['body'], $parsed['protocol'],
- $parsed['version']);
-
- // EntityEnclosingRequest adds an "Expect: 100-Continue" header when using a raw request body for PUT or POST
- // requests. This factory method should accurately reflect the message, so here we are removing the Expect
- // header if one was not supplied in the message.
- if (!isset($parsed['headers']['Expect']) && !isset($parsed['headers']['expect'])) {
- $request->removeHeader('Expect');
- }
-
- return $request;
- }
-
- public function fromParts(
- $method,
- array $urlParts,
- $headers = null,
- $body = null,
- $protocol = 'HTTP',
- $protocolVersion = '1.1'
- ) {
- return $this->create($method, Url::buildUrl($urlParts), $headers, $body)
- ->setProtocolVersion($protocolVersion);
- }
-
- public function create($method, $url, $headers = null, $body = null, array $options = array())
- {
- $method = strtoupper($method);
-
- if ($method == 'GET' || $method == 'HEAD' || $method == 'TRACE') {
- // Handle non-entity-enclosing request methods
- $request = new $this->requestClass($method, $url, $headers);
- if ($body) {
- // The body is where the response body will be stored
- $type = gettype($body);
- if ($type == 'string' || $type == 'resource' || $type == 'object') {
- $request->setResponseBody($body);
- }
- }
- } else {
- // Create an entity enclosing request by default
- $request = new $this->entityEnclosingRequestClass($method, $url, $headers);
- if ($body || $body === '0') {
- // Add POST fields and files to an entity enclosing request if an array is used
- if (is_array($body) || $body instanceof Collection) {
- // Normalize PHP style cURL uploads with a leading '@' symbol
- foreach ($body as $key => $value) {
- if (is_string($value) && substr($value, 0, 1) == '@') {
- $request->addPostFile($key, $value);
- unset($body[$key]);
- }
- }
- // Add the fields if they are still present and not all files
- $request->addPostFields($body);
- } else {
- // Add a raw entity body body to the request
- $request->setBody($body, (string) $request->getHeader('Content-Type'));
- if ((string) $request->getHeader('Transfer-Encoding') == 'chunked') {
- $request->removeHeader('Content-Length');
- }
- }
- }
- }
-
- if ($options) {
- $this->applyOptions($request, $options);
- }
-
- return $request;
- }
-
- /**
- * Clone a request while changing the method. Emulates the behavior of
- * {@see Guzzle\Http\Message\Request::clone}, but can change the HTTP method.
- *
- * @param RequestInterface $request Request to clone
- * @param string $method Method to set
- *
- * @return RequestInterface
- */
- public function cloneRequestWithMethod(RequestInterface $request, $method)
- {
- // Create the request with the same client if possible
- if ($request->getClient()) {
- $cloned = $request->getClient()->createRequest($method, $request->getUrl(), $request->getHeaders());
- } else {
- $cloned = $this->create($method, $request->getUrl(), $request->getHeaders());
- }
-
- $cloned->getCurlOptions()->replace($request->getCurlOptions()->toArray());
- $cloned->setEventDispatcher(clone $request->getEventDispatcher());
- // Ensure that that the Content-Length header is not copied if changing to GET or HEAD
- if (!($cloned instanceof EntityEnclosingRequestInterface)) {
- $cloned->removeHeader('Content-Length');
- } elseif ($request instanceof EntityEnclosingRequestInterface) {
- $cloned->setBody($request->getBody());
- }
- $cloned->getParams()->replace($request->getParams()->toArray());
- $cloned->dispatch('request.clone', array('request' => $cloned));
-
- return $cloned;
- }
-
- public function applyOptions(RequestInterface $request, array $options = array(), $flags = self::OPTIONS_NONE)
- {
- // Iterate over each key value pair and attempt to apply a config using function visitors
- foreach ($options as $key => $value) {
- $method = "visit_{$key}";
- if (isset($this->methods[$method])) {
- $this->{$method}($request, $value, $flags);
- }
- }
- }
-
- protected function visit_headers(RequestInterface $request, $value, $flags)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('headers value must be an array');
- }
-
- if ($flags & self::OPTIONS_AS_DEFAULTS) {
- // Merge headers in but do not overwrite existing values
- foreach ($value as $key => $header) {
- if (!$request->hasHeader($key)) {
- $request->setHeader($key, $header);
- }
- }
- } else {
- $request->addHeaders($value);
- }
- }
-
- protected function visit_body(RequestInterface $request, $value, $flags)
- {
- if ($request instanceof EntityEnclosingRequestInterface) {
- $request->setBody($value);
- } else {
- throw new InvalidArgumentException('Attempting to set a body on a non-entity-enclosing request');
- }
- }
-
- protected function visit_allow_redirects(RequestInterface $request, $value, $flags)
- {
- if ($value === false) {
- $request->getParams()->set(RedirectPlugin::DISABLE, true);
- }
- }
-
- protected function visit_auth(RequestInterface $request, $value, $flags)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('auth value must be an array');
- }
-
- $request->setAuth($value[0], isset($value[1]) ? $value[1] : null, isset($value[2]) ? $value[2] : 'basic');
- }
-
- protected function visit_query(RequestInterface $request, $value, $flags)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('query value must be an array');
- }
-
- if ($flags & self::OPTIONS_AS_DEFAULTS) {
- // Merge query string values in but do not overwrite existing values
- $query = $request->getQuery();
- $query->overwriteWith(array_diff_key($value, $query->toArray()));
- } else {
- $request->getQuery()->overwriteWith($value);
- }
- }
-
- protected function visit_cookies(RequestInterface $request, $value, $flags)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('cookies value must be an array');
- }
-
- foreach ($value as $name => $v) {
- $request->addCookie($name, $v);
- }
- }
-
- protected function visit_events(RequestInterface $request, $value, $flags)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('events value must be an array');
- }
-
- foreach ($value as $name => $method) {
- if (is_array($method)) {
- $request->getEventDispatcher()->addListener($name, $method[0], $method[1]);
- } else {
- $request->getEventDispatcher()->addListener($name, $method);
- }
- }
- }
-
- protected function visit_plugins(RequestInterface $request, $value, $flags)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('plugins value must be an array');
- }
-
- foreach ($value as $plugin) {
- $request->addSubscriber($plugin);
- }
- }
-
- protected function visit_exceptions(RequestInterface $request, $value, $flags)
- {
- if ($value === false || $value === 0) {
- $dispatcher = $request->getEventDispatcher();
- foreach ($dispatcher->getListeners('request.error') as $listener) {
- if (is_array($listener) && $listener[0] == 'Guzzle\Http\Message\Request' && $listener[1] = 'onRequestError') {
- $dispatcher->removeListener('request.error', $listener);
- break;
- }
- }
- }
- }
-
- protected function visit_save_to(RequestInterface $request, $value, $flags)
- {
- $request->setResponseBody($value);
- }
-
- protected function visit_params(RequestInterface $request, $value, $flags)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('params value must be an array');
- }
-
- $request->getParams()->overwriteWith($value);
- }
-
- protected function visit_timeout(RequestInterface $request, $value, $flags)
- {
- if (defined('CURLOPT_TIMEOUT_MS')) {
- $request->getCurlOptions()->set(CURLOPT_TIMEOUT_MS, $value * 1000);
- } else {
- $request->getCurlOptions()->set(CURLOPT_TIMEOUT, $value);
- }
- }
-
- protected function visit_connect_timeout(RequestInterface $request, $value, $flags)
- {
- if (defined('CURLOPT_CONNECTTIMEOUT_MS')) {
- $request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT_MS, $value * 1000);
- } else {
- $request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT, $value);
- }
- }
-
- protected function visit_debug(RequestInterface $request, $value, $flags)
- {
- if ($value) {
- $request->getCurlOptions()->set(CURLOPT_VERBOSE, true);
- }
- }
-
- protected function visit_verify(RequestInterface $request, $value, $flags)
- {
- $curl = $request->getCurlOptions();
- if ($value === true || is_string($value)) {
- $curl[CURLOPT_SSL_VERIFYHOST] = 2;
- $curl[CURLOPT_SSL_VERIFYPEER] = true;
- if ($value !== true) {
- $curl[CURLOPT_CAINFO] = $value;
- }
- } elseif ($value === false) {
- unset($curl[CURLOPT_CAINFO]);
- $curl[CURLOPT_SSL_VERIFYHOST] = 0;
- $curl[CURLOPT_SSL_VERIFYPEER] = false;
- }
- }
-
- protected function visit_proxy(RequestInterface $request, $value, $flags)
- {
- $request->getCurlOptions()->set(CURLOPT_PROXY, $value, $flags);
- }
-
- protected function visit_cert(RequestInterface $request, $value, $flags)
- {
- if (is_array($value)) {
- $request->getCurlOptions()->set(CURLOPT_SSLCERT, $value[0]);
- $request->getCurlOptions()->set(CURLOPT_SSLCERTPASSWD, $value[1]);
- } else {
- $request->getCurlOptions()->set(CURLOPT_SSLCERT, $value);
- }
- }
-
- protected function visit_ssl_key(RequestInterface $request, $value, $flags)
- {
- if (is_array($value)) {
- $request->getCurlOptions()->set(CURLOPT_SSLKEY, $value[0]);
- $request->getCurlOptions()->set(CURLOPT_SSLKEYPASSWD, $value[1]);
- } else {
- $request->getCurlOptions()->set(CURLOPT_SSLKEY, $value);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactoryInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactoryInterface.php
deleted file mode 100644
index 6088f10..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactoryInterface.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Http\Url;
-
-/**
- * Request factory used to create HTTP requests
- */
-interface RequestFactoryInterface
-{
- const OPTIONS_NONE = 0;
- const OPTIONS_AS_DEFAULTS = 1;
-
- /**
- * Create a new request based on an HTTP message
- *
- * @param string $message HTTP message as a string
- *
- * @return RequestInterface
- */
- public function fromMessage($message);
-
- /**
- * Create a request from URL parts as returned from parse_url()
- *
- * @param string $method HTTP method (GET, POST, PUT, HEAD, DELETE, etc)
- *
- * @param array $urlParts URL parts containing the same keys as parse_url()
- * - scheme: e.g. http
- * - host: e.g. www.guzzle-project.com
- * - port: e.g. 80
- * - user: e.g. michael
- * - pass: e.g. rocks
- * - path: e.g. / OR /index.html
- * - query: after the question mark ?
- * @param array|Collection $headers HTTP headers
- * @param string|resource|array|EntityBodyInterface $body Body to send in the request
- * @param string $protocol Protocol (HTTP, SPYDY, etc)
- * @param string $protocolVersion 1.0, 1.1, etc
- *
- * @return RequestInterface
- */
- public function fromParts(
- $method,
- array $urlParts,
- $headers = null,
- $body = null,
- $protocol = 'HTTP',
- $protocolVersion = '1.1'
- );
-
- /**
- * Create a new request based on the HTTP method
- *
- * @param string $method HTTP method (GET, POST, PUT, PATCH, HEAD, DELETE, ...)
- * @param string|Url $url HTTP URL to connect to
- * @param array|Collection $headers HTTP headers
- * @param string|resource|array|EntityBodyInterface $body Body to send in the request
- * @param array $options Array of options to apply to the request
- *
- * @return RequestInterface
- */
- public function create($method, $url, $headers = null, $body = null, array $options = array());
-
- /**
- * Apply an associative array of options to the request
- *
- * @param RequestInterface $request Request to update
- * @param array $options Options to use with the request. Available options are:
- * "headers": Associative array of headers
- * "query": Associative array of query string values to add to the request
- * "body": Body of a request, including an EntityBody, string, or array when sending POST requests.
- * "auth": Array of HTTP authentication parameters to use with the request. The array must contain the
- * username in index [0], the password in index [2], and can optionally contain the authentication type
- * in index [3]. The authentication types are: "Basic", "Digest", "NTLM", "Any" (defaults to "Basic").
- * "cookies": Associative array of cookies
- * "allow_redirects": Set to false to disable redirects
- * "save_to": String, fopen resource, or EntityBody object used to store the body of the response
- * "events": Associative array mapping event names to a closure or array of (priority, closure)
- * "plugins": Array of plugins to add to the request
- * "exceptions": Set to false to disable throwing exceptions on an HTTP level error (e.g. 404, 500, etc)
- * "params": Set custom request data parameters on a request. (Note: these are not query string parameters)
- * "timeout": Float describing the timeout of the request in seconds
- * "connect_timeout": Float describing the number of seconds to wait while trying to connect. Use 0 to wait
- * indefinitely.
- * "verify": Set to true to enable SSL cert validation (the default), false to disable, or supply the path
- * to a CA bundle to enable verification using a custom certificate.
- * "cert": Set to a string to specify the path to a file containing a PEM formatted certificate. If a
- * password is required, then set an array containing the path to the PEM file followed by the the
- * password required for the certificate.
- * "ssl_key": Specify the path to a file containing a private SSL key in PEM format. If a password is
- * required, then set an array containing the path to the SSL key followed by the password required for
- * the certificate.
- * "proxy": Specify an HTTP proxy (e.g. "http://username:password@192.168.16.1:10")
- * "debug": Set to true to display all data sent over the wire
- * @param int $flags Bitwise flags to apply when applying the options to the request. Defaults to no special
- * options. `1` (OPTIONS_AS_DEFAULTS): When specified, options will only update a request when
- * the value does not already exist on the request. This is only supported by "query" and
- * "headers". Other bitwise options may be added in the future.
- */
- public function applyOptions(RequestInterface $request, array $options = array(), $flags = self::OPTIONS_NONE);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestInterface.php
deleted file mode 100644
index 2f6b3c8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/RequestInterface.php
+++ /dev/null
@@ -1,318 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\HasDispatcherInterface;
-use Guzzle\Http\Exception\RequestException;
-use Guzzle\Http\ClientInterface;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Http\Url;
-use Guzzle\Http\QueryString;
-
-/**
- * Generic HTTP request interface
- */
-interface RequestInterface extends MessageInterface, HasDispatcherInterface
-{
- const STATE_NEW = 'new';
- const STATE_COMPLETE = 'complete';
- const STATE_TRANSFER = 'transfer';
- const STATE_ERROR = 'error';
-
- const GET = 'GET';
- const PUT = 'PUT';
- const POST = 'POST';
- const DELETE = 'DELETE';
- const HEAD = 'HEAD';
- const CONNECT = 'CONNECT';
- const OPTIONS = 'OPTIONS';
- const TRACE = 'TRACE';
- const PATCH = 'PATCH';
-
- /**
- * @return string
- */
- public function __toString();
-
- /**
- * Send the request
- *
- * @return Response
- * @throws RequestException on a request error
- */
- public function send();
-
- /**
- * Set the client used to transport the request
- *
- * @param ClientInterface $client
- *
- * @return self
- */
- public function setClient(ClientInterface $client);
-
- /**
- * Get the client used to transport the request
- *
- * @return ClientInterface $client
- */
- public function getClient();
-
- /**
- * Set the URL of the request
- *
- * @param string $url|Url Full URL to set including query string
- *
- * @return self
- */
- public function setUrl($url);
-
- /**
- * Get the full URL of the request (e.g. 'http://www.guzzle-project.com/')
- *
- * @param bool $asObject Set to TRUE to retrieve the URL as a clone of the URL object owned by the request.
- *
- * @return string|Url
- */
- public function getUrl($asObject = false);
-
- /**
- * Get the resource part of the the request, including the path, query string, and fragment
- *
- * @return string
- */
- public function getResource();
-
- /**
- * Get the collection of key value pairs that will be used as the query string in the request
- *
- * @return QueryString
- */
- public function getQuery();
-
- /**
- * Get the HTTP method of the request
- *
- * @return string
- */
- public function getMethod();
-
- /**
- * Get the URI scheme of the request (http, https, ftp, etc)
- *
- * @return string
- */
- public function getScheme();
-
- /**
- * Set the URI scheme of the request (http, https, ftp, etc)
- *
- * @param string $scheme Scheme to set
- *
- * @return self
- */
- public function setScheme($scheme);
-
- /**
- * Get the host of the request
- *
- * @return string
- */
- public function getHost();
-
- /**
- * Set the host of the request. Including a port in the host will modify the port of the request.
- *
- * @param string $host Host to set (e.g. www.yahoo.com, www.yahoo.com:80)
- *
- * @return self
- */
- public function setHost($host);
-
- /**
- * Get the path of the request (e.g. '/', '/index.html')
- *
- * @return string
- */
- public function getPath();
-
- /**
- * Set the path of the request (e.g. '/', '/index.html')
- *
- * @param string|array $path Path to set or array of segments to implode
- *
- * @return self
- */
- public function setPath($path);
-
- /**
- * Get the port that the request will be sent on if it has been set
- *
- * @return int|null
- */
- public function getPort();
-
- /**
- * Set the port that the request will be sent on
- *
- * @param int $port Port number to set
- *
- * @return self
- */
- public function setPort($port);
-
- /**
- * Get the username to pass in the URL if set
- *
- * @return string|null
- */
- public function getUsername();
-
- /**
- * Get the password to pass in the URL if set
- *
- * @return string|null
- */
- public function getPassword();
-
- /**
- * Set HTTP authorization parameters
- *
- * @param string|bool $user User name or false disable authentication
- * @param string $password Password
- * @param string $scheme Authentication scheme ('Basic', 'Digest', or a CURLAUTH_* constant (deprecated))
- *
- * @return self
- * @link http://www.ietf.org/rfc/rfc2617.txt
- * @link http://php.net/manual/en/function.curl-setopt.php See the available options for CURLOPT_HTTPAUTH
- * @throws RequestException
- */
- public function setAuth($user, $password = '', $scheme = 'Basic');
-
- /**
- * Get the HTTP protocol version of the request
- *
- * @return string
- */
- public function getProtocolVersion();
-
- /**
- * Set the HTTP protocol version of the request (e.g. 1.1 or 1.0)
- *
- * @param string $protocol HTTP protocol version to use with the request
- *
- * @return self
- */
- public function setProtocolVersion($protocol);
-
- /**
- * Get the previously received {@see Response} or NULL if the request has not been sent
- *
- * @return Response|null
- */
- public function getResponse();
-
- /**
- * Manually set a response for the request.
- *
- * This method is useful for specifying a mock response for the request or setting the response using a cache.
- * Manually setting a response will bypass the actual sending of a request.
- *
- * @param Response $response Response object to set
- * @param bool $queued Set to TRUE to keep the request in a state of not having been sent, but queue the
- * response for send()
- *
- * @return self Returns a reference to the object.
- */
- public function setResponse(Response $response, $queued = false);
-
- /**
- * The start of a response has been received for a request and the request is still in progress
- *
- * @param Response $response Response that has been received so far
- *
- * @return self
- */
- public function startResponse(Response $response);
-
- /**
- * Set the EntityBody that will hold a successful response message's entity body.
- *
- * This method should be invoked when you need to send the response's entity body somewhere other than the normal
- * php://temp buffer. For example, you can send the entity body to a socket, file, or some other custom stream.
- *
- * @param EntityBodyInterface|string|resource $body Response body object. Pass a string to attempt to store the
- * response body in a local file.
- * @return Request
- */
- public function setResponseBody($body);
-
- /**
- * Get the EntityBody that will hold the resulting response message's entity body. This response body will only
- * be used for successful responses. Intermediate responses (e.g. redirects) will not use the targeted response
- * body.
- *
- * @return EntityBodyInterface
- */
- public function getResponseBody();
-
- /**
- * Get the state of the request. One of 'complete', 'transfer', 'new', 'error'
- *
- * @return string
- */
- public function getState();
-
- /**
- * Set the state of the request
- *
- * @param string $state State of the request ('complete', 'transfer', 'new', 'error')
- * @param array $context Contextual information about the state change
- *
- * @return string Returns the current state of the request (which may have changed due to events being fired)
- */
- public function setState($state, array $context = array());
-
- /**
- * Get the cURL options that will be applied when the cURL handle is created
- *
- * @return Collection
- */
- public function getCurlOptions();
-
- /**
- * Get an array of Cookies
- *
- * @return array
- */
- public function getCookies();
-
- /**
- * Get a cookie value by name
- *
- * @param string $name Cookie to retrieve
- *
- * @return null|string
- */
- public function getCookie($name);
-
- /**
- * Add a Cookie value by name to the Cookie header
- *
- * @param string $name Name of the cookie to add
- * @param string $value Value to set
- *
- * @return self
- */
- public function addCookie($name, $value);
-
- /**
- * Remove a specific cookie value by name
- *
- * @param string $name Cookie to remove by name
- *
- * @return self
- */
- public function removeCookie($name);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Response.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Response.php
deleted file mode 100644
index 153e2dd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Message/Response.php
+++ /dev/null
@@ -1,968 +0,0 @@
-<?php
-
-namespace Guzzle\Http\Message;
-
-use Guzzle\Common\Version;
-use Guzzle\Common\ToArrayInterface;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Http\RedirectPlugin;
-use Guzzle\Parser\ParserRegistry;
-
-/**
- * Guzzle HTTP response object
- */
-class Response extends AbstractMessage implements \Serializable
-{
- /**
- * @var array Array of reason phrases and their corresponding status codes
- */
- private static $statusTexts = array(
- 100 => 'Continue',
- 101 => 'Switching Protocols',
- 102 => 'Processing',
- 200 => 'OK',
- 201 => 'Created',
- 202 => 'Accepted',
- 203 => 'Non-Authoritative Information',
- 204 => 'No Content',
- 205 => 'Reset Content',
- 206 => 'Partial Content',
- 207 => 'Multi-Status',
- 208 => 'Already Reported',
- 226 => 'IM Used',
- 300 => 'Multiple Choices',
- 301 => 'Moved Permanently',
- 302 => 'Found',
- 303 => 'See Other',
- 304 => 'Not Modified',
- 305 => 'Use Proxy',
- 307 => 'Temporary Redirect',
- 308 => 'Permanent Redirect',
- 400 => 'Bad Request',
- 401 => 'Unauthorized',
- 402 => 'Payment Required',
- 403 => 'Forbidden',
- 404 => 'Not Found',
- 405 => 'Method Not Allowed',
- 406 => 'Not Acceptable',
- 407 => 'Proxy Authentication Required',
- 408 => 'Request Timeout',
- 409 => 'Conflict',
- 410 => 'Gone',
- 411 => 'Length Required',
- 412 => 'Precondition Failed',
- 413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Long',
- 415 => 'Unsupported Media Type',
- 416 => 'Requested Range Not Satisfiable',
- 417 => 'Expectation Failed',
- 422 => 'Unprocessable Entity',
- 423 => 'Locked',
- 424 => 'Failed Dependency',
- 425 => 'Reserved for WebDAV advanced collections expired proposal',
- 426 => 'Upgrade required',
- 428 => 'Precondition Required',
- 429 => 'Too Many Requests',
- 431 => 'Request Header Fields Too Large',
- 500 => 'Internal Server Error',
- 501 => 'Not Implemented',
- 502 => 'Bad Gateway',
- 503 => 'Service Unavailable',
- 504 => 'Gateway Timeout',
- 505 => 'HTTP Version Not Supported',
- 506 => 'Variant Also Negotiates (Experimental)',
- 507 => 'Insufficient Storage',
- 508 => 'Loop Detected',
- 510 => 'Not Extended',
- 511 => 'Network Authentication Required',
- );
-
- /** @var EntityBodyInterface The response body */
- protected $body;
-
- /** @var string The reason phrase of the response (human readable code) */
- protected $reasonPhrase;
-
- /** @var string The status code of the response */
- protected $statusCode;
-
- /** @var array Information about the request */
- protected $info = array();
-
- /** @var string The effective URL that returned this response */
- protected $effectiveUrl;
-
- /** @var array Cacheable response codes (see RFC 2616:13.4) */
- protected static $cacheResponseCodes = array(200, 203, 206, 300, 301, 410);
-
- /**
- * Create a new Response based on a raw response message
- *
- * @param string $message Response message
- *
- * @return self|bool Returns false on error
- */
- public static function fromMessage($message)
- {
- $data = ParserRegistry::getInstance()->getParser('message')->parseResponse($message);
- if (!$data) {
- return false;
- }
-
- $response = new static($data['code'], $data['headers'], $data['body']);
- $response->setProtocol($data['protocol'], $data['version'])
- ->setStatus($data['code'], $data['reason_phrase']);
-
- // Set the appropriate Content-Length if the one set is inaccurate (e.g. setting to X)
- $contentLength = (string) $response->getHeader('Content-Length');
- $actualLength = strlen($data['body']);
- if (strlen($data['body']) > 0 && $contentLength != $actualLength) {
- $response->setHeader('Content-Length', $actualLength);
- }
-
- return $response;
- }
-
- /**
- * Construct the response
- *
- * @param string $statusCode The response status code (e.g. 200, 404, etc)
- * @param ToArrayInterface|array $headers The response headers
- * @param string|resource|EntityBodyInterface $body The body of the response
- *
- * @throws BadResponseException if an invalid response code is given
- */
- public function __construct($statusCode, $headers = null, $body = null)
- {
- parent::__construct();
- $this->setStatus($statusCode);
- $this->body = EntityBody::factory($body !== null ? $body : '');
-
- if ($headers) {
- if (is_array($headers)) {
- $this->setHeaders($headers);
- } elseif ($headers instanceof ToArrayInterface) {
- $this->setHeaders($headers->toArray());
- } else {
- throw new BadResponseException('Invalid headers argument received');
- }
- }
- }
-
- /**
- * @return string
- */
- public function __toString()
- {
- return $this->getMessage();
- }
-
- public function serialize()
- {
- return json_encode(array(
- 'status' => $this->statusCode,
- 'body' => (string) $this->body,
- 'headers' => $this->headers->toArray()
- ));
- }
-
- public function unserialize($serialize)
- {
- $data = json_decode($serialize, true);
- $this->__construct($data['status'], $data['headers'], $data['body']);
- }
-
- /**
- * Get the response entity body
- *
- * @param bool $asString Set to TRUE to return a string of the body rather than a full body object
- *
- * @return EntityBodyInterface|string
- */
- public function getBody($asString = false)
- {
- return $asString ? (string) $this->body : $this->body;
- }
-
- /**
- * Set the response entity body
- *
- * @param EntityBodyInterface|string $body Body to set
- *
- * @return self
- */
- public function setBody($body)
- {
- $this->body = EntityBody::factory($body);
-
- return $this;
- }
-
- /**
- * Set the protocol and protocol version of the response
- *
- * @param string $protocol Response protocol
- * @param string $version Protocol version
- *
- * @return self
- */
- public function setProtocol($protocol, $version)
- {
- $this->protocol = $protocol;
- $this->protocolVersion = $version;
-
- return $this;
- }
-
- /**
- * Get the protocol used for the response (e.g. HTTP)
- *
- * @return string
- */
- public function getProtocol()
- {
- return $this->protocol;
- }
-
- /**
- * Get the HTTP protocol version
- *
- * @return string
- */
- public function getProtocolVersion()
- {
- return $this->protocolVersion;
- }
-
- /**
- * Get a cURL transfer information
- *
- * @param string $key A single statistic to check
- *
- * @return array|string|null Returns all stats if no key is set, a single stat if a key is set, or null if a key
- * is set and not found
- * @link http://www.php.net/manual/en/function.curl-getinfo.php
- */
- public function getInfo($key = null)
- {
- if ($key === null) {
- return $this->info;
- } elseif (array_key_exists($key, $this->info)) {
- return $this->info[$key];
- } else {
- return null;
- }
- }
-
- /**
- * Set the transfer information
- *
- * @param array $info Array of cURL transfer stats
- *
- * @return self
- */
- public function setInfo(array $info)
- {
- $this->info = $info;
-
- return $this;
- }
-
- /**
- * Set the response status
- *
- * @param int $statusCode Response status code to set
- * @param string $reasonPhrase Response reason phrase
- *
- * @return self
- * @throws BadResponseException when an invalid response code is received
- */
- public function setStatus($statusCode, $reasonPhrase = '')
- {
- $this->statusCode = (int) $statusCode;
-
- if (!$reasonPhrase && isset(self::$statusTexts[$this->statusCode])) {
- $this->reasonPhrase = self::$statusTexts[$this->statusCode];
- } else {
- $this->reasonPhrase = $reasonPhrase;
- }
-
- return $this;
- }
-
- /**
- * Get the response status code
- *
- * @return integer
- */
- public function getStatusCode()
- {
- return $this->statusCode;
- }
-
- /**
- * Get the entire response as a string
- *
- * @return string
- */
- public function getMessage()
- {
- $message = $this->getRawHeaders();
-
- // Only include the body in the message if the size is < 2MB
- $size = $this->body->getSize();
- if ($size < 2097152) {
- $message .= (string) $this->body;
- }
-
- return $message;
- }
-
- /**
- * Get the the raw message headers as a string
- *
- * @return string
- */
- public function getRawHeaders()
- {
- $headers = 'HTTP/1.1 ' . $this->statusCode . ' ' . $this->reasonPhrase . "\r\n";
- $lines = $this->getHeaderLines();
- if (!empty($lines)) {
- $headers .= implode("\r\n", $lines) . "\r\n";
- }
-
- return $headers . "\r\n";
- }
-
- /**
- * Get the response reason phrase- a human readable version of the numeric
- * status code
- *
- * @return string
- */
- public function getReasonPhrase()
- {
- return $this->reasonPhrase;
- }
-
- /**
- * Get the Accept-Ranges HTTP header
- *
- * @return string Returns what partial content range types this server supports.
- */
- public function getAcceptRanges()
- {
- return (string) $this->getHeader('Accept-Ranges');
- }
-
- /**
- * Calculate the age of the response
- *
- * @return integer
- */
- public function calculateAge()
- {
- $age = $this->getHeader('Age');
-
- if ($age === null && $this->getDate()) {
- $age = time() - strtotime($this->getDate());
- }
-
- return $age === null ? null : (int) (string) $age;
- }
-
- /**
- * Get the Age HTTP header
- *
- * @return integer|null Returns the age the object has been in a proxy cache in seconds.
- */
- public function getAge()
- {
- return (string) $this->getHeader('Age');
- }
-
- /**
- * Get the Allow HTTP header
- *
- * @return string|null Returns valid actions for a specified resource. To be used for a 405 Method not allowed.
- */
- public function getAllow()
- {
- return (string) $this->getHeader('Allow');
- }
-
- /**
- * Check if an HTTP method is allowed by checking the Allow response header
- *
- * @param string $method Method to check
- *
- * @return bool
- */
- public function isMethodAllowed($method)
- {
- $allow = $this->getHeader('Allow');
- if ($allow) {
- foreach (explode(',', $allow) as $allowable) {
- if (!strcasecmp(trim($allowable), $method)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- /**
- * Get the Cache-Control HTTP header
- *
- * @return string
- */
- public function getCacheControl()
- {
- return (string) $this->getHeader('Cache-Control');
- }
-
- /**
- * Get the Connection HTTP header
- *
- * @return string
- */
- public function getConnection()
- {
- return (string) $this->getHeader('Connection');
- }
-
- /**
- * Get the Content-Encoding HTTP header
- *
- * @return string|null
- */
- public function getContentEncoding()
- {
- return (string) $this->getHeader('Content-Encoding');
- }
-
- /**
- * Get the Content-Language HTTP header
- *
- * @return string|null Returns the language the content is in.
- */
- public function getContentLanguage()
- {
- return (string) $this->getHeader('Content-Language');
- }
-
- /**
- * Get the Content-Length HTTP header
- *
- * @return integer Returns the length of the response body in bytes
- */
- public function getContentLength()
- {
- return (int) (string) $this->getHeader('Content-Length');
- }
-
- /**
- * Get the Content-Location HTTP header
- *
- * @return string|null Returns an alternate location for the returned data (e.g /index.htm)
- */
- public function getContentLocation()
- {
- return (string) $this->getHeader('Content-Location');
- }
-
- /**
- * Get the Content-Disposition HTTP header
- *
- * @return string|null Returns the Content-Disposition header
- */
- public function getContentDisposition()
- {
- return (string) $this->getHeader('Content-Disposition');
- }
-
- /**
- * Get the Content-MD5 HTTP header
- *
- * @return string|null Returns a Base64-encoded binary MD5 sum of the content of the response.
- */
- public function getContentMd5()
- {
- return (string) $this->getHeader('Content-MD5');
- }
-
- /**
- * Get the Content-Range HTTP header
- *
- * @return string Returns where in a full body message this partial message belongs (e.g. bytes 21010-47021/47022).
- */
- public function getContentRange()
- {
- return (string) $this->getHeader('Content-Range');
- }
-
- /**
- * Get the Content-Type HTTP header
- *
- * @return string Returns the mime type of this content.
- */
- public function getContentType()
- {
- return (string) $this->getHeader('Content-Type');
- }
-
- /**
- * Checks if the Content-Type is of a certain type. This is useful if the
- * Content-Type header contains charset information and you need to know if
- * the Content-Type matches a particular type.
- *
- * @param string $type Content type to check against
- *
- * @return bool
- */
- public function isContentType($type)
- {
- return stripos($this->getHeader('Content-Type'), $type) !== false;
- }
-
- /**
- * Get the Date HTTP header
- *
- * @return string|null Returns the date and time that the message was sent.
- */
- public function getDate()
- {
- return (string) $this->getHeader('Date');
- }
-
- /**
- * Get the ETag HTTP header
- *
- * @return string|null Returns an identifier for a specific version of a resource, often a Message digest.
- */
- public function getEtag()
- {
- return (string) $this->getHeader('ETag');
- }
-
- /**
- * Get the Expires HTTP header
- *
- * @return string|null Returns the date/time after which the response is considered stale.
- */
- public function getExpires()
- {
- return (string) $this->getHeader('Expires');
- }
-
- /**
- * Get the Last-Modified HTTP header
- *
- * @return string|null Returns the last modified date for the requested object, in RFC 2822 format
- * (e.g. Tue, 15 Nov 1994 12:45:26 GMT)
- */
- public function getLastModified()
- {
- return (string) $this->getHeader('Last-Modified');
- }
-
- /**
- * Get the Location HTTP header
- *
- * @return string|null Used in redirection, or when a new resource has been created.
- */
- public function getLocation()
- {
- return (string) $this->getHeader('Location');
- }
-
- /**
- * Get the Pragma HTTP header
- *
- * @return Header|null Returns the implementation-specific headers that may have various effects anywhere along
- * the request-response chain.
- */
- public function getPragma()
- {
- return (string) $this->getHeader('Pragma');
- }
-
- /**
- * Get the Proxy-Authenticate HTTP header
- *
- * @return string|null Authentication to access the proxy (e.g. Basic)
- */
- public function getProxyAuthenticate()
- {
- return (string) $this->getHeader('Proxy-Authenticate');
- }
-
- /**
- * Get the Retry-After HTTP header
- *
- * @return int|null If an entity is temporarily unavailable, this instructs the client to try again after a
- * specified period of time.
- */
- public function getRetryAfter()
- {
- return (string) $this->getHeader('Retry-After');
- }
-
- /**
- * Get the Server HTTP header
- *
- * @return string|null A name for the server
- */
- public function getServer()
- {
- return (string) $this->getHeader('Server');
- }
-
- /**
- * Get the Set-Cookie HTTP header
- *
- * @return string|null An HTTP cookie.
- */
- public function getSetCookie()
- {
- return (string) $this->getHeader('Set-Cookie');
- }
-
- /**
- * Get the Trailer HTTP header
- *
- * @return string|null The Trailer general field value indicates that the given set of header fields is present in
- * the trailer of a message encoded with chunked transfer-coding.
- */
- public function getTrailer()
- {
- return (string) $this->getHeader('Trailer');
- }
-
- /**
- * Get the Transfer-Encoding HTTP header
- *
- * @return string|null The form of encoding used to safely transfer the entity to the user
- */
- public function getTransferEncoding()
- {
- return (string) $this->getHeader('Transfer-Encoding');
- }
-
- /**
- * Get the Vary HTTP header
- *
- * @return string|null Tells downstream proxies how to match future request headers to decide whether the cached
- * response can be used rather than requesting a fresh one from the origin server.
- */
- public function getVary()
- {
- return (string) $this->getHeader('Vary');
- }
-
- /**
- * Get the Via HTTP header
- *
- * @return string|null Informs the client of proxies through which the response was sent.
- */
- public function getVia()
- {
- return (string) $this->getHeader('Via');
- }
-
- /**
- * Get the Warning HTTP header
- *
- * @return string|null A general warning about possible problems with the entity body
- */
- public function getWarning()
- {
- return (string) $this->getHeader('Warning');
- }
-
- /**
- * Get the WWW-Authenticate HTTP header
- *
- * @return string|null Indicates the authentication scheme that should be used to access the requested entity
- */
- public function getWwwAuthenticate()
- {
- return (string) $this->getHeader('WWW-Authenticate');
- }
-
- /**
- * Checks if HTTP Status code is a Client Error (4xx)
- *
- * @return bool
- */
- public function isClientError()
- {
- return $this->statusCode >= 400 && $this->statusCode < 500;
- }
-
- /**
- * Checks if HTTP Status code is Server OR Client Error (4xx or 5xx)
- *
- * @return boolean
- */
- public function isError()
- {
- return $this->isClientError() || $this->isServerError();
- }
-
- /**
- * Checks if HTTP Status code is Information (1xx)
- *
- * @return bool
- */
- public function isInformational()
- {
- return $this->statusCode < 200;
- }
-
- /**
- * Checks if HTTP Status code is a Redirect (3xx)
- *
- * @return bool
- */
- public function isRedirect()
- {
- return $this->statusCode >= 300 && $this->statusCode < 400;
- }
-
- /**
- * Checks if HTTP Status code is Server Error (5xx)
- *
- * @return bool
- */
- public function isServerError()
- {
- return $this->statusCode >= 500 && $this->statusCode < 600;
- }
-
- /**
- * Checks if HTTP Status code is Successful (2xx | 304)
- *
- * @return bool
- */
- public function isSuccessful()
- {
- return ($this->statusCode >= 200 && $this->statusCode < 300) || $this->statusCode == 304;
- }
-
- /**
- * Check if the response can be cached based on the response headers
- *
- * @return bool Returns TRUE if the response can be cached or false if not
- */
- public function canCache()
- {
- // Check if the response is cacheable based on the code
- if (!in_array((int) $this->getStatusCode(), self::$cacheResponseCodes)) {
- return false;
- }
-
- // Make sure a valid body was returned and can be cached
- if ((!$this->getBody()->isReadable() || !$this->getBody()->isSeekable())
- && ($this->getContentLength() > 0 || $this->getTransferEncoding() == 'chunked')) {
- return false;
- }
-
- // Never cache no-store resources (this is a private cache, so private
- // can be cached)
- if ($this->getHeader('Cache-Control') && $this->getHeader('Cache-Control')->hasDirective('no-store')) {
- return false;
- }
-
- return $this->isFresh() || $this->getFreshness() === null || $this->canValidate();
- }
-
- /**
- * Gets the number of seconds from the current time in which this response is still considered fresh
- *
- * @return int|null Returns the number of seconds
- */
- public function getMaxAge()
- {
- if ($header = $this->getHeader('Cache-Control')) {
- // s-max-age, then max-age, then Expires
- if ($age = $header->getDirective('s-maxage')) {
- return $age;
- }
- if ($age = $header->getDirective('max-age')) {
- return $age;
- }
- }
-
- if ($this->getHeader('Expires')) {
- return strtotime($this->getExpires()) - time();
- }
-
- return null;
- }
-
- /**
- * Check if the response is considered fresh.
- *
- * A response is considered fresh when its age is less than or equal to the freshness lifetime (maximum age) of the
- * response.
- *
- * @return bool|null
- */
- public function isFresh()
- {
- $fresh = $this->getFreshness();
-
- return $fresh === null ? null : $fresh >= 0;
- }
-
- /**
- * Check if the response can be validated against the origin server using a conditional GET request.
- *
- * @return bool
- */
- public function canValidate()
- {
- return $this->getEtag() || $this->getLastModified();
- }
-
- /**
- * Get the freshness of the response by returning the difference of the maximum lifetime of the response and the
- * age of the response (max-age - age).
- *
- * Freshness values less than 0 mean that the response is no longer fresh and is ABS(freshness) seconds expired.
- * Freshness values of greater than zero is the number of seconds until the response is no longer fresh. A NULL
- * result means that no freshness information is available.
- *
- * @return int
- */
- public function getFreshness()
- {
- $maxAge = $this->getMaxAge();
- $age = $this->calculateAge();
-
- return $maxAge && $age ? ($maxAge - $age) : null;
- }
-
- /**
- * Parse the JSON response body and return an array
- *
- * @return array|string|int|bool|float
- * @throws RuntimeException if the response body is not in JSON format
- */
- public function json()
- {
- $data = json_decode((string) $this->body, true);
- if (JSON_ERROR_NONE !== json_last_error()) {
- throw new RuntimeException('Unable to parse response body into JSON: ' . json_last_error());
- }
-
- return $data === null ? array() : $data;
- }
-
- /**
- * Parse the XML response body and return a \SimpleXMLElement.
- *
- * In order to prevent XXE attacks, this method disables loading external
- * entities. If you rely on external entities, then you must parse the
- * XML response manually by accessing the response body directly.
- *
- * @return \SimpleXMLElement
- * @throws RuntimeException if the response body is not in XML format
- * @link http://websec.io/2012/08/27/Preventing-XXE-in-PHP.html
- */
- public function xml()
- {
- $errorMessage = null;
- $internalErrors = libxml_use_internal_errors(true);
- $disableEntities = libxml_disable_entity_loader(true);
- libxml_clear_errors();
-
- try {
- $xml = new \SimpleXMLElement((string) $this->body ?: '<root />', LIBXML_NONET);
- if ($error = libxml_get_last_error()) {
- $errorMessage = $error->message;
- }
- } catch (\Exception $e) {
- $errorMessage = $e->getMessage();
- }
-
- libxml_clear_errors();
- libxml_use_internal_errors($internalErrors);
- libxml_disable_entity_loader($disableEntities);
-
- if ($errorMessage) {
- throw new RuntimeException('Unable to parse response body into XML: ' . $errorMessage);
- }
-
- return $xml;
- }
-
- /**
- * Get the redirect count of this response
- *
- * @return int
- */
- public function getRedirectCount()
- {
- return (int) $this->params->get(RedirectPlugin::REDIRECT_COUNT);
- }
-
- /**
- * Set the effective URL that resulted in this response (e.g. the last redirect URL)
- *
- * @param string $url The effective URL
- *
- * @return self
- */
- public function setEffectiveUrl($url)
- {
- $this->effectiveUrl = $url;
-
- return $this;
- }
-
- /**
- * Get the effective URL that resulted in this response (e.g. the last redirect URL)
- *
- * @return string
- */
- public function getEffectiveUrl()
- {
- return $this->effectiveUrl;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function getPreviousResponse()
- {
- Version::warn(__METHOD__ . ' is deprecated. Use the HistoryPlugin.');
- return null;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function setRequest($request)
- {
- Version::warn(__METHOD__ . ' is deprecated');
- return $this;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function getRequest()
- {
- Version::warn(__METHOD__ . ' is deprecated');
- return null;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Mimetypes.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Mimetypes.php
deleted file mode 100644
index d71586a..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Mimetypes.php
+++ /dev/null
@@ -1,962 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-/**
- * Provides mappings of file extensions to mimetypes
- * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
- */
-class Mimetypes
-{
- /** @var self */
- protected static $instance;
-
- /** @var array Mapping of extension to mimetype */
- protected $mimetypes = array(
- '3dml' => 'text/vnd.in3d.3dml',
- '3g2' => 'video/3gpp2',
- '3gp' => 'video/3gpp',
- '7z' => 'application/x-7z-compressed',
- 'aab' => 'application/x-authorware-bin',
- 'aac' => 'audio/x-aac',
- 'aam' => 'application/x-authorware-map',
- 'aas' => 'application/x-authorware-seg',
- 'abw' => 'application/x-abiword',
- 'ac' => 'application/pkix-attr-cert',
- 'acc' => 'application/vnd.americandynamics.acc',
- 'ace' => 'application/x-ace-compressed',
- 'acu' => 'application/vnd.acucobol',
- 'acutc' => 'application/vnd.acucorp',
- 'adp' => 'audio/adpcm',
- 'aep' => 'application/vnd.audiograph',
- 'afm' => 'application/x-font-type1',
- 'afp' => 'application/vnd.ibm.modcap',
- 'ahead' => 'application/vnd.ahead.space',
- 'ai' => 'application/postscript',
- 'aif' => 'audio/x-aiff',
- 'aifc' => 'audio/x-aiff',
- 'aiff' => 'audio/x-aiff',
- 'air' => 'application/vnd.adobe.air-application-installer-package+zip',
- 'ait' => 'application/vnd.dvb.ait',
- 'ami' => 'application/vnd.amiga.ami',
- 'apk' => 'application/vnd.android.package-archive',
- 'application' => 'application/x-ms-application',
- 'apr' => 'application/vnd.lotus-approach',
- 'asa' => 'text/plain',
- 'asax' => 'application/octet-stream',
- 'asc' => 'application/pgp-signature',
- 'ascx' => 'text/plain',
- 'asf' => 'video/x-ms-asf',
- 'ashx' => 'text/plain',
- 'asm' => 'text/x-asm',
- 'asmx' => 'text/plain',
- 'aso' => 'application/vnd.accpac.simply.aso',
- 'asp' => 'text/plain',
- 'aspx' => 'text/plain',
- 'asx' => 'video/x-ms-asf',
- 'atc' => 'application/vnd.acucorp',
- 'atom' => 'application/atom+xml',
- 'atomcat' => 'application/atomcat+xml',
- 'atomsvc' => 'application/atomsvc+xml',
- 'atx' => 'application/vnd.antix.game-component',
- 'au' => 'audio/basic',
- 'avi' => 'video/x-msvideo',
- 'aw' => 'application/applixware',
- 'axd' => 'text/plain',
- 'azf' => 'application/vnd.airzip.filesecure.azf',
- 'azs' => 'application/vnd.airzip.filesecure.azs',
- 'azw' => 'application/vnd.amazon.ebook',
- 'bat' => 'application/x-msdownload',
- 'bcpio' => 'application/x-bcpio',
- 'bdf' => 'application/x-font-bdf',
- 'bdm' => 'application/vnd.syncml.dm+wbxml',
- 'bed' => 'application/vnd.realvnc.bed',
- 'bh2' => 'application/vnd.fujitsu.oasysprs',
- 'bin' => 'application/octet-stream',
- 'bmi' => 'application/vnd.bmi',
- 'bmp' => 'image/bmp',
- 'book' => 'application/vnd.framemaker',
- 'box' => 'application/vnd.previewsystems.box',
- 'boz' => 'application/x-bzip2',
- 'bpk' => 'application/octet-stream',
- 'btif' => 'image/prs.btif',
- 'bz' => 'application/x-bzip',
- 'bz2' => 'application/x-bzip2',
- 'c' => 'text/x-c',
- 'c11amc' => 'application/vnd.cluetrust.cartomobile-config',
- 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg',
- 'c4d' => 'application/vnd.clonk.c4group',
- 'c4f' => 'application/vnd.clonk.c4group',
- 'c4g' => 'application/vnd.clonk.c4group',
- 'c4p' => 'application/vnd.clonk.c4group',
- 'c4u' => 'application/vnd.clonk.c4group',
- 'cab' => 'application/vnd.ms-cab-compressed',
- 'car' => 'application/vnd.curl.car',
- 'cat' => 'application/vnd.ms-pki.seccat',
- 'cc' => 'text/x-c',
- 'cct' => 'application/x-director',
- 'ccxml' => 'application/ccxml+xml',
- 'cdbcmsg' => 'application/vnd.contact.cmsg',
- 'cdf' => 'application/x-netcdf',
- 'cdkey' => 'application/vnd.mediastation.cdkey',
- 'cdmia' => 'application/cdmi-capability',
- 'cdmic' => 'application/cdmi-container',
- 'cdmid' => 'application/cdmi-domain',
- 'cdmio' => 'application/cdmi-object',
- 'cdmiq' => 'application/cdmi-queue',
- 'cdx' => 'chemical/x-cdx',
- 'cdxml' => 'application/vnd.chemdraw+xml',
- 'cdy' => 'application/vnd.cinderella',
- 'cer' => 'application/pkix-cert',
- 'cfc' => 'application/x-coldfusion',
- 'cfm' => 'application/x-coldfusion',
- 'cgm' => 'image/cgm',
- 'chat' => 'application/x-chat',
- 'chm' => 'application/vnd.ms-htmlhelp',
- 'chrt' => 'application/vnd.kde.kchart',
- 'cif' => 'chemical/x-cif',
- 'cii' => 'application/vnd.anser-web-certificate-issue-initiation',
- 'cil' => 'application/vnd.ms-artgalry',
- 'cla' => 'application/vnd.claymore',
- 'class' => 'application/java-vm',
- 'clkk' => 'application/vnd.crick.clicker.keyboard',
- 'clkp' => 'application/vnd.crick.clicker.palette',
- 'clkt' => 'application/vnd.crick.clicker.template',
- 'clkw' => 'application/vnd.crick.clicker.wordbank',
- 'clkx' => 'application/vnd.crick.clicker',
- 'clp' => 'application/x-msclip',
- 'cmc' => 'application/vnd.cosmocaller',
- 'cmdf' => 'chemical/x-cmdf',
- 'cml' => 'chemical/x-cml',
- 'cmp' => 'application/vnd.yellowriver-custom-menu',
- 'cmx' => 'image/x-cmx',
- 'cod' => 'application/vnd.rim.cod',
- 'com' => 'application/x-msdownload',
- 'conf' => 'text/plain',
- 'cpio' => 'application/x-cpio',
- 'cpp' => 'text/x-c',
- 'cpt' => 'application/mac-compactpro',
- 'crd' => 'application/x-mscardfile',
- 'crl' => 'application/pkix-crl',
- 'crt' => 'application/x-x509-ca-cert',
- 'cryptonote' => 'application/vnd.rig.cryptonote',
- 'cs' => 'text/plain',
- 'csh' => 'application/x-csh',
- 'csml' => 'chemical/x-csml',
- 'csp' => 'application/vnd.commonspace',
- 'css' => 'text/css',
- 'cst' => 'application/x-director',
- 'csv' => 'text/csv',
- 'cu' => 'application/cu-seeme',
- 'curl' => 'text/vnd.curl',
- 'cww' => 'application/prs.cww',
- 'cxt' => 'application/x-director',
- 'cxx' => 'text/x-c',
- 'dae' => 'model/vnd.collada+xml',
- 'daf' => 'application/vnd.mobius.daf',
- 'dataless' => 'application/vnd.fdsn.seed',
- 'davmount' => 'application/davmount+xml',
- 'dcr' => 'application/x-director',
- 'dcurl' => 'text/vnd.curl.dcurl',
- 'dd2' => 'application/vnd.oma.dd2+xml',
- 'ddd' => 'application/vnd.fujixerox.ddd',
- 'deb' => 'application/x-debian-package',
- 'def' => 'text/plain',
- 'deploy' => 'application/octet-stream',
- 'der' => 'application/x-x509-ca-cert',
- 'dfac' => 'application/vnd.dreamfactory',
- 'dic' => 'text/x-c',
- 'dir' => 'application/x-director',
- 'dis' => 'application/vnd.mobius.dis',
- 'dist' => 'application/octet-stream',
- 'distz' => 'application/octet-stream',
- 'djv' => 'image/vnd.djvu',
- 'djvu' => 'image/vnd.djvu',
- 'dll' => 'application/x-msdownload',
- 'dmg' => 'application/octet-stream',
- 'dms' => 'application/octet-stream',
- 'dna' => 'application/vnd.dna',
- 'doc' => 'application/msword',
- 'docm' => 'application/vnd.ms-word.document.macroenabled.12',
- 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
- 'dot' => 'application/msword',
- 'dotm' => 'application/vnd.ms-word.template.macroenabled.12',
- 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
- 'dp' => 'application/vnd.osgi.dp',
- 'dpg' => 'application/vnd.dpgraph',
- 'dra' => 'audio/vnd.dra',
- 'dsc' => 'text/prs.lines.tag',
- 'dssc' => 'application/dssc+der',
- 'dtb' => 'application/x-dtbook+xml',
- 'dtd' => 'application/xml-dtd',
- 'dts' => 'audio/vnd.dts',
- 'dtshd' => 'audio/vnd.dts.hd',
- 'dump' => 'application/octet-stream',
- 'dvi' => 'application/x-dvi',
- 'dwf' => 'model/vnd.dwf',
- 'dwg' => 'image/vnd.dwg',
- 'dxf' => 'image/vnd.dxf',
- 'dxp' => 'application/vnd.spotfire.dxp',
- 'dxr' => 'application/x-director',
- 'ecelp4800' => 'audio/vnd.nuera.ecelp4800',
- 'ecelp7470' => 'audio/vnd.nuera.ecelp7470',
- 'ecelp9600' => 'audio/vnd.nuera.ecelp9600',
- 'ecma' => 'application/ecmascript',
- 'edm' => 'application/vnd.novadigm.edm',
- 'edx' => 'application/vnd.novadigm.edx',
- 'efif' => 'application/vnd.picsel',
- 'ei6' => 'application/vnd.pg.osasli',
- 'elc' => 'application/octet-stream',
- 'eml' => 'message/rfc822',
- 'emma' => 'application/emma+xml',
- 'eol' => 'audio/vnd.digital-winds',
- 'eot' => 'application/vnd.ms-fontobject',
- 'eps' => 'application/postscript',
- 'epub' => 'application/epub+zip',
- 'es3' => 'application/vnd.eszigno3+xml',
- 'esf' => 'application/vnd.epson.esf',
- 'et3' => 'application/vnd.eszigno3+xml',
- 'etx' => 'text/x-setext',
- 'exe' => 'application/x-msdownload',
- 'exi' => 'application/exi',
- 'ext' => 'application/vnd.novadigm.ext',
- 'ez' => 'application/andrew-inset',
- 'ez2' => 'application/vnd.ezpix-album',
- 'ez3' => 'application/vnd.ezpix-package',
- 'f' => 'text/x-fortran',
- 'f4v' => 'video/x-f4v',
- 'f77' => 'text/x-fortran',
- 'f90' => 'text/x-fortran',
- 'fbs' => 'image/vnd.fastbidsheet',
- 'fcs' => 'application/vnd.isac.fcs',
- 'fdf' => 'application/vnd.fdf',
- 'fe_launch' => 'application/vnd.denovo.fcselayout-link',
- 'fg5' => 'application/vnd.fujitsu.oasysgp',
- 'fgd' => 'application/x-director',
- 'fh' => 'image/x-freehand',
- 'fh4' => 'image/x-freehand',
- 'fh5' => 'image/x-freehand',
- 'fh7' => 'image/x-freehand',
- 'fhc' => 'image/x-freehand',
- 'fig' => 'application/x-xfig',
- 'fli' => 'video/x-fli',
- 'flo' => 'application/vnd.micrografx.flo',
- 'flv' => 'video/x-flv',
- 'flw' => 'application/vnd.kde.kivio',
- 'flx' => 'text/vnd.fmi.flexstor',
- 'fly' => 'text/vnd.fly',
- 'fm' => 'application/vnd.framemaker',
- 'fnc' => 'application/vnd.frogans.fnc',
- 'for' => 'text/x-fortran',
- 'fpx' => 'image/vnd.fpx',
- 'frame' => 'application/vnd.framemaker',
- 'fsc' => 'application/vnd.fsc.weblaunch',
- 'fst' => 'image/vnd.fst',
- 'ftc' => 'application/vnd.fluxtime.clip',
- 'fti' => 'application/vnd.anser-web-funds-transfer-initiation',
- 'fvt' => 'video/vnd.fvt',
- 'fxp' => 'application/vnd.adobe.fxp',
- 'fxpl' => 'application/vnd.adobe.fxp',
- 'fzs' => 'application/vnd.fuzzysheet',
- 'g2w' => 'application/vnd.geoplan',
- 'g3' => 'image/g3fax',
- 'g3w' => 'application/vnd.geospace',
- 'gac' => 'application/vnd.groove-account',
- 'gdl' => 'model/vnd.gdl',
- 'geo' => 'application/vnd.dynageo',
- 'gex' => 'application/vnd.geometry-explorer',
- 'ggb' => 'application/vnd.geogebra.file',
- 'ggt' => 'application/vnd.geogebra.tool',
- 'ghf' => 'application/vnd.groove-help',
- 'gif' => 'image/gif',
- 'gim' => 'application/vnd.groove-identity-message',
- 'gmx' => 'application/vnd.gmx',
- 'gnumeric' => 'application/x-gnumeric',
- 'gph' => 'application/vnd.flographit',
- 'gqf' => 'application/vnd.grafeq',
- 'gqs' => 'application/vnd.grafeq',
- 'gram' => 'application/srgs',
- 'gre' => 'application/vnd.geometry-explorer',
- 'grv' => 'application/vnd.groove-injector',
- 'grxml' => 'application/srgs+xml',
- 'gsf' => 'application/x-font-ghostscript',
- 'gtar' => 'application/x-gtar',
- 'gtm' => 'application/vnd.groove-tool-message',
- 'gtw' => 'model/vnd.gtw',
- 'gv' => 'text/vnd.graphviz',
- 'gxt' => 'application/vnd.geonext',
- 'h' => 'text/x-c',
- 'h261' => 'video/h261',
- 'h263' => 'video/h263',
- 'h264' => 'video/h264',
- 'hal' => 'application/vnd.hal+xml',
- 'hbci' => 'application/vnd.hbci',
- 'hdf' => 'application/x-hdf',
- 'hh' => 'text/x-c',
- 'hlp' => 'application/winhlp',
- 'hpgl' => 'application/vnd.hp-hpgl',
- 'hpid' => 'application/vnd.hp-hpid',
- 'hps' => 'application/vnd.hp-hps',
- 'hqx' => 'application/mac-binhex40',
- 'hta' => 'application/octet-stream',
- 'htc' => 'text/html',
- 'htke' => 'application/vnd.kenameaapp',
- 'htm' => 'text/html',
- 'html' => 'text/html',
- 'hvd' => 'application/vnd.yamaha.hv-dic',
- 'hvp' => 'application/vnd.yamaha.hv-voice',
- 'hvs' => 'application/vnd.yamaha.hv-script',
- 'i2g' => 'application/vnd.intergeo',
- 'icc' => 'application/vnd.iccprofile',
- 'ice' => 'x-conference/x-cooltalk',
- 'icm' => 'application/vnd.iccprofile',
- 'ico' => 'image/x-icon',
- 'ics' => 'text/calendar',
- 'ief' => 'image/ief',
- 'ifb' => 'text/calendar',
- 'ifm' => 'application/vnd.shana.informed.formdata',
- 'iges' => 'model/iges',
- 'igl' => 'application/vnd.igloader',
- 'igm' => 'application/vnd.insors.igm',
- 'igs' => 'model/iges',
- 'igx' => 'application/vnd.micrografx.igx',
- 'iif' => 'application/vnd.shana.informed.interchange',
- 'imp' => 'application/vnd.accpac.simply.imp',
- 'ims' => 'application/vnd.ms-ims',
- 'in' => 'text/plain',
- 'ini' => 'text/plain',
- 'ipfix' => 'application/ipfix',
- 'ipk' => 'application/vnd.shana.informed.package',
- 'irm' => 'application/vnd.ibm.rights-management',
- 'irp' => 'application/vnd.irepository.package+xml',
- 'iso' => 'application/octet-stream',
- 'itp' => 'application/vnd.shana.informed.formtemplate',
- 'ivp' => 'application/vnd.immervision-ivp',
- 'ivu' => 'application/vnd.immervision-ivu',
- 'jad' => 'text/vnd.sun.j2me.app-descriptor',
- 'jam' => 'application/vnd.jam',
- 'jar' => 'application/java-archive',
- 'java' => 'text/x-java-source',
- 'jisp' => 'application/vnd.jisp',
- 'jlt' => 'application/vnd.hp-jlyt',
- 'jnlp' => 'application/x-java-jnlp-file',
- 'joda' => 'application/vnd.joost.joda-archive',
- 'jpe' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- 'jpg' => 'image/jpeg',
- 'jpgm' => 'video/jpm',
- 'jpgv' => 'video/jpeg',
- 'jpm' => 'video/jpm',
- 'js' => 'text/javascript',
- 'json' => 'application/json',
- 'kar' => 'audio/midi',
- 'karbon' => 'application/vnd.kde.karbon',
- 'kfo' => 'application/vnd.kde.kformula',
- 'kia' => 'application/vnd.kidspiration',
- 'kml' => 'application/vnd.google-earth.kml+xml',
- 'kmz' => 'application/vnd.google-earth.kmz',
- 'kne' => 'application/vnd.kinar',
- 'knp' => 'application/vnd.kinar',
- 'kon' => 'application/vnd.kde.kontour',
- 'kpr' => 'application/vnd.kde.kpresenter',
- 'kpt' => 'application/vnd.kde.kpresenter',
- 'ksp' => 'application/vnd.kde.kspread',
- 'ktr' => 'application/vnd.kahootz',
- 'ktx' => 'image/ktx',
- 'ktz' => 'application/vnd.kahootz',
- 'kwd' => 'application/vnd.kde.kword',
- 'kwt' => 'application/vnd.kde.kword',
- 'lasxml' => 'application/vnd.las.las+xml',
- 'latex' => 'application/x-latex',
- 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',
- 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',
- 'les' => 'application/vnd.hhe.lesson-player',
- 'lha' => 'application/octet-stream',
- 'link66' => 'application/vnd.route66.link66+xml',
- 'list' => 'text/plain',
- 'list3820' => 'application/vnd.ibm.modcap',
- 'listafp' => 'application/vnd.ibm.modcap',
- 'log' => 'text/plain',
- 'lostxml' => 'application/lost+xml',
- 'lrf' => 'application/octet-stream',
- 'lrm' => 'application/vnd.ms-lrm',
- 'ltf' => 'application/vnd.frogans.ltf',
- 'lvp' => 'audio/vnd.lucent.voice',
- 'lwp' => 'application/vnd.lotus-wordpro',
- 'lzh' => 'application/octet-stream',
- 'm13' => 'application/x-msmediaview',
- 'm14' => 'application/x-msmediaview',
- 'm1v' => 'video/mpeg',
- 'm21' => 'application/mp21',
- 'm2a' => 'audio/mpeg',
- 'm2v' => 'video/mpeg',
- 'm3a' => 'audio/mpeg',
- 'm3u' => 'audio/x-mpegurl',
- 'm3u8' => 'application/vnd.apple.mpegurl',
- 'm4a' => 'audio/mp4',
- 'm4u' => 'video/vnd.mpegurl',
- 'm4v' => 'video/mp4',
- 'ma' => 'application/mathematica',
- 'mads' => 'application/mads+xml',
- 'mag' => 'application/vnd.ecowin.chart',
- 'maker' => 'application/vnd.framemaker',
- 'man' => 'text/troff',
- 'mathml' => 'application/mathml+xml',
- 'mb' => 'application/mathematica',
- 'mbk' => 'application/vnd.mobius.mbk',
- 'mbox' => 'application/mbox',
- 'mc1' => 'application/vnd.medcalcdata',
- 'mcd' => 'application/vnd.mcd',
- 'mcurl' => 'text/vnd.curl.mcurl',
- 'mdb' => 'application/x-msaccess',
- 'mdi' => 'image/vnd.ms-modi',
- 'me' => 'text/troff',
- 'mesh' => 'model/mesh',
- 'meta4' => 'application/metalink4+xml',
- 'mets' => 'application/mets+xml',
- 'mfm' => 'application/vnd.mfmp',
- 'mgp' => 'application/vnd.osgeo.mapguide.package',
- 'mgz' => 'application/vnd.proteus.magazine',
- 'mid' => 'audio/midi',
- 'midi' => 'audio/midi',
- 'mif' => 'application/vnd.mif',
- 'mime' => 'message/rfc822',
- 'mj2' => 'video/mj2',
- 'mjp2' => 'video/mj2',
- 'mlp' => 'application/vnd.dolby.mlp',
- 'mmd' => 'application/vnd.chipnuts.karaoke-mmd',
- 'mmf' => 'application/vnd.smaf',
- 'mmr' => 'image/vnd.fujixerox.edmics-mmr',
- 'mny' => 'application/x-msmoney',
- 'mobi' => 'application/x-mobipocket-ebook',
- 'mods' => 'application/mods+xml',
- 'mov' => 'video/quicktime',
- 'movie' => 'video/x-sgi-movie',
- 'mp2' => 'audio/mpeg',
- 'mp21' => 'application/mp21',
- 'mp2a' => 'audio/mpeg',
- 'mp3' => 'audio/mpeg',
- 'mp4' => 'video/mp4',
- 'mp4a' => 'audio/mp4',
- 'mp4s' => 'application/mp4',
- 'mp4v' => 'video/mp4',
- 'mpc' => 'application/vnd.mophun.certificate',
- 'mpe' => 'video/mpeg',
- 'mpeg' => 'video/mpeg',
- 'mpg' => 'video/mpeg',
- 'mpg4' => 'video/mp4',
- 'mpga' => 'audio/mpeg',
- 'mpkg' => 'application/vnd.apple.installer+xml',
- 'mpm' => 'application/vnd.blueice.multipass',
- 'mpn' => 'application/vnd.mophun.application',
- 'mpp' => 'application/vnd.ms-project',
- 'mpt' => 'application/vnd.ms-project',
- 'mpy' => 'application/vnd.ibm.minipay',
- 'mqy' => 'application/vnd.mobius.mqy',
- 'mrc' => 'application/marc',
- 'mrcx' => 'application/marcxml+xml',
- 'ms' => 'text/troff',
- 'mscml' => 'application/mediaservercontrol+xml',
- 'mseed' => 'application/vnd.fdsn.mseed',
- 'mseq' => 'application/vnd.mseq',
- 'msf' => 'application/vnd.epson.msf',
- 'msh' => 'model/mesh',
- 'msi' => 'application/x-msdownload',
- 'msl' => 'application/vnd.mobius.msl',
- 'msty' => 'application/vnd.muvee.style',
- 'mts' => 'model/vnd.mts',
- 'mus' => 'application/vnd.musician',
- 'musicxml' => 'application/vnd.recordare.musicxml+xml',
- 'mvb' => 'application/x-msmediaview',
- 'mwf' => 'application/vnd.mfer',
- 'mxf' => 'application/mxf',
- 'mxl' => 'application/vnd.recordare.musicxml',
- 'mxml' => 'application/xv+xml',
- 'mxs' => 'application/vnd.triscape.mxs',
- 'mxu' => 'video/vnd.mpegurl',
- 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',
- 'n3' => 'text/n3',
- 'nb' => 'application/mathematica',
- 'nbp' => 'application/vnd.wolfram.player',
- 'nc' => 'application/x-netcdf',
- 'ncx' => 'application/x-dtbncx+xml',
- 'ngdat' => 'application/vnd.nokia.n-gage.data',
- 'nlu' => 'application/vnd.neurolanguage.nlu',
- 'nml' => 'application/vnd.enliven',
- 'nnd' => 'application/vnd.noblenet-directory',
- 'nns' => 'application/vnd.noblenet-sealer',
- 'nnw' => 'application/vnd.noblenet-web',
- 'npx' => 'image/vnd.net-fpx',
- 'nsf' => 'application/vnd.lotus-notes',
- 'oa2' => 'application/vnd.fujitsu.oasys2',
- 'oa3' => 'application/vnd.fujitsu.oasys3',
- 'oas' => 'application/vnd.fujitsu.oasys',
- 'obd' => 'application/x-msbinder',
- 'oda' => 'application/oda',
- 'odb' => 'application/vnd.oasis.opendocument.database',
- 'odc' => 'application/vnd.oasis.opendocument.chart',
- 'odf' => 'application/vnd.oasis.opendocument.formula',
- 'odft' => 'application/vnd.oasis.opendocument.formula-template',
- 'odg' => 'application/vnd.oasis.opendocument.graphics',
- 'odi' => 'application/vnd.oasis.opendocument.image',
- 'odm' => 'application/vnd.oasis.opendocument.text-master',
- 'odp' => 'application/vnd.oasis.opendocument.presentation',
- 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
- 'odt' => 'application/vnd.oasis.opendocument.text',
- 'oga' => 'audio/ogg',
- 'ogg' => 'audio/ogg',
- 'ogv' => 'video/ogg',
- 'ogx' => 'application/ogg',
- 'onepkg' => 'application/onenote',
- 'onetmp' => 'application/onenote',
- 'onetoc' => 'application/onenote',
- 'onetoc2' => 'application/onenote',
- 'opf' => 'application/oebps-package+xml',
- 'oprc' => 'application/vnd.palm',
- 'org' => 'application/vnd.lotus-organizer',
- 'osf' => 'application/vnd.yamaha.openscoreformat',
- 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
- 'otc' => 'application/vnd.oasis.opendocument.chart-template',
- 'otf' => 'application/x-font-otf',
- 'otg' => 'application/vnd.oasis.opendocument.graphics-template',
- 'oth' => 'application/vnd.oasis.opendocument.text-web',
- 'oti' => 'application/vnd.oasis.opendocument.image-template',
- 'otp' => 'application/vnd.oasis.opendocument.presentation-template',
- 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
- 'ott' => 'application/vnd.oasis.opendocument.text-template',
- 'oxt' => 'application/vnd.openofficeorg.extension',
- 'p' => 'text/x-pascal',
- 'p10' => 'application/pkcs10',
- 'p12' => 'application/x-pkcs12',
- 'p7b' => 'application/x-pkcs7-certificates',
- 'p7c' => 'application/pkcs7-mime',
- 'p7m' => 'application/pkcs7-mime',
- 'p7r' => 'application/x-pkcs7-certreqresp',
- 'p7s' => 'application/pkcs7-signature',
- 'p8' => 'application/pkcs8',
- 'pas' => 'text/x-pascal',
- 'paw' => 'application/vnd.pawaafile',
- 'pbd' => 'application/vnd.powerbuilder6',
- 'pbm' => 'image/x-portable-bitmap',
- 'pcf' => 'application/x-font-pcf',
- 'pcl' => 'application/vnd.hp-pcl',
- 'pclxl' => 'application/vnd.hp-pclxl',
- 'pct' => 'image/x-pict',
- 'pcurl' => 'application/vnd.curl.pcurl',
- 'pcx' => 'image/x-pcx',
- 'pdb' => 'application/vnd.palm',
- 'pdf' => 'application/pdf',
- 'pfa' => 'application/x-font-type1',
- 'pfb' => 'application/x-font-type1',
- 'pfm' => 'application/x-font-type1',
- 'pfr' => 'application/font-tdpfr',
- 'pfx' => 'application/x-pkcs12',
- 'pgm' => 'image/x-portable-graymap',
- 'pgn' => 'application/x-chess-pgn',
- 'pgp' => 'application/pgp-encrypted',
- 'php' => 'text/x-php',
- 'phps' => 'application/x-httpd-phps',
- 'pic' => 'image/x-pict',
- 'pkg' => 'application/octet-stream',
- 'pki' => 'application/pkixcmp',
- 'pkipath' => 'application/pkix-pkipath',
- 'plb' => 'application/vnd.3gpp.pic-bw-large',
- 'plc' => 'application/vnd.mobius.plc',
- 'plf' => 'application/vnd.pocketlearn',
- 'pls' => 'application/pls+xml',
- 'pml' => 'application/vnd.ctc-posml',
- 'png' => 'image/png',
- 'pnm' => 'image/x-portable-anymap',
- 'portpkg' => 'application/vnd.macports.portpkg',
- 'pot' => 'application/vnd.ms-powerpoint',
- 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12',
- 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
- 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12',
- 'ppd' => 'application/vnd.cups-ppd',
- 'ppm' => 'image/x-portable-pixmap',
- 'pps' => 'application/vnd.ms-powerpoint',
- 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
- 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
- 'ppt' => 'application/vnd.ms-powerpoint',
- 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12',
- 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
- 'pqa' => 'application/vnd.palm',
- 'prc' => 'application/x-mobipocket-ebook',
- 'pre' => 'application/vnd.lotus-freelance',
- 'prf' => 'application/pics-rules',
- 'ps' => 'application/postscript',
- 'psb' => 'application/vnd.3gpp.pic-bw-small',
- 'psd' => 'image/vnd.adobe.photoshop',
- 'psf' => 'application/x-font-linux-psf',
- 'pskcxml' => 'application/pskc+xml',
- 'ptid' => 'application/vnd.pvi.ptid1',
- 'pub' => 'application/x-mspublisher',
- 'pvb' => 'application/vnd.3gpp.pic-bw-var',
- 'pwn' => 'application/vnd.3m.post-it-notes',
- 'pya' => 'audio/vnd.ms-playready.media.pya',
- 'pyv' => 'video/vnd.ms-playready.media.pyv',
- 'qam' => 'application/vnd.epson.quickanime',
- 'qbo' => 'application/vnd.intu.qbo',
- 'qfx' => 'application/vnd.intu.qfx',
- 'qps' => 'application/vnd.publishare-delta-tree',
- 'qt' => 'video/quicktime',
- 'qwd' => 'application/vnd.quark.quarkxpress',
- 'qwt' => 'application/vnd.quark.quarkxpress',
- 'qxb' => 'application/vnd.quark.quarkxpress',
- 'qxd' => 'application/vnd.quark.quarkxpress',
- 'qxl' => 'application/vnd.quark.quarkxpress',
- 'qxt' => 'application/vnd.quark.quarkxpress',
- 'ra' => 'audio/x-pn-realaudio',
- 'ram' => 'audio/x-pn-realaudio',
- 'rar' => 'application/x-rar-compressed',
- 'ras' => 'image/x-cmu-raster',
- 'rb' => 'text/plain',
- 'rcprofile' => 'application/vnd.ipunplugged.rcprofile',
- 'rdf' => 'application/rdf+xml',
- 'rdz' => 'application/vnd.data-vision.rdz',
- 'rep' => 'application/vnd.businessobjects',
- 'res' => 'application/x-dtbresource+xml',
- 'resx' => 'text/xml',
- 'rgb' => 'image/x-rgb',
- 'rif' => 'application/reginfo+xml',
- 'rip' => 'audio/vnd.rip',
- 'rl' => 'application/resource-lists+xml',
- 'rlc' => 'image/vnd.fujixerox.edmics-rlc',
- 'rld' => 'application/resource-lists-diff+xml',
- 'rm' => 'application/vnd.rn-realmedia',
- 'rmi' => 'audio/midi',
- 'rmp' => 'audio/x-pn-realaudio-plugin',
- 'rms' => 'application/vnd.jcp.javame.midlet-rms',
- 'rnc' => 'application/relax-ng-compact-syntax',
- 'roff' => 'text/troff',
- 'rp9' => 'application/vnd.cloanto.rp9',
- 'rpss' => 'application/vnd.nokia.radio-presets',
- 'rpst' => 'application/vnd.nokia.radio-preset',
- 'rq' => 'application/sparql-query',
- 'rs' => 'application/rls-services+xml',
- 'rsd' => 'application/rsd+xml',
- 'rss' => 'application/rss+xml',
- 'rtf' => 'application/rtf',
- 'rtx' => 'text/richtext',
- 's' => 'text/x-asm',
- 'saf' => 'application/vnd.yamaha.smaf-audio',
- 'sbml' => 'application/sbml+xml',
- 'sc' => 'application/vnd.ibm.secure-container',
- 'scd' => 'application/x-msschedule',
- 'scm' => 'application/vnd.lotus-screencam',
- 'scq' => 'application/scvp-cv-request',
- 'scs' => 'application/scvp-cv-response',
- 'scurl' => 'text/vnd.curl.scurl',
- 'sda' => 'application/vnd.stardivision.draw',
- 'sdc' => 'application/vnd.stardivision.calc',
- 'sdd' => 'application/vnd.stardivision.impress',
- 'sdkd' => 'application/vnd.solent.sdkm+xml',
- 'sdkm' => 'application/vnd.solent.sdkm+xml',
- 'sdp' => 'application/sdp',
- 'sdw' => 'application/vnd.stardivision.writer',
- 'see' => 'application/vnd.seemail',
- 'seed' => 'application/vnd.fdsn.seed',
- 'sema' => 'application/vnd.sema',
- 'semd' => 'application/vnd.semd',
- 'semf' => 'application/vnd.semf',
- 'ser' => 'application/java-serialized-object',
- 'setpay' => 'application/set-payment-initiation',
- 'setreg' => 'application/set-registration-initiation',
- 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',
- 'sfs' => 'application/vnd.spotfire.sfs',
- 'sgl' => 'application/vnd.stardivision.writer-global',
- 'sgm' => 'text/sgml',
- 'sgml' => 'text/sgml',
- 'sh' => 'application/x-sh',
- 'shar' => 'application/x-shar',
- 'shf' => 'application/shf+xml',
- 'sig' => 'application/pgp-signature',
- 'silo' => 'model/mesh',
- 'sis' => 'application/vnd.symbian.install',
- 'sisx' => 'application/vnd.symbian.install',
- 'sit' => 'application/x-stuffit',
- 'sitx' => 'application/x-stuffitx',
- 'skd' => 'application/vnd.koan',
- 'skm' => 'application/vnd.koan',
- 'skp' => 'application/vnd.koan',
- 'skt' => 'application/vnd.koan',
- 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',
- 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
- 'slt' => 'application/vnd.epson.salt',
- 'sm' => 'application/vnd.stepmania.stepchart',
- 'smf' => 'application/vnd.stardivision.math',
- 'smi' => 'application/smil+xml',
- 'smil' => 'application/smil+xml',
- 'snd' => 'audio/basic',
- 'snf' => 'application/x-font-snf',
- 'so' => 'application/octet-stream',
- 'spc' => 'application/x-pkcs7-certificates',
- 'spf' => 'application/vnd.yamaha.smaf-phrase',
- 'spl' => 'application/x-futuresplash',
- 'spot' => 'text/vnd.in3d.spot',
- 'spp' => 'application/scvp-vp-response',
- 'spq' => 'application/scvp-vp-request',
- 'spx' => 'audio/ogg',
- 'src' => 'application/x-wais-source',
- 'sru' => 'application/sru+xml',
- 'srx' => 'application/sparql-results+xml',
- 'sse' => 'application/vnd.kodak-descriptor',
- 'ssf' => 'application/vnd.epson.ssf',
- 'ssml' => 'application/ssml+xml',
- 'st' => 'application/vnd.sailingtracker.track',
- 'stc' => 'application/vnd.sun.xml.calc.template',
- 'std' => 'application/vnd.sun.xml.draw.template',
- 'stf' => 'application/vnd.wt.stf',
- 'sti' => 'application/vnd.sun.xml.impress.template',
- 'stk' => 'application/hyperstudio',
- 'stl' => 'application/vnd.ms-pki.stl',
- 'str' => 'application/vnd.pg.format',
- 'stw' => 'application/vnd.sun.xml.writer.template',
- 'sub' => 'image/vnd.dvb.subtitle',
- 'sus' => 'application/vnd.sus-calendar',
- 'susp' => 'application/vnd.sus-calendar',
- 'sv4cpio' => 'application/x-sv4cpio',
- 'sv4crc' => 'application/x-sv4crc',
- 'svc' => 'application/vnd.dvb.service',
- 'svd' => 'application/vnd.svd',
- 'svg' => 'image/svg+xml',
- 'svgz' => 'image/svg+xml',
- 'swa' => 'application/x-director',
- 'swf' => 'application/x-shockwave-flash',
- 'swi' => 'application/vnd.aristanetworks.swi',
- 'sxc' => 'application/vnd.sun.xml.calc',
- 'sxd' => 'application/vnd.sun.xml.draw',
- 'sxg' => 'application/vnd.sun.xml.writer.global',
- 'sxi' => 'application/vnd.sun.xml.impress',
- 'sxm' => 'application/vnd.sun.xml.math',
- 'sxw' => 'application/vnd.sun.xml.writer',
- 't' => 'text/troff',
- 'tao' => 'application/vnd.tao.intent-module-archive',
- 'tar' => 'application/x-tar',
- 'tcap' => 'application/vnd.3gpp2.tcap',
- 'tcl' => 'application/x-tcl',
- 'teacher' => 'application/vnd.smart.teacher',
- 'tei' => 'application/tei+xml',
- 'teicorpus' => 'application/tei+xml',
- 'tex' => 'application/x-tex',
- 'texi' => 'application/x-texinfo',
- 'texinfo' => 'application/x-texinfo',
- 'text' => 'text/plain',
- 'tfi' => 'application/thraud+xml',
- 'tfm' => 'application/x-tex-tfm',
- 'thmx' => 'application/vnd.ms-officetheme',
- 'tif' => 'image/tiff',
- 'tiff' => 'image/tiff',
- 'tmo' => 'application/vnd.tmobile-livetv',
- 'torrent' => 'application/x-bittorrent',
- 'tpl' => 'application/vnd.groove-tool-template',
- 'tpt' => 'application/vnd.trid.tpt',
- 'tr' => 'text/troff',
- 'tra' => 'application/vnd.trueapp',
- 'trm' => 'application/x-msterminal',
- 'tsd' => 'application/timestamped-data',
- 'tsv' => 'text/tab-separated-values',
- 'ttc' => 'application/x-font-ttf',
- 'ttf' => 'application/x-font-ttf',
- 'ttl' => 'text/turtle',
- 'twd' => 'application/vnd.simtech-mindmapper',
- 'twds' => 'application/vnd.simtech-mindmapper',
- 'txd' => 'application/vnd.genomatix.tuxedo',
- 'txf' => 'application/vnd.mobius.txf',
- 'txt' => 'text/plain',
- 'u32' => 'application/x-authorware-bin',
- 'udeb' => 'application/x-debian-package',
- 'ufd' => 'application/vnd.ufdl',
- 'ufdl' => 'application/vnd.ufdl',
- 'umj' => 'application/vnd.umajin',
- 'unityweb' => 'application/vnd.unity',
- 'uoml' => 'application/vnd.uoml+xml',
- 'uri' => 'text/uri-list',
- 'uris' => 'text/uri-list',
- 'urls' => 'text/uri-list',
- 'ustar' => 'application/x-ustar',
- 'utz' => 'application/vnd.uiq.theme',
- 'uu' => 'text/x-uuencode',
- 'uva' => 'audio/vnd.dece.audio',
- 'uvd' => 'application/vnd.dece.data',
- 'uvf' => 'application/vnd.dece.data',
- 'uvg' => 'image/vnd.dece.graphic',
- 'uvh' => 'video/vnd.dece.hd',
- 'uvi' => 'image/vnd.dece.graphic',
- 'uvm' => 'video/vnd.dece.mobile',
- 'uvp' => 'video/vnd.dece.pd',
- 'uvs' => 'video/vnd.dece.sd',
- 'uvt' => 'application/vnd.dece.ttml+xml',
- 'uvu' => 'video/vnd.uvvu.mp4',
- 'uvv' => 'video/vnd.dece.video',
- 'uvva' => 'audio/vnd.dece.audio',
- 'uvvd' => 'application/vnd.dece.data',
- 'uvvf' => 'application/vnd.dece.data',
- 'uvvg' => 'image/vnd.dece.graphic',
- 'uvvh' => 'video/vnd.dece.hd',
- 'uvvi' => 'image/vnd.dece.graphic',
- 'uvvm' => 'video/vnd.dece.mobile',
- 'uvvp' => 'video/vnd.dece.pd',
- 'uvvs' => 'video/vnd.dece.sd',
- 'uvvt' => 'application/vnd.dece.ttml+xml',
- 'uvvu' => 'video/vnd.uvvu.mp4',
- 'uvvv' => 'video/vnd.dece.video',
- 'uvvx' => 'application/vnd.dece.unspecified',
- 'uvx' => 'application/vnd.dece.unspecified',
- 'vcd' => 'application/x-cdlink',
- 'vcf' => 'text/x-vcard',
- 'vcg' => 'application/vnd.groove-vcard',
- 'vcs' => 'text/x-vcalendar',
- 'vcx' => 'application/vnd.vcx',
- 'vis' => 'application/vnd.visionary',
- 'viv' => 'video/vnd.vivo',
- 'vor' => 'application/vnd.stardivision.writer',
- 'vox' => 'application/x-authorware-bin',
- 'vrml' => 'model/vrml',
- 'vsd' => 'application/vnd.visio',
- 'vsf' => 'application/vnd.vsf',
- 'vss' => 'application/vnd.visio',
- 'vst' => 'application/vnd.visio',
- 'vsw' => 'application/vnd.visio',
- 'vtu' => 'model/vnd.vtu',
- 'vxml' => 'application/voicexml+xml',
- 'w3d' => 'application/x-director',
- 'wad' => 'application/x-doom',
- 'wav' => 'audio/x-wav',
- 'wax' => 'audio/x-ms-wax',
- 'wbmp' => 'image/vnd.wap.wbmp',
- 'wbs' => 'application/vnd.criticaltools.wbs+xml',
- 'wbxml' => 'application/vnd.wap.wbxml',
- 'wcm' => 'application/vnd.ms-works',
- 'wdb' => 'application/vnd.ms-works',
- 'weba' => 'audio/webm',
- 'webm' => 'video/webm',
- 'webp' => 'image/webp',
- 'wg' => 'application/vnd.pmi.widget',
- 'wgt' => 'application/widget',
- 'wks' => 'application/vnd.ms-works',
- 'wm' => 'video/x-ms-wm',
- 'wma' => 'audio/x-ms-wma',
- 'wmd' => 'application/x-ms-wmd',
- 'wmf' => 'application/x-msmetafile',
- 'wml' => 'text/vnd.wap.wml',
- 'wmlc' => 'application/vnd.wap.wmlc',
- 'wmls' => 'text/vnd.wap.wmlscript',
- 'wmlsc' => 'application/vnd.wap.wmlscriptc',
- 'wmv' => 'video/x-ms-wmv',
- 'wmx' => 'video/x-ms-wmx',
- 'wmz' => 'application/x-ms-wmz',
- 'woff' => 'application/x-font-woff',
- 'wpd' => 'application/vnd.wordperfect',
- 'wpl' => 'application/vnd.ms-wpl',
- 'wps' => 'application/vnd.ms-works',
- 'wqd' => 'application/vnd.wqd',
- 'wri' => 'application/x-mswrite',
- 'wrl' => 'model/vrml',
- 'wsdl' => 'application/wsdl+xml',
- 'wspolicy' => 'application/wspolicy+xml',
- 'wtb' => 'application/vnd.webturbo',
- 'wvx' => 'video/x-ms-wvx',
- 'x32' => 'application/x-authorware-bin',
- 'x3d' => 'application/vnd.hzn-3d-crossword',
- 'xap' => 'application/x-silverlight-app',
- 'xar' => 'application/vnd.xara',
- 'xbap' => 'application/x-ms-xbap',
- 'xbd' => 'application/vnd.fujixerox.docuworks.binder',
- 'xbm' => 'image/x-xbitmap',
- 'xdf' => 'application/xcap-diff+xml',
- 'xdm' => 'application/vnd.syncml.dm+xml',
- 'xdp' => 'application/vnd.adobe.xdp+xml',
- 'xdssc' => 'application/dssc+xml',
- 'xdw' => 'application/vnd.fujixerox.docuworks',
- 'xenc' => 'application/xenc+xml',
- 'xer' => 'application/patch-ops-error+xml',
- 'xfdf' => 'application/vnd.adobe.xfdf',
- 'xfdl' => 'application/vnd.xfdl',
- 'xht' => 'application/xhtml+xml',
- 'xhtml' => 'application/xhtml+xml',
- 'xhvml' => 'application/xv+xml',
- 'xif' => 'image/vnd.xiff',
- 'xla' => 'application/vnd.ms-excel',
- 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12',
- 'xlc' => 'application/vnd.ms-excel',
- 'xlm' => 'application/vnd.ms-excel',
- 'xls' => 'application/vnd.ms-excel',
- 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
- 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12',
- 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- 'xlt' => 'application/vnd.ms-excel',
- 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12',
- 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
- 'xlw' => 'application/vnd.ms-excel',
- 'xml' => 'application/xml',
- 'xo' => 'application/vnd.olpc-sugar',
- 'xop' => 'application/xop+xml',
- 'xpi' => 'application/x-xpinstall',
- 'xpm' => 'image/x-xpixmap',
- 'xpr' => 'application/vnd.is-xpr',
- 'xps' => 'application/vnd.ms-xpsdocument',
- 'xpw' => 'application/vnd.intercon.formnet',
- 'xpx' => 'application/vnd.intercon.formnet',
- 'xsl' => 'application/xml',
- 'xslt' => 'application/xslt+xml',
- 'xsm' => 'application/vnd.syncml+xml',
- 'xspf' => 'application/xspf+xml',
- 'xul' => 'application/vnd.mozilla.xul+xml',
- 'xvm' => 'application/xv+xml',
- 'xvml' => 'application/xv+xml',
- 'xwd' => 'image/x-xwindowdump',
- 'xyz' => 'chemical/x-xyz',
- 'yaml' => 'text/yaml',
- 'yang' => 'application/yang',
- 'yin' => 'application/yin+xml',
- 'yml' => 'text/yaml',
- 'zaz' => 'application/vnd.zzazz.deck+xml',
- 'zip' => 'application/zip',
- 'zir' => 'application/vnd.zul',
- 'zirz' => 'application/vnd.zul',
- 'zmm' => 'application/vnd.handheld-entertainment+xml'
- );
-
- /**
- * Get a singleton instance of the class
- *
- * @return self
- * @codeCoverageIgnore
- */
- public static function getInstance()
- {
- if (!self::$instance) {
- self::$instance = new self();
- }
-
- return self::$instance;
- }
-
- /**
- * Get a mimetype value from a file extension
- *
- * @param string $extension File extension
- *
- * @return string|null
- *
- */
- public function fromExtension($extension)
- {
- $extension = strtolower($extension);
-
- return isset($this->mimetypes[$extension]) ? $this->mimetypes[$extension] : null;
- }
-
- /**
- * Get a mimetype from a filename
- *
- * @param string $filename Filename to generate a mimetype from
- *
- * @return string|null
- */
- public function fromFilename($filename)
- {
- return $this->fromExtension(pathinfo($filename, PATHINFO_EXTENSION));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php
deleted file mode 100644
index 4b4e49d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Guzzle\Http\QueryAggregator;
-
-use Guzzle\Http\QueryString;
-
-/**
- * Aggregates nested query string variables using commas
- */
-class CommaAggregator implements QueryAggregatorInterface
-{
- public function aggregate($key, $value, QueryString $query)
- {
- if ($query->isUrlEncoding()) {
- return array($query->encodeValue($key) => implode(',', array_map(array($query, 'encodeValue'), $value)));
- } else {
- return array($key => implode(',', $value));
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php
deleted file mode 100644
index 1bf1730..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Guzzle\Http\QueryAggregator;
-
-use Guzzle\Http\QueryString;
-
-/**
- * Does not aggregate nested query string values and allows duplicates in the resulting array
- *
- * Example: http://test.com?q=1&q=2
- */
-class DuplicateAggregator implements QueryAggregatorInterface
-{
- public function aggregate($key, $value, QueryString $query)
- {
- if ($query->isUrlEncoding()) {
- return array($query->encodeValue($key) => array_map(array($query, 'encodeValue'), $value));
- } else {
- return array($key => $value);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php
deleted file mode 100644
index 133ea2b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Http\QueryAggregator;
-
-use Guzzle\Http\QueryString;
-
-/**
- * Aggregates nested query string variables using PHP style []
- */
-class PhpAggregator implements QueryAggregatorInterface
-{
- public function aggregate($key, $value, QueryString $query)
- {
- $ret = array();
-
- foreach ($value as $k => $v) {
- $k = "{$key}[{$k}]";
- if (is_array($v)) {
- $ret = array_merge($ret, self::aggregate($k, $v, $query));
- } else {
- $ret[$query->encodeValue($k)] = $query->encodeValue($v);
- }
- }
-
- return $ret;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php
deleted file mode 100644
index 72bee62..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Guzzle\Http\QueryAggregator;
-
-use Guzzle\Http\QueryString;
-
-/**
- * Interface used for aggregating nested query string variables into a flattened array of key value pairs
- */
-interface QueryAggregatorInterface
-{
- /**
- * Aggregate multi-valued parameters into a flattened associative array
- *
- * @param string $key The name of the query string parameter
- * @param array $value The values of the parameter
- * @param QueryString $query The query string that is being aggregated
- *
- * @return array Returns an array of the combined values
- */
- public function aggregate($key, $value, QueryString $query);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryString.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryString.php
deleted file mode 100644
index 38a2640..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/QueryString.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Http\QueryAggregator\DuplicateAggregator;
-use Guzzle\Http\QueryAggregator\QueryAggregatorInterface;
-use Guzzle\Http\QueryAggregator\PhpAggregator;
-
-/**
- * Query string object to handle managing query string parameters and aggregating those parameters together as a string.
- */
-class QueryString extends Collection
-{
- /** @var string Used to URL encode with rawurlencode */
- const RFC_3986 = 'RFC 3986';
-
- /** @var string Used to encode with urlencode */
- const FORM_URLENCODED = 'application/x-www-form-urlencoded';
-
- /** @var string Constant used to create blank query string values (e.g. ?foo) */
- const BLANK = "_guzzle_blank_";
-
- /** @var string The query string field separator (e.g. '&') */
- protected $fieldSeparator = '&';
-
- /** @var string The query string value separator (e.g. '=') */
- protected $valueSeparator = '=';
-
- /** @var bool URL encode fields and values */
- protected $urlEncode = 'RFC 3986';
-
- /** @var QueryAggregatorInterface */
- protected $aggregator;
-
- /** @var array Cached PHP aggregator */
- private static $defaultAggregator = null;
-
- /**
- * Parse a query string into a QueryString object
- *
- * @param string $query Query string to parse
- *
- * @return self
- */
- public static function fromString($query)
- {
- $q = new static();
- if ($query === '') {
- return $q;
- }
-
- $foundDuplicates = $foundPhpStyle = false;
-
- foreach (explode('&', $query) as $kvp) {
- $parts = explode('=', $kvp, 2);
- $key = rawurldecode($parts[0]);
- if ($paramIsPhpStyleArray = substr($key, -2) == '[]') {
- $foundPhpStyle = true;
- $key = substr($key, 0, -2);
- }
- if (isset($parts[1])) {
- $value = rawurldecode(str_replace('+', '%20', $parts[1]));
- if (isset($q[$key])) {
- $q->add($key, $value);
- $foundDuplicates = true;
- } elseif ($paramIsPhpStyleArray) {
- $q[$key] = array($value);
- } else {
- $q[$key] = $value;
- }
- } else {
- // Uses false by default to represent keys with no trailing "=" sign.
- $q->add($key, false);
- }
- }
-
- // Use the duplicate aggregator if duplicates were found and not using PHP style arrays
- if ($foundDuplicates && !$foundPhpStyle) {
- $q->setAggregator(new DuplicateAggregator());
- }
-
- return $q;
- }
-
- /**
- * Convert the query string parameters to a query string string
- *
- * @return string
- * @throws RuntimeException
- */
- public function __toString()
- {
- if (!$this->data) {
- return '';
- }
-
- $queryList = array();
- foreach ($this->prepareData($this->data) as $name => $value) {
- $queryList[] = $this->convertKvp($name, $value);
- }
-
- return implode($this->fieldSeparator, $queryList);
- }
-
- /**
- * Get the query string field separator
- *
- * @return string
- */
- public function getFieldSeparator()
- {
- return $this->fieldSeparator;
- }
-
- /**
- * Get the query string value separator
- *
- * @return string
- */
- public function getValueSeparator()
- {
- return $this->valueSeparator;
- }
-
- /**
- * Returns the type of URL encoding used by the query string
- *
- * One of: false, "RFC 3986", or "application/x-www-form-urlencoded"
- *
- * @return bool|string
- */
- public function getUrlEncoding()
- {
- return $this->urlEncode;
- }
-
- /**
- * Returns true or false if using URL encoding
- *
- * @return bool
- */
- public function isUrlEncoding()
- {
- return $this->urlEncode !== false;
- }
-
- /**
- * Provide a function for combining multi-valued query string parameters into a single or multiple fields
- *
- * @param null|QueryAggregatorInterface $aggregator Pass in a QueryAggregatorInterface object to handle converting
- * deeply nested query string variables into a flattened array.
- * Pass null to use the default PHP style aggregator. For legacy
- * reasons, this function accepts a callable that must accepts a
- * $key, $value, and query object.
- * @return self
- * @see \Guzzle\Http\QueryString::aggregateUsingComma()
- */
- public function setAggregator(QueryAggregatorInterface $aggregator = null)
- {
- // Use the default aggregator if none was set
- if (!$aggregator) {
- if (!self::$defaultAggregator) {
- self::$defaultAggregator = new PhpAggregator();
- }
- $aggregator = self::$defaultAggregator;
- }
-
- $this->aggregator = $aggregator;
-
- return $this;
- }
-
- /**
- * Set whether or not field names and values should be rawurlencoded
- *
- * @param bool|string $encode Set to TRUE to use RFC 3986 encoding (rawurlencode), false to disable encoding, or
- * form_urlencoding to use application/x-www-form-urlencoded encoding (urlencode)
- * @return self
- */
- public function useUrlEncoding($encode)
- {
- $this->urlEncode = ($encode === true) ? self::RFC_3986 : $encode;
-
- return $this;
- }
-
- /**
- * Set the query string separator
- *
- * @param string $separator The query string separator that will separate fields
- *
- * @return self
- */
- public function setFieldSeparator($separator)
- {
- $this->fieldSeparator = $separator;
-
- return $this;
- }
-
- /**
- * Set the query string value separator
- *
- * @param string $separator The query string separator that will separate values from fields
- *
- * @return self
- */
- public function setValueSeparator($separator)
- {
- $this->valueSeparator = $separator;
-
- return $this;
- }
-
- /**
- * Returns an array of url encoded field names and values
- *
- * @return array
- */
- public function urlEncode()
- {
- return $this->prepareData($this->data);
- }
-
- /**
- * URL encodes a value based on the url encoding type of the query string object
- *
- * @param string $value Value to encode
- *
- * @return string
- */
- public function encodeValue($value)
- {
- if ($this->urlEncode == self::RFC_3986) {
- return rawurlencode($value);
- } elseif ($this->urlEncode == self::FORM_URLENCODED) {
- return urlencode($value);
- } else {
- return (string) $value;
- }
- }
-
- /**
- * Url encode parameter data and convert nested query strings into a flattened hash.
- *
- * @param array $data The data to encode
- *
- * @return array Returns an array of encoded values and keys
- */
- protected function prepareData(array $data)
- {
- // If no aggregator is present then set the default
- if (!$this->aggregator) {
- $this->setAggregator(null);
- }
-
- $temp = array();
- foreach ($data as $key => $value) {
- if ($value === false || $value === null) {
- // False and null will not include the "=". Use an empty string to include the "=".
- $temp[$this->encodeValue($key)] = $value;
- } elseif (is_array($value)) {
- $temp = array_merge($temp, $this->aggregator->aggregate($key, $value, $this));
- } else {
- $temp[$this->encodeValue($key)] = $this->encodeValue($value);
- }
- }
-
- return $temp;
- }
-
- /**
- * Converts a key value pair that can contain strings, nulls, false, or arrays
- * into a single string.
- *
- * @param string $name Name of the field
- * @param mixed $value Value of the field
- * @return string
- */
- private function convertKvp($name, $value)
- {
- if ($value === self::BLANK || $value === null || $value === false) {
- return $name;
- } elseif (!is_array($value)) {
- return $name . $this->valueSeparator . $value;
- }
-
- $result = '';
- foreach ($value as $v) {
- $result .= $this->convertKvp($name, $v) . $this->fieldSeparator;
- }
-
- return rtrim($result, $this->fieldSeparator);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ReadLimitEntityBody.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ReadLimitEntityBody.php
deleted file mode 100644
index ef28273..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/ReadLimitEntityBody.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Stream\StreamInterface;
-
-/**
- * EntityBody decorator used to return only a subset of an entity body
- */
-class ReadLimitEntityBody extends AbstractEntityBodyDecorator
-{
- /** @var int Limit the number of bytes that can be read */
- protected $limit;
-
- /** @var int Offset to start reading from */
- protected $offset;
-
- /**
- * @param EntityBodyInterface $body Body to wrap
- * @param int $limit Total number of bytes to allow to be read from the stream
- * @param int $offset Position to seek to before reading (only works on seekable streams)
- */
- public function __construct(EntityBodyInterface $body, $limit, $offset = 0)
- {
- parent::__construct($body);
- $this->setLimit($limit)->setOffset($offset);
- }
-
- /**
- * Returns only a subset of the decorated entity body when cast as a string
- * {@inheritdoc}
- */
- public function __toString()
- {
- if (!$this->body->isReadable() ||
- (!$this->body->isSeekable() && $this->body->isConsumed())
- ) {
- return '';
- }
-
- $originalPos = $this->body->ftell();
- $this->body->seek($this->offset);
- $data = '';
- while (!$this->feof()) {
- $data .= $this->read(1048576);
- }
- $this->body->seek($originalPos);
-
- return (string) $data ?: '';
- }
-
- public function isConsumed()
- {
- return $this->body->isConsumed() ||
- ($this->body->ftell() >= $this->offset + $this->limit);
- }
-
- /**
- * Returns the Content-Length of the limited subset of data
- * {@inheritdoc}
- */
- public function getContentLength()
- {
- $length = $this->body->getContentLength();
-
- return $length === false
- ? $this->limit
- : min($this->limit, min($length, $this->offset + $this->limit) - $this->offset);
- }
-
- /**
- * Allow for a bounded seek on the read limited entity body
- * {@inheritdoc}
- */
- public function seek($offset, $whence = SEEK_SET)
- {
- return $whence === SEEK_SET
- ? $this->body->seek(max($this->offset, min($this->offset + $this->limit, $offset)))
- : false;
- }
-
- /**
- * Set the offset to start limiting from
- *
- * @param int $offset Offset to seek to and begin byte limiting from
- *
- * @return self
- */
- public function setOffset($offset)
- {
- $this->body->seek($offset);
- $this->offset = $offset;
-
- return $this;
- }
-
- /**
- * Set the limit of bytes that the decorator allows to be read from the stream
- *
- * @param int $limit Total number of bytes to allow to be read from the stream
- *
- * @return self
- */
- public function setLimit($limit)
- {
- $this->limit = $limit;
-
- return $this;
- }
-
- public function read($length)
- {
- // Check if the current position is less than the total allowed bytes + original offset
- $remaining = ($this->offset + $this->limit) - $this->body->ftell();
- if ($remaining > 0) {
- // Only return the amount of requested data, ensuring that the byte limit is not exceeded
- return $this->body->read(min($remaining, $length));
- } else {
- return false;
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/RedirectPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/RedirectPlugin.php
deleted file mode 100644
index 1a824b8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/RedirectPlugin.php
+++ /dev/null
@@ -1,250 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Http\Url;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Exception\TooManyRedirectsException;
-use Guzzle\Http\Exception\CouldNotRewindStreamException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Plugin to implement HTTP redirects. Can redirect like a web browser or using strict RFC 2616 compliance
- */
-class RedirectPlugin implements EventSubscriberInterface
-{
- const REDIRECT_COUNT = 'redirect.count';
- const MAX_REDIRECTS = 'redirect.max';
- const STRICT_REDIRECTS = 'redirect.strict';
- const PARENT_REQUEST = 'redirect.parent_request';
- const DISABLE = 'redirect.disable';
-
- /**
- * @var int Default number of redirects allowed when no setting is supplied by a request
- */
- protected $defaultMaxRedirects = 5;
-
- public static function getSubscribedEvents()
- {
- return array(
- 'request.sent' => array('onRequestSent', 100),
- 'request.clone' => 'cleanupRequest',
- 'request.before_send' => 'cleanupRequest'
- );
- }
-
- /**
- * Clean up the parameters of a request when it is cloned
- *
- * @param Event $event Event emitted
- */
- public function cleanupRequest(Event $event)
- {
- $params = $event['request']->getParams();
- unset($params[self::REDIRECT_COUNT]);
- unset($params[self::PARENT_REQUEST]);
- }
-
- /**
- * Called when a request receives a redirect response
- *
- * @param Event $event Event emitted
- */
- public function onRequestSent(Event $event)
- {
- $response = $event['response'];
- $request = $event['request'];
-
- // Only act on redirect requests with Location headers
- if (!$response || $request->getParams()->get(self::DISABLE)) {
- return;
- }
-
- // Trace the original request based on parameter history
- $original = $this->getOriginalRequest($request);
-
- // Terminating condition to set the effective response on the original request
- if (!$response->isRedirect() || !$response->hasHeader('Location')) {
- if ($request !== $original) {
- // This is a terminating redirect response, so set it on the original request
- $response->getParams()->set(self::REDIRECT_COUNT, $original->getParams()->get(self::REDIRECT_COUNT));
- $original->setResponse($response);
- $response->setEffectiveUrl($request->getUrl());
- }
- return;
- }
-
- $this->sendRedirectRequest($original, $request, $response);
- }
-
- /**
- * Get the original request that initiated a series of redirects
- *
- * @param RequestInterface $request Request to get the original request from
- *
- * @return RequestInterface
- */
- protected function getOriginalRequest(RequestInterface $request)
- {
- $original = $request;
- // The number of redirects is held on the original request, so determine which request that is
- while ($parent = $original->getParams()->get(self::PARENT_REQUEST)) {
- $original = $parent;
- }
-
- return $original;
- }
-
- /**
- * Create a redirect request for a specific request object
- *
- * Takes into account strict RFC compliant redirection (e.g. redirect POST with POST) vs doing what most clients do
- * (e.g. redirect POST with GET).
- *
- * @param RequestInterface $request Request being redirected
- * @param RequestInterface $original Original request
- * @param int $statusCode Status code of the redirect
- * @param string $location Location header of the redirect
- *
- * @return RequestInterface Returns a new redirect request
- * @throws CouldNotRewindStreamException If the body needs to be rewound but cannot
- */
- protected function createRedirectRequest(
- RequestInterface $request,
- $statusCode,
- $location,
- RequestInterface $original
- ) {
- $redirectRequest = null;
- $strict = $original->getParams()->get(self::STRICT_REDIRECTS);
-
- // Switch method to GET for 303 redirects. 301 and 302 redirects also switch to GET unless we are forcing RFC
- // compliance to emulate what most browsers do. NOTE: IE only switches methods on 301/302 when coming from a POST.
- if ($request instanceof EntityEnclosingRequestInterface && ($statusCode == 303 || (!$strict && $statusCode <= 302))) {
- $redirectRequest = RequestFactory::getInstance()->cloneRequestWithMethod($request, 'GET');
- } else {
- $redirectRequest = clone $request;
- }
-
- $redirectRequest->setIsRedirect(true);
- // Always use the same response body when redirecting
- $redirectRequest->setResponseBody($request->getResponseBody());
-
- $location = Url::factory($location);
- // If the location is not absolute, then combine it with the original URL
- if (!$location->isAbsolute()) {
- $originalUrl = $redirectRequest->getUrl(true);
- // Remove query string parameters and just take what is present on the redirect Location header
- $originalUrl->getQuery()->clear();
- $location = $originalUrl->combine((string) $location, true);
- }
-
- $redirectRequest->setUrl($location);
-
- // Add the parent request to the request before it sends (make sure it's before the onRequestClone event too)
- $redirectRequest->getEventDispatcher()->addListener(
- 'request.before_send',
- $func = function ($e) use (&$func, $request, $redirectRequest) {
- $redirectRequest->getEventDispatcher()->removeListener('request.before_send', $func);
- $e['request']->getParams()->set(RedirectPlugin::PARENT_REQUEST, $request);
- }
- );
-
- // Rewind the entity body of the request if needed
- if ($redirectRequest instanceof EntityEnclosingRequestInterface && $redirectRequest->getBody()) {
- $body = $redirectRequest->getBody();
- // Only rewind the body if some of it has been read already, and throw an exception if the rewind fails
- if ($body->ftell() && !$body->rewind()) {
- throw new CouldNotRewindStreamException(
- 'Unable to rewind the non-seekable entity body of the request after redirecting. cURL probably '
- . 'sent part of body before the redirect occurred. Try adding acustom rewind function using on the '
- . 'entity body of the request using setRewindFunction().'
- );
- }
- }
-
- return $redirectRequest;
- }
-
- /**
- * Prepare the request for redirection and enforce the maximum number of allowed redirects per client
- *
- * @param RequestInterface $original Original request
- * @param RequestInterface $request Request to prepare and validate
- * @param Response $response The current response
- *
- * @return RequestInterface
- */
- protected function prepareRedirection(RequestInterface $original, RequestInterface $request, Response $response)
- {
- $params = $original->getParams();
- // This is a new redirect, so increment the redirect counter
- $current = $params[self::REDIRECT_COUNT] + 1;
- $params[self::REDIRECT_COUNT] = $current;
- // Use a provided maximum value or default to a max redirect count of 5
- $max = isset($params[self::MAX_REDIRECTS]) ? $params[self::MAX_REDIRECTS] : $this->defaultMaxRedirects;
-
- // Throw an exception if the redirect count is exceeded
- if ($current > $max) {
- $this->throwTooManyRedirectsException($original, $max);
- return false;
- } else {
- // Create a redirect request based on the redirect rules set on the request
- return $this->createRedirectRequest(
- $request,
- $response->getStatusCode(),
- trim($response->getLocation()),
- $original
- );
- }
- }
-
- /**
- * Send a redirect request and handle any errors
- *
- * @param RequestInterface $original The originating request
- * @param RequestInterface $request The current request being redirected
- * @param Response $response The response of the current request
- *
- * @throws BadResponseException|\Exception
- */
- protected function sendRedirectRequest(RequestInterface $original, RequestInterface $request, Response $response)
- {
- // Validate and create a redirect request based on the original request and current response
- if ($redirectRequest = $this->prepareRedirection($original, $request, $response)) {
- try {
- $redirectRequest->send();
- } catch (BadResponseException $e) {
- $e->getResponse();
- if (!$e->getResponse()) {
- throw $e;
- }
- }
- }
- }
-
- /**
- * Throw a too many redirects exception for a request
- *
- * @param RequestInterface $original Request
- * @param int $max Max allowed redirects
- *
- * @throws TooManyRedirectsException when too many redirects have been issued
- */
- protected function throwTooManyRedirectsException(RequestInterface $original, $max)
- {
- $original->getEventDispatcher()->addListener(
- 'request.complete',
- $func = function ($e) use (&$func, $original, $max) {
- $original->getEventDispatcher()->removeListener('request.complete', $func);
- $str = "{$max} redirects were issued for this request:\n" . $e['request']->getRawHeaders();
- throw new TooManyRedirectsException($str);
- }
- );
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem
deleted file mode 100644
index 18ce703..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem
+++ /dev/null
@@ -1,3870 +0,0 @@
-##
-## Bundle of CA Root Certificates
-##
-## Certificate data from Mozilla downloaded on: Wed Aug 13 21:49:32 2014
-##
-## This is a bundle of X.509 certificates of public Certificate Authorities
-## (CA). These were automatically extracted from Mozilla's root certificates
-## file (certdata.txt). This file can be found in the mozilla source tree:
-## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
-##
-## It contains the certificates in PEM format and therefore
-## can be directly used with curl / libcurl / php_curl, or with
-## an Apache+mod_ssl webserver for SSL client authentication.
-## Just configure this file as the SSLCACertificateFile.
-##
-## Conversion done with mk-ca-bundle.pl verison 1.22.
-## SHA1: bf2c15b3019e696660321d2227d942936dc50aa7
-##
-
-
-GTE CyberTrust Global Root
-==========================
------BEGIN CERTIFICATE-----
-MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
-Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
-A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
-MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
-Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
-IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
-sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
-HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
-AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
-M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
-NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
------END CERTIFICATE-----
-
-Thawte Server CA
-================
------BEGIN CERTIFICATE-----
-MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
-AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
-b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
-BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
-c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
-A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
-ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
-/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
-1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
-MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
-GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
-GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
------END CERTIFICATE-----
-
-Thawte Premium Server CA
-========================
------BEGIN CERTIFICATE-----
-MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
-AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
-ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
-AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
-VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
-aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
-cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
-aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
-Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
-qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
-SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
-8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
-UCemDaYj+bvLpgcUQg==
------END CERTIFICATE-----
-
-Equifax Secure CA
-=================
------BEGIN CERTIFICATE-----
-MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
-ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
-MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
-B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
-nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
-fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
-8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
-A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
-CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
-A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
-spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
-Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
-zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
-BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
-70+sB3c4
------END CERTIFICATE-----
-
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
-TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
-WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
-Tqj/ZA1k
------END CERTIFICATE-----
-
-Verisign Class 3 Public Primary Certification Authority - G2
-============================================================
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
-FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
-lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
-MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
-1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
-Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
------END CERTIFICATE-----
-
-GlobalSign Root CA
-==================
------BEGIN CERTIFICATE-----
-MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
-GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
-b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
-BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
-VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
-DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
-THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
-Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
-c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
-gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
-AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
-Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
-j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
-hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
-X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
------END CERTIFICATE-----
-
-GlobalSign Root CA - R2
-=======================
------BEGIN CERTIFICATE-----
-MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
-YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
-bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
-aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
-bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
-ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
-s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
-S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
-TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
-ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
-FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
-YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
-BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
-9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
-01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
-9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
-TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
------END CERTIFICATE-----
-
-ValiCert Class 1 VA
-===================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
-MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
-GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
-DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
-lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
-icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
-Orf1LXLI
------END CERTIFICATE-----
-
-ValiCert Class 2 VA
-===================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
-MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
-CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
-ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
-SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
-UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
-W9ViH0Pd
------END CERTIFICATE-----
-
-RSA Root Certificate 1
-======================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
-MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
-3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
-BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
-3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
-V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
-on+jjBXu
------END CERTIFICATE-----
-
-Verisign Class 3 Public Primary Certification Authority - G3
-============================================================
------BEGIN CERTIFICATE-----
-MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
-cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
-IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
-CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
-dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
-EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
-cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
-EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
-055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
-ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
-j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
-/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
-xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
-t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
------END CERTIFICATE-----
-
-Verisign Class 4 Public Primary Certification Authority - G3
-============================================================
------BEGIN CERTIFICATE-----
-MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
-cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
-IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
-CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
-dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
-tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
-8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
-Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
-Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
-j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
-mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
-fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
-RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
-UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
------END CERTIFICATE-----
-
-Entrust.net Secure Server CA
-============================
------BEGIN CERTIFICATE-----
-MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
-BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
-cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
-ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
-A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
-eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
-dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
-aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
-gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
-ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
-CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
-dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
-bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
-dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
-NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
-HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
-BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
-Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
-n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
------END CERTIFICATE-----
-
-Entrust.net Premium 2048 Secure Server CA
-=========================================
------BEGIN CERTIFICATE-----
-MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
-ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
-bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
-BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
-NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
-d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
-MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
-ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
-Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
-hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
-nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
-VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
-KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
-T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
-zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
-J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
-nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
------END CERTIFICATE-----
-
-Baltimore CyberTrust Root
-=========================
------BEGIN CERTIFICATE-----
-MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
-ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
-ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
-SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
-dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
-uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
-UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
-G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
-XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
-l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
-VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
-BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
-cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
-hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
-Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
-RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
------END CERTIFICATE-----
-
-Equifax Secure Global eBusiness CA
-==================================
------BEGIN CERTIFICATE-----
-MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
-bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
-HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
-b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
-PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
-qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
-hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
-BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
-MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
-I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
-NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
------END CERTIFICATE-----
-
-Equifax Secure eBusiness CA 1
-=============================
------BEGIN CERTIFICATE-----
-MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
-LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
-ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
-IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
-1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
-IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
-MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
-Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
-AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
-lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
-KpYrtWKmpj29f5JZzVoqgrI3eQ==
------END CERTIFICATE-----
-
-AddTrust Low-Value Services Root
-================================
------BEGIN CERTIFICATE-----
-MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
-QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
-cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
-CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
-ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
-AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
-54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
-oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
-Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
-GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
-HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
-AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
-RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
-HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
-ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
-iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
-eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
-mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
-ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
------END CERTIFICATE-----
-
-AddTrust External Root
-======================
------BEGIN CERTIFICATE-----
-MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
-QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
-VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
-NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
-cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
-Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
-+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
-Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
-aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
-2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
-7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
-BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
-VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
-VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
-IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
-j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
-6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
-e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
-G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
------END CERTIFICATE-----
-
-AddTrust Public Services Root
-=============================
------BEGIN CERTIFICATE-----
-MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
-QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
-cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
-BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
-dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
-nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
-d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
-Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
-HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
-A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
-/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
-FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
-A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
-JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
-+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
-GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
-Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
-EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
------END CERTIFICATE-----
-
-AddTrust Qualified Certificates Root
-====================================
------BEGIN CERTIFICATE-----
-MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
-QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
-cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
-CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
-IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
-64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
-KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
-L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
-wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
-MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
-BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
-BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
-azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
-ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
-GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
-dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
-RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
-iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
------END CERTIFICATE-----
-
-Entrust Root Certification Authority
-====================================
------BEGIN CERTIFICATE-----
-MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
-BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
-b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
-A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
-MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
-MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
-Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
-dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
-A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
-Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
-j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
-rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
-DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
-MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
-hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
-A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
-Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
-v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
-W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
-tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
------END CERTIFICATE-----
-
-RSA Security 2048 v3
-====================
------BEGIN CERTIFICATE-----
-MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
-ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
-MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
-BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
-AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
-Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
-WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
-KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
-+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
-MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
-FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
-v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
-0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
-VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
-nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
-pKnXwiJPZ9d37CAFYd4=
------END CERTIFICATE-----
-
-GeoTrust Global CA
-==================
------BEGIN CERTIFICATE-----
-MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
-Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
-MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
-LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
-BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
-8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
-T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
-vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
-AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
-DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
-zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
-d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
-mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
-XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
-Mw==
------END CERTIFICATE-----
-
-GeoTrust Global CA 2
-====================
------BEGIN CERTIFICATE-----
-MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
-R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
-MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
-LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
-NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
-LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
-Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
-HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
-MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
-K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
-srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
-ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
-OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
-x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
-H4z1Ir+rzoPz4iIprn2DQKi6bA==
------END CERTIFICATE-----
-
-GeoTrust Universal CA
-=====================
------BEGIN CERTIFICATE-----
-MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
-R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
-MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
-Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
-ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
-JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
-RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
-7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
-8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
-qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
-Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
-Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
-KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
-ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
-XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
-hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
-aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
-qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
-oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
-xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
-KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
-DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
-xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
-p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
-P/rmMuGNG2+k5o7Y+SlIis5z/iw=
------END CERTIFICATE-----
-
-GeoTrust Universal CA 2
-=======================
------BEGIN CERTIFICATE-----
-MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
-R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
-MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
-SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
-DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
-j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
-JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
-QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
-WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
-20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
-ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
-SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
-8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
-+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
-BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
-dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
-4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
-mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
-A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
-Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
-pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
-FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
-gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
-X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
------END CERTIFICATE-----
-
-America Online Root Certification Authority 1
-=============================================
------BEGIN CERTIFICATE-----
-MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
-v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
-DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
-sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
-8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
-AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
-o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
-GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
-VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
-3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
-Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
-sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
------END CERTIFICATE-----
-
-America Online Root Certification Authority 2
-=============================================
------BEGIN CERTIFICATE-----
-MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
-fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
-f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
-qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
-RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
-gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
-6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
-FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
-Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
-B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
-aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
-AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
-T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
-+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
-JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
-zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
-ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
-1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
-GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
-Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
-cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
------END CERTIFICATE-----
-
-Visa eCommerce Root
-===================
------BEGIN CERTIFICATE-----
-MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
-EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
-QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
-WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
-VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
-bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
-F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
-RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
-TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
-/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
-GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
-MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
-CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
-YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
-zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
-YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
-398znM/jra6O1I7mT1GvFpLgXPYHDw==
------END CERTIFICATE-----
-
-Certum Root CA
-==============
------BEGIN CERTIFICATE-----
-MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
-ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
-Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
-by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
-wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
-kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
-89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
-Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
-NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
-hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
-GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
-GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
-0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
-qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
------END CERTIFICATE-----
-
-Comodo AAA Services root
-========================
------BEGIN CERTIFICATE-----
-MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
-R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
-TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
-MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
-c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
-BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
-C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
-i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
-Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
-Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
-Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
-BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
-cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
-LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
-7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
-Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
-8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
-12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
------END CERTIFICATE-----
-
-Comodo Secure Services root
-===========================
------BEGIN CERTIFICATE-----
-MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
-R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
-TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
-MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
-Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
-BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
-9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
-rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
-oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
-p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
-FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
-gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
-YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
-aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
-4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
-Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
-DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
-pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
-RR3B7Hzs/Sk=
------END CERTIFICATE-----
-
-Comodo Trusted Services root
-============================
------BEGIN CERTIFICATE-----
-MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
-R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
-TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
-MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
-bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
-IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
-3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
-/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
-juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
-ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
-DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
-/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
-ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
-cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
-uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
-pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
-BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
-R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
-9y5Xt5hwXsjEeLBi
------END CERTIFICATE-----
-
-QuoVadis Root CA
-================
------BEGIN CERTIFICATE-----
-MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
-ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
-eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
-MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
-cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
-EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
-J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
-F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
-YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
-AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
-PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
-ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
-MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
-YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
-ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
-Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
-Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
-BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
-FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
-tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
-fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
-LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
-gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
-5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
-5nrQNiOKSnQ2+Q==
------END CERTIFICATE-----
-
-QuoVadis Root CA 2
-==================
------BEGIN CERTIFICATE-----
-MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
-EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
-ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
-aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
-DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
-XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
-lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
-lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
-lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
-66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
-wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
-D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
-BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
-J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
-DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
-a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
-ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
-Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
-UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
-VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
-+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
-IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
-WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
-f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
-4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
-VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
------END CERTIFICATE-----
-
-QuoVadis Root CA 3
-==================
------BEGIN CERTIFICATE-----
-MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
-EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
-OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
-aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
-DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
-DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
-KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
-DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
-BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
-p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
-nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
-MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
-Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
-uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
-BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
-YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
-aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
-BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
-VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
-ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
-AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
-qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
-hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
-POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
-Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
-8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
-bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
-g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
-vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
-qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
------END CERTIFICATE-----
-
-Security Communication Root CA
-==============================
------BEGIN CERTIFICATE-----
-MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
-HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
-8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
-DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
-5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
-DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
-JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
-DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
-0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
-mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
-s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
-6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
-FL39vmwLAw==
------END CERTIFICATE-----
-
-Sonera Class 2 Root CA
-======================
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
-U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
-NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
-IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
-/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
-dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
-f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
-tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
-nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
-XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
-0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
-cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
-Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
-EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
-llpwrN9M
------END CERTIFICATE-----
-
-Staat der Nederlanden Root CA
-=============================
------BEGIN CERTIFICATE-----
-MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
-ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
-HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
-bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
-vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
-jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
-C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
-vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
-22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
-HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
-dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
-BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
-EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
-MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
-nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
-iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
------END CERTIFICATE-----
-
-TDC Internet Root CA
-====================
------BEGIN CERTIFICATE-----
-MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
-ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
-NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
-ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
-xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
-znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
-5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
-otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
-AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
-VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
-MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
-AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
-UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
-CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
-gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
-2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
-O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
-Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
------END CERTIFICATE-----
-
-UTN DATACorp SGC Root CA
-========================
------BEGIN CERTIFICATE-----
-MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
-BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
-IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
-BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
-MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
-HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
-dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
-raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
-wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
-9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
-33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
-DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
-BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
-LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
-DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
-Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
-I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
-EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
-DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
------END CERTIFICATE-----
-
-UTN USERFirst Hardware Root CA
-==============================
------BEGIN CERTIFICATE-----
-MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
-BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
-IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
-BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
-OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
-eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
-ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
-wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
-tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
-i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
-Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
-gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
-lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
-UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
-BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
-//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
-XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
-lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
-iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
-nfhmqA==
------END CERTIFICATE-----
-
-Camerfirma Chambers of Commerce Root
-====================================
------BEGIN CERTIFICATE-----
-MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
-QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
-ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
-NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
-cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
-MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
-AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
-xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
-NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
-DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
-d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
-EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
-cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
-AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
-bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
-VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
-aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
-fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
-L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
-UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
-ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
-erfutGWaIZDgqtCYvDi1czyL+Nw=
------END CERTIFICATE-----
-
-Camerfirma Global Chambersign Root
-==================================
------BEGIN CERTIFICATE-----
-MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
-QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
-ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
-NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
-YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
-MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
-ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
-1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
-by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
-6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
-8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
-BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
-aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
-Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
-aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
-ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
-bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
-PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
-gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
-PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
-IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
-t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
------END CERTIFICATE-----
-
-NetLock Notary (Class A) Root
-=============================
------BEGIN CERTIFICATE-----
-MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
-EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
-dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
-ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
-DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
-EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
-VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
-cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
-D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
-z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
-/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
-tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
-4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
-A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
-Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
-bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
-IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
-LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
-ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
-IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
-IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
-b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
-bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
-Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
-bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
-ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
-ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
-CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
-KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
-8CgHrTwXZoi1/baI
------END CERTIFICATE-----
-
-NetLock Business (Class B) Root
-===============================
------BEGIN CERTIFICATE-----
-MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
-VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
-VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
-bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
-VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
-iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
-o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
-1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
-HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
-RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
-dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
-ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
-c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
-YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
-c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
-Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
-bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
-IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
-YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
-cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
-43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
-stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
------END CERTIFICATE-----
-
-NetLock Express (Class C) Root
-==============================
------BEGIN CERTIFICATE-----
-MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
-KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
-BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
-dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
-ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
-jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
-W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
-euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
-DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
-RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
-YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
-IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
-aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
-ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
-ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
-dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
-emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
-IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
-UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
-YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
-xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
-gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
------END CERTIFICATE-----
-
-XRamp Global CA Root
-====================
------BEGIN CERTIFICATE-----
-MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
-BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
-dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
-HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
-U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
-dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
-IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
-foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
-zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
-AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
-xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
-oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
-AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
-/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
-qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
-nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
-8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
------END CERTIFICATE-----
-
-Go Daddy Class 2 CA
-===================
------BEGIN CERTIFICATE-----
-MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
-VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
-ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
-A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
-RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
-ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
-2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
-qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
-YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
-vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
-BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
-atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
-MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
-A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
-PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
-I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
-HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
-Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
-vZ8=
------END CERTIFICATE-----
-
-Starfield Class 2 CA
-====================
------BEGIN CERTIFICATE-----
-MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
-U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
-MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
-A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
-SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
-bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
-JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
-epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
-F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
-MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
-hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
-bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
-afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
-PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
-xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
-KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
-QBFGmh95DmK/D5fs4C8fF5Q=
------END CERTIFICATE-----
-
-StartCom Certification Authority
-================================
------BEGIN CERTIFICATE-----
-MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
-U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
-ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
-NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
-LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
-U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
-ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
-o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
-Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
-eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
-2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
-6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
-osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
-untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
-UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
-37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
-FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
-Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
-YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
-AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
-Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
-U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
-LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
-cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
-dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
-AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
-3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
-vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
-fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
-fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
-EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
-yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
-1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
-lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
-g14=
------END CERTIFICATE-----
-
-Taiwan GRCA
-===========
------BEGIN CERTIFICATE-----
-MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
-EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
-DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
-dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
-w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
-BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
-1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
-htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
-J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
-Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
-B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
-O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
-lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
-HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
-09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
-TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
-Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
-Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
-D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
-DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
-Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
-7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
-CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
-+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
------END CERTIFICATE-----
-
-Swisscom Root CA 1
-==================
------BEGIN CERTIFICATE-----
-MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
-EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
-dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
-MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
-aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
-IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
-MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
-NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
-AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
-b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
-7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
-cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
-WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
-haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
-MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
-HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
-BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
-MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
-jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
-MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
-VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
-vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
-OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
-1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
-nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
-x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
-NY6E0F/6MBr1mmz0DlP5OlvRHA==
------END CERTIFICATE-----
-
-DigiCert Assured ID Root CA
-===========================
------BEGIN CERTIFICATE-----
-MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
-IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
-MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
-ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
-9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
-UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
-/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
-oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
-GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
-66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
-hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
-EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
-SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
-8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
-+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
------END CERTIFICATE-----
-
-DigiCert Global Root CA
-=======================
------BEGIN CERTIFICATE-----
-MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
-HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
-MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
-dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
-TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
-BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
-4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
-7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
-o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
-8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
-BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
-EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
-tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
-UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
-CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
------END CERTIFICATE-----
-
-DigiCert High Assurance EV Root CA
-==================================
------BEGIN CERTIFICATE-----
-MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
-KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
-MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
-MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
-Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
-Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
-OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
-MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
-NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
-h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
-Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
-JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
-V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
-myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
-mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
-vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
------END CERTIFICATE-----
-
-Certplus Class 2 Primary CA
-===========================
------BEGIN CERTIFICATE-----
-MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
-BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
-OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
-dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
-5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
-Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
-YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
-e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
-CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
-YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
-L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
-P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
-TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
-7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
-//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
-l7+ijrRU
------END CERTIFICATE-----
-
-DST Root CA X3
-==============
------BEGIN CERTIFICATE-----
-MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
-ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
-DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
-cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
-rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
-UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
-xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
-utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
-AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
-MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
-dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
-GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
-RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
-fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
------END CERTIFICATE-----
-
-DST ACES CA X6
-==============
------BEGIN CERTIFICATE-----
-MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
-EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
-MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
-MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
-CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
-DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
-pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
-GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
-MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
-EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
-Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
-dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
-CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
-5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
-Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
-nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
-vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
-oKfN5XozNmr6mis=
------END CERTIFICATE-----
-
-TURKTRUST Certificate Services Provider Root 1
-==============================================
------BEGIN CERTIFICATE-----
-MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
-bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
-MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
-acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
-MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
-U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
-TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
-aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
-yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
-Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
-8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
-W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
-BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
-sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
-q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
-B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
-nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
------END CERTIFICATE-----
-
-TURKTRUST Certificate Services Provider Root 2
-==============================================
------BEGIN CERTIFICATE-----
-MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
-bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
-MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
-QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
-MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
-dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
-A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
-acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
-LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
-x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
-QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
-5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
-AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
-A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
-Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
-Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
-hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
-9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
-UrbnBEI=
------END CERTIFICATE-----
-
-SwissSign Gold CA - G2
-======================
------BEGIN CERTIFICATE-----
-MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
-EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
-MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
-c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
-t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
-jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
-vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
-ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
-AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
-jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
-peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
-7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
-GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
-OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
-L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
-5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
-44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
-Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
-Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
-mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
-vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
-KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
-NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
-viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
------END CERTIFICATE-----
-
-SwissSign Silver CA - G2
-========================
------BEGIN CERTIFICATE-----
-MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
-BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
-DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
-aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
-9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
-N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
-+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
-6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
-MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
-qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
-FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
-ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
-celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
-CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
-BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
-tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
-cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
-4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
-kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
-3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
-/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
-DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
-e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
-WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
-DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
-DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
------END CERTIFICATE-----
-
-GeoTrust Primary Certification Authority
-========================================
------BEGIN CERTIFICATE-----
-MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
-EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
-CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
-cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
-b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
-nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
-RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
-tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
-AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
-hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
-Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
-NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
-Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
-1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
------END CERTIFICATE-----
-
-thawte Primary Root CA
-======================
------BEGIN CERTIFICATE-----
-MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
-BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
-aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
-MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
-SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
-KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
-FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
-oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
-1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
-q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
-aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
-afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
-VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
-AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
-uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
-xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
-jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
-z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
------END CERTIFICATE-----
-
-VeriSign Class 3 Public Primary Certification Authority - G5
-============================================================
------BEGIN CERTIFICATE-----
-MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
-ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
-IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
-ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
-yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
-biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
-dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
-YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
-j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
-Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
-Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
-fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
-BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
-Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
-aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
-SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
-X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
-KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
-Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
-ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
------END CERTIFICATE-----
-
-SecureTrust CA
-==============
------BEGIN CERTIFICATE-----
-MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
-EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
-dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
-BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
-OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
-DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
-GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
-01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
-ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
-BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
-aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
-KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
-SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
-mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
-nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
-3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
------END CERTIFICATE-----
-
-Secure Global CA
-================
------BEGIN CERTIFICATE-----
-MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
-EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
-bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
-MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
-Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
-YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
-bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
-8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
-HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
-0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
-oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
-MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
-OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
-CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
-3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
-f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
------END CERTIFICATE-----
-
-COMODO Certification Authority
-==============================
------BEGIN CERTIFICATE-----
-MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
-BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
-A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
-MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
-T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
-+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
-xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
-4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
-1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
-rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
-b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
-AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
-OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
-RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
-IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
-+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
------END CERTIFICATE-----
-
-Network Solutions Certificate Authority
-=======================================
------BEGIN CERTIFICATE-----
-MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
-EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
-IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
-MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
-MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
-jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
-aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
-crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
-/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
-AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
-bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
-A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
-4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
-GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
-wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
-ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
------END CERTIFICATE-----
-
-WellsSecure Public Root Certificate Authority
-=============================================
------BEGIN CERTIFICATE-----
-MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
-F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
-NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
-MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
-bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
-VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
-iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
-i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
-bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
-K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
-AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
-cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
-lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
-i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
-GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
-Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
-K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
-bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
-qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
-E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
-tylv2G0xffX8oRAHh84vWdw+WNs=
------END CERTIFICATE-----
-
-COMODO ECC Certification Authority
-==================================
------BEGIN CERTIFICATE-----
-MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
-R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
-ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
-GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
-Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
-b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
-4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
-wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
-FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
-U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
------END CERTIFICATE-----
-
-IGC/A
-=====
------BEGIN CERTIFICATE-----
-MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
-VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
-Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
-MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
-EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
-STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
-IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
-TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
-So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
-HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
-frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
-tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
-egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
-iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
-q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
-MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
-Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
-lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
-0mBWWg==
------END CERTIFICATE-----
-
-Security Communication EV RootCA1
-=================================
------BEGIN CERTIFICATE-----
-MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
-U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
-dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
-BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
-Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
-/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
-WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
-ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
-bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
-9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
-SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
-iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
-Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
-mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
-T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
------END CERTIFICATE-----
-
-OISTE WISeKey Global Root GA CA
-===============================
------BEGIN CERTIFICATE-----
-MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
-BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
-A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
-bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
-VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
-IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
-IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
-Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
-Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
-d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
-/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
-LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
-KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
-MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
-+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
-hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
-okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
------END CERTIFICATE-----
-
-Microsec e-Szigno Root CA
-=========================
------BEGIN CERTIFICATE-----
-MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
-BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
-EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
-MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
-dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
-GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
-AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
-d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
-oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
-QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
-PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
-MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
-IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
-VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
-LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
-dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
-AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
-4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
-AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
-egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
-Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
-PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
-c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
-cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
-IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
-WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
-MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
-MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
-Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
-HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
-nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
-aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
-86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
-yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
-S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
------END CERTIFICATE-----
-
-Certigna
-========
------BEGIN CERTIFICATE-----
-MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
-EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
-MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
-Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
-XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
-GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
-ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
-DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
-Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
-tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
-BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
-SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
-hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
-ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
-PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
-1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
-WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
------END CERTIFICATE-----
-
-AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
-======================================
------BEGIN CERTIFICATE-----
-MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
-AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
-LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
-HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
-U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
-IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
-yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
-2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
-4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
-2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
-8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
-HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
-Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
-5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
-czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
-AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
-ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
-BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
-cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
-AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
-EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
-/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
-MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
-3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
-eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
-/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
-RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
-Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
------END CERTIFICATE-----
-
-TC TrustCenter Class 2 CA II
-============================
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
-IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
-MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
-c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
-AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
-IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
-xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
-Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
-SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
-7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
-Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
-cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
-SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
-TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
-dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
-KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
-TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
-JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
-vQ==
------END CERTIFICATE-----
-
-TC TrustCenter Class 3 CA II
-============================
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
-IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
-MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
-c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
-AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
-yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
-6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
-uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
-2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
-7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
-Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
-cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
-SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
-TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
-O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
-yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
-IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
-092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
-5A==
------END CERTIFICATE-----
-
-TC TrustCenter Universal CA I
-=============================
------BEGIN CERTIFICATE-----
-MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
-IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
-MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
-VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
-JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
-qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
-xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
-ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
-gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
-BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
-1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
-vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
-ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
-ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
-7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
------END CERTIFICATE-----
-
-Deutsche Telekom Root CA 2
-==========================
------BEGIN CERTIFICATE-----
-MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
-RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
-A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
-MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
-A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
-b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
-bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
-KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
-AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
-Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
-jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
-HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
-E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
-zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
-rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
-dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
-Cm26OWMohpLzGITY+9HPBVZkVw==
------END CERTIFICATE-----
-
-ComSign Secured CA
-==================
------BEGIN CERTIFICATE-----
-MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
-AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
-NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
-QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
-49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
-7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
-kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
-9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
-AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
-U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
-j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
-AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
-BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
-FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
-51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
-OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
------END CERTIFICATE-----
-
-Cybertrust Global Root
-======================
------BEGIN CERTIFICATE-----
-MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
-ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
-MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
-ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
-0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
-AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
-89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
-8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
-MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
-A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
-lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
-5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
-hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
-X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
-WL1WMRJOEcgh4LMRkWXbtKaIOM5V
------END CERTIFICATE-----
-
-ePKI Root Certification Authority
-=================================
------BEGIN CERTIFICATE-----
-MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
-EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
-Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
-MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
-MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
-IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
-lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
-qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
-12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
-WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
-ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
-lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
-vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
-Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
-MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
-ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
-1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
-KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
-xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
-NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
-GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
-xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
-gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
-sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
-BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
------END CERTIFICATE-----
-
-T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
-=============================================================================================================================
------BEGIN CERTIFICATE-----
-MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
-DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
-aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
-b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
-BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
-S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
-MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
-IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
-n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
-IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
-dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
-cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
-Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
-xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
-6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
-hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
-BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
-MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
-N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
-y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
-LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
-dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
------END CERTIFICATE-----
-
-Buypass Class 2 CA 1
-====================
------BEGIN CERTIFICATE-----
-MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
-QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
-MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
-c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
-cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
-0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
-0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
-uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
-AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
-1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
-7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
-fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
-wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
------END CERTIFICATE-----
-
-Buypass Class 3 CA 1
-====================
------BEGIN CERTIFICATE-----
-MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
-QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
-MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
-c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
-ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
-n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
-AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
-1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
-AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
-pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
-EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
-htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
-el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
------END CERTIFICATE-----
-
-EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
-==========================================================================
------BEGIN CERTIFICATE-----
-MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
-bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
-QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
-Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
-ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
-IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
-SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
-X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
-gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
-eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
-TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
-Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
-uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
-qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
-ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
-Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
-/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
-Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
-FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
-zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
-XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
-bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
-RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
-1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
-2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
-Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
-AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
------END CERTIFICATE-----
-
-certSIGN ROOT CA
-================
------BEGIN CERTIFICATE-----
-MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
-VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
-Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
-CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
-JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
-rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
-ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
-0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
-AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
-Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
-AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
-SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
-x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
-vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
-TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
------END CERTIFICATE-----
-
-CNNIC ROOT
-==========
------BEGIN CERTIFICATE-----
-MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
-ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
-OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
-o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
-VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
-VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
-czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
-y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
-wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
-lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
-Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
-O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
-BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
-G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
-mxE=
------END CERTIFICATE-----
-
-ApplicationCA - Japanese Government
-===================================
------BEGIN CERTIFICATE-----
-MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
-SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
-MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
-cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
-fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
-wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
-jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
-nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
-WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
-BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
-vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
-o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
-/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
-io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
-dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
-rosot4LKGAfmt1t06SAZf7IbiVQ=
------END CERTIFICATE-----
-
-GeoTrust Primary Certification Authority - G3
-=============================================
------BEGIN CERTIFICATE-----
-MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
-BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
-IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
-NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
-YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
-LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
-K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
-c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
-IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
-dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
-2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
-cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
-Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
-AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
-t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
------END CERTIFICATE-----
-
-thawte Primary Root CA - G2
-===========================
------BEGIN CERTIFICATE-----
-MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
-VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
-IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
-Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
-MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
-b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
-IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
-LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
-8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
-mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
-G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
-rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
------END CERTIFICATE-----
-
-thawte Primary Root CA - G3
-===========================
------BEGIN CERTIFICATE-----
-MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
-BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
-aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
-ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
-d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
-VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
-A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
-P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
-+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
-7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
-vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
-KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
-A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
-t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
-8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
-er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
------END CERTIFICATE-----
-
-GeoTrust Primary Certification Authority - G2
-=============================================
------BEGIN CERTIFICATE-----
-MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
-VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
-Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
-OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
-MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
-b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
-BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
-KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
-VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
-EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
-ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
-npaqBA+K
------END CERTIFICATE-----
-
-VeriSign Universal Root Certification Authority
-===============================================
------BEGIN CERTIFICATE-----
-MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
-ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
-IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
-IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
-cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
-IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
-1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
-MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
-9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
-AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
-tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
-CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
-a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
-DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
-Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
-Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
-P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
-wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
-mJO37M2CYfE45k+XmCpajQ==
------END CERTIFICATE-----
-
-VeriSign Class 3 Public Primary Certification Authority - G4
-============================================================
------BEGIN CERTIFICATE-----
-MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
-VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
-b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
-ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
-YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
-MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
-cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
-b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
-Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
-rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
-/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
-HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
-Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
-A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
-AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
------END CERTIFICATE-----
-
-NetLock Arany (Class Gold) Főtanúsítvány
-============================================
------BEGIN CERTIFICATE-----
-MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
-A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
-dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
-cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
-MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
-ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
-biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
-c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
-0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
-/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
-H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
-fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
-neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
-BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
-qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
-YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
-bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
-NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
-dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
------END CERTIFICATE-----
-
-Staat der Nederlanden Root CA - G2
-==================================
------BEGIN CERTIFICATE-----
-MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
-CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC
-TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
-ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ
-5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn
-vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj
-CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil
-e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR
-OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI
-CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65
-48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi
-trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737
-qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB
-AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC
-ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV
-HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA
-A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz
-+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj
-f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN
-kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk
-CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF
-URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb
-CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h
-oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV
-IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
-66+KAQ==
------END CERTIFICATE-----
-
-CA Disig
-========
------BEGIN CERTIFICATE-----
-MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
-QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
-MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
-bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
-GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
-Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
-hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
-ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
-gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
-AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
-aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
-ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
-BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
-WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
-mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
-CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
-ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
-4Z7CRneC9VkGjCFMhwnN5ag=
------END CERTIFICATE-----
-
-Juur-SK
-=======
------BEGIN CERTIFICATE-----
-MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
-c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
-DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
-SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
-aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
-TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
-+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
-UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
-Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
-MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
-HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
-AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
-cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
-AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
-cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
-FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
-A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
-ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
-abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
-IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
-Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
-yyqcjg==
------END CERTIFICATE-----
-
-Hongkong Post Root CA 1
-=======================
------BEGIN CERTIFICATE-----
-MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
-DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
-NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
-IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
-ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
-auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
-qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
-V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
-HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
-h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
-l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
-IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
-T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
-c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
------END CERTIFICATE-----
-
-SecureSign RootCA11
-===================
------BEGIN CERTIFICATE-----
-MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
-SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
-b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
-KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
-cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
-TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
-wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
-g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
-O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
-bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
-t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
-OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
-bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
-Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
-y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
-lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
------END CERTIFICATE-----
-
-ACEDICOM Root
-=============
------BEGIN CERTIFICATE-----
-MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD
-T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4
-MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG
-A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk
-WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD
-YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew
-MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb
-m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk
-HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT
-xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2
-3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9
-2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq
-TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz
-4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU
-9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv
-bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg
-aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP
-eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk
-zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1
-ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI
-KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq
-nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE
-I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp
-MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
-tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
------END CERTIFICATE-----
-
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
-CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
-bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
-D/xwzoiQ
------END CERTIFICATE-----
-
-Microsec e-Szigno Root CA 2009
-==============================
------BEGIN CERTIFICATE-----
-MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
-MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
-c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
-dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
-BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
-U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
-fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
-0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
-pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
-1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
-AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
-QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
-FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
-lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
-I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
-tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
-yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
-LXpUq3DDfSJlgnCW
------END CERTIFICATE-----
-
-E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
-===================================================
------BEGIN CERTIFICATE-----
-MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
-EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
-ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
-MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
-cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
-aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
-8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
-jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
-JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
-9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
-AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
-SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
-F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
-D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
-Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
-fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
------END CERTIFICATE-----
-
-GlobalSign Root CA - R3
-=======================
------BEGIN CERTIFICATE-----
-MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
-YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
-bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
-aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
-bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
-iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
-0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
-rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
-OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
-xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
-FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
-lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
-EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
-bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
-YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
-kpeDMdmztcpHWD9f
------END CERTIFICATE-----
-
-Autoridad de Certificacion Firmaprofesional CIF A62634068
-=========================================================
------BEGIN CERTIFICATE-----
-MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
-BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
-MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
-QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
-NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
-Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
-B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
-7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
-ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
-plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
-MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
-LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
-bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
-vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
-EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
-DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
-cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
-bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
-ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
-51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
-R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
-T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
-Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
-osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
-crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
-saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
-KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
-6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
------END CERTIFICATE-----
-
-Izenpe.com
-==========
------BEGIN CERTIFICATE-----
-MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
-EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
-MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
-QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
-03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
-ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
-+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
-PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
-OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
-F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
-0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
-0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
-leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
-AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
-SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
-NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
-MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
-BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
-Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
-kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
-hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
-g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
-aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
-nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
-ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
-Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
-WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
------END CERTIFICATE-----
-
-Chambers of Commerce Root - 2008
-================================
------BEGIN CERTIFICATE-----
-MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
-MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
-bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
-QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
-Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
-ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
-EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
-cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
-AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
-XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
-h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
-ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
-NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
-D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
-lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
-0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
-ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
-EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
-G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
-BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
-bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
-bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
-CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
-AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
-wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
-3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
-RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
-M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
-YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
-9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
-zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
-nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
-OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
------END CERTIFICATE-----
-
-Global Chambersign Root - 2008
-==============================
------BEGIN CERTIFICATE-----
-MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
-MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
-bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
-QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
-NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
-Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
-QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
-aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
-VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
-XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
-ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
-/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
-TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
-H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
-Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
-HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
-wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
-AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
-BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
-BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
-aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
-aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
-1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
-dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
-/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
-ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
-dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
-9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
-foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
-qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
-P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
-c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
-09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
------END CERTIFICATE-----
-
-Go Daddy Root Certificate Authority - G2
-========================================
------BEGIN CERTIFICATE-----
-MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
-MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
-MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
-b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
-A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
-9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
-+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
-fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
-NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
-BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
-vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
-5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
-N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
-LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
------END CERTIFICATE-----
-
-Starfield Root Certificate Authority - G2
-=========================================
------BEGIN CERTIFICATE-----
-MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
-b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
-eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
-DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
-VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
-dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
-W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
-bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
-N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
-ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
-JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
-TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
-4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
-F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
-pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
-c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
------END CERTIFICATE-----
-
-Starfield Services Root Certificate Authority - G2
-==================================================
------BEGIN CERTIFICATE-----
-MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
-b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
-IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
-BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
-dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
-Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
-h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
-hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
-LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
-rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
-SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
-E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
-xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
-iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
-YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
------END CERTIFICATE-----
-
-AffirmTrust Commercial
-======================
------BEGIN CERTIFICATE-----
-MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
-BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
-MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
-bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
-DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
-C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
-BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
-MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
-HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
-hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
-qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
-0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
-sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
------END CERTIFICATE-----
-
-AffirmTrust Networking
-======================
------BEGIN CERTIFICATE-----
-MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
-BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
-MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
-bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
-Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
-dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
-/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
-h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
-HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
-UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
-12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
-WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
-/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
------END CERTIFICATE-----
-
-AffirmTrust Premium
-===================
------BEGIN CERTIFICATE-----
-MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
-BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
-OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
-dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
-MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
-BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
-5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
-+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
-GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
-p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
-S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
-6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
-/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
-+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
-MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
-Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
-6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
-L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
-+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
-BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
-IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
-g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
-zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
------END CERTIFICATE-----
-
-AffirmTrust Premium ECC
-=======================
------BEGIN CERTIFICATE-----
-MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
-BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
-MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
-cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
-IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
-N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
-BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
-BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
-57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
-eQ==
------END CERTIFICATE-----
-
-Certum Trusted Network CA
-=========================
------BEGIN CERTIFICATE-----
-MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
-ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
-biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
-MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
-ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
-MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
-l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
-J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
-fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
-cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
-Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
-DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
-jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
-mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
-Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
-03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
------END CERTIFICATE-----
-
-Certinomis - Autorité Racine
-=============================
------BEGIN CERTIFICATE-----
-MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
-Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
-LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG
-A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw
-JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa
-wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly
-Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw
-2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N
-jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q
-c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC
-lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb
-xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g
-530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna
-4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
-A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ
-KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x
-WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva
-R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40
-nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B
-CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv
-JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE
-qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b
-WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE
-wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/
-vgt2Fl43N+bYdJeimUV5
------END CERTIFICATE-----
-
-Root CA Generalitat Valenciana
-==============================
------BEGIN CERTIFICATE-----
-MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
-ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
-IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
-WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
-CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
-F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
-ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
-D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
-JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
-AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
-dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
-ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
-AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
-YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
-AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
-aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
-AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
-YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
-AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
-OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
-dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
-BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
-A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
-b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
-TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
-Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
-NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
-iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
-+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
------END CERTIFICATE-----
-
-A-Trust-nQual-03
-================
------BEGIN CERTIFICATE-----
-MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
-Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
-a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
-dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
-RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
-ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
-c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
-zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
-yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
-SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
-iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
-cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
-eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
-ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
-sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
-JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
-mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
-ahq97BvIxYSazQ==
------END CERTIFICATE-----
-
-TWCA Root Certification Authority
-=================================
------BEGIN CERTIFICATE-----
-MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
-VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
-EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
-IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
-QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
-oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
-4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
-y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
-BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
-9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
-mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
-QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
-T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
-Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
------END CERTIFICATE-----
-
-Security Communication RootCA2
-==============================
------BEGIN CERTIFICATE-----
-MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
-U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
-dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
-SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
-aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
-+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
-3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
-spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
-EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
-QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
-CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
-u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
-3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
-tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
-mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
------END CERTIFICATE-----
-
-EC-ACC
-======
------BEGIN CERTIFICATE-----
-MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
-BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
-ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
-VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
-CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
-BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
-MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
-SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
-Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
-cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
-w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
-ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
-HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
-E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
-0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
-VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
-Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
-dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
-lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
-Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
-l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
-E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
-5EI=
------END CERTIFICATE-----
-
-Hellenic Academic and Research Institutions RootCA 2011
-=======================================================
------BEGIN CERTIFICATE-----
-MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
-O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
-aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
-IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
-AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
-IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
-IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
-1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
-71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
-8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
-3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
-MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
-MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
-b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
-XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
-TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
-/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
-7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
------END CERTIFICATE-----
-
-Actalis Authentication Root CA
-==============================
------BEGIN CERTIFICATE-----
-MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
-BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
-AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
-MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
-IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
-IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
-wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
-by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
-zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
-YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
-oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
-EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
-hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
-EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
-jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
-iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
-ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
-WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
-JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
-K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
-Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
-4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
-2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
-lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
-OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
-vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
------END CERTIFICATE-----
-
-Trustis FPS Root CA
-===================
------BEGIN CERTIFICATE-----
-MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
-EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
-IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
-BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
-RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
-H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
-cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
-o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
-AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
-BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
-GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
-yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
-8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
-l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
-iB6XzCGcKQENZetX2fNXlrtIzYE=
------END CERTIFICATE-----
-
-StartCom Certification Authority
-================================
------BEGIN CERTIFICATE-----
-MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
-U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
-ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
-NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
-LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
-U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
-ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
-o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
-Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
-eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
-2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
-6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
-osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
-untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
-UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
-37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
-VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
-Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
-dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
-c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
-bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
-aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
-aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
-L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
-cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
-fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
-N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
-Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
-tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
-e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
-2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
-HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
-JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
-D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
------END CERTIFICATE-----
-
-StartCom Certification Authority G2
-===================================
------BEGIN CERTIFICATE-----
-MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
-U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
-RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE
-ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp
-dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O
-o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG
-4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi
-Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul
-Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs
-O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H
-vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L
-nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS
-FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa
-z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ
-KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K
-2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk
-J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+
-JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG
-/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc
-nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld
-blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc
-l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm
-7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm
-obp573PYtlNXLfbQ4ddI
------END CERTIFICATE-----
-
-Buypass Class 2 Root CA
-=======================
------BEGIN CERTIFICATE-----
-MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
-QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X
-DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
-eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1
-g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
-9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
-/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU
-CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff
-awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI
-zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn
-Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX
-Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs
-M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
-VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
-AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
-A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI
-osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S
-aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd
-DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD
-LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0
-oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC
-wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS
-CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN
-rJgWVqA=
------END CERTIFICATE-----
-
-Buypass Class 3 Root CA
-=======================
------BEGIN CERTIFICATE-----
-MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
-QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X
-DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
-eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH
-sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR
-5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh
-7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ
-ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH
-2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV
-/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ
-RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA
-Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq
-j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
-VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
-AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
-cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G
-uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG
-Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8
-ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2
-KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz
-6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug
-UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe
-eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi
-Cp/HuZc=
------END CERTIFICATE-----
-
-T-TeleSec GlobalRoot Class 3
-============================
------BEGIN CERTIFICATE-----
-MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
-IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
-cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
-MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
-dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
-ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
-9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
-NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
-iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
-0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
-AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
-fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
-ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
-P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
-e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
------END CERTIFICATE-----
-
-EE Certification Centre Root CA
-===============================
------BEGIN CERTIFICATE-----
-MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
-EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
-dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
-MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
-UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
-ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
-DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
-TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
-rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
-93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
-P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
-AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
-MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
-BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
-xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
-lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
-uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
-3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
-dcGWxZ0=
------END CERTIFICATE-----
-
-TURKTRUST Certificate Services Provider Root 2007
-=================================================
------BEGIN CERTIFICATE-----
-MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
-bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
-MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
-QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X
-DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl
-a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN
-BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
-bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N
-YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv
-KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya
-KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT
-rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC
-AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s
-Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I
-aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO
-Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb
-BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK
-poRq0Tl9
------END CERTIFICATE-----
-
-D-TRUST Root Class 3 CA 2 2009
-==============================
------BEGIN CERTIFICATE-----
-MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
-DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
-Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
-LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
-ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
-BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
-KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
-p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
-AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
-4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
-eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
-MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
-PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
-OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
-2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
-o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
-dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
-X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
------END CERTIFICATE-----
-
-D-TRUST Root Class 3 CA 2 EV 2009
-=================================
------BEGIN CERTIFICATE-----
-MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
-DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
-OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
-DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
-OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
-egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
-zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
-7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
-sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
-11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
-cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
-ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
-MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
-b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
-c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
-PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
-nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
-ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
-NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
-w9y4AyHqnxbxLFS1
------END CERTIFICATE-----
-
-PSCProcert
-==========
------BEGIN CERTIFICATE-----
-MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk
-ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ
-MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz
-dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl
-cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw
-IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw
-MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w
-DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD
-ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp
-Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC
-wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA
-3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh
-RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO
-EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2
-0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH
-0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU
-td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw
-Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp
-r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/
-AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz
-Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId
-xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp
-ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH
-EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h
-Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k
-ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG
-9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG
-MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG
-LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52
-ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy
-YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v
-Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o
-dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq
-T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN
-g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q
-uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1
-n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn
-FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo
-5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq
-3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5
-poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
-eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
------END CERTIFICATE-----
-
-China Internet Network Information Center EV Certificates Root
-==============================================================
------BEGIN CERTIFICATE-----
-MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
-BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
-aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
-Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
-A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
-PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
-cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
-jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
-98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
-klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
-KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
-7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
-HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
-glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
-0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
-7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
-ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
-5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
------END CERTIFICATE-----
-
-Swisscom Root CA 2
-==================
------BEGIN CERTIFICATE-----
-MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG
-EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
-dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2
-MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
-aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC
-IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM
-LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo
-ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ
-wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH
-Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a
-SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS
-NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab
-mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY
-Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3
-qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
-HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O
-BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu
-MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO
-v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ
-82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz
-o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs
-a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx
-OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW
-mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o
-+sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC
-rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX
-5OfNeOI5wSsSnqaeG8XmDtkx2Q==
------END CERTIFICATE-----
-
-Swisscom Root EV CA 2
-=====================
------BEGIN CERTIFICATE-----
-MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE
-BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl
-cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN
-MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT
-HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg
-Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz
-o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy
-Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti
-GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li
-qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH
-Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG
-alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa
-m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox
-bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi
-xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/
-BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED
-MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB
-bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL
-j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU
-wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7
-XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH
-59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/
-23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq
-J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA
-HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi
-uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW
-l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
------END CERTIFICATE-----
-
-CA Disig Root R1
-================
------BEGIN CERTIFICATE-----
-MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw
-EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp
-ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx
-EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp
-c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy
-3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8
-u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2
-m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk
-CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa
-YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6
-vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL
-LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX
-ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is
-XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV
-HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ
-04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR
-xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B
-LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM
-CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb
-VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85
-YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS
-ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix
-lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N
-UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ
-a7+h89n07eLw4+1knj0vllJPgFOL
------END CERTIFICATE-----
-
-CA Disig Root R2
-================
------BEGIN CERTIFICATE-----
-MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw
-EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp
-ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx
-EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp
-c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC
-w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia
-xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7
-A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S
-GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV
-g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa
-5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE
-koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A
-Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i
-Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV
-HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u
-Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM
-tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV
-sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je
-dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8
-1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx
-mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01
-utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0
-sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg
-UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV
-7+ZtsH8tZ/3zbBt1RqPlShfppNcL
------END CERTIFICATE-----
-
-ACCVRAIZ1
-=========
------BEGIN CERTIFICATE-----
-MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
-SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
-MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
-UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
-DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
-jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
-RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
-aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
-0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
-WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
-8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
-5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
-9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
-Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
-Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
-Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
-VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
-Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
-QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
-AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
-YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
-AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
-IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
-aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
-dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
-MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
-hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
-R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
-YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
-nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
-TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
-sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
-I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
-Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
-3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
-EfbRD0tVNEYqi4Y7
------END CERTIFICATE-----
-
-TWCA Global Root CA
-===================
------BEGIN CERTIFICATE-----
-MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT
-CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD
-QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK
-EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg
-Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C
-nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV
-r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR
-Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV
-tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W
-KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99
-sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p
-yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn
-kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI
-zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC
-AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g
-cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
-LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M
-8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg
-/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg
-lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP
-A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m
-i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8
-EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3
-zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=
------END CERTIFICATE-----
-
-TeliaSonera Root CA v1
-======================
------BEGIN CERTIFICATE-----
-MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
-CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4
-MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW
-VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+
-6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA
-3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k
-B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn
-Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH
-oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3
-F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ
-oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7
-gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc
-TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB
-AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW
-DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm
-zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
-0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW
-pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV
-G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc
-c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT
-JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2
-qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6
-Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
-WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
------END CERTIFICATE-----
-
-E-Tugra Certification Authority
-===============================
------BEGIN CERTIFICATE-----
-MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
-DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
-ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
-ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
-NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
-QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
-cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
-DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
-MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
-hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
-CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
-ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
-BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
-E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
-rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
-jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
-rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
-dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
-/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
-MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
-kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
-XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
-VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
-a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
-dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
-KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
-Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
-8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
-C7TbO6Orb1wdtn7os4I07QZcJA==
------END CERTIFICATE-----
-
-T-TeleSec GlobalRoot Class 2
-============================
------BEGIN CERTIFICATE-----
-MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
-IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
-cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
-MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
-dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
-ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
-SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
-vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
-2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
-WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
-YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
-r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
-vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
-3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
-9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
------END CERTIFICATE-----
-
-Atos TrustedRoot 2011
-=====================
------BEGIN CERTIFICATE-----
-MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
-cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
-MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
-A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
-hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
-54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
-DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
-HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
-z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
-l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
-bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
-CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
-k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
-TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
-61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
-3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
------END CERTIFICATE-----
-
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/StaticClient.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/StaticClient.php
deleted file mode 100644
index dbd4c18..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/StaticClient.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\ClientInterface;
-use Guzzle\Stream\StreamRequestFactoryInterface;
-use Guzzle\Stream\PhpStreamRequestFactory;
-
-/**
- * Simplified interface to Guzzle that does not require a class to be instantiated
- */
-final class StaticClient
-{
- /** @var Client Guzzle client */
- private static $client;
-
- /**
- * Mount the client to a simpler class name for a specific client
- *
- * @param string $className Class name to use to mount
- * @param ClientInterface $client Client used to send requests
- */
- public static function mount($className = 'Guzzle', ClientInterface $client = null)
- {
- class_alias(__CLASS__, $className);
- if ($client) {
- self::$client = $client;
- }
- }
-
- /**
- * @param string $method HTTP request method (GET, POST, HEAD, DELETE, PUT, etc)
- * @param string $url URL of the request
- * @param array $options Options to use with the request. See: Guzzle\Http\Message\RequestFactory::applyOptions()
- * @return \Guzzle\Http\Message\Response|\Guzzle\Stream\Stream
- */
- public static function request($method, $url, $options = array())
- {
- // @codeCoverageIgnoreStart
- if (!self::$client) {
- self::$client = new Client();
- }
- // @codeCoverageIgnoreEnd
-
- $request = self::$client->createRequest($method, $url, null, null, $options);
-
- if (isset($options['stream'])) {
- if ($options['stream'] instanceof StreamRequestFactoryInterface) {
- return $options['stream']->fromRequest($request);
- } elseif ($options['stream'] == true) {
- $streamFactory = new PhpStreamRequestFactory();
- return $streamFactory->fromRequest($request);
- }
- }
-
- return $request->send();
- }
-
- /**
- * Send a GET request
- *
- * @param string $url URL of the request
- * @param array $options Array of request options
- *
- * @return \Guzzle\Http\Message\Response
- * @see Guzzle::request for a list of available options
- */
- public static function get($url, $options = array())
- {
- return self::request('GET', $url, $options);
- }
-
- /**
- * Send a HEAD request
- *
- * @param string $url URL of the request
- * @param array $options Array of request options
- *
- * @return \Guzzle\Http\Message\Response
- * @see Guzzle::request for a list of available options
- */
- public static function head($url, $options = array())
- {
- return self::request('HEAD', $url, $options);
- }
-
- /**
- * Send a DELETE request
- *
- * @param string $url URL of the request
- * @param array $options Array of request options
- *
- * @return \Guzzle\Http\Message\Response
- * @see Guzzle::request for a list of available options
- */
- public static function delete($url, $options = array())
- {
- return self::request('DELETE', $url, $options);
- }
-
- /**
- * Send a POST request
- *
- * @param string $url URL of the request
- * @param array $options Array of request options
- *
- * @return \Guzzle\Http\Message\Response
- * @see Guzzle::request for a list of available options
- */
- public static function post($url, $options = array())
- {
- return self::request('POST', $url, $options);
- }
-
- /**
- * Send a PUT request
- *
- * @param string $url URL of the request
- * @param array $options Array of request options
- *
- * @return \Guzzle\Http\Message\Response
- * @see Guzzle::request for a list of available options
- */
- public static function put($url, $options = array())
- {
- return self::request('PUT', $url, $options);
- }
-
- /**
- * Send a PATCH request
- *
- * @param string $url URL of the request
- * @param array $options Array of request options
- *
- * @return \Guzzle\Http\Message\Response
- * @see Guzzle::request for a list of available options
- */
- public static function patch($url, $options = array())
- {
- return self::request('PATCH', $url, $options);
- }
-
- /**
- * Send an OPTIONS request
- *
- * @param string $url URL of the request
- * @param array $options Array of request options
- *
- * @return \Guzzle\Http\Message\Response
- * @see Guzzle::request for a list of available options
- */
- public static function options($url, $options = array())
- {
- return self::request('OPTIONS', $url, $options);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Url.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Url.php
deleted file mode 100644
index 6a4e772..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/Url.php
+++ /dev/null
@@ -1,554 +0,0 @@
-<?php
-
-namespace Guzzle\Http;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * Parses and generates URLs based on URL parts. In favor of performance, URL parts are not validated.
- */
-class Url
-{
- protected $scheme;
- protected $host;
- protected $port;
- protected $username;
- protected $password;
- protected $path = '';
- protected $fragment;
-
- /** @var QueryString Query part of the URL */
- protected $query;
-
- /**
- * Factory method to create a new URL from a URL string
- *
- * @param string $url Full URL used to create a Url object
- *
- * @return Url
- * @throws InvalidArgumentException
- */
- public static function factory($url)
- {
- static $defaults = array('scheme' => null, 'host' => null, 'path' => null, 'port' => null, 'query' => null,
- 'user' => null, 'pass' => null, 'fragment' => null);
-
- if (false === ($parts = parse_url($url))) {
- throw new InvalidArgumentException('Was unable to parse malformed url: ' . $url);
- }
-
- $parts += $defaults;
-
- // Convert the query string into a QueryString object
- if ($parts['query'] || 0 !== strlen($parts['query'])) {
- $parts['query'] = QueryString::fromString($parts['query']);
- }
-
- return new static($parts['scheme'], $parts['host'], $parts['user'],
- $parts['pass'], $parts['port'], $parts['path'], $parts['query'],
- $parts['fragment']);
- }
-
- /**
- * Build a URL from parse_url parts. The generated URL will be a relative URL if a scheme or host are not provided.
- *
- * @param array $parts Array of parse_url parts
- *
- * @return string
- */
- public static function buildUrl(array $parts)
- {
- $url = $scheme = '';
-
- if (isset($parts['scheme'])) {
- $scheme = $parts['scheme'];
- $url .= $scheme . ':';
- }
-
- if (isset($parts['host'])) {
- $url .= '//';
- if (isset($parts['user'])) {
- $url .= $parts['user'];
- if (isset($parts['pass'])) {
- $url .= ':' . $parts['pass'];
- }
- $url .= '@';
- }
-
- $url .= $parts['host'];
-
- // Only include the port if it is not the default port of the scheme
- if (isset($parts['port'])
- && !(($scheme == 'http' && $parts['port'] == 80) || ($scheme == 'https' && $parts['port'] == 443))
- ) {
- $url .= ':' . $parts['port'];
- }
- }
-
- // Add the path component if present
- if (isset($parts['path']) && 0 !== strlen($parts['path'])) {
- // Always ensure that the path begins with '/' if set and something is before the path
- if ($url && $parts['path'][0] != '/' && substr($url, -1) != '/') {
- $url .= '/';
- }
- $url .= $parts['path'];
- }
-
- // Add the query string if present
- if (isset($parts['query'])) {
- $url .= '?' . $parts['query'];
- }
-
- // Ensure that # is only added to the url if fragment contains anything.
- if (isset($parts['fragment'])) {
- $url .= '#' . $parts['fragment'];
- }
-
- return $url;
- }
-
- /**
- * Create a new URL from URL parts
- *
- * @param string $scheme Scheme of the URL
- * @param string $host Host of the URL
- * @param string $username Username of the URL
- * @param string $password Password of the URL
- * @param int $port Port of the URL
- * @param string $path Path of the URL
- * @param QueryString|array|string $query Query string of the URL
- * @param string $fragment Fragment of the URL
- */
- public function __construct($scheme, $host, $username = null, $password = null, $port = null, $path = null, QueryString $query = null, $fragment = null)
- {
- $this->scheme = $scheme;
- $this->host = $host;
- $this->port = $port;
- $this->username = $username;
- $this->password = $password;
- $this->fragment = $fragment;
- if (!$query) {
- $this->query = new QueryString();
- } else {
- $this->setQuery($query);
- }
- $this->setPath($path);
- }
-
- /**
- * Clone the URL
- */
- public function __clone()
- {
- $this->query = clone $this->query;
- }
-
- /**
- * Returns the URL as a URL string
- *
- * @return string
- */
- public function __toString()
- {
- return self::buildUrl($this->getParts());
- }
-
- /**
- * Get the parts of the URL as an array
- *
- * @return array
- */
- public function getParts()
- {
- $query = (string) $this->query;
-
- return array(
- 'scheme' => $this->scheme,
- 'user' => $this->username,
- 'pass' => $this->password,
- 'host' => $this->host,
- 'port' => $this->port,
- 'path' => $this->getPath(),
- 'query' => $query !== '' ? $query : null,
- 'fragment' => $this->fragment,
- );
- }
-
- /**
- * Set the host of the request.
- *
- * @param string $host Host to set (e.g. www.yahoo.com, yahoo.com)
- *
- * @return Url
- */
- public function setHost($host)
- {
- if (strpos($host, ':') === false) {
- $this->host = $host;
- } else {
- list($host, $port) = explode(':', $host);
- $this->host = $host;
- $this->setPort($port);
- }
-
- return $this;
- }
-
- /**
- * Get the host part of the URL
- *
- * @return string
- */
- public function getHost()
- {
- return $this->host;
- }
-
- /**
- * Set the scheme part of the URL (http, https, ftp, etc)
- *
- * @param string $scheme Scheme to set
- *
- * @return Url
- */
- public function setScheme($scheme)
- {
- if ($this->scheme == 'http' && $this->port == 80) {
- $this->port = null;
- } elseif ($this->scheme == 'https' && $this->port == 443) {
- $this->port = null;
- }
-
- $this->scheme = $scheme;
-
- return $this;
- }
-
- /**
- * Get the scheme part of the URL
- *
- * @return string
- */
- public function getScheme()
- {
- return $this->scheme;
- }
-
- /**
- * Set the port part of the URL
- *
- * @param int $port Port to set
- *
- * @return Url
- */
- public function setPort($port)
- {
- $this->port = $port;
-
- return $this;
- }
-
- /**
- * Get the port part of the URl. Will return the default port for a given scheme if no port has been set.
- *
- * @return int|null
- */
- public function getPort()
- {
- if ($this->port) {
- return $this->port;
- } elseif ($this->scheme == 'http') {
- return 80;
- } elseif ($this->scheme == 'https') {
- return 443;
- }
-
- return null;
- }
-
- /**
- * Set the path part of the URL
- *
- * @param array|string $path Path string or array of path segments
- *
- * @return Url
- */
- public function setPath($path)
- {
- static $pathReplace = array(' ' => '%20', '?' => '%3F');
- if (is_array($path)) {
- $path = '/' . implode('/', $path);
- }
-
- $this->path = strtr($path, $pathReplace);
-
- return $this;
- }
-
- /**
- * Normalize the URL so that double slashes and relative paths are removed
- *
- * @return Url
- */
- public function normalizePath()
- {
- if (!$this->path || $this->path == '/' || $this->path == '*') {
- return $this;
- }
-
- $results = array();
- $segments = $this->getPathSegments();
- foreach ($segments as $segment) {
- if ($segment == '..') {
- array_pop($results);
- } elseif ($segment != '.' && $segment != '') {
- $results[] = $segment;
- }
- }
-
- // Combine the normalized parts and add the leading slash if needed
- $this->path = ($this->path[0] == '/' ? '/' : '') . implode('/', $results);
-
- // Add the trailing slash if necessary
- if ($this->path != '/' && end($segments) == '') {
- $this->path .= '/';
- }
-
- return $this;
- }
-
- /**
- * Add a relative path to the currently set path.
- *
- * @param string $relativePath Relative path to add
- *
- * @return Url
- */
- public function addPath($relativePath)
- {
- if ($relativePath != '/' && is_string($relativePath) && strlen($relativePath) > 0) {
- // Add a leading slash if needed
- if ($relativePath[0] != '/') {
- $relativePath = '/' . $relativePath;
- }
- $this->setPath(str_replace('//', '/', $this->path . $relativePath));
- }
-
- return $this;
- }
-
- /**
- * Get the path part of the URL
- *
- * @return string
- */
- public function getPath()
- {
- return $this->path;
- }
-
- /**
- * Get the path segments of the URL as an array
- *
- * @return array
- */
- public function getPathSegments()
- {
- return array_slice(explode('/', $this->getPath()), 1);
- }
-
- /**
- * Set the password part of the URL
- *
- * @param string $password Password to set
- *
- * @return Url
- */
- public function setPassword($password)
- {
- $this->password = $password;
-
- return $this;
- }
-
- /**
- * Get the password part of the URL
- *
- * @return null|string
- */
- public function getPassword()
- {
- return $this->password;
- }
-
- /**
- * Set the username part of the URL
- *
- * @param string $username Username to set
- *
- * @return Url
- */
- public function setUsername($username)
- {
- $this->username = $username;
-
- return $this;
- }
-
- /**
- * Get the username part of the URl
- *
- * @return null|string
- */
- public function getUsername()
- {
- return $this->username;
- }
-
- /**
- * Get the query part of the URL as a QueryString object
- *
- * @return QueryString
- */
- public function getQuery()
- {
- return $this->query;
- }
-
- /**
- * Set the query part of the URL
- *
- * @param QueryString|string|array $query Query to set
- *
- * @return Url
- */
- public function setQuery($query)
- {
- if (is_string($query)) {
- $output = null;
- parse_str($query, $output);
- $this->query = new QueryString($output);
- } elseif (is_array($query)) {
- $this->query = new QueryString($query);
- } elseif ($query instanceof QueryString) {
- $this->query = $query;
- }
-
- return $this;
- }
-
- /**
- * Get the fragment part of the URL
- *
- * @return null|string
- */
- public function getFragment()
- {
- return $this->fragment;
- }
-
- /**
- * Set the fragment part of the URL
- *
- * @param string $fragment Fragment to set
- *
- * @return Url
- */
- public function setFragment($fragment)
- {
- $this->fragment = $fragment;
-
- return $this;
- }
-
- /**
- * Check if this is an absolute URL
- *
- * @return bool
- */
- public function isAbsolute()
- {
- return $this->scheme && $this->host;
- }
-
- /**
- * Combine the URL with another URL. Follows the rules specific in RFC 3986 section 5.4.
- *
- * @param string $url Relative URL to combine with
- * @param bool $strictRfc3986 Set to true to use strict RFC 3986 compliance when merging paths. When first
- * released, Guzzle used an incorrect algorithm for combining relative URL paths. In
- * order to not break users, we introduced this flag to allow the merging of URLs based
- * on strict RFC 3986 section 5.4.1. This means that "http://a.com/foo/baz" merged with
- * "bar" would become "http://a.com/foo/bar". When this value is set to false, it would
- * become "http://a.com/foo/baz/bar".
- * @return Url
- * @throws InvalidArgumentException
- * @link http://tools.ietf.org/html/rfc3986#section-5.4
- */
- public function combine($url, $strictRfc3986 = false)
- {
- $url = self::factory($url);
-
- // Use the more absolute URL as the base URL
- if (!$this->isAbsolute() && $url->isAbsolute()) {
- $url = $url->combine($this);
- }
-
- // Passing a URL with a scheme overrides everything
- if ($buffer = $url->getScheme()) {
- $this->scheme = $buffer;
- $this->host = $url->getHost();
- $this->port = $url->getPort();
- $this->username = $url->getUsername();
- $this->password = $url->getPassword();
- $this->path = $url->getPath();
- $this->query = $url->getQuery();
- $this->fragment = $url->getFragment();
- return $this;
- }
-
- // Setting a host overrides the entire rest of the URL
- if ($buffer = $url->getHost()) {
- $this->host = $buffer;
- $this->port = $url->getPort();
- $this->username = $url->getUsername();
- $this->password = $url->getPassword();
- $this->path = $url->getPath();
- $this->query = $url->getQuery();
- $this->fragment = $url->getFragment();
- return $this;
- }
-
- $path = $url->getPath();
- $query = $url->getQuery();
-
- if (!$path) {
- if (count($query)) {
- $this->addQuery($query, $strictRfc3986);
- }
- } else {
- if ($path[0] == '/') {
- $this->path = $path;
- } elseif ($strictRfc3986) {
- $this->path .= '/../' . $path;
- } else {
- $this->path .= '/' . $path;
- }
- $this->normalizePath();
- $this->addQuery($query, $strictRfc3986);
- }
-
- $this->fragment = $url->getFragment();
-
- return $this;
- }
-
- private function addQuery(QueryString $new, $strictRfc386)
- {
- if (!$strictRfc386) {
- $new->merge($this->query);
- }
-
- $this->query = $new;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/composer.json
deleted file mode 100644
index 9384a5b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Http/composer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "guzzle/http",
- "description": "HTTP libraries used by Guzzle",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["http client", "http", "client", "Guzzle", "curl"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/common": "self.version",
- "guzzle/parser": "self.version",
- "guzzle/stream": "self.version"
- },
- "suggest": {
- "ext-curl": "*"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Http": "" }
- },
- "target-dir": "Guzzle/Http",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/Inflector.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/Inflector.php
deleted file mode 100644
index c699773..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/Inflector.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Guzzle\Inflection;
-
-/**
- * Default inflection implementation
- */
-class Inflector implements InflectorInterface
-{
- /** @var InflectorInterface */
- protected static $default;
-
- /**
- * Get the default inflector object that has support for caching
- *
- * @return MemoizingInflector
- */
- public static function getDefault()
- {
- // @codeCoverageIgnoreStart
- if (!self::$default) {
- self::$default = new MemoizingInflector(new self());
- }
- // @codeCoverageIgnoreEnd
-
- return self::$default;
- }
-
- public function snake($word)
- {
- return ctype_lower($word) ? $word : strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", $word));
- }
-
- public function camel($word)
- {
- return str_replace(' ', '', ucwords(strtr($word, '_-', ' ')));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/InflectorInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/InflectorInterface.php
deleted file mode 100644
index 321d718..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/InflectorInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Inflection;
-
-/**
- * Inflector interface used to convert the casing of words
- */
-interface InflectorInterface
-{
- /**
- * Converts strings from camel case to snake case (e.g. CamelCase camel_case).
- *
- * @param string $word Word to convert to snake case
- *
- * @return string
- */
- public function snake($word);
-
- /**
- * Converts strings from snake_case to upper CamelCase
- *
- * @param string $word Value to convert into upper CamelCase
- *
- * @return string
- */
- public function camel($word);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/MemoizingInflector.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/MemoizingInflector.php
deleted file mode 100644
index 32968d6..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/MemoizingInflector.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace Guzzle\Inflection;
-
-/**
- * Decorator used to add memoization to previously inflected words
- */
-class MemoizingInflector implements InflectorInterface
-{
- /** @var array Array of cached inflections */
- protected $cache = array(
- 'snake' => array(),
- 'camel' => array()
- );
-
- /** @var int Max entries per cache */
- protected $maxCacheSize;
-
- /** @var InflectorInterface Decorated inflector */
- protected $decoratedInflector;
-
- /**
- * @param InflectorInterface $inflector Inflector being decorated
- * @param int $maxCacheSize Maximum number of cached items to hold per cache
- */
- public function __construct(InflectorInterface $inflector, $maxCacheSize = 500)
- {
- $this->decoratedInflector = $inflector;
- $this->maxCacheSize = $maxCacheSize;
- }
-
- public function snake($word)
- {
- if (!isset($this->cache['snake'][$word])) {
- $this->pruneCache('snake');
- $this->cache['snake'][$word] = $this->decoratedInflector->snake($word);
- }
-
- return $this->cache['snake'][$word];
- }
-
- /**
- * Converts strings from snake_case to upper CamelCase
- *
- * @param string $word Value to convert into upper CamelCase
- *
- * @return string
- */
- public function camel($word)
- {
- if (!isset($this->cache['camel'][$word])) {
- $this->pruneCache('camel');
- $this->cache['camel'][$word] = $this->decoratedInflector->camel($word);
- }
-
- return $this->cache['camel'][$word];
- }
-
- /**
- * Prune one of the named caches by removing 20% of the cache if it is full
- *
- * @param string $cache Type of cache to prune
- */
- protected function pruneCache($cache)
- {
- if (count($this->cache[$cache]) == $this->maxCacheSize) {
- $this->cache[$cache] = array_slice($this->cache[$cache], $this->maxCacheSize * 0.2);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/PreComputedInflector.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/PreComputedInflector.php
deleted file mode 100644
index db37e4f..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/PreComputedInflector.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Guzzle\Inflection;
-
-/**
- * Decorator used to add pre-computed inflection mappings to an inflector
- */
-class PreComputedInflector implements InflectorInterface
-{
- /** @var array Array of pre-computed inflections */
- protected $mapping = array(
- 'snake' => array(),
- 'camel' => array()
- );
-
- /** @var InflectorInterface Decorated inflector */
- protected $decoratedInflector;
-
- /**
- * @param InflectorInterface $inflector Inflector being decorated
- * @param array $snake Hash of pre-computed camel to snake
- * @param array $camel Hash of pre-computed snake to camel
- * @param bool $mirror Mirror snake and camel reflections
- */
- public function __construct(InflectorInterface $inflector, array $snake = array(), array $camel = array(), $mirror = false)
- {
- if ($mirror) {
- $camel = array_merge(array_flip($snake), $camel);
- $snake = array_merge(array_flip($camel), $snake);
- }
-
- $this->decoratedInflector = $inflector;
- $this->mapping = array(
- 'snake' => $snake,
- 'camel' => $camel
- );
- }
-
- public function snake($word)
- {
- return isset($this->mapping['snake'][$word])
- ? $this->mapping['snake'][$word]
- : $this->decoratedInflector->snake($word);
- }
-
- /**
- * Converts strings from snake_case to upper CamelCase
- *
- * @param string $word Value to convert into upper CamelCase
- *
- * @return string
- */
- public function camel($word)
- {
- return isset($this->mapping['camel'][$word])
- ? $this->mapping['camel'][$word]
- : $this->decoratedInflector->camel($word);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/composer.json
deleted file mode 100644
index 93f9e7b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Inflection/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "guzzle/inflection",
- "description": "Guzzle inflection component",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["inflection", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Inflection": "" }
- },
- "target-dir": "Guzzle/Inflection",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/AppendIterator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/AppendIterator.php
deleted file mode 100644
index 1b6bd7e..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/AppendIterator.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Guzzle\Iterator;
-
-/**
- * AppendIterator that is not affected by https://bugs.php.net/bug.php?id=49104
- */
-class AppendIterator extends \AppendIterator
-{
- /**
- * Works around the bug in which PHP calls rewind() and next() when appending
- *
- * @param \Iterator $iterator Iterator to append
- */
- public function append(\Iterator $iterator)
- {
- $this->getArrayIterator()->append($iterator);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/ChunkedIterator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/ChunkedIterator.php
deleted file mode 100644
index d76cdd4..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/ChunkedIterator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-namespace Guzzle\Iterator;
-
-/**
- * Pulls out chunks from an inner iterator and yields the chunks as arrays
- */
-class ChunkedIterator extends \IteratorIterator
-{
- /** @var int Size of each chunk */
- protected $chunkSize;
-
- /** @var array Current chunk */
- protected $chunk;
-
- /**
- * @param \Traversable $iterator Traversable iterator
- * @param int $chunkSize Size to make each chunk
- * @throws \InvalidArgumentException
- */
- public function __construct(\Traversable $iterator, $chunkSize)
- {
- $chunkSize = (int) $chunkSize;
- if ($chunkSize < 0 ) {
- throw new \InvalidArgumentException("The chunk size must be equal or greater than zero; $chunkSize given");
- }
-
- parent::__construct($iterator);
- $this->chunkSize = $chunkSize;
- }
-
- public function rewind()
- {
- parent::rewind();
- $this->next();
- }
-
- public function next()
- {
- $this->chunk = array();
- for ($i = 0; $i < $this->chunkSize && parent::valid(); $i++) {
- $this->chunk[] = parent::current();
- parent::next();
- }
- }
-
- public function current()
- {
- return $this->chunk;
- }
-
- public function valid()
- {
- return (bool) $this->chunk;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/FilterIterator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/FilterIterator.php
deleted file mode 100644
index b103367..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/FilterIterator.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Iterator;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * Filters values using a callback
- *
- * Used when PHP 5.4's {@see \CallbackFilterIterator} is not available
- */
-class FilterIterator extends \FilterIterator
-{
- /** @var mixed Callback used for filtering */
- protected $callback;
-
- /**
- * @param \Iterator $iterator Traversable iterator
- * @param array|\Closure $callback Callback used for filtering. Return true to keep or false to filter.
- *
- * @throws InvalidArgumentException if the callback if not callable
- */
- public function __construct(\Iterator $iterator, $callback)
- {
- parent::__construct($iterator);
- if (!is_callable($callback)) {
- throw new InvalidArgumentException('The callback must be callable');
- }
- $this->callback = $callback;
- }
-
- public function accept()
- {
- return call_user_func($this->callback, $this->current());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MapIterator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MapIterator.php
deleted file mode 100644
index 7e586bd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MapIterator.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Guzzle\Iterator;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * Maps values before yielding
- */
-class MapIterator extends \IteratorIterator
-{
- /** @var mixed Callback */
- protected $callback;
-
- /**
- * @param \Traversable $iterator Traversable iterator
- * @param array|\Closure $callback Callback used for iterating
- *
- * @throws InvalidArgumentException if the callback if not callable
- */
- public function __construct(\Traversable $iterator, $callback)
- {
- parent::__construct($iterator);
- if (!is_callable($callback)) {
- throw new InvalidArgumentException('The callback must be callable');
- }
- $this->callback = $callback;
- }
-
- public function current()
- {
- return call_user_func($this->callback, parent::current());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MethodProxyIterator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MethodProxyIterator.php
deleted file mode 100644
index de4ab03..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/MethodProxyIterator.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Iterator;
-
-/**
- * Proxies missing method calls to the innermost iterator
- */
-class MethodProxyIterator extends \IteratorIterator
-{
- /**
- * Proxy method calls to the wrapped iterator
- *
- * @param string $name Name of the method
- * @param array $args Arguments to proxy
- *
- * @return mixed
- */
- public function __call($name, array $args)
- {
- $i = $this->getInnerIterator();
- while ($i instanceof \OuterIterator) {
- $i = $i->getInnerIterator();
- }
-
- return call_user_func_array(array($i, $name), $args);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/README.md b/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/README.md
deleted file mode 100644
index 8bb7e08..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-Guzzle Iterator
-===============
-
-Provides useful Iterators and Iterator decorators
-
-- ChunkedIterator: Pulls out chunks from an inner iterator and yields the chunks as arrays
-- FilterIterator: Used when PHP 5.4's CallbackFilterIterator is not available
-- MapIterator: Maps values before yielding
-- MethodProxyIterator: Proxies missing method calls to the innermost iterator
-
-### Installing via Composer
-
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-
-# Add Guzzle as a dependency
-php composer.phar require guzzle/iterator:~3.0
-```
-
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/composer.json
deleted file mode 100644
index ee17379..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Iterator/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/iterator",
- "description": "Provides helpful iterators and iterator decorators",
- "keywords": ["iterator", "guzzle"],
- "homepage": "http://guzzlephp.org/",
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/common": ">=2.8.0"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Iterator": "/" }
- },
- "target-dir": "Guzzle/Iterator",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/AbstractLogAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/AbstractLogAdapter.php
deleted file mode 100644
index 7f6271b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/AbstractLogAdapter.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-/**
- * Adapter class that allows Guzzle to log data using various logging implementations
- */
-abstract class AbstractLogAdapter implements LogAdapterInterface
-{
- protected $log;
-
- public function getLogObject()
- {
- return $this->log;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ArrayLogAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ArrayLogAdapter.php
deleted file mode 100644
index a70fc8d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ArrayLogAdapter.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-/**
- * Stores all log messages in an array
- */
-class ArrayLogAdapter implements LogAdapterInterface
-{
- protected $logs = array();
-
- public function log($message, $priority = LOG_INFO, $extras = array())
- {
- $this->logs[] = array('message' => $message, 'priority' => $priority, 'extras' => $extras);
- }
-
- /**
- * Get logged entries
- *
- * @return array
- */
- public function getLogs()
- {
- return $this->logs;
- }
-
- /**
- * Clears logged entries
- */
- public function clearLogs()
- {
- $this->logs = array();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ClosureLogAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ClosureLogAdapter.php
deleted file mode 100644
index d4bb73f..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/ClosureLogAdapter.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-/**
- * Logs messages using Closures. Closures combined with filtering can trigger application events based on log messages.
- */
-class ClosureLogAdapter extends AbstractLogAdapter
-{
- public function __construct($logObject)
- {
- if (!is_callable($logObject)) {
- throw new \InvalidArgumentException('Object must be callable');
- }
-
- $this->log = $logObject;
- }
-
- public function log($message, $priority = LOG_INFO, $extras = array())
- {
- call_user_func($this->log, $message, $priority, $extras);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/LogAdapterInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/LogAdapterInterface.php
deleted file mode 100644
index d7ac4ea..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/LogAdapterInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-/**
- * Adapter class that allows Guzzle to log data to various logging implementations.
- */
-interface LogAdapterInterface
-{
- /**
- * Log a message at a priority
- *
- * @param string $message Message to log
- * @param integer $priority Priority of message (use the \LOG_* constants of 0 - 7)
- * @param array $extras Extra information to log in event
- */
- public function log($message, $priority = LOG_INFO, $extras = array());
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MessageFormatter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MessageFormatter.php
deleted file mode 100644
index b5cfe9d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MessageFormatter.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-use Guzzle\Http\Curl\CurlHandle;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Message formatter used in various places in the framework
- *
- * Format messages using a template that can contain the the following variables:
- *
- * - {request}: Full HTTP request message
- * - {response}: Full HTTP response message
- * - {ts}: Timestamp
- * - {host}: Host of the request
- * - {method}: Method of the request
- * - {url}: URL of the request
- * - {host}: Host of the request
- * - {protocol}: Request protocol
- * - {version}: Protocol version
- * - {resource}: Resource of the request (path + query + fragment)
- * - {port}: Port of the request
- * - {hostname}: Hostname of the machine that sent the request
- * - {code}: Status code of the response (if available)
- * - {phrase}: Reason phrase of the response (if available)
- * - {curl_error}: Curl error message (if available)
- * - {curl_code}: Curl error code (if available)
- * - {curl_stderr}: Curl standard error (if available)
- * - {connect_time}: Time in seconds it took to establish the connection (if available)
- * - {total_time}: Total transaction time in seconds for last transfer (if available)
- * - {req_header_*}: Replace `*` with the lowercased name of a request header to add to the message
- * - {res_header_*}: Replace `*` with the lowercased name of a response header to add to the message
- * - {req_body}: Request body
- * - {res_body}: Response body
- */
-class MessageFormatter
-{
- const DEFAULT_FORMAT = "{hostname} {req_header_User-Agent} - [{ts}] \"{method} {resource} {protocol}/{version}\" {code} {res_header_Content-Length}";
- const DEBUG_FORMAT = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{curl_stderr}";
- const SHORT_FORMAT = '[{ts}] "{method} {resource} {protocol}/{version}" {code}';
-
- /**
- * @var string Template used to format log messages
- */
- protected $template;
-
- /**
- * @param string $template Log message template
- */
- public function __construct($template = self::DEFAULT_FORMAT)
- {
- $this->template = $template ?: self::DEFAULT_FORMAT;
- }
-
- /**
- * Set the template to use for logging
- *
- * @param string $template Log message template
- *
- * @return self
- */
- public function setTemplate($template)
- {
- $this->template = $template;
-
- return $this;
- }
-
- /**
- * Returns a formatted message
- *
- * @param RequestInterface $request Request that was sent
- * @param Response $response Response that was received
- * @param CurlHandle $handle Curl handle associated with the message
- * @param array $customData Associative array of custom template data
- *
- * @return string
- */
- public function format(
- RequestInterface $request,
- Response $response = null,
- CurlHandle $handle = null,
- array $customData = array()
- ) {
- $cache = $customData;
-
- return preg_replace_callback(
- '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
- function (array $matches) use ($request, $response, $handle, &$cache) {
-
- if (array_key_exists($matches[1], $cache)) {
- return $cache[$matches[1]];
- }
-
- $result = '';
- switch ($matches[1]) {
- case 'request':
- $result = (string) $request;
- break;
- case 'response':
- $result = (string) $response;
- break;
- case 'req_body':
- $result = $request instanceof EntityEnclosingRequestInterface
- ? (string) $request->getBody() : '';
- break;
- case 'res_body':
- $result = $response ? $response->getBody(true) : '';
- break;
- case 'ts':
- $result = gmdate('c');
- break;
- case 'method':
- $result = $request->getMethod();
- break;
- case 'url':
- $result = (string) $request->getUrl();
- break;
- case 'resource':
- $result = $request->getResource();
- break;
- case 'protocol':
- $result = 'HTTP';
- break;
- case 'version':
- $result = $request->getProtocolVersion();
- break;
- case 'host':
- $result = $request->getHost();
- break;
- case 'hostname':
- $result = gethostname();
- break;
- case 'port':
- $result = $request->getPort();
- break;
- case 'code':
- $result = $response ? $response->getStatusCode() : '';
- break;
- case 'phrase':
- $result = $response ? $response->getReasonPhrase() : '';
- break;
- case 'connect_time':
- $result = $handle && $handle->getInfo(CURLINFO_CONNECT_TIME)
- ? $handle->getInfo(CURLINFO_CONNECT_TIME)
- : ($response ? $response->getInfo('connect_time') : '');
- break;
- case 'total_time':
- $result = $handle && $handle->getInfo(CURLINFO_TOTAL_TIME)
- ? $handle->getInfo(CURLINFO_TOTAL_TIME)
- : ($response ? $response->getInfo('total_time') : '');
- break;
- case 'curl_error':
- $result = $handle ? $handle->getError() : '';
- break;
- case 'curl_code':
- $result = $handle ? $handle->getErrorNo() : '';
- break;
- case 'curl_stderr':
- $result = $handle ? $handle->getStderr() : '';
- break;
- default:
- if (strpos($matches[1], 'req_header_') === 0) {
- $result = $request->getHeader(substr($matches[1], 11));
- } elseif ($response && strpos($matches[1], 'res_header_') === 0) {
- $result = $response->getHeader(substr($matches[1], 11));
- }
- }
-
- $cache[$matches[1]] = $result;
- return $result;
- },
- $this->template
- );
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php
deleted file mode 100644
index 6afe7b6..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-use Monolog\Logger;
-
-/**
- * @deprecated
- * @codeCoverageIgnore
- */
-class MonologLogAdapter extends AbstractLogAdapter
-{
- /**
- * syslog to Monolog mappings
- */
- private static $mapping = array(
- LOG_DEBUG => Logger::DEBUG,
- LOG_INFO => Logger::INFO,
- LOG_WARNING => Logger::WARNING,
- LOG_ERR => Logger::ERROR,
- LOG_CRIT => Logger::CRITICAL,
- LOG_ALERT => Logger::ALERT
- );
-
- public function __construct(Logger $logObject)
- {
- $this->log = $logObject;
- }
-
- public function log($message, $priority = LOG_INFO, $extras = array())
- {
- $this->log->addRecord(self::$mapping[$priority], $message, $extras);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/PsrLogAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/PsrLogAdapter.php
deleted file mode 100644
index 38a2b60..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/PsrLogAdapter.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-use Psr\Log\LogLevel;
-use Psr\Log\LoggerInterface;
-
-/**
- * PSR-3 log adapter
- *
- * @link https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
- */
-class PsrLogAdapter extends AbstractLogAdapter
-{
- /**
- * syslog to PSR-3 mappings
- */
- private static $mapping = array(
- LOG_DEBUG => LogLevel::DEBUG,
- LOG_INFO => LogLevel::INFO,
- LOG_WARNING => LogLevel::WARNING,
- LOG_ERR => LogLevel::ERROR,
- LOG_CRIT => LogLevel::CRITICAL,
- LOG_ALERT => LogLevel::ALERT
- );
-
- public function __construct(LoggerInterface $logObject)
- {
- $this->log = $logObject;
- }
-
- public function log($message, $priority = LOG_INFO, $extras = array())
- {
- $this->log->log(self::$mapping[$priority], $message, $extras);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf1LogAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf1LogAdapter.php
deleted file mode 100644
index 0ea8e3b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf1LogAdapter.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-use Guzzle\Common\Version;
-
-/**
- * Adapts a Zend Framework 1 logger object
- * @deprecated
- * @codeCoverageIgnore
- */
-class Zf1LogAdapter extends AbstractLogAdapter
-{
- public function __construct(\Zend_Log $logObject)
- {
- $this->log = $logObject;
- Version::warn(__CLASS__ . ' is deprecated');
- }
-
- public function log($message, $priority = LOG_INFO, $extras = array())
- {
- $this->log->log($message, $priority, $extras);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf2LogAdapter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf2LogAdapter.php
deleted file mode 100644
index 863f6a1..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/Zf2LogAdapter.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Log;
-
-use Zend\Log\Logger;
-
-/**
- * Adapts a Zend Framework 2 logger object
- */
-class Zf2LogAdapter extends AbstractLogAdapter
-{
- public function __construct(Logger $logObject)
- {
- $this->log = $logObject;
- }
-
- public function log($message, $priority = LOG_INFO, $extras = array())
- {
- $this->log->log($priority, $message, $extras);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/composer.json
deleted file mode 100644
index a8213e8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Log/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "guzzle/log",
- "description": "Guzzle log adapter component",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["log", "adapter", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Log": "" }
- },
- "suggest": {
- "guzzle/http": "self.version"
- },
- "target-dir": "Guzzle/Log",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParser.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParser.php
deleted file mode 100644
index 4349eeb..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParser.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Cookie;
-
-/**
- * Default Guzzle implementation of a Cookie parser
- */
-class CookieParser implements CookieParserInterface
-{
- /** @var array Cookie part names to snake_case array values */
- protected static $cookieParts = array(
- 'domain' => 'Domain',
- 'path' => 'Path',
- 'max_age' => 'Max-Age',
- 'expires' => 'Expires',
- 'version' => 'Version',
- 'secure' => 'Secure',
- 'port' => 'Port',
- 'discard' => 'Discard',
- 'comment' => 'Comment',
- 'comment_url' => 'Comment-Url',
- 'http_only' => 'HttpOnly'
- );
-
- public function parseCookie($cookie, $host = null, $path = null, $decode = false)
- {
- // Explode the cookie string using a series of semicolons
- $pieces = array_filter(array_map('trim', explode(';', $cookie)));
-
- // The name of the cookie (first kvp) must include an equal sign.
- if (empty($pieces) || !strpos($pieces[0], '=')) {
- return false;
- }
-
- // Create the default return array
- $data = array_merge(array_fill_keys(array_keys(self::$cookieParts), null), array(
- 'cookies' => array(),
- 'data' => array(),
- 'path' => null,
- 'http_only' => false,
- 'discard' => false,
- 'domain' => $host
- ));
- $foundNonCookies = 0;
-
- // Add the cookie pieces into the parsed data array
- foreach ($pieces as $part) {
-
- $cookieParts = explode('=', $part, 2);
- $key = trim($cookieParts[0]);
-
- if (count($cookieParts) == 1) {
- // Can be a single value (e.g. secure, httpOnly)
- $value = true;
- } else {
- // Be sure to strip wrapping quotes
- $value = trim($cookieParts[1], " \n\r\t\0\x0B\"");
- if ($decode) {
- $value = urldecode($value);
- }
- }
-
- // Only check for non-cookies when cookies have been found
- if (!empty($data['cookies'])) {
- foreach (self::$cookieParts as $mapValue => $search) {
- if (!strcasecmp($search, $key)) {
- $data[$mapValue] = $mapValue == 'port' ? array_map('trim', explode(',', $value)) : $value;
- $foundNonCookies++;
- continue 2;
- }
- }
- }
-
- // If cookies have not yet been retrieved, or this value was not found in the pieces array, treat it as a
- // cookie. IF non-cookies have been parsed, then this isn't a cookie, it's cookie data. Cookies then data.
- $data[$foundNonCookies ? 'data' : 'cookies'][$key] = $value;
- }
-
- // Calculate the expires date
- if (!$data['expires'] && $data['max_age']) {
- $data['expires'] = time() + (int) $data['max_age'];
- }
-
- // Check path attribute according RFC6265 http://tools.ietf.org/search/rfc6265#section-5.2.4
- // "If the attribute-value is empty or if the first character of the
- // attribute-value is not %x2F ("/"):
- // Let cookie-path be the default-path.
- // Otherwise:
- // Let cookie-path be the attribute-value."
- if (!$data['path'] || substr($data['path'], 0, 1) !== '/') {
- $data['path'] = $this->getDefaultPath($path);
- }
-
- return $data;
- }
-
- /**
- * Get default cookie path according to RFC 6265
- * http://tools.ietf.org/search/rfc6265#section-5.1.4 Paths and Path-Match
- *
- * @param string $path Request uri-path
- *
- * @return string
- */
- protected function getDefaultPath($path) {
- // "The user agent MUST use an algorithm equivalent to the following algorithm
- // to compute the default-path of a cookie:"
-
- // "2. If the uri-path is empty or if the first character of the uri-path is not
- // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps.
- if (empty($path) || substr($path, 0, 1) !== '/') {
- return '/';
- }
-
- // "3. If the uri-path contains no more than one %x2F ("/") character, output
- // %x2F ("/") and skip the remaining step."
- if ($path === "/") {
- return $path;
- }
-
- $rightSlashPos = strrpos($path, '/');
- if ($rightSlashPos === 0) {
- return "/";
- }
-
- // "4. Output the characters of the uri-path from the first character up to,
- // but not including, the right-most %x2F ("/")."
- return substr($path, 0, $rightSlashPos);
-
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParserInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParserInterface.php
deleted file mode 100644
index d21ffe2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParserInterface.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Cookie;
-
-/**
- * Cookie parser interface
- */
-interface CookieParserInterface
-{
- /**
- * Parse a cookie string as set in a Set-Cookie HTTP header and return an associative array of data.
- *
- * @param string $cookie Cookie header value to parse
- * @param string $host Host of an associated request
- * @param string $path Path of an associated request
- * @param bool $decode Set to TRUE to urldecode cookie values
- *
- * @return array|bool Returns FALSE on failure or returns an array of arrays, with each of the sub arrays including:
- * - domain (string) - Domain of the cookie
- * - path (string) - Path of the cookie
- * - cookies (array) - Associative array of cookie names and values
- * - max_age (int) - Lifetime of the cookie in seconds
- * - version (int) - Version of the cookie specification. RFC 2965 is 1
- * - secure (bool) - Whether or not this is a secure cookie
- * - discard (bool) - Whether or not this is a discardable cookie
- * - custom (string) - Custom cookie data array
- * - comment (string) - How the cookie is intended to be used
- * - comment_url (str)- URL that contains info on how it will be used
- * - port (array|str) - Array of ports or null
- * - http_only (bool) - HTTP only cookie
- */
- public function parseCookie($cookie, $host = null, $path = null, $decode = false);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/AbstractMessageParser.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/AbstractMessageParser.php
deleted file mode 100644
index d25f9cc..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/AbstractMessageParser.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Message;
-
-/**
- * Implements shared message parsing functionality
- */
-abstract class AbstractMessageParser implements MessageParserInterface
-{
- /**
- * Create URL parts from HTTP message parts
- *
- * @param string $requestUrl Associated URL
- * @param array $parts HTTP message parts
- *
- * @return array
- */
- protected function getUrlPartsFromMessage($requestUrl, array $parts)
- {
- // Parse the URL information from the message
- $urlParts = array(
- 'path' => $requestUrl,
- 'scheme' => 'http'
- );
-
- // Check for the Host header
- if (isset($parts['headers']['Host'])) {
- $urlParts['host'] = $parts['headers']['Host'];
- } elseif (isset($parts['headers']['host'])) {
- $urlParts['host'] = $parts['headers']['host'];
- } else {
- $urlParts['host'] = null;
- }
-
- if (false === strpos($urlParts['host'], ':')) {
- $urlParts['port'] = '';
- } else {
- $hostParts = explode(':', $urlParts['host']);
- $urlParts['host'] = trim($hostParts[0]);
- $urlParts['port'] = (int) trim($hostParts[1]);
- if ($urlParts['port'] == 443) {
- $urlParts['scheme'] = 'https';
- }
- }
-
- // Check if a query is present
- $path = $urlParts['path'];
- $qpos = strpos($path, '?');
- if ($qpos) {
- $urlParts['query'] = substr($path, $qpos + 1);
- $urlParts['path'] = substr($path, 0, $qpos);
- } else {
- $urlParts['query'] = '';
- }
-
- return $urlParts;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParser.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParser.php
deleted file mode 100644
index efc1aa3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParser.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Message;
-
-/**
- * Default request and response parser used by Guzzle. Optimized for speed.
- */
-class MessageParser extends AbstractMessageParser
-{
- public function parseRequest($message)
- {
- if (!$message) {
- return false;
- }
-
- $parts = $this->parseMessage($message);
-
- // Parse the protocol and protocol version
- if (isset($parts['start_line'][2])) {
- $startParts = explode('/', $parts['start_line'][2]);
- $protocol = strtoupper($startParts[0]);
- $version = isset($startParts[1]) ? $startParts[1] : '1.1';
- } else {
- $protocol = 'HTTP';
- $version = '1.1';
- }
-
- $parsed = array(
- 'method' => strtoupper($parts['start_line'][0]),
- 'protocol' => $protocol,
- 'version' => $version,
- 'headers' => $parts['headers'],
- 'body' => $parts['body']
- );
-
- $parsed['request_url'] = $this->getUrlPartsFromMessage(isset($parts['start_line'][1]) ? $parts['start_line'][1] : '' , $parsed);
-
- return $parsed;
- }
-
- public function parseResponse($message)
- {
- if (!$message) {
- return false;
- }
-
- $parts = $this->parseMessage($message);
- list($protocol, $version) = explode('/', trim($parts['start_line'][0]));
-
- return array(
- 'protocol' => $protocol,
- 'version' => $version,
- 'code' => $parts['start_line'][1],
- 'reason_phrase' => isset($parts['start_line'][2]) ? $parts['start_line'][2] : '',
- 'headers' => $parts['headers'],
- 'body' => $parts['body']
- );
- }
-
- /**
- * Parse a message into parts
- *
- * @param string $message Message to parse
- *
- * @return array
- */
- protected function parseMessage($message)
- {
- $startLine = null;
- $headers = array();
- $body = '';
-
- // Iterate over each line in the message, accounting for line endings
- $lines = preg_split('/(\\r?\\n)/', $message, -1, PREG_SPLIT_DELIM_CAPTURE);
- for ($i = 0, $totalLines = count($lines); $i < $totalLines; $i += 2) {
-
- $line = $lines[$i];
-
- // If two line breaks were encountered, then this is the end of body
- if (empty($line)) {
- if ($i < $totalLines - 1) {
- $body = implode('', array_slice($lines, $i + 2));
- }
- break;
- }
-
- // Parse message headers
- if (!$startLine) {
- $startLine = explode(' ', $line, 3);
- } elseif (strpos($line, ':')) {
- $parts = explode(':', $line, 2);
- $key = trim($parts[0]);
- $value = isset($parts[1]) ? trim($parts[1]) : '';
- if (!isset($headers[$key])) {
- $headers[$key] = $value;
- } elseif (!is_array($headers[$key])) {
- $headers[$key] = array($headers[$key], $value);
- } else {
- $headers[$key][] = $value;
- }
- }
- }
-
- return array(
- 'start_line' => $startLine,
- 'headers' => $headers,
- 'body' => $body
- );
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParserInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParserInterface.php
deleted file mode 100644
index cc44808..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParserInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Message;
-
-/**
- * HTTP message parser interface used to parse HTTP messages into an array
- */
-interface MessageParserInterface
-{
- /**
- * Parse an HTTP request message into an associative array of parts.
- *
- * @param string $message HTTP request to parse
- *
- * @return array|bool Returns false if the message is invalid
- */
- public function parseRequest($message);
-
- /**
- * Parse an HTTP response message into an associative array of parts.
- *
- * @param string $message HTTP response to parse
- *
- * @return array|bool Returns false if the message is invalid
- */
- public function parseResponse($message);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/PeclHttpMessageParser.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/PeclHttpMessageParser.php
deleted file mode 100644
index 944aaa2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Message/PeclHttpMessageParser.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Message;
-
-/**
- * Pecl HTTP message parser
- */
-class PeclHttpMessageParser extends AbstractMessageParser
-{
- public function parseRequest($message)
- {
- if (!$message) {
- return false;
- }
-
- $parts = http_parse_message($message);
-
- $parsed = array(
- 'method' => $parts->requestMethod,
- 'protocol' => 'HTTP',
- 'version' => number_format($parts->httpVersion, 1),
- 'headers' => $parts->headers,
- 'body' => $parts->body
- );
-
- $parsed['request_url'] = $this->getUrlPartsFromMessage($parts->requestUrl, $parsed);
-
- return $parsed;
- }
-
- public function parseResponse($message)
- {
- if (!$message) {
- return false;
- }
-
- $parts = http_parse_message($message);
-
- return array(
- 'protocol' => 'HTTP',
- 'version' => number_format($parts->httpVersion, 1),
- 'code' => $parts->responseCode,
- 'reason_phrase' => $parts->responseStatus,
- 'headers' => $parts->headers,
- 'body' => $parts->body
- );
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/ParserRegistry.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/ParserRegistry.php
deleted file mode 100644
index f838683..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/ParserRegistry.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-namespace Guzzle\Parser;
-
-/**
- * Registry of parsers used by the application
- */
-class ParserRegistry
-{
- /** @var ParserRegistry Singleton instance */
- protected static $instance;
-
- /** @var array Array of parser instances */
- protected $instances = array();
-
- /** @var array Mapping of parser name to default class */
- protected $mapping = array(
- 'message' => 'Guzzle\\Parser\\Message\\MessageParser',
- 'cookie' => 'Guzzle\\Parser\\Cookie\\CookieParser',
- 'url' => 'Guzzle\\Parser\\Url\\UrlParser',
- 'uri_template' => 'Guzzle\\Parser\\UriTemplate\\UriTemplate',
- );
-
- /**
- * @return self
- * @codeCoverageIgnore
- */
- public static function getInstance()
- {
- if (!self::$instance) {
- self::$instance = new static;
- }
-
- return self::$instance;
- }
-
- public function __construct()
- {
- // Use the PECL URI template parser if available
- if (extension_loaded('uri_template')) {
- $this->mapping['uri_template'] = 'Guzzle\\Parser\\UriTemplate\\PeclUriTemplate';
- }
- }
-
- /**
- * Get a parser by name from an instance
- *
- * @param string $name Name of the parser to retrieve
- *
- * @return mixed|null
- */
- public function getParser($name)
- {
- if (!isset($this->instances[$name])) {
- if (!isset($this->mapping[$name])) {
- return null;
- }
- $class = $this->mapping[$name];
- $this->instances[$name] = new $class();
- }
-
- return $this->instances[$name];
- }
-
- /**
- * Register a custom parser by name with the register
- *
- * @param string $name Name or handle of the parser to register
- * @param mixed $parser Instantiated parser to register
- */
- public function registerParser($name, $parser)
- {
- $this->instances[$name] = $parser;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/PeclUriTemplate.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/PeclUriTemplate.php
deleted file mode 100644
index b0764e8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/PeclUriTemplate.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\UriTemplate;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-/**
- * Expands URI templates using the uri_template pecl extension (pecl install uri_template-beta)
- *
- * @link http://pecl.php.net/package/uri_template
- * @link https://github.com/ioseb/uri-template
- */
-class PeclUriTemplate implements UriTemplateInterface
-{
- public function __construct()
- {
- if (!extension_loaded('uri_template')) {
- throw new RuntimeException('uri_template PECL extension must be installed to use PeclUriTemplate');
- }
- }
-
- public function expand($template, array $variables)
- {
- return uri_template($template, $variables);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplate.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplate.php
deleted file mode 100644
index 0df032f..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplate.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\UriTemplate;
-
-/**
- * Expands URI templates using an array of variables
- *
- * @link http://tools.ietf.org/html/draft-gregorio-uritemplate-08
- */
-class UriTemplate implements UriTemplateInterface
-{
- const DEFAULT_PATTERN = '/\{([^\}]+)\}/';
-
- /** @var string URI template */
- private $template;
-
- /** @var array Variables to use in the template expansion */
- private $variables;
-
- /** @var string Regex used to parse expressions */
- private $regex = self::DEFAULT_PATTERN;
-
- /** @var array Hash for quick operator lookups */
- private static $operatorHash = array(
- '+' => true, '#' => true, '.' => true, '/' => true, ';' => true, '?' => true, '&' => true
- );
-
- /** @var array Delimiters */
- private static $delims = array(
- ':', '/', '?', '#', '[', ']', '@', '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '='
- );
-
- /** @var array Percent encoded delimiters */
- private static $delimsPct = array(
- '%3A', '%2F', '%3F', '%23', '%5B', '%5D', '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
- '%3B', '%3D'
- );
-
- public function expand($template, array $variables)
- {
- if ($this->regex == self::DEFAULT_PATTERN && false === strpos($template, '{')) {
- return $template;
- }
-
- $this->template = $template;
- $this->variables = $variables;
-
- return preg_replace_callback($this->regex, array($this, 'expandMatch'), $this->template);
- }
-
- /**
- * Set the regex patten used to expand URI templates
- *
- * @param string $regexPattern
- */
- public function setRegex($regexPattern)
- {
- $this->regex = $regexPattern;
- }
-
- /**
- * Parse an expression into parts
- *
- * @param string $expression Expression to parse
- *
- * @return array Returns an associative array of parts
- */
- private function parseExpression($expression)
- {
- // Check for URI operators
- $operator = '';
-
- if (isset(self::$operatorHash[$expression[0]])) {
- $operator = $expression[0];
- $expression = substr($expression, 1);
- }
-
- $values = explode(',', $expression);
- foreach ($values as &$value) {
- $value = trim($value);
- $varspec = array();
- $substrPos = strpos($value, ':');
- if ($substrPos) {
- $varspec['value'] = substr($value, 0, $substrPos);
- $varspec['modifier'] = ':';
- $varspec['position'] = (int) substr($value, $substrPos + 1);
- } elseif (substr($value, -1) == '*') {
- $varspec['modifier'] = '*';
- $varspec['value'] = substr($value, 0, -1);
- } else {
- $varspec['value'] = (string) $value;
- $varspec['modifier'] = '';
- }
- $value = $varspec;
- }
-
- return array(
- 'operator' => $operator,
- 'values' => $values
- );
- }
-
- /**
- * Process an expansion
- *
- * @param array $matches Matches met in the preg_replace_callback
- *
- * @return string Returns the replacement string
- */
- private function expandMatch(array $matches)
- {
- static $rfc1738to3986 = array(
- '+' => '%20',
- '%7e' => '~'
- );
-
- $parsed = self::parseExpression($matches[1]);
- $replacements = array();
-
- $prefix = $parsed['operator'];
- $joiner = $parsed['operator'];
- $useQueryString = false;
- if ($parsed['operator'] == '?') {
- $joiner = '&';
- $useQueryString = true;
- } elseif ($parsed['operator'] == '&') {
- $useQueryString = true;
- } elseif ($parsed['operator'] == '#') {
- $joiner = ',';
- } elseif ($parsed['operator'] == ';') {
- $useQueryString = true;
- } elseif ($parsed['operator'] == '' || $parsed['operator'] == '+') {
- $joiner = ',';
- $prefix = '';
- }
-
- foreach ($parsed['values'] as $value) {
-
- if (!array_key_exists($value['value'], $this->variables) || $this->variables[$value['value']] === null) {
- continue;
- }
-
- $variable = $this->variables[$value['value']];
- $actuallyUseQueryString = $useQueryString;
- $expanded = '';
-
- if (is_array($variable)) {
-
- $isAssoc = $this->isAssoc($variable);
- $kvp = array();
- foreach ($variable as $key => $var) {
-
- if ($isAssoc) {
- $key = rawurlencode($key);
- $isNestedArray = is_array($var);
- } else {
- $isNestedArray = false;
- }
-
- if (!$isNestedArray) {
- $var = rawurlencode($var);
- if ($parsed['operator'] == '+' || $parsed['operator'] == '#') {
- $var = $this->decodeReserved($var);
- }
- }
-
- if ($value['modifier'] == '*') {
- if ($isAssoc) {
- if ($isNestedArray) {
- // Nested arrays must allow for deeply nested structures
- $var = strtr(http_build_query(array($key => $var)), $rfc1738to3986);
- } else {
- $var = $key . '=' . $var;
- }
- } elseif ($key > 0 && $actuallyUseQueryString) {
- $var = $value['value'] . '=' . $var;
- }
- }
-
- $kvp[$key] = $var;
- }
-
- if (empty($variable)) {
- $actuallyUseQueryString = false;
- } elseif ($value['modifier'] == '*') {
- $expanded = implode($joiner, $kvp);
- if ($isAssoc) {
- // Don't prepend the value name when using the explode modifier with an associative array
- $actuallyUseQueryString = false;
- }
- } else {
- if ($isAssoc) {
- // When an associative array is encountered and the explode modifier is not set, then the
- // result must be a comma separated list of keys followed by their respective values.
- foreach ($kvp as $k => &$v) {
- $v = $k . ',' . $v;
- }
- }
- $expanded = implode(',', $kvp);
- }
-
- } else {
- if ($value['modifier'] == ':') {
- $variable = substr($variable, 0, $value['position']);
- }
- $expanded = rawurlencode($variable);
- if ($parsed['operator'] == '+' || $parsed['operator'] == '#') {
- $expanded = $this->decodeReserved($expanded);
- }
- }
-
- if ($actuallyUseQueryString) {
- if (!$expanded && $joiner != '&') {
- $expanded = $value['value'];
- } else {
- $expanded = $value['value'] . '=' . $expanded;
- }
- }
-
- $replacements[] = $expanded;
- }
-
- $ret = implode($joiner, $replacements);
- if ($ret && $prefix) {
- return $prefix . $ret;
- }
-
- return $ret;
- }
-
- /**
- * Determines if an array is associative
- *
- * @param array $array Array to check
- *
- * @return bool
- */
- private function isAssoc(array $array)
- {
- return (bool) count(array_filter(array_keys($array), 'is_string'));
- }
-
- /**
- * Removes percent encoding on reserved characters (used with + and # modifiers)
- *
- * @param string $string String to fix
- *
- * @return string
- */
- private function decodeReserved($string)
- {
- return str_replace(self::$delimsPct, self::$delims, $string);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplateInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplateInterface.php
deleted file mode 100644
index c81d515..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplateInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\UriTemplate;
-
-/**
- * Expands URI templates using an array of variables
- *
- * @link http://tools.ietf.org/html/rfc6570
- */
-interface UriTemplateInterface
-{
- /**
- * Expand the URI template using the supplied variables
- *
- * @param string $template URI Template to expand
- * @param array $variables Variables to use with the expansion
- *
- * @return string Returns the expanded template
- */
- public function expand($template, array $variables);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParser.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParser.php
deleted file mode 100644
index c4cc896..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParser.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Url;
-
-use Guzzle\Common\Version;
-
-/**
- * Parses URLs into parts using PHP's built-in parse_url() function
- * @deprecated Just use parse_url. UTF-8 characters should be percent encoded anyways.
- * @codeCoverageIgnore
- */
-class UrlParser implements UrlParserInterface
-{
- /** @var bool Whether or not to work with UTF-8 strings */
- protected $utf8 = false;
-
- /**
- * Set whether or not to attempt to handle UTF-8 strings (still WIP)
- *
- * @param bool $utf8 Set to TRUE to handle UTF string
- */
- public function setUtf8Support($utf8)
- {
- $this->utf8 = $utf8;
- }
-
- public function parseUrl($url)
- {
- Version::warn(__CLASS__ . ' is deprecated. Just use parse_url()');
-
- static $defaults = array('scheme' => null, 'host' => null, 'path' => null, 'port' => null, 'query' => null,
- 'user' => null, 'pass' => null, 'fragment' => null);
-
- $parts = parse_url($url);
-
- // Need to handle query parsing specially for UTF-8 requirements
- if ($this->utf8 && isset($parts['query'])) {
- $queryPos = strpos($url, '?');
- if (isset($parts['fragment'])) {
- $parts['query'] = substr($url, $queryPos + 1, strpos($url, '#') - $queryPos - 1);
- } else {
- $parts['query'] = substr($url, $queryPos + 1);
- }
- }
-
- return $parts + $defaults;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParserInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParserInterface.php
deleted file mode 100644
index 89ac4b3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParserInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Guzzle\Parser\Url;
-
-/**
- * URL parser interface
- */
-interface UrlParserInterface
-{
- /**
- * Parse a URL using special handling for a subset of UTF-8 characters in the query string if needed.
- *
- * @param string $url URL to parse
- *
- * @return array Returns an array identical to what is returned from parse_url(). When an array key is missing from
- * this array, you must fill it in with NULL to avoid warnings in calling code.
- */
- public function parseUrl($url);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/composer.json
deleted file mode 100644
index 378b281..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Parser/composer.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "guzzle/parser",
- "homepage": "http://guzzlephp.org/",
- "description": "Interchangeable parsers used by Guzzle",
- "keywords": ["HTTP", "message", "cookie", "URL", "URI Template"],
- "license": "MIT",
- "require": {
- "php": ">=5.3.2"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Parser": "" }
- },
- "target-dir": "Guzzle/Parser",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/AsyncPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/AsyncPlugin.php
deleted file mode 100644
index ae59418..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/AsyncPlugin.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Async;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\CurlException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Sends requests but does not wait for the response
- */
-class AsyncPlugin implements EventSubscriberInterface
-{
- public static function getSubscribedEvents()
- {
- return array(
- 'request.before_send' => 'onBeforeSend',
- 'request.exception' => 'onRequestTimeout',
- 'request.sent' => 'onRequestSent',
- 'curl.callback.progress' => 'onCurlProgress'
- );
- }
-
- /**
- * Event used to ensure that progress callback are emitted from the curl handle's request mediator.
- *
- * @param Event $event
- */
- public function onBeforeSend(Event $event)
- {
- // Ensure that progress callbacks are dispatched
- $event['request']->getCurlOptions()->set('progress', true);
- }
-
- /**
- * Event emitted when a curl progress function is called. When the amount of data uploaded == the amount of data to
- * upload OR any bytes have been downloaded, then time the request out after 1ms because we're done with
- * transmitting the request, and tell curl not download a body.
- *
- * @param Event $event
- */
- public function onCurlProgress(Event $event)
- {
- if ($event['handle'] &&
- ($event['downloaded'] || (isset($event['uploaded']) && $event['upload_size'] === $event['uploaded']))
- ) {
- // Timeout after 1ms
- curl_setopt($event['handle'], CURLOPT_TIMEOUT_MS, 1);
- // Even if the response is quick, tell curl not to download the body.
- // - Note that we can only perform this shortcut if the request transmitted a body so as to ensure that the
- // request method is not converted to a HEAD request before the request was sent via curl.
- if ($event['uploaded']) {
- curl_setopt($event['handle'], CURLOPT_NOBODY, true);
- }
- }
- }
-
- /**
- * Event emitted when a curl exception occurs. Ignore the exception and set a mock response.
- *
- * @param Event $event
- */
- public function onRequestTimeout(Event $event)
- {
- if ($event['exception'] instanceof CurlException) {
- $event['request']->setResponse(new Response(200, array(
- 'X-Guzzle-Async' => 'Did not wait for the response'
- )));
- }
- }
-
- /**
- * Event emitted when a request completes because it took less than 1ms. Add an X-Guzzle-Async header to notify the
- * caller that there is no body in the message.
- *
- * @param Event $event
- */
- public function onRequestSent(Event $event)
- {
- // Let the caller know this was meant to be async
- $event['request']->getResponse()->setHeader('X-Guzzle-Async', 'Did not wait for the response');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/composer.json
deleted file mode 100644
index dc3fc5b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Async/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-async",
- "description": "Guzzle async request plugin",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Async": "" }
- },
- "target-dir": "Guzzle/Plugin/Async",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php
deleted file mode 100644
index 0a85983..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Abstract backoff strategy that allows for a chain of responsibility
- */
-abstract class AbstractBackoffStrategy implements BackoffStrategyInterface
-{
- /** @var AbstractBackoffStrategy Next strategy in the chain */
- protected $next;
-
- /** @param AbstractBackoffStrategy $next Next strategy in the chain */
- public function setNext(AbstractBackoffStrategy $next)
- {
- $this->next = $next;
- }
-
- /**
- * Get the next backoff strategy in the chain
- *
- * @return AbstractBackoffStrategy|null
- */
- public function getNext()
- {
- return $this->next;
- }
-
- public function getBackoffPeriod(
- $retries,
- RequestInterface $request,
- Response $response = null,
- HttpException $e = null
- ) {
- $delay = $this->getDelay($retries, $request, $response, $e);
- if ($delay === false) {
- // The strategy knows that this must not be retried
- return false;
- } elseif ($delay === null) {
- // If the strategy is deferring a decision and the next strategy will not make a decision then return false
- return !$this->next || !$this->next->makesDecision()
- ? false
- : $this->next->getBackoffPeriod($retries, $request, $response, $e);
- } elseif ($delay === true) {
- // if the strategy knows that it must retry but is deferring to the next to determine the delay
- if (!$this->next) {
- return 0;
- } else {
- $next = $this->next;
- while ($next->makesDecision() && $next->getNext()) {
- $next = $next->getNext();
- }
- return !$next->makesDecision() ? $next->getBackoffPeriod($retries, $request, $response, $e) : 0;
- }
- } else {
- return $delay;
- }
- }
-
- /**
- * Check if the strategy does filtering and makes decisions on whether or not to retry.
- *
- * Strategies that return false will never retry if all of the previous strategies in a chain defer on a backoff
- * decision.
- *
- * @return bool
- */
- abstract public function makesDecision();
-
- /**
- * Implement the concrete strategy
- *
- * @param int $retries Number of retries of the request
- * @param RequestInterface $request Request that was sent
- * @param Response $response Response that was received. Note that there may not be a response
- * @param HttpException $e Exception that was encountered if any
- *
- * @return bool|int|null Returns false to not retry or the number of seconds to delay between retries. Return true
- * or null to defer to the next strategy if available, and if not, return 0.
- */
- abstract protected function getDelay(
- $retries,
- RequestInterface $request,
- Response $response = null,
- HttpException $e = null
- );
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractErrorCodeBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractErrorCodeBackoffStrategy.php
deleted file mode 100644
index 6ebee6c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractErrorCodeBackoffStrategy.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-/**
- * Strategy used to retry when certain error codes are encountered
- */
-abstract class AbstractErrorCodeBackoffStrategy extends AbstractBackoffStrategy
-{
- /** @var array Default cURL errors to retry */
- protected static $defaultErrorCodes = array();
-
- /** @var array Error codes that can be retried */
- protected $errorCodes;
-
- /**
- * @param array $codes Array of codes that should be retried
- * @param BackoffStrategyInterface $next The optional next strategy
- */
- public function __construct(array $codes = null, BackoffStrategyInterface $next = null)
- {
- $this->errorCodes = array_fill_keys($codes ?: static::$defaultErrorCodes, 1);
- $this->next = $next;
- }
-
- /**
- * Get the default failure codes to retry
- *
- * @return array
- */
- public static function getDefaultFailureCodes()
- {
- return static::$defaultErrorCodes;
- }
-
- public function makesDecision()
- {
- return true;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffLogger.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffLogger.php
deleted file mode 100644
index ec54c28..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffLogger.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Common\Event;
-use Guzzle\Log\LogAdapterInterface;
-use Guzzle\Log\MessageFormatter;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Logs backoff retries triggered from the BackoffPlugin
- *
- * Format your log messages using a template that can contain template substitutions found in {@see MessageFormatter}.
- * In addition to the default template substitutions, there is also:
- *
- * - retries: The number of times the request has been retried
- * - delay: The amount of time the request is being delayed
- */
-class BackoffLogger implements EventSubscriberInterface
-{
- /** @var string Default log message template */
- const DEFAULT_FORMAT = '[{ts}] {method} {url} - {code} {phrase} - Retries: {retries}, Delay: {delay}, Time: {connect_time}, {total_time}, cURL: {curl_code} {curl_error}';
-
- /** @var LogAdapterInterface Logger used to log retries */
- protected $logger;
-
- /** @var MessageFormatter Formatter used to format log messages */
- protected $formatter;
-
- /**
- * @param LogAdapterInterface $logger Logger used to log the retries
- * @param MessageFormatter $formatter Formatter used to format log messages
- */
- public function __construct(LogAdapterInterface $logger, MessageFormatter $formatter = null)
- {
- $this->logger = $logger;
- $this->formatter = $formatter ?: new MessageFormatter(self::DEFAULT_FORMAT);
- }
-
- public static function getSubscribedEvents()
- {
- return array(BackoffPlugin::RETRY_EVENT => 'onRequestRetry');
- }
-
- /**
- * Set the template to use for logging
- *
- * @param string $template Log message template
- *
- * @return self
- */
- public function setTemplate($template)
- {
- $this->formatter->setTemplate($template);
-
- return $this;
- }
-
- /**
- * Called when a request is being retried
- *
- * @param Event $event Event emitted
- */
- public function onRequestRetry(Event $event)
- {
- $this->logger->log($this->formatter->format(
- $event['request'],
- $event['response'],
- $event['handle'],
- array(
- 'retries' => $event['retries'],
- 'delay' => $event['delay']
- )
- ));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffPlugin.php
deleted file mode 100644
index 99ace05..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffPlugin.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Curl\CurlMultiInterface;
-use Guzzle\Http\Exception\CurlException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Plugin to automatically retry failed HTTP requests using a backoff strategy
- */
-class BackoffPlugin extends AbstractHasDispatcher implements EventSubscriberInterface
-{
- const DELAY_PARAM = CurlMultiInterface::BLOCKING;
- const RETRY_PARAM = 'plugins.backoff.retry_count';
- const RETRY_EVENT = 'plugins.backoff.retry';
-
- /** @var BackoffStrategyInterface Backoff strategy */
- protected $strategy;
-
- /**
- * @param BackoffStrategyInterface $strategy The backoff strategy used to determine whether or not to retry and
- * the amount of delay between retries.
- */
- public function __construct(BackoffStrategyInterface $strategy = null)
- {
- $this->strategy = $strategy;
- }
-
- /**
- * Retrieve a basic truncated exponential backoff plugin that will retry HTTP errors and cURL errors
- *
- * @param int $maxRetries Maximum number of retries
- * @param array $httpCodes HTTP response codes to retry
- * @param array $curlCodes cURL error codes to retry
- *
- * @return self
- */
- public static function getExponentialBackoff(
- $maxRetries = 3,
- array $httpCodes = null,
- array $curlCodes = null
- ) {
- return new self(new TruncatedBackoffStrategy($maxRetries,
- new HttpBackoffStrategy($httpCodes,
- new CurlBackoffStrategy($curlCodes,
- new ExponentialBackoffStrategy()
- )
- )
- ));
- }
-
- public static function getAllEvents()
- {
- return array(self::RETRY_EVENT);
- }
-
- public static function getSubscribedEvents()
- {
- return array(
- 'request.sent' => 'onRequestSent',
- 'request.exception' => 'onRequestSent',
- CurlMultiInterface::POLLING_REQUEST => 'onRequestPoll'
- );
- }
-
- /**
- * Called when a request has been sent and isn't finished processing
- *
- * @param Event $event
- */
- public function onRequestSent(Event $event)
- {
- $request = $event['request'];
- $response = $event['response'];
- $exception = $event['exception'];
-
- $params = $request->getParams();
- $retries = (int) $params->get(self::RETRY_PARAM);
- $delay = $this->strategy->getBackoffPeriod($retries, $request, $response, $exception);
-
- if ($delay !== false) {
- // Calculate how long to wait until the request should be retried
- $params->set(self::RETRY_PARAM, ++$retries)
- ->set(self::DELAY_PARAM, microtime(true) + $delay);
- // Send the request again
- $request->setState(RequestInterface::STATE_TRANSFER);
- $this->dispatch(self::RETRY_EVENT, array(
- 'request' => $request,
- 'response' => $response,
- 'handle' => ($exception && $exception instanceof CurlException) ? $exception->getCurlHandle() : null,
- 'retries' => $retries,
- 'delay' => $delay
- ));
- }
- }
-
- /**
- * Called when a request is polling in the curl multi object
- *
- * @param Event $event
- */
- public function onRequestPoll(Event $event)
- {
- $request = $event['request'];
- $delay = $request->getParams()->get(self::DELAY_PARAM);
-
- // If the duration of the delay has passed, retry the request using the pool
- if (null !== $delay && microtime(true) >= $delay) {
- // Remove the request from the pool and then add it back again. This is required for cURL to know that we
- // want to retry sending the easy handle.
- $request->getParams()->remove(self::DELAY_PARAM);
- // Rewind the request body if possible
- if ($request instanceof EntityEnclosingRequestInterface && $request->getBody()) {
- $request->getBody()->seek(0);
- }
- $multi = $event['curl_multi'];
- $multi->remove($request);
- $multi->add($request);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffStrategyInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffStrategyInterface.php
deleted file mode 100644
index 4e590db..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffStrategyInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Strategy to determine if a request should be retried and how long to delay between retries
- */
-interface BackoffStrategyInterface
-{
- /**
- * Get the amount of time to delay in seconds before retrying a request
- *
- * @param int $retries Number of retries of the request
- * @param RequestInterface $request Request that was sent
- * @param Response $response Response that was received. Note that there may not be a response
- * @param HttpException $e Exception that was encountered if any
- *
- * @return bool|int Returns false to not retry or the number of seconds to delay between retries
- */
- public function getBackoffPeriod(
- $retries,
- RequestInterface $request,
- Response $response = null,
- HttpException $e = null
- );
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CallbackBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CallbackBackoffStrategy.php
deleted file mode 100644
index b4f77c3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CallbackBackoffStrategy.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Strategy that will invoke a closure to determine whether or not to retry with a delay
- */
-class CallbackBackoffStrategy extends AbstractBackoffStrategy
-{
- /** @var \Closure|array|mixed Callable method to invoke */
- protected $callback;
-
- /** @var bool Whether or not this strategy makes a retry decision */
- protected $decision;
-
- /**
- * @param \Closure|array|mixed $callback Callable method to invoke
- * @param bool $decision Set to true if this strategy makes a backoff decision
- * @param BackoffStrategyInterface $next The optional next strategy
- *
- * @throws InvalidArgumentException
- */
- public function __construct($callback, $decision, BackoffStrategyInterface $next = null)
- {
- if (!is_callable($callback)) {
- throw new InvalidArgumentException('The callback must be callable');
- }
- $this->callback = $callback;
- $this->decision = (bool) $decision;
- $this->next = $next;
- }
-
- public function makesDecision()
- {
- return $this->decision;
- }
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- return call_user_func($this->callback, $retries, $request, $response, $e);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ConstantBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ConstantBackoffStrategy.php
deleted file mode 100644
index 061d2a4..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ConstantBackoffStrategy.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Will retry the request using the same amount of delay for each retry.
- *
- * Warning: If no decision making strategies precede this strategy in the the chain, then all requests will be retried
- */
-class ConstantBackoffStrategy extends AbstractBackoffStrategy
-{
- /** @var int Amount of time for each delay */
- protected $delay;
-
- /** @param int $delay Amount of time to delay between each additional backoff */
- public function __construct($delay)
- {
- $this->delay = $delay;
- }
-
- public function makesDecision()
- {
- return false;
- }
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- return $this->delay;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php
deleted file mode 100644
index a584ed4..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-use Guzzle\Http\Exception\CurlException;
-
-/**
- * Strategy used to retry when certain cURL error codes are encountered.
- */
-class CurlBackoffStrategy extends AbstractErrorCodeBackoffStrategy
-{
- /** @var array Default cURL errors to retry */
- protected static $defaultErrorCodes = array(
- CURLE_COULDNT_RESOLVE_HOST, CURLE_COULDNT_CONNECT, CURLE_PARTIAL_FILE, CURLE_WRITE_ERROR, CURLE_READ_ERROR,
- CURLE_OPERATION_TIMEOUTED, CURLE_SSL_CONNECT_ERROR, CURLE_HTTP_PORT_FAILED, CURLE_GOT_NOTHING,
- CURLE_SEND_ERROR, CURLE_RECV_ERROR
- );
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- if ($e && $e instanceof CurlException) {
- return isset($this->errorCodes[$e->getErrorNo()]) ? true : null;
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ExponentialBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ExponentialBackoffStrategy.php
deleted file mode 100644
index fb2912d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ExponentialBackoffStrategy.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Implements an exponential backoff retry strategy.
- *
- * Warning: If no decision making strategies precede this strategy in the the chain, then all requests will be retried
- */
-class ExponentialBackoffStrategy extends AbstractBackoffStrategy
-{
- public function makesDecision()
- {
- return false;
- }
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- return (int) pow(2, $retries);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/HttpBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/HttpBackoffStrategy.php
deleted file mode 100644
index 9c63a14..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/HttpBackoffStrategy.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Strategy used to retry HTTP requests based on the response code.
- *
- * Retries 500 and 503 error by default.
- */
-class HttpBackoffStrategy extends AbstractErrorCodeBackoffStrategy
-{
- /** @var array Default cURL errors to retry */
- protected static $defaultErrorCodes = array(500, 503);
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- if ($response) {
- //Short circuit the rest of the checks if it was successful
- if ($response->isSuccessful()) {
- return false;
- } else {
- return isset($this->errorCodes[$response->getStatusCode()]) ? true : null;
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/LinearBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/LinearBackoffStrategy.php
deleted file mode 100644
index b35e8a4..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/LinearBackoffStrategy.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Implements a linear backoff retry strategy.
- *
- * Warning: If no decision making strategies precede this strategy in the the chain, then all requests will be retried
- */
-class LinearBackoffStrategy extends AbstractBackoffStrategy
-{
- /** @var int Amount of time to progress each delay */
- protected $step;
-
- /**
- * @param int $step Amount of time to increase the delay each additional backoff
- */
- public function __construct($step = 1)
- {
- $this->step = $step;
- }
-
- public function makesDecision()
- {
- return false;
- }
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- return $retries * $this->step;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ReasonPhraseBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ReasonPhraseBackoffStrategy.php
deleted file mode 100644
index 4fd73fe..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ReasonPhraseBackoffStrategy.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Strategy used to retry HTTP requests when the response's reason phrase matches one of the registered phrases.
- */
-class ReasonPhraseBackoffStrategy extends AbstractErrorCodeBackoffStrategy
-{
- public function makesDecision()
- {
- return true;
- }
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- if ($response) {
- return isset($this->errorCodes[$response->getReasonPhrase()]) ? true : null;
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/TruncatedBackoffStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/TruncatedBackoffStrategy.php
deleted file mode 100644
index 3608f35..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/TruncatedBackoffStrategy.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Backoff;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\HttpException;
-
-/**
- * Strategy that will not retry more than a certain number of times.
- */
-class TruncatedBackoffStrategy extends AbstractBackoffStrategy
-{
- /** @var int Maximum number of retries per request */
- protected $max;
-
- /**
- * @param int $maxRetries Maximum number of retries per request
- * @param BackoffStrategyInterface $next The optional next strategy
- */
- public function __construct($maxRetries, BackoffStrategyInterface $next = null)
- {
- $this->max = $maxRetries;
- $this->next = $next;
- }
-
- public function makesDecision()
- {
- return true;
- }
-
- protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null)
- {
- return $retries < $this->max ? null : false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/composer.json
deleted file mode 100644
index 91c122c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Backoff/composer.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "guzzle/plugin-backoff",
- "description": "Guzzle backoff retry plugins",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version",
- "guzzle/log": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Backoff": "" }
- },
- "target-dir": "Guzzle/Plugin/Backoff",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheKeyProviderInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheKeyProviderInterface.php
deleted file mode 100644
index 7790f88..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheKeyProviderInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-\Guzzle\Common\Version::warn('Guzzle\Plugin\Cache\CacheKeyProviderInterface is no longer used');
-
-/**
- * @deprecated This is no longer used
- * @codeCoverageIgnore
- */
-interface CacheKeyProviderInterface {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CachePlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CachePlugin.php
deleted file mode 100644
index ce4b317..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CachePlugin.php
+++ /dev/null
@@ -1,353 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Cache\CacheAdapterFactory;
-use Guzzle\Cache\CacheAdapterInterface;
-use Guzzle\Common\Event;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Version;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Guzzle\Http\Exception\CurlException;
-use Doctrine\Common\Cache\ArrayCache;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Plugin to enable the caching of GET and HEAD requests. Caching can be done on all requests passing through this
- * plugin or only after retrieving resources with cacheable response headers.
- *
- * This is a simple implementation of RFC 2616 and should be considered a private transparent proxy cache, meaning
- * authorization and private data can be cached.
- *
- * It also implements RFC 5861's `stale-if-error` Cache-Control extension, allowing stale cache responses to be used
- * when an error is encountered (such as a `500 Internal Server Error` or DNS failure).
- */
-class CachePlugin implements EventSubscriberInterface
-{
- /** @var RevalidationInterface Cache revalidation strategy */
- protected $revalidation;
-
- /** @var CanCacheStrategyInterface Object used to determine if a request can be cached */
- protected $canCache;
-
- /** @var CacheStorageInterface $cache Object used to cache responses */
- protected $storage;
-
- /** @var bool */
- protected $autoPurge;
-
- /**
- * @param array|CacheAdapterInterface|CacheStorageInterface $options Array of options for the cache plugin,
- * cache adapter, or cache storage object.
- * - CacheStorageInterface storage: Adapter used to cache responses
- * - RevalidationInterface revalidation: Cache revalidation strategy
- * - CanCacheInterface can_cache: Object used to determine if a request can be cached
- * - bool auto_purge Set to true to automatically PURGE resources when non-idempotent
- * requests are sent to a resource. Defaults to false.
- * @throws InvalidArgumentException if no cache is provided and Doctrine cache is not installed
- */
- public function __construct($options = null)
- {
- if (!is_array($options)) {
- if ($options instanceof CacheAdapterInterface) {
- $options = array('storage' => new DefaultCacheStorage($options));
- } elseif ($options instanceof CacheStorageInterface) {
- $options = array('storage' => $options);
- } elseif ($options) {
- $options = array('storage' => new DefaultCacheStorage(CacheAdapterFactory::fromCache($options)));
- } elseif (!class_exists('Doctrine\Common\Cache\ArrayCache')) {
- // @codeCoverageIgnoreStart
- throw new InvalidArgumentException('No cache was provided and Doctrine is not installed');
- // @codeCoverageIgnoreEnd
- }
- }
-
- $this->autoPurge = isset($options['auto_purge']) ? $options['auto_purge'] : false;
-
- // Add a cache storage if a cache adapter was provided
- $this->storage = isset($options['storage'])
- ? $options['storage']
- : new DefaultCacheStorage(new DoctrineCacheAdapter(new ArrayCache()));
-
- if (!isset($options['can_cache'])) {
- $this->canCache = new DefaultCanCacheStrategy();
- } else {
- $this->canCache = is_callable($options['can_cache'])
- ? new CallbackCanCacheStrategy($options['can_cache'])
- : $options['can_cache'];
- }
-
- // Use the provided revalidation strategy or the default
- $this->revalidation = isset($options['revalidation'])
- ? $options['revalidation']
- : new DefaultRevalidation($this->storage, $this->canCache);
- }
-
- public static function getSubscribedEvents()
- {
- return array(
- 'request.before_send' => array('onRequestBeforeSend', -255),
- 'request.sent' => array('onRequestSent', 255),
- 'request.error' => array('onRequestError', 0),
- 'request.exception' => array('onRequestException', 0),
- );
- }
-
- /**
- * Check if a response in cache will satisfy the request before sending
- *
- * @param Event $event
- */
- public function onRequestBeforeSend(Event $event)
- {
- $request = $event['request'];
- $request->addHeader('Via', sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION));
-
- if (!$this->canCache->canCacheRequest($request)) {
- switch ($request->getMethod()) {
- case 'PURGE':
- $this->purge($request);
- $request->setResponse(new Response(200, array(), 'purged'));
- break;
- case 'PUT':
- case 'POST':
- case 'DELETE':
- case 'PATCH':
- if ($this->autoPurge) {
- $this->purge($request);
- }
- }
- return;
- }
-
- if ($response = $this->storage->fetch($request)) {
- $params = $request->getParams();
- $params['cache.lookup'] = true;
- $response->setHeader(
- 'Age',
- time() - strtotime($response->getDate() ? : $response->getLastModified() ?: 'now')
- );
- // Validate that the response satisfies the request
- if ($this->canResponseSatisfyRequest($request, $response)) {
- if (!isset($params['cache.hit'])) {
- $params['cache.hit'] = true;
- }
- $request->setResponse($response);
- }
- }
- }
-
- /**
- * If possible, store a response in cache after sending
- *
- * @param Event $event
- */
- public function onRequestSent(Event $event)
- {
- $request = $event['request'];
- $response = $event['response'];
-
- if ($request->getParams()->get('cache.hit') === null &&
- $this->canCache->canCacheRequest($request) &&
- $this->canCache->canCacheResponse($response)
- ) {
- $this->storage->cache($request, $response);
- }
-
- $this->addResponseHeaders($request, $response);
- }
-
- /**
- * If possible, return a cache response on an error
- *
- * @param Event $event
- */
- public function onRequestError(Event $event)
- {
- $request = $event['request'];
-
- if (!$this->canCache->canCacheRequest($request)) {
- return;
- }
-
- if ($response = $this->storage->fetch($request)) {
- $response->setHeader(
- 'Age',
- time() - strtotime($response->getLastModified() ? : $response->getDate() ?: 'now')
- );
-
- if ($this->canResponseSatisfyFailedRequest($request, $response)) {
- $request->getParams()->set('cache.hit', 'error');
- $this->addResponseHeaders($request, $response);
- $event['response'] = $response;
- $event->stopPropagation();
- }
- }
- }
-
- /**
- * If possible, set a cache response on a cURL exception
- *
- * @param Event $event
- *
- * @return null
- */
- public function onRequestException(Event $event)
- {
- if (!$event['exception'] instanceof CurlException) {
- return;
- }
-
- $request = $event['request'];
- if (!$this->canCache->canCacheRequest($request)) {
- return;
- }
-
- if ($response = $this->storage->fetch($request)) {
- $response->setHeader('Age', time() - strtotime($response->getDate() ? : 'now'));
- if (!$this->canResponseSatisfyFailedRequest($request, $response)) {
- return;
- }
- $request->getParams()->set('cache.hit', 'error');
- $request->setResponse($response);
- $this->addResponseHeaders($request, $response);
- $event->stopPropagation();
- }
- }
-
- /**
- * Check if a cache response satisfies a request's caching constraints
- *
- * @param RequestInterface $request Request to validate
- * @param Response $response Response to validate
- *
- * @return bool
- */
- public function canResponseSatisfyRequest(RequestInterface $request, Response $response)
- {
- $responseAge = $response->calculateAge();
- $reqc = $request->getHeader('Cache-Control');
- $resc = $response->getHeader('Cache-Control');
-
- // Check the request's max-age header against the age of the response
- if ($reqc && $reqc->hasDirective('max-age') &&
- $responseAge > $reqc->getDirective('max-age')) {
- return false;
- }
-
- // Check the response's max-age header
- if ($response->isFresh() === false) {
- $maxStale = $reqc ? $reqc->getDirective('max-stale') : null;
- if (null !== $maxStale) {
- if ($maxStale !== true && $response->getFreshness() < (-1 * $maxStale)) {
- return false;
- }
- } elseif ($resc && $resc->hasDirective('max-age')
- && $responseAge > $resc->getDirective('max-age')
- ) {
- return false;
- }
- }
-
- if ($this->revalidation->shouldRevalidate($request, $response)) {
- try {
- return $this->revalidation->revalidate($request, $response);
- } catch (CurlException $e) {
- $request->getParams()->set('cache.hit', 'error');
- return $this->canResponseSatisfyFailedRequest($request, $response);
- }
- }
-
- return true;
- }
-
- /**
- * Check if a cache response satisfies a failed request's caching constraints
- *
- * @param RequestInterface $request Request to validate
- * @param Response $response Response to validate
- *
- * @return bool
- */
- public function canResponseSatisfyFailedRequest(RequestInterface $request, Response $response)
- {
- $reqc = $request->getHeader('Cache-Control');
- $resc = $response->getHeader('Cache-Control');
- $requestStaleIfError = $reqc ? $reqc->getDirective('stale-if-error') : null;
- $responseStaleIfError = $resc ? $resc->getDirective('stale-if-error') : null;
-
- if (!$requestStaleIfError && !$responseStaleIfError) {
- return false;
- }
-
- if (is_numeric($requestStaleIfError) && $response->getAge() - $response->getMaxAge() > $requestStaleIfError) {
- return false;
- }
-
- if (is_numeric($responseStaleIfError) && $response->getAge() - $response->getMaxAge() > $responseStaleIfError) {
- return false;
- }
-
- return true;
- }
-
- /**
- * Purge all cache entries for a given URL
- *
- * @param string $url URL to purge
- */
- public function purge($url)
- {
- // BC compatibility with previous version that accepted a Request object
- $url = $url instanceof RequestInterface ? $url->getUrl() : $url;
- $this->storage->purge($url);
- }
-
- /**
- * Add the plugin's headers to a response
- *
- * @param RequestInterface $request Request
- * @param Response $response Response to add headers to
- */
- protected function addResponseHeaders(RequestInterface $request, Response $response)
- {
- $params = $request->getParams();
- $response->setHeader('Via', sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION));
-
- $lookup = ($params['cache.lookup'] === true ? 'HIT' : 'MISS') . ' from GuzzleCache';
- if ($header = $response->getHeader('X-Cache-Lookup')) {
- // Don't add duplicates
- $values = $header->toArray();
- $values[] = $lookup;
- $response->setHeader('X-Cache-Lookup', array_unique($values));
- } else {
- $response->setHeader('X-Cache-Lookup', $lookup);
- }
-
- if ($params['cache.hit'] === true) {
- $xcache = 'HIT from GuzzleCache';
- } elseif ($params['cache.hit'] == 'error') {
- $xcache = 'HIT_ERROR from GuzzleCache';
- } else {
- $xcache = 'MISS from GuzzleCache';
- }
-
- if ($header = $response->getHeader('X-Cache')) {
- // Don't add duplicates
- $values = $header->toArray();
- $values[] = $xcache;
- $response->setHeader('X-Cache', array_unique($values));
- } else {
- $response->setHeader('X-Cache', $xcache);
- }
-
- if ($response->isFresh() === false) {
- $response->addHeader('Warning', sprintf('110 GuzzleCache/%s "Response is stale"', Version::VERSION));
- if ($params['cache.hit'] === 'error') {
- $response->addHeader('Warning', sprintf('111 GuzzleCache/%s "Revalidation failed"', Version::VERSION));
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheStorageInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheStorageInterface.php
deleted file mode 100644
index f3d9154..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheStorageInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Interface used to cache HTTP requests
- */
-interface CacheStorageInterface
-{
- /**
- * Get a Response from the cache for a request
- *
- * @param RequestInterface $request
- *
- * @return null|Response
- */
- public function fetch(RequestInterface $request);
-
- /**
- * Cache an HTTP request
- *
- * @param RequestInterface $request Request being cached
- * @param Response $response Response to cache
- */
- public function cache(RequestInterface $request, Response $response);
-
- /**
- * Deletes cache entries that match a request
- *
- * @param RequestInterface $request Request to delete from cache
- */
- public function delete(RequestInterface $request);
-
- /**
- * Purge all cache entries for a given URL
- *
- * @param string $url
- */
- public function purge($url);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CallbackCanCacheStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CallbackCanCacheStrategy.php
deleted file mode 100644
index 2d271e3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CallbackCanCacheStrategy.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Determines if a request can be cached using a callback
- */
-class CallbackCanCacheStrategy extends DefaultCanCacheStrategy
-{
- /** @var callable Callback for request */
- protected $requestCallback;
-
- /** @var callable Callback for response */
- protected $responseCallback;
-
- /**
- * @param \Closure|array|mixed $requestCallback Callable method to invoke for requests
- * @param \Closure|array|mixed $responseCallback Callable method to invoke for responses
- *
- * @throws InvalidArgumentException
- */
- public function __construct($requestCallback = null, $responseCallback = null)
- {
- if ($requestCallback && !is_callable($requestCallback)) {
- throw new InvalidArgumentException('Method must be callable');
- }
-
- if ($responseCallback && !is_callable($responseCallback)) {
- throw new InvalidArgumentException('Method must be callable');
- }
-
- $this->requestCallback = $requestCallback;
- $this->responseCallback = $responseCallback;
- }
-
- public function canCacheRequest(RequestInterface $request)
- {
- return $this->requestCallback
- ? call_user_func($this->requestCallback, $request)
- : parent::canCacheRequest($request);
- }
-
- public function canCacheResponse(Response $response)
- {
- return $this->responseCallback
- ? call_user_func($this->responseCallback, $response)
- : parent::canCacheResponse($response);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CanCacheStrategyInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CanCacheStrategyInterface.php
deleted file mode 100644
index 6e01a8e..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/CanCacheStrategyInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Strategy used to determine if a request can be cached
- */
-interface CanCacheStrategyInterface
-{
- /**
- * Determine if a request can be cached
- *
- * @param RequestInterface $request Request to determine
- *
- * @return bool
- */
- public function canCacheRequest(RequestInterface $request);
-
- /**
- * Determine if a response can be cached
- *
- * @param Response $response Response to determine
- *
- * @return bool
- */
- public function canCacheResponse(Response $response);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheKeyProvider.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheKeyProvider.php
deleted file mode 100644
index ec0dc4e..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheKeyProvider.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-
-\Guzzle\Common\Version::warn('Guzzle\Plugin\Cache\DefaultCacheKeyProvider is no longer used');
-
-/**
- * @deprecated This class is no longer used
- * @codeCoverageIgnore
- */
-class DefaultCacheKeyProvider implements CacheKeyProviderInterface
-{
- public function getCacheKey(RequestInterface $request)
- {
- // See if the key has already been calculated
- $key = $request->getParams()->get(self::CACHE_KEY);
-
- if (!$key) {
-
- $cloned = clone $request;
- $cloned->removeHeader('Cache-Control');
-
- // Check to see how and if the key should be filtered
- foreach (explode(';', $request->getParams()->get(self::CACHE_KEY_FILTER)) as $part) {
- $pieces = array_map('trim', explode('=', $part));
- if (isset($pieces[1])) {
- foreach (array_map('trim', explode(',', $pieces[1])) as $remove) {
- if ($pieces[0] == 'header') {
- $cloned->removeHeader($remove);
- } elseif ($pieces[0] == 'query') {
- $cloned->getQuery()->remove($remove);
- }
- }
- }
- }
-
- $raw = (string) $cloned;
- $key = 'GZ' . md5($raw);
- $request->getParams()->set(self::CACHE_KEY, $key)->set(self::CACHE_KEY_RAW, $raw);
- }
-
- return $key;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheStorage.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheStorage.php
deleted file mode 100644
index 26d7a8b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheStorage.php
+++ /dev/null
@@ -1,266 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Cache\CacheAdapterFactory;
-use Guzzle\Cache\CacheAdapterInterface;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Http\Message\MessageInterface;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Default cache storage implementation
- */
-class DefaultCacheStorage implements CacheStorageInterface
-{
- /** @var string */
- protected $keyPrefix;
-
- /** @var CacheAdapterInterface Cache used to store cache data */
- protected $cache;
-
- /** @var int Default cache TTL */
- protected $defaultTtl;
-
- /**
- * @param mixed $cache Cache used to store cache data
- * @param string $keyPrefix Provide an optional key prefix to prefix on all cache keys
- * @param int $defaultTtl Default cache TTL
- */
- public function __construct($cache, $keyPrefix = '', $defaultTtl = 3600)
- {
- $this->cache = CacheAdapterFactory::fromCache($cache);
- $this->defaultTtl = $defaultTtl;
- $this->keyPrefix = $keyPrefix;
- }
-
- public function cache(RequestInterface $request, Response $response)
- {
- $currentTime = time();
-
- $overrideTtl = $request->getParams()->get('cache.override_ttl');
- if ($overrideTtl) {
- $ttl = $overrideTtl;
- } else {
- $maxAge = $response->getMaxAge();
- if ($maxAge !== null) {
- $ttl = $maxAge;
- } else {
- $ttl = $this->defaultTtl;
- }
- }
-
- if ($cacheControl = $response->getHeader('Cache-Control')) {
- $stale = $cacheControl->getDirective('stale-if-error');
- if ($stale === true) {
- $ttl += $ttl;
- } else if (is_numeric($stale)) {
- $ttl += $stale;
- }
- }
-
- // Determine which manifest key should be used
- $key = $this->getCacheKey($request);
- $persistedRequest = $this->persistHeaders($request);
- $entries = array();
-
- if ($manifest = $this->cache->fetch($key)) {
- // Determine which cache entries should still be in the cache
- $vary = $response->getVary();
- foreach (unserialize($manifest) as $entry) {
- // Check if the entry is expired
- if ($entry[4] < $currentTime) {
- continue;
- }
- $entry[1]['vary'] = isset($entry[1]['vary']) ? $entry[1]['vary'] : '';
- if ($vary != $entry[1]['vary'] || !$this->requestsMatch($vary, $entry[0], $persistedRequest)) {
- $entries[] = $entry;
- }
- }
- }
-
- // Persist the response body if needed
- $bodyDigest = null;
- if ($response->getBody() && $response->getBody()->getContentLength() > 0) {
- $bodyDigest = $this->getBodyKey($request->getUrl(), $response->getBody());
- $this->cache->save($bodyDigest, (string) $response->getBody(), $ttl);
- }
-
- array_unshift($entries, array(
- $persistedRequest,
- $this->persistHeaders($response),
- $response->getStatusCode(),
- $bodyDigest,
- $currentTime + $ttl
- ));
-
- $this->cache->save($key, serialize($entries));
- }
-
- public function delete(RequestInterface $request)
- {
- $key = $this->getCacheKey($request);
- if ($entries = $this->cache->fetch($key)) {
- // Delete each cached body
- foreach (unserialize($entries) as $entry) {
- if ($entry[3]) {
- $this->cache->delete($entry[3]);
- }
- }
- $this->cache->delete($key);
- }
- }
-
- public function purge($url)
- {
- foreach (array('GET', 'HEAD', 'POST', 'PUT', 'DELETE') as $method) {
- $this->delete(new Request($method, $url));
- }
- }
-
- public function fetch(RequestInterface $request)
- {
- $key = $this->getCacheKey($request);
- if (!($entries = $this->cache->fetch($key))) {
- return null;
- }
-
- $match = null;
- $headers = $this->persistHeaders($request);
- $entries = unserialize($entries);
- foreach ($entries as $index => $entry) {
- if ($this->requestsMatch(isset($entry[1]['vary']) ? $entry[1]['vary'] : '', $headers, $entry[0])) {
- $match = $entry;
- break;
- }
- }
-
- if (!$match) {
- return null;
- }
-
- // Ensure that the response is not expired
- $response = null;
- if ($match[4] < time()) {
- $response = -1;
- } else {
- $response = new Response($match[2], $match[1]);
- if ($match[3]) {
- if ($body = $this->cache->fetch($match[3])) {
- $response->setBody($body);
- } else {
- // The response is not valid because the body was somehow deleted
- $response = -1;
- }
- }
- }
-
- if ($response === -1) {
- // Remove the entry from the metadata and update the cache
- unset($entries[$index]);
- if ($entries) {
- $this->cache->save($key, serialize($entries));
- } else {
- $this->cache->delete($key);
- }
- return null;
- }
-
- return $response;
- }
-
- /**
- * Hash a request URL into a string that returns cache metadata
- *
- * @param RequestInterface $request
- *
- * @return string
- */
- protected function getCacheKey(RequestInterface $request)
- {
- // Allow cache.key_filter to trim down the URL cache key by removing generate query string values (e.g. auth)
- if ($filter = $request->getParams()->get('cache.key_filter')) {
- $url = $request->getUrl(true);
- foreach (explode(',', $filter) as $remove) {
- $url->getQuery()->remove(trim($remove));
- }
- } else {
- $url = $request->getUrl();
- }
-
- return $this->keyPrefix . md5($request->getMethod() . ' ' . $url);
- }
-
- /**
- * Create a cache key for a response's body
- *
- * @param string $url URL of the entry
- * @param EntityBodyInterface $body Response body
- *
- * @return string
- */
- protected function getBodyKey($url, EntityBodyInterface $body)
- {
- return $this->keyPrefix . md5($url) . $body->getContentMd5();
- }
-
- /**
- * Determines whether two Request HTTP header sets are non-varying
- *
- * @param string $vary Response vary header
- * @param array $r1 HTTP header array
- * @param array $r2 HTTP header array
- *
- * @return bool
- */
- private function requestsMatch($vary, $r1, $r2)
- {
- if ($vary) {
- foreach (explode(',', $vary) as $header) {
- $key = trim(strtolower($header));
- $v1 = isset($r1[$key]) ? $r1[$key] : null;
- $v2 = isset($r2[$key]) ? $r2[$key] : null;
- if ($v1 !== $v2) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- /**
- * Creates an array of cacheable and normalized message headers
- *
- * @param MessageInterface $message
- *
- * @return array
- */
- private function persistHeaders(MessageInterface $message)
- {
- // Headers are excluded from the caching (see RFC 2616:13.5.1)
- static $noCache = array(
- 'age' => true,
- 'connection' => true,
- 'keep-alive' => true,
- 'proxy-authenticate' => true,
- 'proxy-authorization' => true,
- 'te' => true,
- 'trailers' => true,
- 'transfer-encoding' => true,
- 'upgrade' => true,
- 'set-cookie' => true,
- 'set-cookie2' => true
- );
-
- // Clone the response to not destroy any necessary headers when caching
- $headers = $message->getHeaders()->getAll();
- $headers = array_diff_key($headers, $noCache);
- // Cast the headers to a string
- $headers = array_map(function ($h) { return (string) $h; }, $headers);
-
- return $headers;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCanCacheStrategy.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCanCacheStrategy.php
deleted file mode 100644
index 3ca1fbf..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCanCacheStrategy.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Default strategy used to determine of an HTTP request can be cached
- */
-class DefaultCanCacheStrategy implements CanCacheStrategyInterface
-{
- public function canCacheRequest(RequestInterface $request)
- {
- // Only GET and HEAD requests can be cached
- if ($request->getMethod() != RequestInterface::GET && $request->getMethod() != RequestInterface::HEAD) {
- return false;
- }
-
- // Never cache requests when using no-store
- if ($request->hasHeader('Cache-Control') && $request->getHeader('Cache-Control')->hasDirective('no-store')) {
- return false;
- }
-
- return true;
- }
-
- public function canCacheResponse(Response $response)
- {
- return $response->isSuccessful() && $response->canCache();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultRevalidation.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultRevalidation.php
deleted file mode 100644
index af33234..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultRevalidation.php
+++ /dev/null
@@ -1,174 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Exception\BadResponseException;
-
-/**
- * Default revalidation strategy
- */
-class DefaultRevalidation implements RevalidationInterface
-{
- /** @var CacheStorageInterface Cache object storing cache data */
- protected $storage;
-
- /** @var CanCacheStrategyInterface */
- protected $canCache;
-
- /**
- * @param CacheStorageInterface $cache Cache storage
- * @param CanCacheStrategyInterface $canCache Determines if a message can be cached
- */
- public function __construct(CacheStorageInterface $cache, CanCacheStrategyInterface $canCache = null)
- {
- $this->storage = $cache;
- $this->canCache = $canCache ?: new DefaultCanCacheStrategy();
- }
-
- public function revalidate(RequestInterface $request, Response $response)
- {
- try {
- $revalidate = $this->createRevalidationRequest($request, $response);
- $validateResponse = $revalidate->send();
- if ($validateResponse->getStatusCode() == 200) {
- return $this->handle200Response($request, $validateResponse);
- } elseif ($validateResponse->getStatusCode() == 304) {
- return $this->handle304Response($request, $validateResponse, $response);
- }
- } catch (BadResponseException $e) {
- $this->handleBadResponse($e);
- }
-
- // Other exceptions encountered in the revalidation request are ignored
- // in hopes that sending a request to the origin server will fix it
- return false;
- }
-
- public function shouldRevalidate(RequestInterface $request, Response $response)
- {
- if ($request->getMethod() != RequestInterface::GET) {
- return false;
- }
-
- $reqCache = $request->getHeader('Cache-Control');
- $resCache = $response->getHeader('Cache-Control');
-
- $revalidate = $request->getHeader('Pragma') == 'no-cache' ||
- ($reqCache && ($reqCache->hasDirective('no-cache') || $reqCache->hasDirective('must-revalidate'))) ||
- ($resCache && ($resCache->hasDirective('no-cache') || $resCache->hasDirective('must-revalidate')));
-
- // Use the strong ETag validator if available and the response contains no Cache-Control directive
- if (!$revalidate && !$resCache && $response->hasHeader('ETag')) {
- $revalidate = true;
- }
-
- return $revalidate;
- }
-
- /**
- * Handles a bad response when attempting to revalidate
- *
- * @param BadResponseException $e Exception encountered
- *
- * @throws BadResponseException
- */
- protected function handleBadResponse(BadResponseException $e)
- {
- // 404 errors mean the resource no longer exists, so remove from
- // cache, and prevent an additional request by throwing the exception
- if ($e->getResponse()->getStatusCode() == 404) {
- $this->storage->delete($e->getRequest());
- throw $e;
- }
- }
-
- /**
- * Creates a request to use for revalidation
- *
- * @param RequestInterface $request Request
- * @param Response $response Response to revalidate
- *
- * @return RequestInterface returns a revalidation request
- */
- protected function createRevalidationRequest(RequestInterface $request, Response $response)
- {
- $revalidate = clone $request;
- $revalidate->removeHeader('Pragma')->removeHeader('Cache-Control');
-
- if ($response->getLastModified()) {
- $revalidate->setHeader('If-Modified-Since', $response->getLastModified());
- }
-
- if ($response->getEtag()) {
- $revalidate->setHeader('If-None-Match', $response->getEtag());
- }
-
- // Remove any cache plugins that might be on the request to prevent infinite recursive revalidations
- $dispatcher = $revalidate->getEventDispatcher();
- foreach ($dispatcher->getListeners() as $eventName => $listeners) {
- foreach ($listeners as $listener) {
- if (is_array($listener) && $listener[0] instanceof CachePlugin) {
- $dispatcher->removeListener($eventName, $listener);
- }
- }
- }
-
- return $revalidate;
- }
-
- /**
- * Handles a 200 response response from revalidating. The server does not support validation, so use this response.
- *
- * @param RequestInterface $request Request that was sent
- * @param Response $validateResponse Response received
- *
- * @return bool Returns true if valid, false if invalid
- */
- protected function handle200Response(RequestInterface $request, Response $validateResponse)
- {
- $request->setResponse($validateResponse);
- if ($this->canCache->canCacheResponse($validateResponse)) {
- $this->storage->cache($request, $validateResponse);
- }
-
- return false;
- }
-
- /**
- * Handle a 304 response and ensure that it is still valid
- *
- * @param RequestInterface $request Request that was sent
- * @param Response $validateResponse Response received
- * @param Response $response Original cached response
- *
- * @return bool Returns true if valid, false if invalid
- */
- protected function handle304Response(RequestInterface $request, Response $validateResponse, Response $response)
- {
- static $replaceHeaders = array('Date', 'Expires', 'Cache-Control', 'ETag', 'Last-Modified');
-
- // Make sure that this response has the same ETag
- if ($validateResponse->getEtag() != $response->getEtag()) {
- return false;
- }
-
- // Replace cached headers with any of these headers from the
- // origin server that might be more up to date
- $modified = false;
- foreach ($replaceHeaders as $name) {
- if ($validateResponse->hasHeader($name)) {
- $modified = true;
- $response->setHeader($name, $validateResponse->getHeader($name));
- }
- }
-
- // Store the updated response in cache
- if ($modified && $this->canCache->canCacheResponse($response)) {
- $this->storage->cache($request, $response);
- }
-
- return true;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DenyRevalidation.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DenyRevalidation.php
deleted file mode 100644
index 88b86f3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/DenyRevalidation.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Never performs cache revalidation and just assumes the request is invalid
- */
-class DenyRevalidation extends DefaultRevalidation
-{
- public function __construct() {}
-
- public function revalidate(RequestInterface $request, Response $response)
- {
- return false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/RevalidationInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/RevalidationInterface.php
deleted file mode 100644
index 52353d8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/RevalidationInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Cache revalidation interface
- */
-interface RevalidationInterface
-{
- /**
- * Performs a cache revalidation
- *
- * @param RequestInterface $request Request to revalidate
- * @param Response $response Response that was received
- *
- * @return bool Returns true if the request can be cached
- */
- public function revalidate(RequestInterface $request, Response $response);
-
- /**
- * Returns true if the response should be revalidated
- *
- * @param RequestInterface $request Request to check
- * @param Response $response Response to check
- *
- * @return bool
- */
- public function shouldRevalidate(RequestInterface $request, Response $response);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/SkipRevalidation.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/SkipRevalidation.php
deleted file mode 100644
index 10b5c11..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/SkipRevalidation.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cache;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Never performs cache revalidation and just assumes the request is still ok
- */
-class SkipRevalidation extends DefaultRevalidation
-{
- public function __construct() {}
-
- public function revalidate(RequestInterface $request, Response $response)
- {
- return true;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/composer.json
deleted file mode 100644
index 674d8c4..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cache/composer.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "guzzle/plugin-cache",
- "description": "Guzzle HTTP cache plugin",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version",
- "guzzle/cache": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Cache": "" }
- },
- "target-dir": "Guzzle/Plugin/Cache",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Cookie.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Cookie.php
deleted file mode 100644
index 5218e5f..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Cookie.php
+++ /dev/null
@@ -1,538 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cookie;
-
-use Guzzle\Common\ToArrayInterface;
-
-/**
- * Set-Cookie object
- */
-class Cookie implements ToArrayInterface
-{
- /** @var array Cookie data */
- protected $data;
-
- /**
- * @var string ASCII codes not valid for for use in a cookie name
- *
- * Cookie names are defined as 'token', according to RFC 2616, Section 2.2
- * A valid token may contain any CHAR except CTLs (ASCII 0 - 31 or 127)
- * or any of the following separators
- */
- protected static $invalidCharString;
-
- /**
- * Gets an array of invalid cookie characters
- *
- * @return array
- */
- protected static function getInvalidCharacters()
- {
- if (!self::$invalidCharString) {
- self::$invalidCharString = implode('', array_map('chr', array_merge(
- range(0, 32),
- array(34, 40, 41, 44, 47),
- array(58, 59, 60, 61, 62, 63, 64, 91, 92, 93, 123, 125, 127)
- )));
- }
-
- return self::$invalidCharString;
- }
-
- /**
- * @param array $data Array of cookie data provided by a Cookie parser
- */
- public function __construct(array $data = array())
- {
- static $defaults = array(
- 'name' => '',
- 'value' => '',
- 'domain' => '',
- 'path' => '/',
- 'expires' => null,
- 'max_age' => 0,
- 'comment' => null,
- 'comment_url' => null,
- 'port' => array(),
- 'version' => null,
- 'secure' => false,
- 'discard' => false,
- 'http_only' => false
- );
-
- $this->data = array_merge($defaults, $data);
- // Extract the expires value and turn it into a UNIX timestamp if needed
- if (!$this->getExpires() && $this->getMaxAge()) {
- // Calculate the expires date
- $this->setExpires(time() + (int) $this->getMaxAge());
- } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
- $this->setExpires(strtotime($this->getExpires()));
- }
- }
-
- /**
- * Get the cookie as an array
- *
- * @return array
- */
- public function toArray()
- {
- return $this->data;
- }
-
- /**
- * Get the cookie name
- *
- * @return string
- */
- public function getName()
- {
- return $this->data['name'];
- }
-
- /**
- * Set the cookie name
- *
- * @param string $name Cookie name
- *
- * @return Cookie
- */
- public function setName($name)
- {
- return $this->setData('name', $name);
- }
-
- /**
- * Get the cookie value
- *
- * @return string
- */
- public function getValue()
- {
- return $this->data['value'];
- }
-
- /**
- * Set the cookie value
- *
- * @param string $value Cookie value
- *
- * @return Cookie
- */
- public function setValue($value)
- {
- return $this->setData('value', $value);
- }
-
- /**
- * Get the domain
- *
- * @return string|null
- */
- public function getDomain()
- {
- return $this->data['domain'];
- }
-
- /**
- * Set the domain of the cookie
- *
- * @param string $domain
- *
- * @return Cookie
- */
- public function setDomain($domain)
- {
- return $this->setData('domain', $domain);
- }
-
- /**
- * Get the path
- *
- * @return string
- */
- public function getPath()
- {
- return $this->data['path'];
- }
-
- /**
- * Set the path of the cookie
- *
- * @param string $path Path of the cookie
- *
- * @return Cookie
- */
- public function setPath($path)
- {
- return $this->setData('path', $path);
- }
-
- /**
- * Maximum lifetime of the cookie in seconds
- *
- * @return int|null
- */
- public function getMaxAge()
- {
- return $this->data['max_age'];
- }
-
- /**
- * Set the max-age of the cookie
- *
- * @param int $maxAge Max age of the cookie in seconds
- *
- * @return Cookie
- */
- public function setMaxAge($maxAge)
- {
- return $this->setData('max_age', $maxAge);
- }
-
- /**
- * The UNIX timestamp when the cookie expires
- *
- * @return mixed
- */
- public function getExpires()
- {
- return $this->data['expires'];
- }
-
- /**
- * Set the unix timestamp for which the cookie will expire
- *
- * @param int $timestamp Unix timestamp
- *
- * @return Cookie
- */
- public function setExpires($timestamp)
- {
- return $this->setData('expires', $timestamp);
- }
-
- /**
- * Version of the cookie specification. RFC 2965 is 1
- *
- * @return mixed
- */
- public function getVersion()
- {
- return $this->data['version'];
- }
-
- /**
- * Set the cookie version
- *
- * @param string|int $version Version to set
- *
- * @return Cookie
- */
- public function setVersion($version)
- {
- return $this->setData('version', $version);
- }
-
- /**
- * Get whether or not this is a secure cookie
- *
- * @return null|bool
- */
- public function getSecure()
- {
- return $this->data['secure'];
- }
-
- /**
- * Set whether or not the cookie is secure
- *
- * @param bool $secure Set to true or false if secure
- *
- * @return Cookie
- */
- public function setSecure($secure)
- {
- return $this->setData('secure', (bool) $secure);
- }
-
- /**
- * Get whether or not this is a session cookie
- *
- * @return null|bool
- */
- public function getDiscard()
- {
- return $this->data['discard'];
- }
-
- /**
- * Set whether or not this is a session cookie
- *
- * @param bool $discard Set to true or false if this is a session cookie
- *
- * @return Cookie
- */
- public function setDiscard($discard)
- {
- return $this->setData('discard', $discard);
- }
-
- /**
- * Get the comment
- *
- * @return string|null
- */
- public function getComment()
- {
- return $this->data['comment'];
- }
-
- /**
- * Set the comment of the cookie
- *
- * @param string $comment Cookie comment
- *
- * @return Cookie
- */
- public function setComment($comment)
- {
- return $this->setData('comment', $comment);
- }
-
- /**
- * Get the comment URL of the cookie
- *
- * @return string|null
- */
- public function getCommentUrl()
- {
- return $this->data['comment_url'];
- }
-
- /**
- * Set the comment URL of the cookie
- *
- * @param string $commentUrl Cookie comment URL for more information
- *
- * @return Cookie
- */
- public function setCommentUrl($commentUrl)
- {
- return $this->setData('comment_url', $commentUrl);
- }
-
- /**
- * Get an array of acceptable ports this cookie can be used with
- *
- * @return array
- */
- public function getPorts()
- {
- return $this->data['port'];
- }
-
- /**
- * Set a list of acceptable ports this cookie can be used with
- *
- * @param array $ports Array of acceptable ports
- *
- * @return Cookie
- */
- public function setPorts(array $ports)
- {
- return $this->setData('port', $ports);
- }
-
- /**
- * Get whether or not this is an HTTP only cookie
- *
- * @return bool
- */
- public function getHttpOnly()
- {
- return $this->data['http_only'];
- }
-
- /**
- * Set whether or not this is an HTTP only cookie
- *
- * @param bool $httpOnly Set to true or false if this is HTTP only
- *
- * @return Cookie
- */
- public function setHttpOnly($httpOnly)
- {
- return $this->setData('http_only', $httpOnly);
- }
-
- /**
- * Get an array of extra cookie data
- *
- * @return array
- */
- public function getAttributes()
- {
- return $this->data['data'];
- }
-
- /**
- * Get a specific data point from the extra cookie data
- *
- * @param string $name Name of the data point to retrieve
- *
- * @return null|string
- */
- public function getAttribute($name)
- {
- return array_key_exists($name, $this->data['data']) ? $this->data['data'][$name] : null;
- }
-
- /**
- * Set a cookie data attribute
- *
- * @param string $name Name of the attribute to set
- * @param string $value Value to set
- *
- * @return Cookie
- */
- public function setAttribute($name, $value)
- {
- $this->data['data'][$name] = $value;
-
- return $this;
- }
-
- /**
- * Check if the cookie matches a path value
- *
- * @param string $path Path to check against
- *
- * @return bool
- */
- public function matchesPath($path)
- {
- // RFC6265 http://tools.ietf.org/search/rfc6265#section-5.1.4
- // A request-path path-matches a given cookie-path if at least one of
- // the following conditions holds:
-
- // o The cookie-path and the request-path are identical.
- if ($path == $this->getPath()) {
- return true;
- }
-
- $pos = stripos($path, $this->getPath());
- if ($pos === 0) {
- // o The cookie-path is a prefix of the request-path, and the last
- // character of the cookie-path is %x2F ("/").
- if (substr($this->getPath(), -1, 1) === "/") {
- return true;
- }
-
- // o The cookie-path is a prefix of the request-path, and the first
- // character of the request-path that is not included in the cookie-
- // path is a %x2F ("/") character.
- if (substr($path, strlen($this->getPath()), 1) === "/") {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Check if the cookie matches a domain value
- *
- * @param string $domain Domain to check against
- *
- * @return bool
- */
- public function matchesDomain($domain)
- {
- // Remove the leading '.' as per spec in RFC 6265: http://tools.ietf.org/html/rfc6265#section-5.2.3
- $cookieDomain = ltrim($this->getDomain(), '.');
-
- // Domain not set or exact match.
- if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) {
- return true;
- }
-
- // Matching the subdomain according to RFC 6265: http://tools.ietf.org/html/rfc6265#section-5.1.3
- if (filter_var($domain, FILTER_VALIDATE_IP)) {
- return false;
- }
-
- return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/i', $domain);
- }
-
- /**
- * Check if the cookie is compatible with a specific port
- *
- * @param int $port Port to check
- *
- * @return bool
- */
- public function matchesPort($port)
- {
- return count($this->getPorts()) == 0 || in_array($port, $this->getPorts());
- }
-
- /**
- * Check if the cookie is expired
- *
- * @return bool
- */
- public function isExpired()
- {
- return $this->getExpires() && time() > $this->getExpires();
- }
-
- /**
- * Check if the cookie is valid according to RFC 6265
- *
- * @return bool|string Returns true if valid or an error message if invalid
- */
- public function validate()
- {
- // Names must not be empty, but can be 0
- $name = $this->getName();
- if (empty($name) && !is_numeric($name)) {
- return 'The cookie name must not be empty';
- }
-
- // Check if any of the invalid characters are present in the cookie name
- if (strpbrk($name, self::getInvalidCharacters()) !== false) {
- return 'The cookie name must not contain invalid characters: ' . $name;
- }
-
- // Value must not be empty, but can be 0
- $value = $this->getValue();
- if (empty($value) && !is_numeric($value)) {
- return 'The cookie value must not be empty';
- }
-
- // Domains must not be empty, but can be 0
- // A "0" is not a valid internet domain, but may be used as server name in a private network
- $domain = $this->getDomain();
- if (empty($domain) && !is_numeric($domain)) {
- return 'The cookie domain must not be empty';
- }
-
- return true;
- }
-
- /**
- * Set a value and return the cookie object
- *
- * @param string $key Key to set
- * @param string $value Value to set
- *
- * @return Cookie
- */
- private function setData($key, $value)
- {
- $this->data[$key] = $value;
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/ArrayCookieJar.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/ArrayCookieJar.php
deleted file mode 100644
index 6b67503..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/ArrayCookieJar.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cookie\CookieJar;
-
-use Guzzle\Plugin\Cookie\Cookie;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Parser\ParserRegistry;
-use Guzzle\Plugin\Cookie\Exception\InvalidCookieException;
-
-/**
- * Cookie cookieJar that stores cookies an an array
- */
-class ArrayCookieJar implements CookieJarInterface, \Serializable
-{
- /** @var array Loaded cookie data */
- protected $cookies = array();
-
- /** @var bool Whether or not strict mode is enabled. When enabled, exceptions will be thrown for invalid cookies */
- protected $strictMode;
-
- /**
- * @param bool $strictMode Set to true to throw exceptions when invalid cookies are added to the cookie jar
- */
- public function __construct($strictMode = false)
- {
- $this->strictMode = $strictMode;
- }
-
- /**
- * Enable or disable strict mode on the cookie jar
- *
- * @param bool $strictMode Set to true to throw exceptions when invalid cookies are added. False to ignore them.
- *
- * @return self
- */
- public function setStrictMode($strictMode)
- {
- $this->strictMode = $strictMode;
- }
-
- public function remove($domain = null, $path = null, $name = null)
- {
- $cookies = $this->all($domain, $path, $name, false, false);
- $this->cookies = array_filter($this->cookies, function (Cookie $cookie) use ($cookies) {
- return !in_array($cookie, $cookies, true);
- });
-
- return $this;
- }
-
- public function removeTemporary()
- {
- $this->cookies = array_filter($this->cookies, function (Cookie $cookie) {
- return !$cookie->getDiscard() && $cookie->getExpires();
- });
-
- return $this;
- }
-
- public function removeExpired()
- {
- $currentTime = time();
- $this->cookies = array_filter($this->cookies, function (Cookie $cookie) use ($currentTime) {
- return !$cookie->getExpires() || $currentTime < $cookie->getExpires();
- });
-
- return $this;
- }
-
- public function all($domain = null, $path = null, $name = null, $skipDiscardable = false, $skipExpired = true)
- {
- return array_values(array_filter($this->cookies, function (Cookie $cookie) use (
- $domain,
- $path,
- $name,
- $skipDiscardable,
- $skipExpired
- ) {
- return false === (($name && $cookie->getName() != $name) ||
- ($skipExpired && $cookie->isExpired()) ||
- ($skipDiscardable && ($cookie->getDiscard() || !$cookie->getExpires())) ||
- ($path && !$cookie->matchesPath($path)) ||
- ($domain && !$cookie->matchesDomain($domain)));
- }));
- }
-
- public function add(Cookie $cookie)
- {
- // Only allow cookies with set and valid domain, name, value
- $result = $cookie->validate();
- if ($result !== true) {
- if ($this->strictMode) {
- throw new InvalidCookieException($result);
- } else {
- $this->removeCookieIfEmpty($cookie);
- return false;
- }
- }
-
- // Resolve conflicts with previously set cookies
- foreach ($this->cookies as $i => $c) {
-
- // Two cookies are identical, when their path, domain, port and name are identical
- if ($c->getPath() != $cookie->getPath() ||
- $c->getDomain() != $cookie->getDomain() ||
- $c->getPorts() != $cookie->getPorts() ||
- $c->getName() != $cookie->getName()
- ) {
- continue;
- }
-
- // The previously set cookie is a discard cookie and this one is not so allow the new cookie to be set
- if (!$cookie->getDiscard() && $c->getDiscard()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // If the new cookie's expiration is further into the future, then replace the old cookie
- if ($cookie->getExpires() > $c->getExpires()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // If the value has changed, we better change it
- if ($cookie->getValue() !== $c->getValue()) {
- unset($this->cookies[$i]);
- continue;
- }
-
- // The cookie exists, so no need to continue
- return false;
- }
-
- $this->cookies[] = $cookie;
-
- return true;
- }
-
- /**
- * Serializes the cookie cookieJar
- *
- * @return string
- */
- public function serialize()
- {
- // Only serialize long term cookies and unexpired cookies
- return json_encode(array_map(function (Cookie $cookie) {
- return $cookie->toArray();
- }, $this->all(null, null, null, true, true)));
- }
-
- /**
- * Unserializes the cookie cookieJar
- */
- public function unserialize($data)
- {
- $data = json_decode($data, true);
- if (empty($data)) {
- $this->cookies = array();
- } else {
- $this->cookies = array_map(function (array $cookie) {
- return new Cookie($cookie);
- }, $data);
- }
- }
-
- /**
- * Returns the total number of stored cookies
- *
- * @return int
- */
- public function count()
- {
- return count($this->cookies);
- }
-
- /**
- * Returns an iterator
- *
- * @return \ArrayIterator
- */
- public function getIterator()
- {
- return new \ArrayIterator($this->cookies);
- }
-
- public function addCookiesFromResponse(Response $response, RequestInterface $request = null)
- {
- if ($cookieHeader = $response->getHeader('Set-Cookie')) {
- $parser = ParserRegistry::getInstance()->getParser('cookie');
- foreach ($cookieHeader as $cookie) {
- if ($parsed = $request
- ? $parser->parseCookie($cookie, $request->getHost(), $request->getPath())
- : $parser->parseCookie($cookie)
- ) {
- // Break up cookie v2 into multiple cookies
- foreach ($parsed['cookies'] as $key => $value) {
- $row = $parsed;
- $row['name'] = $key;
- $row['value'] = $value;
- unset($row['cookies']);
- $this->add(new Cookie($row));
- }
- }
- }
- }
- }
-
- public function getMatchingCookies(RequestInterface $request)
- {
- // Find cookies that match this request
- $cookies = $this->all($request->getHost(), $request->getPath());
- // Remove ineligible cookies
- foreach ($cookies as $index => $cookie) {
- if (!$cookie->matchesPort($request->getPort()) || ($cookie->getSecure() && $request->getScheme() != 'https')) {
- unset($cookies[$index]);
- }
- };
-
- return $cookies;
- }
-
- /**
- * If a cookie already exists and the server asks to set it again with a null value, the
- * cookie must be deleted.
- *
- * @param \Guzzle\Plugin\Cookie\Cookie $cookie
- */
- private function removeCookieIfEmpty(Cookie $cookie)
- {
- $cookieValue = $cookie->getValue();
- if ($cookieValue === null || $cookieValue === '') {
- $this->remove($cookie->getDomain(), $cookie->getPath(), $cookie->getName());
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/CookieJarInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/CookieJarInterface.php
deleted file mode 100644
index 7faa7d2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/CookieJarInterface.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cookie\CookieJar;
-
-use Guzzle\Plugin\Cookie\Cookie;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Interface for persisting cookies
- */
-interface CookieJarInterface extends \Countable, \IteratorAggregate
-{
- /**
- * Remove cookies currently held in the Cookie cookieJar.
- *
- * Invoking this method without arguments will empty the whole Cookie cookieJar. If given a $domain argument only
- * cookies belonging to that domain will be removed. If given a $domain and $path argument, cookies belonging to
- * the specified path within that domain are removed. If given all three arguments, then the cookie with the
- * specified name, path and domain is removed.
- *
- * @param string $domain Set to clear only cookies matching a domain
- * @param string $path Set to clear only cookies matching a domain and path
- * @param string $name Set to clear only cookies matching a domain, path, and name
- *
- * @return CookieJarInterface
- */
- public function remove($domain = null, $path = null, $name = null);
-
- /**
- * Discard all temporary cookies.
- *
- * Scans for all cookies in the cookieJar with either no expire field or a true discard flag. To be called when the
- * user agent shuts down according to RFC 2965.
- *
- * @return CookieJarInterface
- */
- public function removeTemporary();
-
- /**
- * Delete any expired cookies
- *
- * @return CookieJarInterface
- */
- public function removeExpired();
-
- /**
- * Add a cookie to the cookie cookieJar
- *
- * @param Cookie $cookie Cookie to add
- *
- * @return bool Returns true on success or false on failure
- */
- public function add(Cookie $cookie);
-
- /**
- * Add cookies from a {@see Guzzle\Http\Message\Response} object
- *
- * @param Response $response Response object
- * @param RequestInterface $request Request that received the response
- */
- public function addCookiesFromResponse(Response $response, RequestInterface $request = null);
-
- /**
- * Get cookies matching a request object
- *
- * @param RequestInterface $request Request object to match
- *
- * @return array
- */
- public function getMatchingCookies(RequestInterface $request);
-
- /**
- * Get all of the matching cookies
- *
- * @param string $domain Domain of the cookie
- * @param string $path Path of the cookie
- * @param string $name Name of the cookie
- * @param bool $skipDiscardable Set to TRUE to skip cookies with the Discard attribute.
- * @param bool $skipExpired Set to FALSE to include expired
- *
- * @return array Returns an array of Cookie objects
- */
- public function all($domain = null, $path = null, $name = null, $skipDiscardable = false, $skipExpired = true);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/FileCookieJar.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/FileCookieJar.php
deleted file mode 100644
index 99344cd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/FileCookieJar.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cookie\CookieJar;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-/**
- * Persists non-session cookies using a JSON formatted file
- */
-class FileCookieJar extends ArrayCookieJar
-{
- /** @var string filename */
- protected $filename;
-
- /**
- * Create a new FileCookieJar object
- *
- * @param string $cookieFile File to store the cookie data
- *
- * @throws RuntimeException if the file cannot be found or created
- */
- public function __construct($cookieFile)
- {
- $this->filename = $cookieFile;
- $this->load();
- }
-
- /**
- * Saves the file when shutting down
- */
- public function __destruct()
- {
- $this->persist();
- }
-
- /**
- * Save the contents of the data array to the file
- *
- * @throws RuntimeException if the file cannot be found or created
- */
- protected function persist()
- {
- if (false === file_put_contents($this->filename, $this->serialize())) {
- // @codeCoverageIgnoreStart
- throw new RuntimeException('Unable to open file ' . $this->filename);
- // @codeCoverageIgnoreEnd
- }
- }
-
- /**
- * Load the contents of the json formatted file into the data array and discard any unsaved state
- */
- protected function load()
- {
- $json = file_get_contents($this->filename);
- if (false === $json) {
- // @codeCoverageIgnoreStart
- throw new RuntimeException('Unable to open file ' . $this->filename);
- // @codeCoverageIgnoreEnd
- }
-
- $this->unserialize($json);
- $this->cookies = $this->cookies ?: array();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php
deleted file mode 100644
index df3210e..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cookie;
-
-use Guzzle\Common\Event;
-use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
-use Guzzle\Plugin\Cookie\CookieJar\CookieJarInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Adds, extracts, and persists cookies between HTTP requests
- */
-class CookiePlugin implements EventSubscriberInterface
-{
- /** @var CookieJarInterface Cookie cookieJar used to hold cookies */
- protected $cookieJar;
-
- /**
- * @param CookieJarInterface $cookieJar Cookie jar used to hold cookies. Creates an ArrayCookieJar by default.
- */
- public function __construct(CookieJarInterface $cookieJar = null)
- {
- $this->cookieJar = $cookieJar ?: new ArrayCookieJar();
- }
-
- public static function getSubscribedEvents()
- {
- return array(
- 'request.before_send' => array('onRequestBeforeSend', 125),
- 'request.sent' => array('onRequestSent', 125)
- );
- }
-
- /**
- * Get the cookie cookieJar
- *
- * @return CookieJarInterface
- */
- public function getCookieJar()
- {
- return $this->cookieJar;
- }
-
- /**
- * Add cookies before a request is sent
- *
- * @param Event $event
- */
- public function onRequestBeforeSend(Event $event)
- {
- $request = $event['request'];
- if (!$request->getParams()->get('cookies.disable')) {
- $request->removeHeader('Cookie');
- // Find cookies that match this request
- foreach ($this->cookieJar->getMatchingCookies($request) as $cookie) {
- $request->addCookie($cookie->getName(), $cookie->getValue());
- }
- }
- }
-
- /**
- * Extract cookies from a sent request
- *
- * @param Event $event
- */
- public function onRequestSent(Event $event)
- {
- $this->cookieJar->addCookiesFromResponse($event['response'], $event['request']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Exception/InvalidCookieException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Exception/InvalidCookieException.php
deleted file mode 100644
index b1fa6fd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Exception/InvalidCookieException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Cookie\Exception;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-class InvalidCookieException extends InvalidArgumentException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/composer.json
deleted file mode 100644
index f0b5230..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Cookie/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-cookie",
- "description": "Guzzle cookie plugin",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Cookie": "" }
- },
- "target-dir": "Guzzle/Plugin/Cookie",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/CurlAuthPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/CurlAuthPlugin.php
deleted file mode 100644
index 610e60c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/CurlAuthPlugin.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\CurlAuth;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\Version;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Adds specified curl auth to all requests sent from a client. Defaults to CURLAUTH_BASIC if none supplied.
- * @deprecated Use $client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');
- */
-class CurlAuthPlugin implements EventSubscriberInterface
-{
- private $username;
- private $password;
- private $scheme;
-
- /**
- * @param string $username HTTP basic auth username
- * @param string $password Password
- * @param int $scheme Curl auth scheme
- */
- public function __construct($username, $password, $scheme=CURLAUTH_BASIC)
- {
- Version::warn(__CLASS__ . " is deprecated. Use \$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');");
- $this->username = $username;
- $this->password = $password;
- $this->scheme = $scheme;
- }
-
- public static function getSubscribedEvents()
- {
- return array('client.create_request' => array('onRequestCreate', 255));
- }
-
- /**
- * Add basic auth
- *
- * @param Event $event
- */
- public function onRequestCreate(Event $event)
- {
- $event['request']->setAuth($this->username, $this->password, $this->scheme);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/composer.json
deleted file mode 100644
index edc8b24..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-curlauth",
- "description": "Guzzle cURL authorization plugin",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "curl", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\CurlAuth": "" }
- },
- "target-dir": "Guzzle/Plugin/CurlAuth",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponseExceptionInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponseExceptionInterface.php
deleted file mode 100644
index 5dce8bd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponseExceptionInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\ErrorResponse;
-
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Http\Message\Response;
-
-/**
- * Interface used to create an exception from an error response
- */
-interface ErrorResponseExceptionInterface
-{
- /**
- * Create an exception for a command based on a command and an error response definition
- *
- * @param CommandInterface $command Command that was sent
- * @param Response $response The error response
- *
- * @return self
- */
- public static function fromCommand(CommandInterface $command, Response $response);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponsePlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponsePlugin.php
deleted file mode 100644
index 588b9c3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponsePlugin.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\ErrorResponse;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Plugin\ErrorResponse\Exception\ErrorResponseException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Converts generic Guzzle response exceptions into errorResponse exceptions
- */
-class ErrorResponsePlugin implements EventSubscriberInterface
-{
- public static function getSubscribedEvents()
- {
- return array('command.before_send' => array('onCommandBeforeSend', -1));
- }
-
- /**
- * Adds a listener to requests before they sent from a command
- *
- * @param Event $event Event emitted
- */
- public function onCommandBeforeSend(Event $event)
- {
- $command = $event['command'];
- if ($operation = $command->getOperation()) {
- if ($operation->getErrorResponses()) {
- $request = $command->getRequest();
- $request->getEventDispatcher()
- ->addListener('request.complete', $this->getErrorClosure($request, $command, $operation));
- }
- }
- }
-
- /**
- * @param RequestInterface $request Request that received an error
- * @param CommandInterface $command Command that created the request
- * @param Operation $operation Operation that defines the request and errors
- *
- * @return \Closure Returns a closure
- * @throws ErrorResponseException
- */
- protected function getErrorClosure(RequestInterface $request, CommandInterface $command, Operation $operation)
- {
- return function (Event $event) use ($request, $command, $operation) {
- $response = $event['response'];
- foreach ($operation->getErrorResponses() as $error) {
- if (!isset($error['class'])) {
- continue;
- }
- if (isset($error['code']) && $response->getStatusCode() != $error['code']) {
- continue;
- }
- if (isset($error['reason']) && $response->getReasonPhrase() != $error['reason']) {
- continue;
- }
- $className = $error['class'];
- $errorClassInterface = __NAMESPACE__ . '\\ErrorResponseExceptionInterface';
- if (!class_exists($className)) {
- throw new ErrorResponseException("{$className} does not exist");
- } elseif (!(in_array($errorClassInterface, class_implements($className)))) {
- throw new ErrorResponseException("{$className} must implement {$errorClassInterface}");
- }
- throw $className::fromCommand($command, $response);
- }
- };
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/Exception/ErrorResponseException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/Exception/ErrorResponseException.php
deleted file mode 100644
index 1d89e40..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/Exception/ErrorResponseException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\ErrorResponse\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-class ErrorResponseException extends RuntimeException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/composer.json
deleted file mode 100644
index 607e861..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-error-response",
- "description": "Guzzle errorResponse plugin for creating error exceptions based on a service description",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/service": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\ErrorResponse": "" }
- },
- "target-dir": "Guzzle/Plugin/ErrorResponse",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/HistoryPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/HistoryPlugin.php
deleted file mode 100644
index 7375e89..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/HistoryPlugin.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\History;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Response;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Maintains a list of requests and responses sent using a request or client
- */
-class HistoryPlugin implements EventSubscriberInterface, \IteratorAggregate, \Countable
-{
- /** @var int The maximum number of requests to maintain in the history */
- protected $limit = 10;
-
- /** @var array Requests and responses that have passed through the plugin */
- protected $transactions = array();
-
- public static function getSubscribedEvents()
- {
- return array('request.sent' => array('onRequestSent', 9999));
- }
-
- /**
- * Convert to a string that contains all request and response headers
- *
- * @return string
- */
- public function __toString()
- {
- $lines = array();
- foreach ($this->transactions as $entry) {
- $response = isset($entry['response']) ? $entry['response'] : '';
- $lines[] = '> ' . trim($entry['request']) . "\n\n< " . trim($response) . "\n";
- }
-
- return implode("\n", $lines);
- }
-
- /**
- * Add a request to the history
- *
- * @param RequestInterface $request Request to add
- * @param Response $response Response of the request
- *
- * @return HistoryPlugin
- */
- public function add(RequestInterface $request, Response $response = null)
- {
- if (!$response && $request->getResponse()) {
- $response = $request->getResponse();
- }
-
- $this->transactions[] = array('request' => $request, 'response' => $response);
- if (count($this->transactions) > $this->getlimit()) {
- array_shift($this->transactions);
- }
-
- return $this;
- }
-
- /**
- * Set the max number of requests to store
- *
- * @param int $limit Limit
- *
- * @return HistoryPlugin
- */
- public function setLimit($limit)
- {
- $this->limit = (int) $limit;
-
- return $this;
- }
-
- /**
- * Get the request limit
- *
- * @return int
- */
- public function getLimit()
- {
- return $this->limit;
- }
-
- /**
- * Get all of the raw transactions in the form of an array of associative arrays containing
- * 'request' and 'response' keys.
- *
- * @return array
- */
- public function getAll()
- {
- return $this->transactions;
- }
-
- /**
- * Get the requests in the history
- *
- * @return \ArrayIterator
- */
- public function getIterator()
- {
- // Return an iterator just like the old iteration of the HistoryPlugin for BC compatibility (use getAll())
- return new \ArrayIterator(array_map(function ($entry) {
- $entry['request']->getParams()->set('actual_response', $entry['response']);
- return $entry['request'];
- }, $this->transactions));
- }
-
- /**
- * Get the number of requests in the history
- *
- * @return int
- */
- public function count()
- {
- return count($this->transactions);
- }
-
- /**
- * Get the last request sent
- *
- * @return RequestInterface
- */
- public function getLastRequest()
- {
- $last = end($this->transactions);
-
- return $last['request'];
- }
-
- /**
- * Get the last response in the history
- *
- * @return Response|null
- */
- public function getLastResponse()
- {
- $last = end($this->transactions);
-
- return isset($last['response']) ? $last['response'] : null;
- }
-
- /**
- * Clears the history
- *
- * @return HistoryPlugin
- */
- public function clear()
- {
- $this->transactions = array();
-
- return $this;
- }
-
- public function onRequestSent(Event $event)
- {
- $this->add($event['request'], $event['response']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/composer.json
deleted file mode 100644
index ba0bf2c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/History/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-history",
- "description": "Guzzle history plugin",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\History": "" }
- },
- "target-dir": "Guzzle/Plugin/History",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/LogPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/LogPlugin.php
deleted file mode 100644
index cabdea8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/LogPlugin.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Log;
-
-use Guzzle\Common\Event;
-use Guzzle\Log\LogAdapterInterface;
-use Guzzle\Log\MessageFormatter;
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Plugin class that will add request and response logging to an HTTP request.
- *
- * The log plugin uses a message formatter that allows custom messages via template variable substitution.
- *
- * @see MessageLogger for a list of available log template variable substitutions
- */
-class LogPlugin implements EventSubscriberInterface
-{
- /** @var LogAdapterInterface Adapter responsible for writing log data */
- protected $logAdapter;
-
- /** @var MessageFormatter Formatter used to format messages before logging */
- protected $formatter;
-
- /** @var bool Whether or not to wire request and response bodies */
- protected $wireBodies;
-
- /**
- * @param LogAdapterInterface $logAdapter Adapter object used to log message
- * @param string|MessageFormatter $formatter Formatter used to format log messages or the formatter template
- * @param bool $wireBodies Set to true to track request and response bodies using a temporary
- * buffer if the bodies are not repeatable.
- */
- public function __construct(
- LogAdapterInterface $logAdapter,
- $formatter = null,
- $wireBodies = false
- ) {
- $this->logAdapter = $logAdapter;
- $this->formatter = $formatter instanceof MessageFormatter ? $formatter : new MessageFormatter($formatter);
- $this->wireBodies = $wireBodies;
- }
-
- /**
- * Get a log plugin that outputs full request, response, and curl error information to stderr
- *
- * @param bool $wireBodies Set to false to disable request/response body output when they use are not repeatable
- * @param resource $stream Stream to write to when logging. Defaults to STDERR when it is available
- *
- * @return self
- */
- public static function getDebugPlugin($wireBodies = true, $stream = null)
- {
- if ($stream === null) {
- if (defined('STDERR')) {
- $stream = STDERR;
- } else {
- $stream = fopen('php://output', 'w');
- }
- }
-
- return new self(new ClosureLogAdapter(function ($m) use ($stream) {
- fwrite($stream, $m . PHP_EOL);
- }), "# Request:\n{request}\n\n# Response:\n{response}\n\n# Errors: {curl_code} {curl_error}", $wireBodies);
- }
-
- public static function getSubscribedEvents()
- {
- return array(
- 'curl.callback.write' => array('onCurlWrite', 255),
- 'curl.callback.read' => array('onCurlRead', 255),
- 'request.before_send' => array('onRequestBeforeSend', 255),
- 'request.sent' => array('onRequestSent', 255)
- );
- }
-
- /**
- * Event triggered when curl data is read from a request
- *
- * @param Event $event
- */
- public function onCurlRead(Event $event)
- {
- // Stream the request body to the log if the body is not repeatable
- if ($wire = $event['request']->getParams()->get('request_wire')) {
- $wire->write($event['read']);
- }
- }
-
- /**
- * Event triggered when curl data is written to a response
- *
- * @param Event $event
- */
- public function onCurlWrite(Event $event)
- {
- // Stream the response body to the log if the body is not repeatable
- if ($wire = $event['request']->getParams()->get('response_wire')) {
- $wire->write($event['write']);
- }
- }
-
- /**
- * Called before a request is sent
- *
- * @param Event $event
- */
- public function onRequestBeforeSend(Event $event)
- {
- if ($this->wireBodies) {
- $request = $event['request'];
- // Ensure that curl IO events are emitted
- $request->getCurlOptions()->set('emit_io', true);
- // We need to make special handling for content wiring and non-repeatable streams.
- if ($request instanceof EntityEnclosingRequestInterface && $request->getBody()
- && (!$request->getBody()->isSeekable() || !$request->getBody()->isReadable())
- ) {
- // The body of the request cannot be recalled so logging the body will require us to buffer it
- $request->getParams()->set('request_wire', EntityBody::factory());
- }
- if (!$request->getResponseBody()->isRepeatable()) {
- // The body of the response cannot be recalled so logging the body will require us to buffer it
- $request->getParams()->set('response_wire', EntityBody::factory());
- }
- }
- }
-
- /**
- * Triggers the actual log write when a request completes
- *
- * @param Event $event
- */
- public function onRequestSent(Event $event)
- {
- $request = $event['request'];
- $response = $event['response'];
- $handle = $event['handle'];
-
- if ($wire = $request->getParams()->get('request_wire')) {
- $request = clone $request;
- $request->setBody($wire);
- }
-
- if ($wire = $request->getParams()->get('response_wire')) {
- $response = clone $response;
- $response->setBody($wire);
- }
-
- // Send the log message to the adapter, adding a category and host
- $priority = $response && $response->isError() ? LOG_ERR : LOG_DEBUG;
- $message = $this->formatter->format($request, $response, $handle);
- $this->logAdapter->log($message, $priority, array(
- 'request' => $request,
- 'response' => $response,
- 'handle' => $handle
- ));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/composer.json
deleted file mode 100644
index 130e6da..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Log/composer.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "guzzle/plugin-log",
- "description": "Guzzle log plugin for over the wire logging",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "log", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version",
- "guzzle/log": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Log": "" }
- },
- "target-dir": "Guzzle/Plugin/Log",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/CommandContentMd5Plugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/CommandContentMd5Plugin.php
deleted file mode 100644
index 8512424..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/CommandContentMd5Plugin.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Md5;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Listener used to add a ContentMD5 header to the body of a command and adds ContentMD5 validation if the
- * ValidateMD5 option is not set to false on a command
- */
-class CommandContentMd5Plugin implements EventSubscriberInterface
-{
- /** @var string Parameter used to check if the ContentMD5 value is being added */
- protected $contentMd5Param;
-
- /** @var string Parameter used to check if validation should occur on the response */
- protected $validateMd5Param;
-
- /**
- * @param string $contentMd5Param Parameter used to check if the ContentMD5 value is being added
- * @param string $validateMd5Param Parameter used to check if validation should occur on the response
- */
- public function __construct($contentMd5Param = 'ContentMD5', $validateMd5Param = 'ValidateMD5')
- {
- $this->contentMd5Param = $contentMd5Param;
- $this->validateMd5Param = $validateMd5Param;
- }
-
- public static function getSubscribedEvents()
- {
- return array('command.before_send' => array('onCommandBeforeSend', -255));
- }
-
- public function onCommandBeforeSend(Event $event)
- {
- $command = $event['command'];
- $request = $command->getRequest();
-
- // Only add an MD5 is there is a MD5 option on the operation and it has a payload
- if ($request instanceof EntityEnclosingRequestInterface && $request->getBody()
- && $command->getOperation()->hasParam($this->contentMd5Param)) {
- // Check if an MD5 checksum value should be passed along to the request
- if ($command[$this->contentMd5Param] === true) {
- if (false !== ($md5 = $request->getBody()->getContentMd5(true, true))) {
- $request->setHeader('Content-MD5', $md5);
- }
- }
- }
-
- // Check if MD5 validation should be used with the response
- if ($command[$this->validateMd5Param] === true) {
- $request->addSubscriber(new Md5ValidatorPlugin(true, false));
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/Md5ValidatorPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/Md5ValidatorPlugin.php
deleted file mode 100644
index 5d7a378..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/Md5ValidatorPlugin.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Md5;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\Exception\UnexpectedValueException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Ensures that an the MD5 hash of an entity body matches the Content-MD5
- * header (if set) of an HTTP response. An exception is thrown if the
- * calculated MD5 does not match the expected MD5.
- */
-class Md5ValidatorPlugin implements EventSubscriberInterface
-{
- /** @var int Maximum Content-Length in bytes to validate */
- protected $contentLengthCutoff;
-
- /** @var bool Whether or not to compare when a Content-Encoding is present */
- protected $contentEncoded;
-
- /**
- * @param bool $contentEncoded Calculating the MD5 hash of an entity body where a Content-Encoding was
- * applied is a more expensive comparison because the entity body will need to
- * be compressed in order to get the correct hash. Set to FALSE to not
- * validate the MD5 hash of an entity body with an applied Content-Encoding.
- * @param bool|int $contentLengthCutoff Maximum Content-Length (bytes) in which a MD5 hash will be validated. Any
- * response with a Content-Length greater than this value will not be validated
- * because it will be deemed too memory intensive.
- */
- public function __construct($contentEncoded = true, $contentLengthCutoff = false)
- {
- $this->contentLengthCutoff = $contentLengthCutoff;
- $this->contentEncoded = $contentEncoded;
- }
-
- public static function getSubscribedEvents()
- {
- return array('request.complete' => array('onRequestComplete', 255));
- }
-
- /**
- * {@inheritdoc}
- * @throws UnexpectedValueException
- */
- public function onRequestComplete(Event $event)
- {
- $response = $event['response'];
-
- if (!$contentMd5 = $response->getContentMd5()) {
- return;
- }
-
- $contentEncoding = $response->getContentEncoding();
- if ($contentEncoding && !$this->contentEncoded) {
- return false;
- }
-
- // Make sure that the size of the request is under the cutoff size
- if ($this->contentLengthCutoff) {
- $size = $response->getContentLength() ?: $response->getBody()->getSize();
- if (!$size || $size > $this->contentLengthCutoff) {
- return;
- }
- }
-
- if (!$contentEncoding) {
- $hash = $response->getBody()->getContentMd5();
- } elseif ($contentEncoding == 'gzip') {
- $response->getBody()->compress('zlib.deflate');
- $hash = $response->getBody()->getContentMd5();
- $response->getBody()->uncompress();
- } elseif ($contentEncoding == 'compress') {
- $response->getBody()->compress('bzip2.compress');
- $hash = $response->getBody()->getContentMd5();
- $response->getBody()->uncompress();
- } else {
- return;
- }
-
- if ($contentMd5 !== $hash) {
- throw new UnexpectedValueException(
- "The response entity body may have been modified over the wire. The Content-MD5 "
- . "received ({$contentMd5}) did not match the calculated MD5 hash ({$hash})."
- );
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/composer.json
deleted file mode 100644
index 0602d06..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Md5/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-md5",
- "description": "Guzzle MD5 plugins",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Md5": "" }
- },
- "target-dir": "Guzzle/Plugin/Md5",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/MockPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/MockPlugin.php
deleted file mode 100644
index 2440578..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/MockPlugin.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Mock;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Http\Exception\CurlException;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Message\Response;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Queues mock responses or exceptions and delivers mock responses or exceptions in a fifo order.
- */
-class MockPlugin extends AbstractHasDispatcher implements EventSubscriberInterface, \Countable
-{
- /** @var array Array of mock responses / exceptions */
- protected $queue = array();
-
- /** @var bool Whether or not to remove the plugin when the queue is empty */
- protected $temporary = false;
-
- /** @var array Array of requests that were mocked */
- protected $received = array();
-
- /** @var bool Whether or not to consume an entity body when a mock response is served */
- protected $readBodies;
-
- /**
- * @param array $items Array of responses or exceptions to queue
- * @param bool $temporary Set to TRUE to remove the plugin when the queue is empty
- * @param bool $readBodies Set to TRUE to consume the entity body when a mock is served
- */
- public function __construct(array $items = null, $temporary = false, $readBodies = false)
- {
- $this->readBodies = $readBodies;
- $this->temporary = $temporary;
- if ($items) {
- foreach ($items as $item) {
- if ($item instanceof \Exception) {
- $this->addException($item);
- } else {
- $this->addResponse($item);
- }
- }
- }
- }
-
- public static function getSubscribedEvents()
- {
- // Use a number lower than the CachePlugin
- return array('request.before_send' => array('onRequestBeforeSend', -999));
- }
-
- public static function getAllEvents()
- {
- return array('mock.request');
- }
-
- /**
- * Get a mock response from a file
- *
- * @param string $path File to retrieve a mock response from
- *
- * @return Response
- * @throws InvalidArgumentException if the file is not found
- */
- public static function getMockFile($path)
- {
- if (!file_exists($path)) {
- throw new InvalidArgumentException('Unable to open mock file: ' . $path);
- }
-
- return Response::fromMessage(file_get_contents($path));
- }
-
- /**
- * Set whether or not to consume the entity body of a request when a mock
- * response is used
- *
- * @param bool $readBodies Set to true to read and consume entity bodies
- *
- * @return self
- */
- public function readBodies($readBodies)
- {
- $this->readBodies = $readBodies;
-
- return $this;
- }
-
- /**
- * Returns the number of remaining mock responses
- *
- * @return int
- */
- public function count()
- {
- return count($this->queue);
- }
-
- /**
- * Add a response to the end of the queue
- *
- * @param string|Response $response Response object or path to response file
- *
- * @return MockPlugin
- * @throws InvalidArgumentException if a string or Response is not passed
- */
- public function addResponse($response)
- {
- if (!($response instanceof Response)) {
- if (!is_string($response)) {
- throw new InvalidArgumentException('Invalid response');
- }
- $response = self::getMockFile($response);
- }
-
- $this->queue[] = $response;
-
- return $this;
- }
-
- /**
- * Add an exception to the end of the queue
- *
- * @param CurlException $e Exception to throw when the request is executed
- *
- * @return MockPlugin
- */
- public function addException(CurlException $e)
- {
- $this->queue[] = $e;
-
- return $this;
- }
-
- /**
- * Clear the queue
- *
- * @return MockPlugin
- */
- public function clearQueue()
- {
- $this->queue = array();
-
- return $this;
- }
-
- /**
- * Returns an array of mock responses remaining in the queue
- *
- * @return array
- */
- public function getQueue()
- {
- return $this->queue;
- }
-
- /**
- * Check if this is a temporary plugin
- *
- * @return bool
- */
- public function isTemporary()
- {
- return $this->temporary;
- }
-
- /**
- * Get a response from the front of the list and add it to a request
- *
- * @param RequestInterface $request Request to mock
- *
- * @return self
- * @throws CurlException When request.send is called and an exception is queued
- */
- public function dequeue(RequestInterface $request)
- {
- $this->dispatch('mock.request', array('plugin' => $this, 'request' => $request));
-
- $item = array_shift($this->queue);
- if ($item instanceof Response) {
- if ($this->readBodies && $request instanceof EntityEnclosingRequestInterface) {
- $request->getEventDispatcher()->addListener('request.sent', $f = function (Event $event) use (&$f) {
- while ($data = $event['request']->getBody()->read(8096));
- // Remove the listener after one-time use
- $event['request']->getEventDispatcher()->removeListener('request.sent', $f);
- });
- }
- $request->setResponse($item);
- } elseif ($item instanceof CurlException) {
- // Emulates exceptions encountered while transferring requests
- $item->setRequest($request);
- $state = $request->setState(RequestInterface::STATE_ERROR, array('exception' => $item));
- // Only throw if the exception wasn't handled
- if ($state == RequestInterface::STATE_ERROR) {
- throw $item;
- }
- }
-
- return $this;
- }
-
- /**
- * Clear the array of received requests
- */
- public function flush()
- {
- $this->received = array();
- }
-
- /**
- * Get an array of requests that were mocked by this plugin
- *
- * @return array
- */
- public function getReceivedRequests()
- {
- return $this->received;
- }
-
- /**
- * Called when a request is about to be sent
- *
- * @param Event $event
- * @throws \OutOfBoundsException When queue is empty
- */
- public function onRequestBeforeSend(Event $event)
- {
- if (!$this->queue) {
- throw new \OutOfBoundsException('Mock queue is empty');
- }
-
- $request = $event['request'];
- $this->received[] = $request;
- // Detach the filter from the client so it's a one-time use
- if ($this->temporary && count($this->queue) == 1 && $request->getClient()) {
- $request->getClient()->getEventDispatcher()->removeSubscriber($this);
- }
- $this->dequeue($request);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/composer.json
deleted file mode 100644
index f8201e3..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Mock/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-mock",
- "description": "Guzzle Mock plugin",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["mock", "plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Mock": "" }
- },
- "target-dir": "Guzzle/Plugin/Mock",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/OauthPlugin.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/OauthPlugin.php
deleted file mode 100644
index 95e0c3e..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/OauthPlugin.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?php
-
-namespace Guzzle\Plugin\Oauth;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\Collection;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\QueryString;
-use Guzzle\Http\Url;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * OAuth signing plugin
- * @link http://oauth.net/core/1.0/#rfc.section.9.1.1
- */
-class OauthPlugin implements EventSubscriberInterface
-{
- /**
- * Consumer request method constants. See http://oauth.net/core/1.0/#consumer_req_param
- */
- const REQUEST_METHOD_HEADER = 'header';
- const REQUEST_METHOD_QUERY = 'query';
-
- /** @var Collection Configuration settings */
- protected $config;
-
- /**
- * Create a new OAuth 1.0 plugin
- *
- * @param array $config Configuration array containing these parameters:
- * - string 'request_method' Consumer request method. Use the class constants.
- * - string 'callback' OAuth callback
- * - string 'consumer_key' Consumer key
- * - string 'consumer_secret' Consumer secret
- * - string 'token' Token
- * - string 'token_secret' Token secret
- * - string 'verifier' OAuth verifier.
- * - string 'version' OAuth version. Defaults to 1.0
- * - string 'signature_method' Custom signature method
- * - bool 'disable_post_params' Set to true to prevent POST parameters from being signed
- * - array|Closure 'signature_callback' Custom signature callback that accepts a string to sign and a signing key
- */
- public function __construct($config)
- {
- $this->config = Collection::fromConfig($config, array(
- 'version' => '1.0',
- 'request_method' => self::REQUEST_METHOD_HEADER,
- 'consumer_key' => 'anonymous',
- 'consumer_secret' => 'anonymous',
- 'signature_method' => 'HMAC-SHA1',
- 'signature_callback' => function($stringToSign, $key) {
- return hash_hmac('sha1', $stringToSign, $key, true);
- }
- ), array(
- 'signature_method', 'signature_callback', 'version',
- 'consumer_key', 'consumer_secret'
- ));
- }
-
- public static function getSubscribedEvents()
- {
- return array(
- 'request.before_send' => array('onRequestBeforeSend', -1000)
- );
- }
-
- /**
- * Request before-send event handler
- *
- * @param Event $event Event received
- * @return array
- * @throws \InvalidArgumentException
- */
- public function onRequestBeforeSend(Event $event)
- {
- $timestamp = $this->getTimestamp($event);
- $request = $event['request'];
- $nonce = $this->generateNonce($request);
- $authorizationParams = $this->getOauthParams($timestamp, $nonce);
- $authorizationParams['oauth_signature'] = $this->getSignature($request, $timestamp, $nonce);
-
- switch ($this->config['request_method']) {
- case self::REQUEST_METHOD_HEADER:
- $request->setHeader(
- 'Authorization',
- $this->buildAuthorizationHeader($authorizationParams)
- );
- break;
- case self::REQUEST_METHOD_QUERY:
- foreach ($authorizationParams as $key => $value) {
- $request->getQuery()->set($key, $value);
- }
- break;
- default:
- throw new \InvalidArgumentException(sprintf(
- 'Invalid consumer method "%s"',
- $this->config['request_method']
- ));
- }
-
- return $authorizationParams;
- }
-
- /**
- * Builds the Authorization header for a request
- *
- * @param array $authorizationParams Associative array of authorization parameters
- *
- * @return string
- */
- private function buildAuthorizationHeader($authorizationParams)
- {
- $authorizationString = 'OAuth ';
- foreach ($authorizationParams as $key => $val) {
- if ($val) {
- $authorizationString .= $key . '="' . urlencode($val) . '", ';
- }
- }
-
- return substr($authorizationString, 0, -2);
- }
-
- /**
- * Calculate signature for request
- *
- * @param RequestInterface $request Request to generate a signature for
- * @param integer $timestamp Timestamp to use for nonce
- * @param string $nonce
- *
- * @return string
- */
- public function getSignature(RequestInterface $request, $timestamp, $nonce)
- {
- $string = $this->getStringToSign($request, $timestamp, $nonce);
- $key = urlencode($this->config['consumer_secret']) . '&' . urlencode($this->config['token_secret']);
-
- return base64_encode(call_user_func($this->config['signature_callback'], $string, $key));
- }
-
- /**
- * Calculate string to sign
- *
- * @param RequestInterface $request Request to generate a signature for
- * @param int $timestamp Timestamp to use for nonce
- * @param string $nonce
- *
- * @return string
- */
- public function getStringToSign(RequestInterface $request, $timestamp, $nonce)
- {
- $params = $this->getParamsToSign($request, $timestamp, $nonce);
-
- // Convert booleans to strings.
- $params = $this->prepareParameters($params);
-
- // Build signing string from combined params
- $parameterString = clone $request->getQuery();
- $parameterString->replace($params);
-
- $url = Url::factory($request->getUrl())->setQuery('')->setFragment(null);
-
- return strtoupper($request->getMethod()) . '&'
- . rawurlencode($url) . '&'
- . rawurlencode((string) $parameterString);
- }
-
- /**
- * Get the oauth parameters as named by the oauth spec
- *
- * @param $timestamp
- * @param $nonce
- * @return Collection
- */
- protected function getOauthParams($timestamp, $nonce)
- {
- $params = new Collection(array(
- 'oauth_consumer_key' => $this->config['consumer_key'],
- 'oauth_nonce' => $nonce,
- 'oauth_signature_method' => $this->config['signature_method'],
- 'oauth_timestamp' => $timestamp,
- ));
-
- // Optional parameters should not be set if they have not been set in the config as
- // the parameter may be considered invalid by the Oauth service.
- $optionalParams = array(
- 'callback' => 'oauth_callback',
- 'token' => 'oauth_token',
- 'verifier' => 'oauth_verifier',
- 'version' => 'oauth_version'
- );
-
- foreach ($optionalParams as $optionName => $oauthName) {
- if (isset($this->config[$optionName]) == true) {
- $params[$oauthName] = $this->config[$optionName];
- }
- }
-
- return $params;
- }
-
- /**
- * Get all of the parameters required to sign a request including:
- * * The oauth params
- * * The request GET params
- * * The params passed in the POST body (with a content-type of application/x-www-form-urlencoded)
- *
- * @param RequestInterface $request Request to generate a signature for
- * @param integer $timestamp Timestamp to use for nonce
- * @param string $nonce
- *
- * @return array
- */
- public function getParamsToSign(RequestInterface $request, $timestamp, $nonce)
- {
- $params = $this->getOauthParams($timestamp, $nonce);
-
- // Add query string parameters
- $params->merge($request->getQuery());
-
- // Add POST fields to signing string if required
- if ($this->shouldPostFieldsBeSigned($request))
- {
- $params->merge($request->getPostFields());
- }
-
- // Sort params
- $params = $params->toArray();
- uksort($params, 'strcmp');
-
- return $params;
- }
-
- /**
- * Decide whether the post fields should be added to the base string that Oauth signs.
- * This implementation is correct. Non-conformant APIs may require that this method be
- * overwritten e.g. the Flickr API incorrectly adds the post fields when the Content-Type
- * is 'application/x-www-form-urlencoded'
- *
- * @param $request
- * @return bool Whether the post fields should be signed or not
- */
- public function shouldPostFieldsBeSigned($request)
- {
- if (!$this->config->get('disable_post_params') &&
- $request instanceof EntityEnclosingRequestInterface &&
- false !== strpos($request->getHeader('Content-Type'), 'application/x-www-form-urlencoded'))
- {
- return true;
- }
-
- return false;
- }
-
- /**
- * Returns a Nonce Based on the unique id and URL. This will allow for multiple requests in parallel with the same
- * exact timestamp to use separate nonce's.
- *
- * @param RequestInterface $request Request to generate a nonce for
- *
- * @return string
- */
- public function generateNonce(RequestInterface $request)
- {
- return sha1(uniqid('', true) . $request->getUrl());
- }
-
- /**
- * Gets timestamp from event or create new timestamp
- *
- * @param Event $event Event containing contextual information
- *
- * @return int
- */
- public function getTimestamp(Event $event)
- {
- return $event['timestamp'] ?: time();
- }
-
- /**
- * Convert booleans to strings, removed unset parameters, and sorts the array
- *
- * @param array $data Data array
- *
- * @return array
- */
- protected function prepareParameters($data)
- {
- ksort($data);
- foreach ($data as $key => &$value) {
- switch (gettype($value)) {
- case 'NULL':
- unset($data[$key]);
- break;
- case 'array':
- $data[$key] = self::prepareParameters($value);
- break;
- case 'boolean':
- $data[$key] = $value ? 'true' : 'false';
- break;
- }
- }
-
- return $data;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/composer.json
deleted file mode 100644
index c9766ba..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/Oauth/composer.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "guzzle/plugin-oauth",
- "description": "Guzzle OAuth plugin",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["oauth", "plugin", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin\\Oauth": "" }
- },
- "target-dir": "Guzzle/Plugin/Oauth",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/composer.json
deleted file mode 100644
index 2bbe64c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Plugin/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "guzzle/plugin",
- "description": "Guzzle plugin component containing all Guzzle HTTP plugins",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["http", "client", "plugin", "extension", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/http": "self.version"
- },
- "suggest": {
- "guzzle/cache": "self.version",
- "guzzle/log": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Plugin": "" }
- },
- "target-dir": "Guzzle/Plugin",
- "replace": {
- "guzzle/plugin-async": "self.version",
- "guzzle/plugin-backoff": "self.version",
- "guzzle/plugin-cache": "self.version",
- "guzzle/plugin-cookie": "self.version",
- "guzzle/plugin-curlauth": "self.version",
- "guzzle/plugin-error-response": "self.version",
- "guzzle/plugin-history": "self.version",
- "guzzle/plugin-log": "self.version",
- "guzzle/plugin-md5": "self.version",
- "guzzle/plugin-mock": "self.version",
- "guzzle/plugin-oauth": "self.version"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/AbstractConfigLoader.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/AbstractConfigLoader.php
deleted file mode 100644
index cd06f57..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/AbstractConfigLoader.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-namespace Guzzle\Service;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\RuntimeException;
-
-/**
- * Abstract config loader
- */
-abstract class AbstractConfigLoader implements ConfigLoaderInterface
-{
- /** @var array Array of aliases for actual filenames */
- protected $aliases = array();
-
- /** @var array Hash of previously loaded filenames */
- protected $loadedFiles = array();
-
- /** @var array JSON error code mappings */
- protected static $jsonErrors = array(
- JSON_ERROR_NONE => 'JSON_ERROR_NONE - No errors',
- JSON_ERROR_DEPTH => 'JSON_ERROR_DEPTH - Maximum stack depth exceeded',
- JSON_ERROR_STATE_MISMATCH => 'JSON_ERROR_STATE_MISMATCH - Underflow or the modes mismatch',
- JSON_ERROR_CTRL_CHAR => 'JSON_ERROR_CTRL_CHAR - Unexpected control character found',
- JSON_ERROR_SYNTAX => 'JSON_ERROR_SYNTAX - Syntax error, malformed JSON',
- JSON_ERROR_UTF8 => 'JSON_ERROR_UTF8 - Malformed UTF-8 characters, possibly incorrectly encoded'
- );
-
- public function load($config, array $options = array())
- {
- // Reset the array of loaded files because this is a new config
- $this->loadedFiles = array();
-
- if (is_string($config)) {
- $config = $this->loadFile($config);
- } elseif (!is_array($config)) {
- throw new InvalidArgumentException('Unknown type passed to configuration loader: ' . gettype($config));
- } else {
- $this->mergeIncludes($config);
- }
-
- return $this->build($config, $options);
- }
-
- /**
- * Add an include alias to the loader
- *
- * @param string $filename Filename to alias (e.g. _foo)
- * @param string $alias Actual file to use (e.g. /path/to/foo.json)
- *
- * @return self
- */
- public function addAlias($filename, $alias)
- {
- $this->aliases[$filename] = $alias;
-
- return $this;
- }
-
- /**
- * Remove an alias from the loader
- *
- * @param string $alias Alias to remove
- *
- * @return self
- */
- public function removeAlias($alias)
- {
- unset($this->aliases[$alias]);
-
- return $this;
- }
-
- /**
- * Perform the parsing of a config file and create the end result
- *
- * @param array $config Configuration data
- * @param array $options Options to use when building
- *
- * @return mixed
- */
- protected abstract function build($config, array $options);
-
- /**
- * Load a configuration file (can load JSON or PHP files that return an array when included)
- *
- * @param string $filename File to load
- *
- * @return array
- * @throws InvalidArgumentException
- * @throws RuntimeException when the JSON cannot be parsed
- */
- protected function loadFile($filename)
- {
- if (isset($this->aliases[$filename])) {
- $filename = $this->aliases[$filename];
- }
-
- switch (pathinfo($filename, PATHINFO_EXTENSION)) {
- case 'js':
- case 'json':
- $level = error_reporting(0);
- $json = file_get_contents($filename);
- error_reporting($level);
-
- if ($json === false) {
- $err = error_get_last();
- throw new InvalidArgumentException("Unable to open {$filename}: " . $err['message']);
- }
-
- $config = json_decode($json, true);
- // Throw an exception if there was an error loading the file
- if ($error = json_last_error()) {
- $message = isset(self::$jsonErrors[$error]) ? self::$jsonErrors[$error] : 'Unknown error';
- throw new RuntimeException("Error loading JSON data from {$filename}: ({$error}) - {$message}");
- }
- break;
- case 'php':
- if (!is_readable($filename)) {
- throw new InvalidArgumentException("Unable to open {$filename} for reading");
- }
- $config = require $filename;
- if (!is_array($config)) {
- throw new InvalidArgumentException('PHP files must return an array of configuration data');
- }
- break;
- default:
- throw new InvalidArgumentException('Unknown file extension: ' . $filename);
- }
-
- // Keep track of this file being loaded to prevent infinite recursion
- $this->loadedFiles[$filename] = true;
-
- // Merge include files into the configuration array
- $this->mergeIncludes($config, dirname($filename));
-
- return $config;
- }
-
- /**
- * Merges in all include files
- *
- * @param array $config Config data that contains includes
- * @param string $basePath Base path to use when a relative path is encountered
- *
- * @return array Returns the merged and included data
- */
- protected function mergeIncludes(&$config, $basePath = null)
- {
- if (!empty($config['includes'])) {
- foreach ($config['includes'] as &$path) {
- // Account for relative paths
- if ($path[0] != DIRECTORY_SEPARATOR && !isset($this->aliases[$path]) && $basePath) {
- $path = "{$basePath}/{$path}";
- }
- // Don't load the same files more than once
- if (!isset($this->loadedFiles[$path])) {
- $this->loadedFiles[$path] = true;
- $config = $this->mergeData($this->loadFile($path), $config);
- }
- }
- }
- }
-
- /**
- * Default implementation for merging two arrays of data (uses array_merge_recursive)
- *
- * @param array $a Original data
- * @param array $b Data to merge into the original and overwrite existing values
- *
- * @return array
- */
- protected function mergeData(array $a, array $b)
- {
- return array_merge_recursive($a, $b);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilder.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilder.php
deleted file mode 100644
index 38150db..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilder.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Builder;
-
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Service\ClientInterface;
-use Guzzle\Service\Exception\ServiceBuilderException;
-use Guzzle\Service\Exception\ServiceNotFoundException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * {@inheritdoc}
- *
- * Clients and data can be set, retrieved, and removed by accessing the service builder like an associative array.
- */
-class ServiceBuilder extends AbstractHasDispatcher implements ServiceBuilderInterface, \ArrayAccess, \Serializable
-{
- /** @var array Service builder configuration data */
- protected $builderConfig = array();
-
- /** @var array Instantiated client objects */
- protected $clients = array();
-
- /** @var ServiceBuilderLoader Cached instance of the service builder loader */
- protected static $cachedFactory;
-
- /** @var array Plugins to attach to each client created by the service builder */
- protected $plugins = array();
-
- /**
- * Create a new ServiceBuilder using configuration data sourced from an
- * array, .js|.json or .php file.
- *
- * @param array|string $config The full path to an .json|.js or .php file, or an associative array
- * @param array $globalParameters Array of global parameters to pass to every service as it is instantiated.
- *
- * @return ServiceBuilderInterface
- * @throws ServiceBuilderException if a file cannot be opened
- * @throws ServiceNotFoundException when trying to extend a missing client
- */
- public static function factory($config = null, array $globalParameters = array())
- {
- // @codeCoverageIgnoreStart
- if (!static::$cachedFactory) {
- static::$cachedFactory = new ServiceBuilderLoader();
- }
- // @codeCoverageIgnoreEnd
-
- return self::$cachedFactory->load($config, $globalParameters);
- }
-
- /**
- * @param array $serviceBuilderConfig Service configuration settings:
- * - name: Name of the service
- * - class: Client class to instantiate using a factory method
- * - params: array of key value pair configuration settings for the builder
- */
- public function __construct(array $serviceBuilderConfig = array())
- {
- $this->builderConfig = $serviceBuilderConfig;
- }
-
- public static function getAllEvents()
- {
- return array('service_builder.create_client');
- }
-
- public function unserialize($serialized)
- {
- $this->builderConfig = json_decode($serialized, true);
- }
-
- public function serialize()
- {
- return json_encode($this->builderConfig);
- }
-
- /**
- * Attach a plugin to every client created by the builder
- *
- * @param EventSubscriberInterface $plugin Plugin to attach to each client
- *
- * @return self
- */
- public function addGlobalPlugin(EventSubscriberInterface $plugin)
- {
- $this->plugins[] = $plugin;
-
- return $this;
- }
-
- /**
- * Get data from the service builder without triggering the building of a service
- *
- * @param string $name Name of the service to retrieve
- *
- * @return array|null
- */
- public function getData($name)
- {
- return isset($this->builderConfig[$name]) ? $this->builderConfig[$name] : null;
- }
-
- public function get($name, $throwAway = false)
- {
- if (!isset($this->builderConfig[$name])) {
-
- // Check to see if arbitrary data is being referenced
- if (isset($this->clients[$name])) {
- return $this->clients[$name];
- }
-
- // Check aliases and return a match if found
- foreach ($this->builderConfig as $actualName => $config) {
- if (isset($config['alias']) && $config['alias'] == $name) {
- return $this->get($actualName, $throwAway);
- }
- }
- throw new ServiceNotFoundException('No service is registered as ' . $name);
- }
-
- if (!$throwAway && isset($this->clients[$name])) {
- return $this->clients[$name];
- }
-
- $builder =& $this->builderConfig[$name];
-
- // Convert references to the actual client
- foreach ($builder['params'] as &$v) {
- if (is_string($v) && substr($v, 0, 1) == '{' && substr($v, -1) == '}') {
- $v = $this->get(trim($v, '{} '));
- }
- }
-
- // Get the configured parameters and merge in any parameters provided for throw-away clients
- $config = $builder['params'];
- if (is_array($throwAway)) {
- $config = $throwAway + $config;
- }
-
- $client = $builder['class']::factory($config);
-
- if (!$throwAway) {
- $this->clients[$name] = $client;
- }
-
- if ($client instanceof ClientInterface) {
- foreach ($this->plugins as $plugin) {
- $client->addSubscriber($plugin);
- }
- // Dispatch an event letting listeners know a client was created
- $this->dispatch('service_builder.create_client', array('client' => $client));
- }
-
- return $client;
- }
-
- public function set($key, $service)
- {
- if (is_array($service) && isset($service['class']) && isset($service['params'])) {
- $this->builderConfig[$key] = $service;
- } else {
- $this->clients[$key] = $service;
- }
-
- return $this;
- }
-
- public function offsetSet($offset, $value)
- {
- $this->set($offset, $value);
- }
-
- public function offsetUnset($offset)
- {
- unset($this->builderConfig[$offset]);
- unset($this->clients[$offset]);
- }
-
- public function offsetExists($offset)
- {
- return isset($this->builderConfig[$offset]) || isset($this->clients[$offset]);
- }
-
- public function offsetGet($offset)
- {
- return $this->get($offset);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderInterface.php
deleted file mode 100644
index 4fc310a..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderInterface.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Builder;
-
-use Guzzle\Service\Exception\ServiceNotFoundException;
-
-/**
- * Service builder used to store and build clients or arbitrary data. Client configuration data can be supplied to tell
- * the service builder how to create and cache {@see \Guzzle\Service\ClientInterface} objects. Arbitrary data can be
- * supplied and accessed from a service builder. Arbitrary data and other clients can be referenced by name in client
- * configuration arrays to make them input for building other clients (e.g. "{key}").
- */
-interface ServiceBuilderInterface
-{
- /**
- * Get a ClientInterface object or arbitrary data from the service builder
- *
- * @param string $name Name of the registered service or data to retrieve
- * @param bool|array $throwAway Only pertains to retrieving client objects built using a configuration array.
- * Set to TRUE to not store the client for later retrieval from the ServiceBuilder.
- * If an array is specified, that data will overwrite the configured params of the
- * client if the client implements {@see \Guzzle\Common\FromConfigInterface} and will
- * not store the client for later retrieval.
- *
- * @return \Guzzle\Service\ClientInterface|mixed
- * @throws ServiceNotFoundException when a client or data cannot be found by the given name
- */
- public function get($name, $throwAway = false);
-
- /**
- * Register a service or arbitrary data by name with the service builder
- *
- * @param string $key Name of the client or data to register
- * @param mixed $service Client configuration array or arbitrary data to register. The client configuration array
- * must include a 'class' (string) and 'params' (array) key.
- *
- * @return ServiceBuilderInterface
- */
- public function set($key, $service);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderLoader.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderLoader.php
deleted file mode 100644
index c561a3d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderLoader.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Builder;
-
-use Guzzle\Service\AbstractConfigLoader;
-use Guzzle\Service\Exception\ServiceNotFoundException;
-
-/**
- * Service builder config loader
- */
-class ServiceBuilderLoader extends AbstractConfigLoader
-{
- protected function build($config, array $options)
- {
- // A service builder class can be specified in the class field
- $class = !empty($config['class']) ? $config['class'] : __NAMESPACE__ . '\\ServiceBuilder';
-
- // Account for old style configs that do not have a services array
- $services = isset($config['services']) ? $config['services'] : $config;
-
- // Validate the configuration and handle extensions
- foreach ($services as $name => &$service) {
-
- $service['params'] = isset($service['params']) ? $service['params'] : array();
-
- // Check if this client builder extends another client
- if (!empty($service['extends'])) {
-
- // Make sure that the service it's extending has been defined
- if (!isset($services[$service['extends']])) {
- throw new ServiceNotFoundException(
- "{$name} is trying to extend a non-existent service: {$service['extends']}"
- );
- }
-
- $extended = &$services[$service['extends']];
-
- // Use the correct class attribute
- if (empty($service['class'])) {
- $service['class'] = isset($extended['class']) ? $extended['class'] : '';
- }
- if ($extendsParams = isset($extended['params']) ? $extended['params'] : false) {
- $service['params'] = $service['params'] + $extendsParams;
- }
- }
-
- // Overwrite default values with global parameter values
- if (!empty($options)) {
- $service['params'] = $options + $service['params'];
- }
-
- $service['class'] = isset($service['class']) ? $service['class'] : '';
- }
-
- return new $class($services);
- }
-
- protected function mergeData(array $a, array $b)
- {
- $result = $b + $a;
-
- // Merge services using a recursive union of arrays
- if (isset($a['services']) && $b['services']) {
-
- // Get a union of the services of the two arrays
- $result['services'] = $b['services'] + $a['services'];
-
- // Merge each service in using a union of the two arrays
- foreach ($result['services'] as $name => &$service) {
-
- // By default, services completely override a previously defined service unless it extends itself
- if (isset($a['services'][$name]['extends'])
- && isset($b['services'][$name]['extends'])
- && $b['services'][$name]['extends'] == $name
- ) {
- $service += $a['services'][$name];
- // Use the `extends` attribute of the parent
- $service['extends'] = $a['services'][$name]['extends'];
- // Merge parameters using a union if both have parameters
- if (isset($a['services'][$name]['params'])) {
- $service['params'] += $a['services'][$name]['params'];
- }
- }
- }
- }
-
- return $result;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/CachingConfigLoader.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/CachingConfigLoader.php
deleted file mode 100644
index 26f8360..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/CachingConfigLoader.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Guzzle\Service;
-
-use Guzzle\Cache\CacheAdapterInterface;
-
-/**
- * Decorator that adds caching to a service description loader
- */
-class CachingConfigLoader implements ConfigLoaderInterface
-{
- /** @var ConfigLoaderInterface */
- protected $loader;
-
- /** @var CacheAdapterInterface */
- protected $cache;
-
- /**
- * @param ConfigLoaderInterface $loader Loader used to load the config when there is a cache miss
- * @param CacheAdapterInterface $cache Object used to cache the loaded result
- */
- public function __construct(ConfigLoaderInterface $loader, CacheAdapterInterface $cache)
- {
- $this->loader = $loader;
- $this->cache = $cache;
- }
-
- public function load($config, array $options = array())
- {
- if (!is_string($config)) {
- $key = false;
- } else {
- $key = 'loader_' . crc32($config);
- if ($result = $this->cache->fetch($key)) {
- return $result;
- }
- }
-
- $result = $this->loader->load($config, $options);
- if ($key) {
- $this->cache->save($key, $result);
- }
-
- return $result;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Client.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Client.php
deleted file mode 100644
index 3e5f8e5..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Client.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-
-namespace Guzzle\Service;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\BadMethodCallException;
-use Guzzle\Common\Version;
-use Guzzle\Inflection\InflectorInterface;
-use Guzzle\Inflection\Inflector;
-use Guzzle\Http\Client as HttpClient;
-use Guzzle\Http\Exception\MultiTransferException;
-use Guzzle\Service\Exception\CommandTransferException;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Command\Factory\CompositeFactory;
-use Guzzle\Service\Command\Factory\FactoryInterface as CommandFactoryInterface;
-use Guzzle\Service\Resource\ResourceIteratorClassFactory;
-use Guzzle\Service\Resource\ResourceIteratorFactoryInterface;
-use Guzzle\Service\Description\ServiceDescriptionInterface;
-
-/**
- * Client object for executing commands on a web service.
- */
-class Client extends HttpClient implements ClientInterface
-{
- const COMMAND_PARAMS = 'command.params';
-
- /** @var ServiceDescriptionInterface Description of the service and possible commands */
- protected $serviceDescription;
-
- /** @var CommandFactoryInterface */
- protected $commandFactory;
-
- /** @var ResourceIteratorFactoryInterface */
- protected $resourceIteratorFactory;
-
- /** @var InflectorInterface Inflector associated with the service/client */
- protected $inflector;
-
- /**
- * Basic factory method to create a new client. Extend this method in subclasses to build more complex clients.
- *
- * @param array|Collection $config Configuration data
- *
- * @return Client
- */
- public static function factory($config = array())
- {
- return new static(isset($config['base_url']) ? $config['base_url'] : null, $config);
- }
-
- public static function getAllEvents()
- {
- return array_merge(HttpClient::getAllEvents(), array(
- 'client.command.create',
- 'command.before_prepare',
- 'command.after_prepare',
- 'command.before_send',
- 'command.after_send',
- 'command.parse_response'
- ));
- }
-
- /**
- * Magic method used to retrieve a command
- *
- * @param string $method Name of the command object to instantiate
- * @param array $args Arguments to pass to the command
- *
- * @return mixed Returns the result of the command
- * @throws BadMethodCallException when a command is not found
- */
- public function __call($method, $args)
- {
- return $this->getCommand($method, isset($args[0]) ? $args[0] : array())->getResult();
- }
-
- public function getCommand($name, array $args = array())
- {
- // Add global client options to the command
- if ($options = $this->getConfig(self::COMMAND_PARAMS)) {
- $args += $options;
- }
-
- if (!($command = $this->getCommandFactory()->factory($name, $args))) {
- throw new InvalidArgumentException("Command was not found matching {$name}");
- }
-
- $command->setClient($this);
- $this->dispatch('client.command.create', array('client' => $this, 'command' => $command));
-
- return $command;
- }
-
- /**
- * Set the command factory used to create commands by name
- *
- * @param CommandFactoryInterface $factory Command factory
- *
- * @return self
- */
- public function setCommandFactory(CommandFactoryInterface $factory)
- {
- $this->commandFactory = $factory;
-
- return $this;
- }
-
- /**
- * Set the resource iterator factory associated with the client
- *
- * @param ResourceIteratorFactoryInterface $factory Resource iterator factory
- *
- * @return self
- */
- public function setResourceIteratorFactory(ResourceIteratorFactoryInterface $factory)
- {
- $this->resourceIteratorFactory = $factory;
-
- return $this;
- }
-
- public function getIterator($command, array $commandOptions = null, array $iteratorOptions = array())
- {
- if (!($command instanceof CommandInterface)) {
- $command = $this->getCommand($command, $commandOptions ?: array());
- }
-
- return $this->getResourceIteratorFactory()->build($command, $iteratorOptions);
- }
-
- public function execute($command)
- {
- if ($command instanceof CommandInterface) {
- $this->send($this->prepareCommand($command));
- $this->dispatch('command.after_send', array('command' => $command));
- return $command->getResult();
- } elseif (is_array($command) || $command instanceof \Traversable) {
- return $this->executeMultiple($command);
- } else {
- throw new InvalidArgumentException('Command must be a command or array of commands');
- }
- }
-
- public function setDescription(ServiceDescriptionInterface $service)
- {
- $this->serviceDescription = $service;
-
- if ($this->getCommandFactory() && $this->getCommandFactory() instanceof CompositeFactory) {
- $this->commandFactory->add(new Command\Factory\ServiceDescriptionFactory($service));
- }
-
- // If a baseUrl was set on the description, then update the client
- if ($baseUrl = $service->getBaseUrl()) {
- $this->setBaseUrl($baseUrl);
- }
-
- return $this;
- }
-
- public function getDescription()
- {
- return $this->serviceDescription;
- }
-
- /**
- * Set the inflector used with the client
- *
- * @param InflectorInterface $inflector Inflection object
- *
- * @return self
- */
- public function setInflector(InflectorInterface $inflector)
- {
- $this->inflector = $inflector;
-
- return $this;
- }
-
- /**
- * Get the inflector used with the client
- *
- * @return self
- */
- public function getInflector()
- {
- if (!$this->inflector) {
- $this->inflector = Inflector::getDefault();
- }
-
- return $this->inflector;
- }
-
- /**
- * Prepare a command for sending and get the RequestInterface object created by the command
- *
- * @param CommandInterface $command Command to prepare
- *
- * @return RequestInterface
- */
- protected function prepareCommand(CommandInterface $command)
- {
- // Set the client and prepare the command
- $request = $command->setClient($this)->prepare();
- // Set the state to new if the command was previously executed
- $request->setState(RequestInterface::STATE_NEW);
- $this->dispatch('command.before_send', array('command' => $command));
-
- return $request;
- }
-
- /**
- * Execute multiple commands in parallel
- *
- * @param array|Traversable $commands Array of CommandInterface objects to execute
- *
- * @return array Returns an array of the executed commands
- * @throws Exception\CommandTransferException
- */
- protected function executeMultiple($commands)
- {
- $requests = array();
- $commandRequests = new \SplObjectStorage();
-
- foreach ($commands as $command) {
- $request = $this->prepareCommand($command);
- $commandRequests[$request] = $command;
- $requests[] = $request;
- }
-
- try {
- $this->send($requests);
- foreach ($commands as $command) {
- $this->dispatch('command.after_send', array('command' => $command));
- }
- return $commands;
- } catch (MultiTransferException $failureException) {
- // Throw a CommandTransferException using the successful and failed commands
- $e = CommandTransferException::fromMultiTransferException($failureException);
-
- // Remove failed requests from the successful requests array and add to the failures array
- foreach ($failureException->getFailedRequests() as $request) {
- if (isset($commandRequests[$request])) {
- $e->addFailedCommand($commandRequests[$request]);
- unset($commandRequests[$request]);
- }
- }
-
- // Always emit the command after_send events for successful commands
- foreach ($commandRequests as $success) {
- $e->addSuccessfulCommand($commandRequests[$success]);
- $this->dispatch('command.after_send', array('command' => $commandRequests[$success]));
- }
-
- throw $e;
- }
- }
-
- protected function getResourceIteratorFactory()
- {
- if (!$this->resourceIteratorFactory) {
- // Build the default resource iterator factory if one is not set
- $clientClass = get_class($this);
- $prefix = substr($clientClass, 0, strrpos($clientClass, '\\'));
- $this->resourceIteratorFactory = new ResourceIteratorClassFactory(array(
- "{$prefix}\\Iterator",
- "{$prefix}\\Model"
- ));
- }
-
- return $this->resourceIteratorFactory;
- }
-
- /**
- * Get the command factory associated with the client
- *
- * @return CommandFactoryInterface
- */
- protected function getCommandFactory()
- {
- if (!$this->commandFactory) {
- $this->commandFactory = CompositeFactory::getDefaultChain($this);
- }
-
- return $this->commandFactory;
- }
-
- /**
- * @deprecated
- * @codeCoverageIgnore
- */
- public function enableMagicMethods($isEnabled)
- {
- Version::warn(__METHOD__ . ' is deprecated');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ClientInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ClientInterface.php
deleted file mode 100644
index 814154f..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ClientInterface.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Guzzle\Service;
-
-use Guzzle\Common\FromConfigInterface;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\ClientInterface as HttpClientInterface;
-use Guzzle\Service\Exception\CommandTransferException;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\ServiceDescriptionInterface;
-use Guzzle\Service\Resource\ResourceIteratorInterface;
-
-/**
- * Client interface for executing commands on a web service.
- */
-interface ClientInterface extends HttpClientInterface, FromConfigInterface
-{
- /**
- * Get a command by name. First, the client will see if it has a service description and if the service description
- * defines a command by the supplied name. If no dynamic command is found, the client will look for a concrete
- * command class exists matching the name supplied. If neither are found, an InvalidArgumentException is thrown.
- *
- * @param string $name Name of the command to retrieve
- * @param array $args Arguments to pass to the command
- *
- * @return CommandInterface
- * @throws InvalidArgumentException if no command can be found by name
- */
- public function getCommand($name, array $args = array());
-
- /**
- * Execute one or more commands
- *
- * @param CommandInterface|array|Traversable $command Command, array of commands or Traversable object containing commands to execute
- *
- * @return mixed Returns the result of the executed command or an array of commands if executing multiple commands
- * @throws InvalidArgumentException if an invalid command is passed
- * @throws CommandTransferException if an exception is encountered when transferring multiple commands
- */
- public function execute($command);
-
- /**
- * Set the service description of the client
- *
- * @param ServiceDescriptionInterface $service Service description
- *
- * @return ClientInterface
- */
- public function setDescription(ServiceDescriptionInterface $service);
-
- /**
- * Get the service description of the client
- *
- * @return ServiceDescriptionInterface|null
- */
- public function getDescription();
-
- /**
- * Get a resource iterator from the client.
- *
- * @param string|CommandInterface $command Command class or command name.
- * @param array $commandOptions Command options used when creating commands.
- * @param array $iteratorOptions Iterator options passed to the iterator when it is instantiated.
- *
- * @return ResourceIteratorInterface
- */
- public function getIterator($command, array $commandOptions = null, array $iteratorOptions = array());
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/AbstractCommand.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/AbstractCommand.php
deleted file mode 100644
index e42ff90..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/AbstractCommand.php
+++ /dev/null
@@ -1,390 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Curl\CurlHandle;
-use Guzzle\Service\Client;
-use Guzzle\Service\ClientInterface;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\OperationInterface;
-use Guzzle\Service\Description\ValidatorInterface;
-use Guzzle\Service\Description\SchemaValidator;
-use Guzzle\Service\Exception\CommandException;
-use Guzzle\Service\Exception\ValidationException;
-
-/**
- * Command object to handle preparing and processing client requests and responses of the requests
- */
-abstract class AbstractCommand extends Collection implements CommandInterface
-{
- // @deprecated: Option used to specify custom headers to add to the generated request
- const HEADERS_OPTION = 'command.headers';
- // @deprecated: Option used to add an onComplete method to a command
- const ON_COMPLETE = 'command.on_complete';
- // @deprecated: Option used to change the entity body used to store a response
- const RESPONSE_BODY = 'command.response_body';
-
- // Option used to add request options to the request created by a command
- const REQUEST_OPTIONS = 'command.request_options';
- // command values to not count as additionalParameters
- const HIDDEN_PARAMS = 'command.hidden_params';
- // Option used to disable any pre-sending command validation
- const DISABLE_VALIDATION = 'command.disable_validation';
- // Option used to override how a command result will be formatted
- const RESPONSE_PROCESSING = 'command.response_processing';
- // Different response types that commands can use
- const TYPE_RAW = 'raw';
- const TYPE_MODEL = 'model';
- const TYPE_NO_TRANSLATION = 'no_translation';
-
- /** @var ClientInterface Client object used to execute the command */
- protected $client;
-
- /** @var RequestInterface The request object associated with the command */
- protected $request;
-
- /** @var mixed The result of the command */
- protected $result;
-
- /** @var OperationInterface API information about the command */
- protected $operation;
-
- /** @var mixed callable */
- protected $onComplete;
-
- /** @var ValidatorInterface Validator used to prepare and validate properties against a JSON schema */
- protected $validator;
-
- /**
- * @param array|Collection $parameters Collection of parameters to set on the command
- * @param OperationInterface $operation Command definition from description
- */
- public function __construct($parameters = array(), OperationInterface $operation = null)
- {
- parent::__construct($parameters);
- $this->operation = $operation ?: $this->createOperation();
- foreach ($this->operation->getParams() as $name => $arg) {
- $currentValue = $this[$name];
- $configValue = $arg->getValue($currentValue);
- // If default or static values are set, then this should always be updated on the config object
- if ($currentValue !== $configValue) {
- $this[$name] = $configValue;
- }
- }
-
- $headers = $this[self::HEADERS_OPTION];
- if (!$headers instanceof Collection) {
- $this[self::HEADERS_OPTION] = new Collection((array) $headers);
- }
-
- // You can set a command.on_complete option in your parameters to set an onComplete callback
- if ($onComplete = $this['command.on_complete']) {
- unset($this['command.on_complete']);
- $this->setOnComplete($onComplete);
- }
-
- // Set the hidden additional parameters
- if (!$this[self::HIDDEN_PARAMS]) {
- $this[self::HIDDEN_PARAMS] = array(
- self::HEADERS_OPTION,
- self::RESPONSE_PROCESSING,
- self::HIDDEN_PARAMS,
- self::REQUEST_OPTIONS
- );
- }
-
- $this->init();
- }
-
- /**
- * Custom clone behavior
- */
- public function __clone()
- {
- $this->request = null;
- $this->result = null;
- }
-
- /**
- * Execute the command in the same manner as calling a function
- *
- * @return mixed Returns the result of {@see AbstractCommand::execute}
- */
- public function __invoke()
- {
- return $this->execute();
- }
-
- public function getName()
- {
- return $this->operation->getName();
- }
-
- /**
- * Get the API command information about the command
- *
- * @return OperationInterface
- */
- public function getOperation()
- {
- return $this->operation;
- }
-
- public function setOnComplete($callable)
- {
- if (!is_callable($callable)) {
- throw new InvalidArgumentException('The onComplete function must be callable');
- }
-
- $this->onComplete = $callable;
-
- return $this;
- }
-
- public function execute()
- {
- if (!$this->client) {
- throw new CommandException('A client must be associated with the command before it can be executed.');
- }
-
- return $this->client->execute($this);
- }
-
- public function getClient()
- {
- return $this->client;
- }
-
- public function setClient(ClientInterface $client)
- {
- $this->client = $client;
-
- return $this;
- }
-
- public function getRequest()
- {
- if (!$this->request) {
- throw new CommandException('The command must be prepared before retrieving the request');
- }
-
- return $this->request;
- }
-
- public function getResponse()
- {
- if (!$this->isExecuted()) {
- $this->execute();
- }
-
- return $this->request->getResponse();
- }
-
- public function getResult()
- {
- if (!$this->isExecuted()) {
- $this->execute();
- }
-
- if (null === $this->result) {
- $this->process();
- // Call the onComplete method if one is set
- if ($this->onComplete) {
- call_user_func($this->onComplete, $this);
- }
- }
-
- return $this->result;
- }
-
- public function setResult($result)
- {
- $this->result = $result;
-
- return $this;
- }
-
- public function isPrepared()
- {
- return $this->request !== null;
- }
-
- public function isExecuted()
- {
- return $this->request !== null && $this->request->getState() == 'complete';
- }
-
- public function prepare()
- {
- if (!$this->isPrepared()) {
- if (!$this->client) {
- throw new CommandException('A client must be associated with the command before it can be prepared.');
- }
-
- // If no response processing value was specified, then attempt to use the highest level of processing
- if (!isset($this[self::RESPONSE_PROCESSING])) {
- $this[self::RESPONSE_PROCESSING] = self::TYPE_MODEL;
- }
-
- // Notify subscribers of the client that the command is being prepared
- $this->client->dispatch('command.before_prepare', array('command' => $this));
-
- // Fail on missing required arguments, and change parameters via filters
- $this->validate();
- // Delegate to the subclass that implements the build method
- $this->build();
-
- // Add custom request headers set on the command
- if ($headers = $this[self::HEADERS_OPTION]) {
- foreach ($headers as $key => $value) {
- $this->request->setHeader($key, $value);
- }
- }
-
- // Add any curl options to the request
- if ($options = $this[Client::CURL_OPTIONS]) {
- $this->request->getCurlOptions()->overwriteWith(CurlHandle::parseCurlConfig($options));
- }
-
- // Set a custom response body
- if ($responseBody = $this[self::RESPONSE_BODY]) {
- $this->request->setResponseBody($responseBody);
- }
-
- $this->client->dispatch('command.after_prepare', array('command' => $this));
- }
-
- return $this->request;
- }
-
- /**
- * Set the validator used to validate and prepare command parameters and nested JSON schemas. If no validator is
- * set, then the command will validate using the default {@see SchemaValidator}.
- *
- * @param ValidatorInterface $validator Validator used to prepare and validate properties against a JSON schema
- *
- * @return self
- */
- public function setValidator(ValidatorInterface $validator)
- {
- $this->validator = $validator;
-
- return $this;
- }
-
- public function getRequestHeaders()
- {
- return $this[self::HEADERS_OPTION];
- }
-
- /**
- * Initialize the command (hook that can be implemented in subclasses)
- */
- protected function init() {}
-
- /**
- * Create the request object that will carry out the command
- */
- abstract protected function build();
-
- /**
- * Hook used to create an operation for concrete commands that are not associated with a service description
- *
- * @return OperationInterface
- */
- protected function createOperation()
- {
- return new Operation(array('name' => get_class($this)));
- }
-
- /**
- * Create the result of the command after the request has been completed.
- * Override this method in subclasses to customize this behavior
- */
- protected function process()
- {
- $this->result = $this[self::RESPONSE_PROCESSING] != self::TYPE_RAW
- ? DefaultResponseParser::getInstance()->parse($this)
- : $this->request->getResponse();
- }
-
- /**
- * Validate and prepare the command based on the schema and rules defined by the command's Operation object
- *
- * @throws ValidationException when validation errors occur
- */
- protected function validate()
- {
- // Do not perform request validation/transformation if it is disable
- if ($this[self::DISABLE_VALIDATION]) {
- return;
- }
-
- $errors = array();
- $validator = $this->getValidator();
- foreach ($this->operation->getParams() as $name => $schema) {
- $value = $this[$name];
- if (!$validator->validate($schema, $value)) {
- $errors = array_merge($errors, $validator->getErrors());
- } elseif ($value !== $this[$name]) {
- // Update the config value if it changed and no validation errors were encountered
- $this->data[$name] = $value;
- }
- }
-
- // Validate additional parameters
- $hidden = $this[self::HIDDEN_PARAMS];
-
- if ($properties = $this->operation->getAdditionalParameters()) {
- foreach ($this->toArray() as $name => $value) {
- // It's only additional if it isn't defined in the schema
- if (!$this->operation->hasParam($name) && !in_array($name, $hidden)) {
- // Always set the name so that error messages are useful
- $properties->setName($name);
- if (!$validator->validate($properties, $value)) {
- $errors = array_merge($errors, $validator->getErrors());
- } elseif ($value !== $this[$name]) {
- $this->data[$name] = $value;
- }
- }
- }
- }
-
- if (!empty($errors)) {
- $e = new ValidationException('Validation errors: ' . implode("\n", $errors));
- $e->setErrors($errors);
- throw $e;
- }
- }
-
- /**
- * Get the validator used to prepare and validate properties. If no validator has been set on the command, then
- * the default {@see SchemaValidator} will be used.
- *
- * @return ValidatorInterface
- */
- protected function getValidator()
- {
- if (!$this->validator) {
- $this->validator = SchemaValidator::getInstance();
- }
-
- return $this->validator;
- }
-
- /**
- * Get array of any validation errors
- * If no validator has been set then return false
- */
- public function getValidationErrors()
- {
- if (!$this->validator) {
- return false;
- }
-
- return $this->validator->getErrors();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ClosureCommand.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ClosureCommand.php
deleted file mode 100644
index cb6ac40..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ClosureCommand.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\UnexpectedValueException;
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * A ClosureCommand is a command that allows dynamic commands to be created at runtime using a closure to prepare the
- * request. A closure key and \Closure value must be passed to the command in the constructor. The closure must
- * accept the command object as an argument.
- */
-class ClosureCommand extends AbstractCommand
-{
- /**
- * {@inheritdoc}
- * @throws InvalidArgumentException if a closure was not passed
- */
- protected function init()
- {
- if (!$this['closure']) {
- throw new InvalidArgumentException('A closure must be passed in the parameters array');
- }
- }
-
- /**
- * {@inheritdoc}
- * @throws UnexpectedValueException If the closure does not return a request
- */
- protected function build()
- {
- $closure = $this['closure'];
- /** @var $closure \Closure */
- $this->request = $closure($this, $this->operation);
-
- if (!$this->request || !$this->request instanceof RequestInterface) {
- throw new UnexpectedValueException('Closure command did not return a RequestInterface object');
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CommandInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CommandInterface.php
deleted file mode 100644
index fbb61d2..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CommandInterface.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Exception\CommandException;
-use Guzzle\Service\Description\OperationInterface;
-use Guzzle\Service\ClientInterface;
-use Guzzle\Common\ToArrayInterface;
-
-/**
- * A command object that contains parameters that can be modified and accessed like an array and turned into an array
- */
-interface CommandInterface extends \ArrayAccess, ToArrayInterface
-{
- /**
- * Get the short form name of the command
- *
- * @return string
- */
- public function getName();
-
- /**
- * Get the API operation information about the command
- *
- * @return OperationInterface
- */
- public function getOperation();
-
- /**
- * Execute the command and return the result
- *
- * @return mixed Returns the result of {@see CommandInterface::execute}
- * @throws CommandException if a client has not been associated with the command
- */
- public function execute();
-
- /**
- * Get the client object that will execute the command
- *
- * @return ClientInterface|null
- */
- public function getClient();
-
- /**
- * Set the client object that will execute the command
- *
- * @param ClientInterface $client The client object that will execute the command
- *
- * @return self
- */
- public function setClient(ClientInterface $client);
-
- /**
- * Get the request object associated with the command
- *
- * @return RequestInterface
- * @throws CommandException if the command has not been executed
- */
- public function getRequest();
-
- /**
- * Get the response object associated with the command
- *
- * @return Response
- * @throws CommandException if the command has not been executed
- */
- public function getResponse();
-
- /**
- * Get the result of the command
- *
- * @return Response By default, commands return a Response object unless overridden in a subclass
- * @throws CommandException if the command has not been executed
- */
- public function getResult();
-
- /**
- * Set the result of the command
- *
- * @param mixed $result Result to set
- *
- * @return self
- */
- public function setResult($result);
-
- /**
- * Returns TRUE if the command has been prepared for executing
- *
- * @return bool
- */
- public function isPrepared();
-
- /**
- * Returns TRUE if the command has been executed
- *
- * @return bool
- */
- public function isExecuted();
-
- /**
- * Prepare the command for executing and create a request object.
- *
- * @return RequestInterface Returns the generated request
- * @throws CommandException if a client object has not been set previously or in the prepare()
- */
- public function prepare();
-
- /**
- * Get the object that manages the request headers that will be set on any outbound requests from the command
- *
- * @return Collection
- */
- public function getRequestHeaders();
-
- /**
- * Specify a callable to execute when the command completes
- *
- * @param mixed $callable Callable to execute when the command completes. The callable must accept a
- * {@see CommandInterface} object as the only argument.
- * @return self
- * @throws InvalidArgumentException
- */
- public function setOnComplete($callable);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CreateResponseClassEvent.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CreateResponseClassEvent.php
deleted file mode 100644
index e050678..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/CreateResponseClassEvent.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Common\Event;
-
-/**
- * Event class emitted with the operation.parse_class event
- */
-class CreateResponseClassEvent extends Event
-{
- /**
- * Set the result of the object creation
- *
- * @param mixed $result Result value to set
- */
- public function setResult($result)
- {
- $this['result'] = $result;
- $this->stopPropagation();
- }
-
- /**
- * Get the created object
- *
- * @return mixed
- */
- public function getResult()
- {
- return $this['result'];
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultRequestSerializer.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultRequestSerializer.php
deleted file mode 100644
index 2dc4acd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultRequestSerializer.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\LocationVisitor\Request\RequestVisitorInterface;
-use Guzzle\Service\Command\LocationVisitor\VisitorFlyweight;
-use Guzzle\Service\Description\OperationInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Default request serializer that transforms command options and operation parameters into a request
- */
-class DefaultRequestSerializer implements RequestSerializerInterface
-{
- /** @var VisitorFlyweight $factory Visitor factory */
- protected $factory;
-
- /** @var self */
- protected static $instance;
-
- /**
- * @return self
- * @codeCoverageIgnore
- */
- public static function getInstance()
- {
- if (!self::$instance) {
- self::$instance = new self(VisitorFlyweight::getInstance());
- }
-
- return self::$instance;
- }
-
- /**
- * @param VisitorFlyweight $factory Factory to use when creating visitors
- */
- public function __construct(VisitorFlyweight $factory)
- {
- $this->factory = $factory;
- }
-
- /**
- * Add a location visitor to the serializer
- *
- * @param string $location Location to associate with the visitor
- * @param RequestVisitorInterface $visitor Visitor to attach
- *
- * @return self
- */
- public function addVisitor($location, RequestVisitorInterface $visitor)
- {
- $this->factory->addRequestVisitor($location, $visitor);
-
- return $this;
- }
-
- public function prepare(CommandInterface $command)
- {
- $request = $this->createRequest($command);
- // Keep an array of visitors found in the operation
- $foundVisitors = array();
- $operation = $command->getOperation();
-
- // Add arguments to the request using the location attribute
- foreach ($operation->getParams() as $name => $arg) {
- /** @var $arg \Guzzle\Service\Description\Parameter */
- $location = $arg->getLocation();
- // Skip 'uri' locations because they've already been processed
- if ($location && $location != 'uri') {
- // Instantiate visitors as they are detected in the properties
- if (!isset($foundVisitors[$location])) {
- $foundVisitors[$location] = $this->factory->getRequestVisitor($location);
- }
- // Ensure that a value has been set for this parameter
- $value = $command[$name];
- if ($value !== null) {
- // Apply the parameter value with the location visitor
- $foundVisitors[$location]->visit($command, $request, $arg, $value);
- }
- }
- }
-
- // Serialize additional parameters
- if ($additional = $operation->getAdditionalParameters()) {
- if ($visitor = $this->prepareAdditionalParameters($operation, $command, $request, $additional)) {
- $foundVisitors[$additional->getLocation()] = $visitor;
- }
- }
-
- // Call the after method on each visitor found in the operation
- foreach ($foundVisitors as $visitor) {
- $visitor->after($command, $request);
- }
-
- return $request;
- }
-
- /**
- * Serialize additional parameters
- *
- * @param OperationInterface $operation Operation that owns the command
- * @param CommandInterface $command Command to prepare
- * @param RequestInterface $request Request to serialize
- * @param Parameter $additional Additional parameters
- *
- * @return null|RequestVisitorInterface
- */
- protected function prepareAdditionalParameters(
- OperationInterface $operation,
- CommandInterface $command,
- RequestInterface $request,
- Parameter $additional
- ) {
- if (!($location = $additional->getLocation())) {
- return;
- }
-
- $visitor = $this->factory->getRequestVisitor($location);
- $hidden = $command[$command::HIDDEN_PARAMS];
-
- foreach ($command->toArray() as $key => $value) {
- // Ignore values that are null or built-in command options
- if ($value !== null
- && !in_array($key, $hidden)
- && !$operation->hasParam($key)
- ) {
- $additional->setName($key);
- $visitor->visit($command, $request, $additional, $value);
- }
- }
-
- return $visitor;
- }
-
- /**
- * Create a request for the command and operation
- *
- * @param CommandInterface $command Command to create a request for
- *
- * @return RequestInterface
- */
- protected function createRequest(CommandInterface $command)
- {
- $operation = $command->getOperation();
- $client = $command->getClient();
- $options = $command[AbstractCommand::REQUEST_OPTIONS] ?: array();
-
- // If the command does not specify a template, then assume the base URL of the client
- if (!($uri = $operation->getUri())) {
- return $client->createRequest($operation->getHttpMethod(), $client->getBaseUrl(), null, null, $options);
- }
-
- // Get the path values and use the client config settings
- $variables = array();
- foreach ($operation->getParams() as $name => $arg) {
- if ($arg->getLocation() == 'uri') {
- if (isset($command[$name])) {
- $variables[$name] = $arg->filter($command[$name]);
- if (!is_array($variables[$name])) {
- $variables[$name] = (string) $variables[$name];
- }
- }
- }
- }
-
- return $client->createRequest($operation->getHttpMethod(), array($uri, $variables), null, null, $options);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php
deleted file mode 100644
index 4fe3803..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Http\Message\Response;
-
-/**
- * Default HTTP response parser used to marshal JSON responses into arrays and XML responses into SimpleXMLElement
- */
-class DefaultResponseParser implements ResponseParserInterface
-{
- /** @var self */
- protected static $instance;
-
- /**
- * @return self
- * @codeCoverageIgnore
- */
- public static function getInstance()
- {
- if (!self::$instance) {
- self::$instance = new self;
- }
-
- return self::$instance;
- }
-
- public function parse(CommandInterface $command)
- {
- $response = $command->getRequest()->getResponse();
-
- // Account for hard coded content-type values specified in service descriptions
- if ($contentType = $command['command.expects']) {
- $response->setHeader('Content-Type', $contentType);
- } else {
- $contentType = (string) $response->getHeader('Content-Type');
- }
-
- return $this->handleParsing($command, $response, $contentType);
- }
-
- protected function handleParsing(CommandInterface $command, Response $response, $contentType)
- {
- $result = $response;
- if ($result->getBody()) {
- if (stripos($contentType, 'json') !== false) {
- $result = $result->json();
- } elseif (stripos($contentType, 'xml') !== false) {
- $result = $result->xml();
- }
- }
-
- return $result;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/AliasFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/AliasFactory.php
deleted file mode 100644
index 1c5ce07..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/AliasFactory.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\Factory;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Service\ClientInterface;
-
-/**
- * Command factory used when you need to provide aliases to commands
- */
-class AliasFactory implements FactoryInterface
-{
- /** @var array Associative array mapping command aliases to the aliased command */
- protected $aliases;
-
- /** @var ClientInterface Client used to retry using aliases */
- protected $client;
-
- /**
- * @param ClientInterface $client Client used to retry with the alias
- * @param array $aliases Associative array mapping aliases to the alias
- */
- public function __construct(ClientInterface $client, array $aliases)
- {
- $this->client = $client;
- $this->aliases = $aliases;
- }
-
- public function factory($name, array $args = array())
- {
- if (isset($this->aliases[$name])) {
- try {
- return $this->client->getCommand($this->aliases[$name], $args);
- } catch (InvalidArgumentException $e) {
- return null;
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/CompositeFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/CompositeFactory.php
deleted file mode 100644
index 8c46983..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/CompositeFactory.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\Factory;
-
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\ClientInterface;
-
-/**
- * Composite factory used by a client object to create command objects utilizing multiple factories
- */
-class CompositeFactory implements \IteratorAggregate, \Countable, FactoryInterface
-{
- /** @var array Array of command factories */
- protected $factories;
-
- /**
- * Get the default chain to use with clients
- *
- * @param ClientInterface $client Client to base the chain on
- *
- * @return self
- */
- public static function getDefaultChain(ClientInterface $client)
- {
- $factories = array();
- if ($description = $client->getDescription()) {
- $factories[] = new ServiceDescriptionFactory($description);
- }
- $factories[] = new ConcreteClassFactory($client);
-
- return new self($factories);
- }
-
- /**
- * @param array $factories Array of command factories
- */
- public function __construct(array $factories = array())
- {
- $this->factories = $factories;
- }
-
- /**
- * Add a command factory to the chain
- *
- * @param FactoryInterface $factory Factory to add
- * @param string|FactoryInterface $before Insert the new command factory before a command factory class or object
- * matching a class name.
- * @return CompositeFactory
- */
- public function add(FactoryInterface $factory, $before = null)
- {
- $pos = null;
-
- if ($before) {
- foreach ($this->factories as $i => $f) {
- if ($before instanceof FactoryInterface) {
- if ($f === $before) {
- $pos = $i;
- break;
- }
- } elseif (is_string($before)) {
- if ($f instanceof $before) {
- $pos = $i;
- break;
- }
- }
- }
- }
-
- if ($pos === null) {
- $this->factories[] = $factory;
- } else {
- array_splice($this->factories, $i, 0, array($factory));
- }
-
- return $this;
- }
-
- /**
- * Check if the chain contains a specific command factory
- *
- * @param FactoryInterface|string $factory Factory to check
- *
- * @return bool
- */
- public function has($factory)
- {
- return (bool) $this->find($factory);
- }
-
- /**
- * Remove a specific command factory from the chain
- *
- * @param string|FactoryInterface $factory Factory to remove by name or instance
- *
- * @return CompositeFactory
- */
- public function remove($factory = null)
- {
- if (!($factory instanceof FactoryInterface)) {
- $factory = $this->find($factory);
- }
-
- $this->factories = array_values(array_filter($this->factories, function($f) use ($factory) {
- return $f !== $factory;
- }));
-
- return $this;
- }
-
- /**
- * Get a command factory by class name
- *
- * @param string|FactoryInterface $factory Command factory class or instance
- *
- * @return null|FactoryInterface
- */
- public function find($factory)
- {
- foreach ($this->factories as $f) {
- if ($factory === $f || (is_string($factory) && $f instanceof $factory)) {
- return $f;
- }
- }
- }
-
- /**
- * Create a command using the associated command factories
- *
- * @param string $name Name of the command
- * @param array $args Command arguments
- *
- * @return CommandInterface
- */
- public function factory($name, array $args = array())
- {
- foreach ($this->factories as $factory) {
- $command = $factory->factory($name, $args);
- if ($command) {
- return $command;
- }
- }
- }
-
- public function count()
- {
- return count($this->factories);
- }
-
- public function getIterator()
- {
- return new \ArrayIterator($this->factories);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ConcreteClassFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ConcreteClassFactory.php
deleted file mode 100644
index 0e93dea..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ConcreteClassFactory.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\Factory;
-
-use Guzzle\Inflection\InflectorInterface;
-use Guzzle\Inflection\Inflector;
-use Guzzle\Service\ClientInterface;
-
-/**
- * Command factory used to create commands referencing concrete command classes
- */
-class ConcreteClassFactory implements FactoryInterface
-{
- /** @var ClientInterface */
- protected $client;
-
- /** @var InflectorInterface */
- protected $inflector;
-
- /**
- * @param ClientInterface $client Client that owns the commands
- * @param InflectorInterface $inflector Inflector used to resolve class names
- */
- public function __construct(ClientInterface $client, InflectorInterface $inflector = null)
- {
- $this->client = $client;
- $this->inflector = $inflector ?: Inflector::getDefault();
- }
-
- public function factory($name, array $args = array())
- {
- // Determine the class to instantiate based on the namespace of the current client and the default directory
- $prefix = $this->client->getConfig('command.prefix');
- if (!$prefix) {
- // The prefix can be specified in a factory method and is cached
- $prefix = implode('\\', array_slice(explode('\\', get_class($this->client)), 0, -1)) . '\\Command\\';
- $this->client->getConfig()->set('command.prefix', $prefix);
- }
-
- $class = $prefix . str_replace(' ', '\\', ucwords(str_replace('.', ' ', $this->inflector->camel($name))));
-
- // Create the concrete command if it exists
- if (class_exists($class)) {
- return new $class($args);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/FactoryInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/FactoryInterface.php
deleted file mode 100644
index 35c299d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/FactoryInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\Factory;
-
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Interface for creating commands by name
- */
-interface FactoryInterface
-{
- /**
- * Create a command by name
- *
- * @param string $name Command to create
- * @param array $args Command arguments
- *
- * @return CommandInterface|null
- */
- public function factory($name, array $args = array());
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/MapFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/MapFactory.php
deleted file mode 100644
index 0ad80bc..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/MapFactory.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\Factory;
-
-/**
- * Command factory used when explicitly mapping strings to command classes
- */
-class MapFactory implements FactoryInterface
-{
- /** @var array Associative array mapping command names to classes */
- protected $map;
-
- /** @param array $map Associative array mapping command names to classes */
- public function __construct(array $map)
- {
- $this->map = $map;
- }
-
- public function factory($name, array $args = array())
- {
- if (isset($this->map[$name])) {
- $class = $this->map[$name];
-
- return new $class($args);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ServiceDescriptionFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ServiceDescriptionFactory.php
deleted file mode 100644
index b943a5b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ServiceDescriptionFactory.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\Factory;
-
-use Guzzle\Service\Description\ServiceDescriptionInterface;
-use Guzzle\Inflection\InflectorInterface;
-
-/**
- * Command factory used to create commands based on service descriptions
- */
-class ServiceDescriptionFactory implements FactoryInterface
-{
- /** @var ServiceDescriptionInterface */
- protected $description;
-
- /** @var InflectorInterface */
- protected $inflector;
-
- /**
- * @param ServiceDescriptionInterface $description Service description
- * @param InflectorInterface $inflector Optional inflector to use if the command is not at first found
- */
- public function __construct(ServiceDescriptionInterface $description, InflectorInterface $inflector = null)
- {
- $this->setServiceDescription($description);
- $this->inflector = $inflector;
- }
-
- /**
- * Change the service description used with the factory
- *
- * @param ServiceDescriptionInterface $description Service description to use
- *
- * @return FactoryInterface
- */
- public function setServiceDescription(ServiceDescriptionInterface $description)
- {
- $this->description = $description;
-
- return $this;
- }
-
- /**
- * Returns the service description
- *
- * @return ServiceDescriptionInterface
- */
- public function getServiceDescription()
- {
- return $this->description;
- }
-
- public function factory($name, array $args = array())
- {
- $command = $this->description->getOperation($name);
-
- // If a command wasn't found, then try to uppercase the first letter and try again
- if (!$command) {
- $command = $this->description->getOperation(ucfirst($name));
- // If an inflector was passed, then attempt to get the command using snake_case inflection
- if (!$command && $this->inflector) {
- $command = $this->description->getOperation($this->inflector->snake($name));
- }
- }
-
- if ($command) {
- $class = $command->getClass();
- return new $class($args, $command, $this->description);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php
deleted file mode 100644
index adcfca1..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Description\Parameter;
-
-abstract class AbstractRequestVisitor implements RequestVisitorInterface
-{
- /**
- * @codeCoverageIgnore
- */
- public function after(CommandInterface $command, RequestInterface $request) {}
-
- /**
- * @codeCoverageIgnore
- */
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value) {}
-
- /**
- * Prepare (filter and set desired name for request item) the value for request.
- *
- * @param mixed $value
- * @param \Guzzle\Service\Description\Parameter $param
- *
- * @return array|mixed
- */
- protected function prepareValue($value, Parameter $param)
- {
- return is_array($value)
- ? $this->resolveRecursively($value, $param)
- : $param->filter($value);
- }
-
- /**
- * Map nested parameters into the location_key based parameters
- *
- * @param array $value Value to map
- * @param Parameter $param Parameter that holds information about the current key
- *
- * @return array Returns the mapped array
- */
- protected function resolveRecursively(array $value, Parameter $param)
- {
- foreach ($value as $name => &$v) {
- switch ($param->getType()) {
- case 'object':
- if ($subParam = $param->getProperty($name)) {
- $key = $subParam->getWireName();
- $value[$key] = $this->prepareValue($v, $subParam);
- if ($name != $key) {
- unset($value[$name]);
- }
- } elseif ($param->getAdditionalProperties() instanceof Parameter) {
- $v = $this->prepareValue($v, $param->getAdditionalProperties());
- }
- break;
- case 'array':
- if ($items = $param->getItems()) {
- $v = $this->prepareValue($v, $items);
- }
- break;
- }
- }
-
- return $param->filter($value);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php
deleted file mode 100644
index 168d780..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\EntityBodyInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to apply a body to a request
- *
- * This visitor can use a data parameter of 'expect' to control the Expect header. Set the expect data parameter to
- * false to disable the expect header, or set the value to an integer so that the expect 100-continue header is only
- * added if the Content-Length of the entity body is greater than the value.
- */
-class BodyVisitor extends AbstractRequestVisitor
-{
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- $value = $param->filter($value);
- $entityBody = EntityBody::factory($value);
- $request->setBody($entityBody);
- $this->addExpectHeader($request, $entityBody, $param->getData('expect_header'));
- // Add the Content-Encoding header if one is set on the EntityBody
- if ($encoding = $entityBody->getContentEncoding()) {
- $request->setHeader('Content-Encoding', $encoding);
- }
- }
-
- /**
- * Add the appropriate expect header to a request
- *
- * @param EntityEnclosingRequestInterface $request Request to update
- * @param EntityBodyInterface $body Entity body of the request
- * @param string|int $expect Expect header setting
- */
- protected function addExpectHeader(EntityEnclosingRequestInterface $request, EntityBodyInterface $body, $expect)
- {
- // Allow the `expect` data parameter to be set to remove the Expect header from the request
- if ($expect === false) {
- $request->removeHeader('Expect');
- } elseif ($expect !== true) {
- // Default to using a MB as the point in which to start using the expect header
- $expect = $expect ?: 1048576;
- // If the expect_header value is numeric then only add if the size is greater than the cutoff
- if (is_numeric($expect) && $body->getSize()) {
- if ($body->getSize() < $expect) {
- $request->removeHeader('Expect');
- } else {
- $request->setHeader('Expect', '100-Continue');
- }
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/HeaderVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/HeaderVisitor.php
deleted file mode 100644
index 2a53754..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/HeaderVisitor.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to apply a parameter to a header value
- */
-class HeaderVisitor extends AbstractRequestVisitor
-{
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- $value = $param->filter($value);
- if ($param->getType() == 'object' && $param->getAdditionalProperties() instanceof Parameter) {
- $this->addPrefixedHeaders($request, $param, $value);
- } else {
- $request->setHeader($param->getWireName(), $value);
- }
- }
-
- /**
- * Add a prefixed array of headers to the request
- *
- * @param RequestInterface $request Request to update
- * @param Parameter $param Parameter object
- * @param array $value Header array to add
- *
- * @throws InvalidArgumentException
- */
- protected function addPrefixedHeaders(RequestInterface $request, Parameter $param, $value)
- {
- if (!is_array($value)) {
- throw new InvalidArgumentException('An array of mapped headers expected, but received a single value');
- }
- $prefix = $param->getSentAs();
- foreach ($value as $headerName => $headerValue) {
- $request->setHeader($prefix . $headerName, $headerValue);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php
deleted file mode 100644
index 757e1c5..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to apply a parameter to an array that will be serialized as a top level key-value pair in a JSON body
- */
-class JsonVisitor extends AbstractRequestVisitor
-{
- /** @var bool Whether or not to add a Content-Type header when JSON is found */
- protected $jsonContentType = 'application/json';
-
- /** @var \SplObjectStorage Data object for persisting JSON data */
- protected $data;
-
- public function __construct()
- {
- $this->data = new \SplObjectStorage();
- }
-
- /**
- * Set the Content-Type header to add to the request if JSON is added to the body. This visitor does not add a
- * Content-Type header unless you specify one here.
- *
- * @param string $header Header to set when JSON is added (e.g. application/json)
- *
- * @return self
- */
- public function setContentTypeHeader($header = 'application/json')
- {
- $this->jsonContentType = $header;
-
- return $this;
- }
-
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- if (isset($this->data[$command])) {
- $json = $this->data[$command];
- } else {
- $json = array();
- }
- $json[$param->getWireName()] = $this->prepareValue($value, $param);
- $this->data[$command] = $json;
- }
-
- public function after(CommandInterface $command, RequestInterface $request)
- {
- if (isset($this->data[$command])) {
- // Don't overwrite the Content-Type if one is set
- if ($this->jsonContentType && !$request->hasHeader('Content-Type')) {
- $request->setHeader('Content-Type', $this->jsonContentType);
- }
-
- $request->setBody(json_encode($this->data[$command]));
- unset($this->data[$command]);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFieldVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFieldVisitor.php
deleted file mode 100644
index 975850b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFieldVisitor.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to apply a parameter to a POST field
- */
-class PostFieldVisitor extends AbstractRequestVisitor
-{
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- $request->setPostField($param->getWireName(), $this->prepareValue($value, $param));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFileVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFileVisitor.php
deleted file mode 100644
index 0853ebe..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFileVisitor.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\PostFileInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to apply a parameter to a POST file
- */
-class PostFileVisitor extends AbstractRequestVisitor
-{
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- $value = $param->filter($value);
- if ($value instanceof PostFileInterface) {
- $request->addPostFile($value);
- } else {
- $request->addPostFile($param->getWireName(), $value);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/QueryVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/QueryVisitor.php
deleted file mode 100644
index 315877a..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/QueryVisitor.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to apply a parameter to a request's query string
- */
-class QueryVisitor extends AbstractRequestVisitor
-{
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- $request->getQuery()->set($param->getWireName(), $this->prepareValue($value, $param));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/RequestVisitorInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/RequestVisitorInterface.php
deleted file mode 100644
index 14e0b2d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/RequestVisitorInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Location visitor used to add values to different locations in a request with different behaviors as needed
- */
-interface RequestVisitorInterface
-{
- /**
- * Called after visiting all parameters
- *
- * @param CommandInterface $command Command being visited
- * @param RequestInterface $request Request being visited
- */
- public function after(CommandInterface $command, RequestInterface $request);
-
- /**
- * Called once for each parameter being visited that matches the location type
- *
- * @param CommandInterface $command Command being visited
- * @param RequestInterface $request Request being visited
- * @param Parameter $param Parameter being visited
- * @param mixed $value Value to set
- */
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/ResponseBodyVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/ResponseBodyVisitor.php
deleted file mode 100644
index 09f35f8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/ResponseBodyVisitor.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to change the location in which a response body is saved
- */
-class ResponseBodyVisitor extends AbstractRequestVisitor
-{
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- $request->setResponseBody($value);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/XmlVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/XmlVisitor.php
deleted file mode 100644
index 5b71487..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/XmlVisitor.php
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Location visitor used to serialize XML bodies
- */
-class XmlVisitor extends AbstractRequestVisitor
-{
- /** @var \SplObjectStorage Data object for persisting XML data */
- protected $data;
-
- /** @var bool Content-Type header added when XML is found */
- protected $contentType = 'application/xml';
-
- public function __construct()
- {
- $this->data = new \SplObjectStorage();
- }
-
- /**
- * Change the content-type header that is added when XML is found
- *
- * @param string $header Header to set when XML is found
- *
- * @return self
- */
- public function setContentTypeHeader($header)
- {
- $this->contentType = $header;
-
- return $this;
- }
-
- public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
- {
- $xml = isset($this->data[$command])
- ? $this->data[$command]
- : $this->createRootElement($param->getParent());
- $this->addXml($xml, $param, $value);
-
- $this->data[$command] = $xml;
- }
-
- public function after(CommandInterface $command, RequestInterface $request)
- {
- $xml = null;
-
- // If data was found that needs to be serialized, then do so
- if (isset($this->data[$command])) {
- $xml = $this->finishDocument($this->data[$command]);
- unset($this->data[$command]);
- } else {
- // Check if XML should always be sent for the command
- $operation = $command->getOperation();
- if ($operation->getData('xmlAllowEmpty')) {
- $xmlWriter = $this->createRootElement($operation);
- $xml = $this->finishDocument($xmlWriter);
- }
- }
-
- if ($xml) {
- // Don't overwrite the Content-Type if one is set
- if ($this->contentType && !$request->hasHeader('Content-Type')) {
- $request->setHeader('Content-Type', $this->contentType);
- }
- $request->setBody($xml);
- }
- }
-
- /**
- * Create the root XML element to use with a request
- *
- * @param Operation $operation Operation object
- *
- * @return \XMLWriter
- */
- protected function createRootElement(Operation $operation)
- {
- static $defaultRoot = array('name' => 'Request');
- // If no root element was specified, then just wrap the XML in 'Request'
- $root = $operation->getData('xmlRoot') ?: $defaultRoot;
- // Allow the XML declaration to be customized with xmlEncoding
- $encoding = $operation->getData('xmlEncoding');
-
- $xmlWriter = $this->startDocument($encoding);
-
- $xmlWriter->startElement($root['name']);
- // Create the wrapping element with no namespaces if no namespaces were present
- if (!empty($root['namespaces'])) {
- // Create the wrapping element with an array of one or more namespaces
- foreach ((array) $root['namespaces'] as $prefix => $uri) {
- $nsLabel = 'xmlns';
- if (!is_numeric($prefix)) {
- $nsLabel .= ':'.$prefix;
- }
- $xmlWriter->writeAttribute($nsLabel, $uri);
- }
- }
- return $xmlWriter;
- }
-
- /**
- * Recursively build the XML body
- *
- * @param \XMLWriter $xmlWriter XML to modify
- * @param Parameter $param API Parameter
- * @param mixed $value Value to add
- */
- protected function addXml(\XMLWriter $xmlWriter, Parameter $param, $value)
- {
- if ($value === null) {
- return;
- }
-
- $value = $param->filter($value);
- $type = $param->getType();
- $name = $param->getWireName();
- $prefix = null;
- $namespace = $param->getData('xmlNamespace');
- if (false !== strpos($name, ':')) {
- list($prefix, $name) = explode(':', $name, 2);
- }
-
- if ($type == 'object' || $type == 'array') {
- if (!$param->getData('xmlFlattened')) {
- $xmlWriter->startElementNS(null, $name, $namespace);
- }
- if ($param->getType() == 'array') {
- $this->addXmlArray($xmlWriter, $param, $value);
- } elseif ($param->getType() == 'object') {
- $this->addXmlObject($xmlWriter, $param, $value);
- }
- if (!$param->getData('xmlFlattened')) {
- $xmlWriter->endElement();
- }
- return;
- }
- if ($param->getData('xmlAttribute')) {
- $this->writeAttribute($xmlWriter, $prefix, $name, $namespace, $value);
- } else {
- $this->writeElement($xmlWriter, $prefix, $name, $namespace, $value);
- }
- }
-
- /**
- * Write an attribute with namespace if used
- *
- * @param \XMLWriter $xmlWriter XMLWriter instance
- * @param string $prefix Namespace prefix if any
- * @param string $name Attribute name
- * @param string $namespace The uri of the namespace
- * @param string $value The attribute content
- */
- protected function writeAttribute($xmlWriter, $prefix, $name, $namespace, $value)
- {
- if (empty($namespace)) {
- $xmlWriter->writeAttribute($name, $value);
- } else {
- $xmlWriter->writeAttributeNS($prefix, $name, $namespace, $value);
- }
- }
-
- /**
- * Write an element with namespace if used
- *
- * @param \XMLWriter $xmlWriter XML writer resource
- * @param string $prefix Namespace prefix if any
- * @param string $name Element name
- * @param string $namespace The uri of the namespace
- * @param string $value The element content
- */
- protected function writeElement(\XMLWriter $xmlWriter, $prefix, $name, $namespace, $value)
- {
- $xmlWriter->startElementNS($prefix, $name, $namespace);
- if (strpbrk($value, '<>&')) {
- $xmlWriter->writeCData($value);
- } else {
- $xmlWriter->writeRaw($value);
- }
- $xmlWriter->endElement();
- }
-
- /**
- * Create a new xml writer and start a document
- *
- * @param string $encoding document encoding
- *
- * @return \XMLWriter the writer resource
- */
- protected function startDocument($encoding)
- {
- $xmlWriter = new \XMLWriter();
- $xmlWriter->openMemory();
- $xmlWriter->startDocument('1.0', $encoding);
-
- return $xmlWriter;
- }
-
- /**
- * End the document and return the output
- *
- * @param \XMLWriter $xmlWriter
- *
- * @return \string the writer resource
- */
- protected function finishDocument($xmlWriter)
- {
- $xmlWriter->endDocument();
-
- return $xmlWriter->outputMemory();
- }
-
- /**
- * Add an array to the XML
- */
- protected function addXmlArray(\XMLWriter $xmlWriter, Parameter $param, &$value)
- {
- if ($items = $param->getItems()) {
- foreach ($value as $v) {
- $this->addXml($xmlWriter, $items, $v);
- }
- }
- }
-
- /**
- * Add an object to the XML
- */
- protected function addXmlObject(\XMLWriter $xmlWriter, Parameter $param, &$value)
- {
- $noAttributes = array();
- // add values which have attributes
- foreach ($value as $name => $v) {
- if ($property = $param->getProperty($name)) {
- if ($property->getData('xmlAttribute')) {
- $this->addXml($xmlWriter, $property, $v);
- } else {
- $noAttributes[] = array('value' => $v, 'property' => $property);
- }
- }
- }
- // now add values with no attributes
- foreach ($noAttributes as $element) {
- $this->addXml($xmlWriter, $element['property'], $element['value']);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/AbstractResponseVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/AbstractResponseVisitor.php
deleted file mode 100644
index d87eeb9..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/AbstractResponseVisitor.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * {@inheritdoc}
- * @codeCoverageIgnore
- */
-abstract class AbstractResponseVisitor implements ResponseVisitorInterface
-{
- public function before(CommandInterface $command, array &$result) {}
-
- public function after(CommandInterface $command) {}
-
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- ) {}
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/BodyVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/BodyVisitor.php
deleted file mode 100644
index f70b727..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/BodyVisitor.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Visitor used to add the body of a response to a particular key
- */
-class BodyVisitor extends AbstractResponseVisitor
-{
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- ) {
- $value[$param->getName()] = $param->filter($response->getBody());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/HeaderVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/HeaderVisitor.php
deleted file mode 100644
index 0f8737c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/HeaderVisitor.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Location visitor used to add a particular header of a response to a key in the result
- */
-class HeaderVisitor extends AbstractResponseVisitor
-{
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- ) {
- if ($param->getType() == 'object' && $param->getAdditionalProperties() instanceof Parameter) {
- $this->processPrefixedHeaders($response, $param, $value);
- } else {
- $value[$param->getName()] = $param->filter((string) $response->getHeader($param->getWireName()));
- }
- }
-
- /**
- * Process a prefixed header array
- *
- * @param Response $response Response that contains the headers
- * @param Parameter $param Parameter object
- * @param array $value Value response array to modify
- */
- protected function processPrefixedHeaders(Response $response, Parameter $param, &$value)
- {
- // Grab prefixed headers that should be placed into an array with the prefix stripped
- if ($prefix = $param->getSentAs()) {
- $container = $param->getName();
- $len = strlen($prefix);
- // Find all matching headers and place them into the containing element
- foreach ($response->getHeaders()->toArray() as $key => $header) {
- if (stripos($key, $prefix) === 0) {
- // Account for multi-value headers
- $value[$container][substr($key, $len)] = count($header) == 1 ? end($header) : $header;
- }
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/JsonVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/JsonVisitor.php
deleted file mode 100644
index a609ebd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/JsonVisitor.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Location visitor used to marshal JSON response data into a formatted array.
- *
- * Allows top level JSON parameters to be inserted into the result of a command. The top level attributes are grabbed
- * from the response's JSON data using the name value by default. Filters can be applied to parameters as they are
- * traversed. This allows data to be normalized before returning it to users (for example converting timestamps to
- * DateTime objects).
- */
-class JsonVisitor extends AbstractResponseVisitor
-{
- public function before(CommandInterface $command, array &$result)
- {
- // Ensure that the result of the command is always rooted with the parsed JSON data
- $result = $command->getResponse()->json();
- }
-
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- ) {
- $name = $param->getName();
- $key = $param->getWireName();
- if (isset($value[$key])) {
- $this->recursiveProcess($param, $value[$key]);
- if ($key != $name) {
- $value[$name] = $value[$key];
- unset($value[$key]);
- }
- }
- }
-
- /**
- * Recursively process a parameter while applying filters
- *
- * @param Parameter $param API parameter being validated
- * @param mixed $value Value to validate and process. The value may change during this process.
- */
- protected function recursiveProcess(Parameter $param, &$value)
- {
- if ($value === null) {
- return;
- }
-
- if (is_array($value)) {
- $type = $param->getType();
- if ($type == 'array') {
- foreach ($value as &$item) {
- $this->recursiveProcess($param->getItems(), $item);
- }
- } elseif ($type == 'object' && !isset($value[0])) {
- // On the above line, we ensure that the array is associative and not numerically indexed
- $knownProperties = array();
- if ($properties = $param->getProperties()) {
- foreach ($properties as $property) {
- $name = $property->getName();
- $key = $property->getWireName();
- $knownProperties[$name] = 1;
- if (isset($value[$key])) {
- $this->recursiveProcess($property, $value[$key]);
- if ($key != $name) {
- $value[$name] = $value[$key];
- unset($value[$key]);
- }
- }
- }
- }
-
- // Remove any unknown and potentially unsafe properties
- if ($param->getAdditionalProperties() === false) {
- $value = array_intersect_key($value, $knownProperties);
- } elseif (($additional = $param->getAdditionalProperties()) !== true) {
- // Validate and filter additional properties
- foreach ($value as &$v) {
- $this->recursiveProcess($additional, $v);
- }
- }
- }
- }
-
- $value = $param->filter($value);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ReasonPhraseVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ReasonPhraseVisitor.php
deleted file mode 100644
index 1b10ebc..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ReasonPhraseVisitor.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Location visitor used to add the reason phrase of a response to a key in the result
- */
-class ReasonPhraseVisitor extends AbstractResponseVisitor
-{
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- ) {
- $value[$param->getName()] = $response->getReasonPhrase();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ResponseVisitorInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ResponseVisitorInterface.php
deleted file mode 100644
index 033f40c..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ResponseVisitorInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Location visitor used to parse values out of a response into an associative array
- */
-interface ResponseVisitorInterface
-{
- /**
- * Called before visiting all parameters. This can be used for seeding the result of a command with default
- * data (e.g. populating with JSON data in the response then adding to the parsed data).
- *
- * @param CommandInterface $command Command being visited
- * @param array $result Result value to update if needed (e.g. parsing XML or JSON)
- */
- public function before(CommandInterface $command, array &$result);
-
- /**
- * Called after visiting all parameters
- *
- * @param CommandInterface $command Command being visited
- */
- public function after(CommandInterface $command);
-
- /**
- * Called once for each parameter being visited that matches the location type
- *
- * @param CommandInterface $command Command being visited
- * @param Response $response Response being visited
- * @param Parameter $param Parameter being visited
- * @param mixed $value Result associative array value being updated by reference
- * @param mixed $context Parsing context
- */
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- );
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/StatusCodeVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/StatusCodeVisitor.php
deleted file mode 100644
index 00c5ce0..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/StatusCodeVisitor.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Location visitor used to add the status code of a response to a key in the result
- */
-class StatusCodeVisitor extends AbstractResponseVisitor
-{
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- ) {
- $value[$param->getName()] = $response->getStatusCode();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/XmlVisitor.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/XmlVisitor.php
deleted file mode 100644
index bb7124b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/XmlVisitor.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Location visitor used to marshal XML response data into a formatted array
- */
-class XmlVisitor extends AbstractResponseVisitor
-{
- public function before(CommandInterface $command, array &$result)
- {
- // Set the result of the command to the array conversion of the XML body
- $result = json_decode(json_encode($command->getResponse()->xml()), true);
- }
-
- public function visit(
- CommandInterface $command,
- Response $response,
- Parameter $param,
- &$value,
- $context = null
- ) {
- $sentAs = $param->getWireName();
- $name = $param->getName();
- if (isset($value[$sentAs])) {
- $this->recursiveProcess($param, $value[$sentAs]);
- if ($name != $sentAs) {
- $value[$name] = $value[$sentAs];
- unset($value[$sentAs]);
- }
- }
- }
-
- /**
- * Recursively process a parameter while applying filters
- *
- * @param Parameter $param API parameter being processed
- * @param mixed $value Value to validate and process. The value may change during this process.
- */
- protected function recursiveProcess(Parameter $param, &$value)
- {
- $type = $param->getType();
-
- if (!is_array($value)) {
- if ($type == 'array') {
- // Cast to an array if the value was a string, but should be an array
- $this->recursiveProcess($param->getItems(), $value);
- $value = array($value);
- }
- } elseif ($type == 'object') {
- $this->processObject($param, $value);
- } elseif ($type == 'array') {
- $this->processArray($param, $value);
- } elseif ($type == 'string' && gettype($value) == 'array') {
- $value = '';
- }
-
- if ($value !== null) {
- $value = $param->filter($value);
- }
- }
-
- /**
- * Process an array
- *
- * @param Parameter $param API parameter being parsed
- * @param mixed $value Value to process
- */
- protected function processArray(Parameter $param, &$value)
- {
- // Convert the node if it was meant to be an array
- if (!isset($value[0])) {
- // Collections fo nodes are sometimes wrapped in an additional array. For example:
- // <Items><Item><a>1</a></Item><Item><a>2</a></Item></Items> should become:
- // array('Items' => array(array('a' => 1), array('a' => 2))
- // Some nodes are not wrapped. For example: <Foo><a>1</a></Foo><Foo><a>2</a></Foo>
- // should become array('Foo' => array(array('a' => 1), array('a' => 2))
- if ($param->getItems() && isset($value[$param->getItems()->getWireName()])) {
- // Account for the case of a collection wrapping wrapped nodes: Items => Item[]
- $value = $value[$param->getItems()->getWireName()];
- // If the wrapped node only had one value, then make it an array of nodes
- if (!isset($value[0]) || !is_array($value)) {
- $value = array($value);
- }
- } elseif (!empty($value)) {
- // Account for repeated nodes that must be an array: Foo => Baz, Foo => Baz, but only if the
- // value is set and not empty
- $value = array($value);
- }
- }
-
- foreach ($value as &$item) {
- $this->recursiveProcess($param->getItems(), $item);
- }
- }
-
- /**
- * Process an object
- *
- * @param Parameter $param API parameter being parsed
- * @param mixed $value Value to process
- */
- protected function processObject(Parameter $param, &$value)
- {
- // Ensure that the array is associative and not numerically indexed
- if (!isset($value[0]) && ($properties = $param->getProperties())) {
- $knownProperties = array();
- foreach ($properties as $property) {
- $name = $property->getName();
- $sentAs = $property->getWireName();
- $knownProperties[$name] = 1;
- if ($property->getData('xmlAttribute')) {
- $this->processXmlAttribute($property, $value);
- } elseif (isset($value[$sentAs])) {
- $this->recursiveProcess($property, $value[$sentAs]);
- if ($name != $sentAs) {
- $value[$name] = $value[$sentAs];
- unset($value[$sentAs]);
- }
- }
- }
-
- // Remove any unknown and potentially unsafe properties
- if ($param->getAdditionalProperties() === false) {
- $value = array_intersect_key($value, $knownProperties);
- }
- }
- }
-
- /**
- * Process an XML attribute property
- *
- * @param Parameter $property Property to process
- * @param array $value Value to process and update
- */
- protected function processXmlAttribute(Parameter $property, array &$value)
- {
- $sentAs = $property->getWireName();
- if (isset($value['@attributes'][$sentAs])) {
- $value[$property->getName()] = $value['@attributes'][$sentAs];
- unset($value['@attributes'][$sentAs]);
- if (empty($value['@attributes'])) {
- unset($value['@attributes']);
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/VisitorFlyweight.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/VisitorFlyweight.php
deleted file mode 100644
index 74cb628..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/VisitorFlyweight.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command\LocationVisitor;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Service\Command\LocationVisitor\Request\RequestVisitorInterface;
-use Guzzle\Service\Command\LocationVisitor\Response\ResponseVisitorInterface;
-
-/**
- * Flyweight factory used to instantiate request and response visitors
- */
-class VisitorFlyweight
-{
- /** @var self Singleton instance of self */
- protected static $instance;
-
- /** @var array Default array of mappings of location names to classes */
- protected static $defaultMappings = array(
- 'request.body' => 'Guzzle\Service\Command\LocationVisitor\Request\BodyVisitor',
- 'request.header' => 'Guzzle\Service\Command\LocationVisitor\Request\HeaderVisitor',
- 'request.json' => 'Guzzle\Service\Command\LocationVisitor\Request\JsonVisitor',
- 'request.postField' => 'Guzzle\Service\Command\LocationVisitor\Request\PostFieldVisitor',
- 'request.postFile' => 'Guzzle\Service\Command\LocationVisitor\Request\PostFileVisitor',
- 'request.query' => 'Guzzle\Service\Command\LocationVisitor\Request\QueryVisitor',
- 'request.response_body' => 'Guzzle\Service\Command\LocationVisitor\Request\ResponseBodyVisitor',
- 'request.responseBody' => 'Guzzle\Service\Command\LocationVisitor\Request\ResponseBodyVisitor',
- 'request.xml' => 'Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor',
- 'response.body' => 'Guzzle\Service\Command\LocationVisitor\Response\BodyVisitor',
- 'response.header' => 'Guzzle\Service\Command\LocationVisitor\Response\HeaderVisitor',
- 'response.json' => 'Guzzle\Service\Command\LocationVisitor\Response\JsonVisitor',
- 'response.reasonPhrase' => 'Guzzle\Service\Command\LocationVisitor\Response\ReasonPhraseVisitor',
- 'response.statusCode' => 'Guzzle\Service\Command\LocationVisitor\Response\StatusCodeVisitor',
- 'response.xml' => 'Guzzle\Service\Command\LocationVisitor\Response\XmlVisitor'
- );
-
- /** @var array Array of mappings of location names to classes */
- protected $mappings;
-
- /** @var array Cache of instantiated visitors */
- protected $cache = array();
-
- /**
- * @return self
- * @codeCoverageIgnore
- */
- public static function getInstance()
- {
- if (!self::$instance) {
- self::$instance = new self();
- }
-
- return self::$instance;
- }
-
- /**
- * @param array $mappings Array mapping request.name and response.name to location visitor classes. Leave null to
- * use the default values.
- */
- public function __construct(array $mappings = null)
- {
- $this->mappings = $mappings === null ? self::$defaultMappings : $mappings;
- }
-
- /**
- * Get an instance of a request visitor by location name
- *
- * @param string $visitor Visitor name
- *
- * @return RequestVisitorInterface
- */
- public function getRequestVisitor($visitor)
- {
- return $this->getKey('request.' . $visitor);
- }
-
- /**
- * Get an instance of a response visitor by location name
- *
- * @param string $visitor Visitor name
- *
- * @return ResponseVisitorInterface
- */
- public function getResponseVisitor($visitor)
- {
- return $this->getKey('response.' . $visitor);
- }
-
- /**
- * Add a response visitor to the factory by name
- *
- * @param string $name Name of the visitor
- * @param RequestVisitorInterface $visitor Visitor to add
- *
- * @return self
- */
- public function addRequestVisitor($name, RequestVisitorInterface $visitor)
- {
- $this->cache['request.' . $name] = $visitor;
-
- return $this;
- }
-
- /**
- * Add a response visitor to the factory by name
- *
- * @param string $name Name of the visitor
- * @param ResponseVisitorInterface $visitor Visitor to add
- *
- * @return self
- */
- public function addResponseVisitor($name, ResponseVisitorInterface $visitor)
- {
- $this->cache['response.' . $name] = $visitor;
-
- return $this;
- }
-
- /**
- * Get a visitor by key value name
- *
- * @param string $key Key name to retrieve
- *
- * @return mixed
- * @throws InvalidArgumentException
- */
- private function getKey($key)
- {
- if (!isset($this->cache[$key])) {
- if (!isset($this->mappings[$key])) {
- list($type, $name) = explode('.', $key);
- throw new InvalidArgumentException("No {$type} visitor has been mapped for {$name}");
- }
- $this->cache[$key] = new $this->mappings[$key];
- }
-
- return $this->cache[$key];
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php
deleted file mode 100644
index 0748b5a..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-/**
- * A command that creates requests based on {@see Guzzle\Service\Description\OperationInterface} objects, and if the
- * matching operation uses a service description model in the responseClass attribute, then this command will marshal
- * the response into an associative array based on the JSON schema of the model.
- */
-class OperationCommand extends AbstractCommand
-{
- /** @var RequestSerializerInterface */
- protected $requestSerializer;
-
- /** @var ResponseParserInterface Response parser */
- protected $responseParser;
-
- /**
- * Set the response parser used with the command
- *
- * @param ResponseParserInterface $parser Response parser
- *
- * @return self
- */
- public function setResponseParser(ResponseParserInterface $parser)
- {
- $this->responseParser = $parser;
-
- return $this;
- }
-
- /**
- * Set the request serializer used with the command
- *
- * @param RequestSerializerInterface $serializer Request serializer
- *
- * @return self
- */
- public function setRequestSerializer(RequestSerializerInterface $serializer)
- {
- $this->requestSerializer = $serializer;
-
- return $this;
- }
-
- /**
- * Get the request serializer used with the command
- *
- * @return RequestSerializerInterface
- */
- public function getRequestSerializer()
- {
- if (!$this->requestSerializer) {
- // Use the default request serializer if none was found
- $this->requestSerializer = DefaultRequestSerializer::getInstance();
- }
-
- return $this->requestSerializer;
- }
-
- /**
- * Get the response parser used for the operation
- *
- * @return ResponseParserInterface
- */
- public function getResponseParser()
- {
- if (!$this->responseParser) {
- // Use the default response parser if none was found
- $this->responseParser = OperationResponseParser::getInstance();
- }
-
- return $this->responseParser;
- }
-
- protected function build()
- {
- // Prepare and serialize the request
- $this->request = $this->getRequestSerializer()->prepare($this);
- }
-
- protected function process()
- {
- // Do not process the response if 'command.response_processing' is set to 'raw'
- $this->result = $this[self::RESPONSE_PROCESSING] == self::TYPE_RAW
- ? $this->request->getResponse()
- : $this->getResponseParser()->parse($this);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationResponseParser.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationResponseParser.php
deleted file mode 100644
index ca00bc0..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/OperationResponseParser.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Command\LocationVisitor\VisitorFlyweight;
-use Guzzle\Service\Command\LocationVisitor\Response\ResponseVisitorInterface;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Description\OperationInterface;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Exception\ResponseClassException;
-use Guzzle\Service\Resource\Model;
-
-/**
- * Response parser that attempts to marshal responses into an associative array based on models in a service description
- */
-class OperationResponseParser extends DefaultResponseParser
-{
- /** @var VisitorFlyweight $factory Visitor factory */
- protected $factory;
-
- /** @var self */
- protected static $instance;
-
- /** @var bool */
- private $schemaInModels;
-
- /**
- * @return self
- * @codeCoverageIgnore
- */
- public static function getInstance()
- {
- if (!static::$instance) {
- static::$instance = new static(VisitorFlyweight::getInstance());
- }
-
- return static::$instance;
- }
-
- /**
- * @param VisitorFlyweight $factory Factory to use when creating visitors
- * @param bool $schemaInModels Set to true to inject schemas into models
- */
- public function __construct(VisitorFlyweight $factory, $schemaInModels = false)
- {
- $this->factory = $factory;
- $this->schemaInModels = $schemaInModels;
- }
-
- /**
- * Add a location visitor to the command
- *
- * @param string $location Location to associate with the visitor
- * @param ResponseVisitorInterface $visitor Visitor to attach
- *
- * @return self
- */
- public function addVisitor($location, ResponseVisitorInterface $visitor)
- {
- $this->factory->addResponseVisitor($location, $visitor);
-
- return $this;
- }
-
- protected function handleParsing(CommandInterface $command, Response $response, $contentType)
- {
- $operation = $command->getOperation();
- $type = $operation->getResponseType();
- $model = null;
-
- if ($type == OperationInterface::TYPE_MODEL) {
- $model = $operation->getServiceDescription()->getModel($operation->getResponseClass());
- } elseif ($type == OperationInterface::TYPE_CLASS) {
- return $this->parseClass($command);
- }
-
- if (!$model) {
- // Return basic processing if the responseType is not model or the model cannot be found
- return parent::handleParsing($command, $response, $contentType);
- } elseif ($command[AbstractCommand::RESPONSE_PROCESSING] != AbstractCommand::TYPE_MODEL) {
- // Returns a model with no visiting if the command response processing is not model
- return new Model(parent::handleParsing($command, $response, $contentType));
- } else {
- // Only inject the schema into the model if "schemaInModel" is true
- return new Model($this->visitResult($model, $command, $response), $this->schemaInModels ? $model : null);
- }
- }
-
- /**
- * Parse a class object
- *
- * @param CommandInterface $command Command to parse into an object
- *
- * @return mixed
- * @throws ResponseClassException
- */
- protected function parseClass(CommandInterface $command)
- {
- // Emit the operation.parse_class event. If a listener injects a 'result' property, then that will be the result
- $event = new CreateResponseClassEvent(array('command' => $command));
- $command->getClient()->getEventDispatcher()->dispatch('command.parse_response', $event);
- if ($result = $event->getResult()) {
- return $result;
- }
-
- $className = $command->getOperation()->getResponseClass();
- if (!method_exists($className, 'fromCommand')) {
- throw new ResponseClassException("{$className} must exist and implement a static fromCommand() method");
- }
-
- return $className::fromCommand($command);
- }
-
- /**
- * Perform transformations on the result array
- *
- * @param Parameter $model Model that defines the structure
- * @param CommandInterface $command Command that performed the operation
- * @param Response $response Response received
- *
- * @return array Returns the array of result data
- */
- protected function visitResult(Parameter $model, CommandInterface $command, Response $response)
- {
- $foundVisitors = $result = $knownProps = array();
- $props = $model->getProperties();
-
- foreach ($props as $schema) {
- if ($location = $schema->getLocation()) {
- // Trigger the before method on the first found visitor of this type
- if (!isset($foundVisitors[$location])) {
- $foundVisitors[$location] = $this->factory->getResponseVisitor($location);
- $foundVisitors[$location]->before($command, $result);
- }
- }
- }
-
- // Visit additional properties when it is an actual schema
- if (($additional = $model->getAdditionalProperties()) instanceof Parameter) {
- $this->visitAdditionalProperties($model, $command, $response, $additional, $result, $foundVisitors);
- }
-
- // Apply the parameter value with the location visitor
- foreach ($props as $schema) {
- $knownProps[$schema->getName()] = 1;
- if ($location = $schema->getLocation()) {
- $foundVisitors[$location]->visit($command, $response, $schema, $result);
- }
- }
-
- // Remove any unknown and potentially unsafe top-level properties
- if ($additional === false) {
- $result = array_intersect_key($result, $knownProps);
- }
-
- // Call the after() method of each found visitor
- foreach ($foundVisitors as $visitor) {
- $visitor->after($command);
- }
-
- return $result;
- }
-
- protected function visitAdditionalProperties(
- Parameter $model,
- CommandInterface $command,
- Response $response,
- Parameter $additional,
- &$result,
- array &$foundVisitors
- ) {
- // Only visit when a location is specified
- if ($location = $additional->getLocation()) {
- if (!isset($foundVisitors[$location])) {
- $foundVisitors[$location] = $this->factory->getResponseVisitor($location);
- $foundVisitors[$location]->before($command, $result);
- }
- // Only traverse if an array was parsed from the before() visitors
- if (is_array($result)) {
- // Find each additional property
- foreach (array_keys($result) as $key) {
- // Check if the model actually knows this property. If so, then it is not additional
- if (!$model->getProperty($key)) {
- // Set the name to the key so that we can parse it with each visitor
- $additional->setName($key);
- $foundVisitors[$location]->visit($command, $response, $additional, $result);
- }
- }
- // Reset the additionalProperties name to null
- $additional->setName(null);
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/RequestSerializerInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/RequestSerializerInterface.php
deleted file mode 100644
index 60b9334..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/RequestSerializerInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Translates command options and operation parameters into a request object
- */
-interface RequestSerializerInterface
-{
- /**
- * Create a request for a command
- *
- * @param CommandInterface $command Command that will own the request
- *
- * @return RequestInterface
- */
- public function prepare(CommandInterface $command);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseClassInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseClassInterface.php
deleted file mode 100644
index 325dd08..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseClassInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-/**
- * Interface used to accept a completed OperationCommand and parse the result into a specific response type
- */
-interface ResponseClassInterface
-{
- /**
- * Create a response model object from a completed command
- *
- * @param OperationCommand $command That serialized the request
- *
- * @return self
- */
- public static function fromCommand(OperationCommand $command);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseParserInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseParserInterface.php
deleted file mode 100644
index 015f0bb..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Command/ResponseParserInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Command;
-
-/**
- * Parses the HTTP response of a command and sets the appropriate result on a command object
- */
-interface ResponseParserInterface
-{
- /**
- * Parse the HTTP response received by the command and update the command's result contents
- *
- * @param CommandInterface $command Command to parse and update
- *
- * @return mixed Returns the result to set on the command
- */
- public function parse(CommandInterface $command);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ConfigLoaderInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ConfigLoaderInterface.php
deleted file mode 100644
index 304100d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/ConfigLoaderInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Guzzle\Service;
-
-/**
- * Interface used for loading configuration data (service descriptions, service builder configs, etc)
- *
- * If a loaded configuration data sets includes a top level key containing an 'includes' section, then the data in the
- * file will extend the merged result of all of the included config files.
- */
-interface ConfigLoaderInterface
-{
- /**
- * Loads configuration data and returns an array of the loaded result
- *
- * @param mixed $config Data to load (filename or array of data)
- * @param array $options Array of options to use when loading
- *
- * @return mixed
- */
- public function load($config, array $options = array());
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Operation.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Operation.php
deleted file mode 100644
index 81a1134..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Operation.php
+++ /dev/null
@@ -1,547 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * Data object holding the information of an API command
- */
-class Operation implements OperationInterface
-{
- /** @var string Default command class to use when none is specified */
- const DEFAULT_COMMAND_CLASS = 'Guzzle\\Service\\Command\\OperationCommand';
-
- /** @var array Hashmap of properties that can be specified. Represented as a hash to speed up constructor. */
- protected static $properties = array(
- 'name' => true, 'httpMethod' => true, 'uri' => true, 'class' => true, 'responseClass' => true,
- 'responseType' => true, 'responseNotes' => true, 'notes' => true, 'summary' => true, 'documentationUrl' => true,
- 'deprecated' => true, 'data' => true, 'parameters' => true, 'additionalParameters' => true,
- 'errorResponses' => true
- );
-
- /** @var array Parameters */
- protected $parameters = array();
-
- /** @var Parameter Additional parameters schema */
- protected $additionalParameters;
-
- /** @var string Name of the command */
- protected $name;
-
- /** @var string HTTP method */
- protected $httpMethod;
-
- /** @var string This is a short summary of what the operation does */
- protected $summary;
-
- /** @var string A longer text field to explain the behavior of the operation. */
- protected $notes;
-
- /** @var string Reference URL providing more information about the operation */
- protected $documentationUrl;
-
- /** @var string HTTP URI of the command */
- protected $uri;
-
- /** @var string Class of the command object */
- protected $class;
-
- /** @var string This is what is returned from the method */
- protected $responseClass;
-
- /** @var string Type information about the response */
- protected $responseType;
-
- /** @var string Information about the response returned by the operation */
- protected $responseNotes;
-
- /** @var bool Whether or not the command is deprecated */
- protected $deprecated;
-
- /** @var array Array of errors that could occur when running the command */
- protected $errorResponses;
-
- /** @var ServiceDescriptionInterface */
- protected $description;
-
- /** @var array Extra operation information */
- protected $data;
-
- /**
- * Builds an Operation object using an array of configuration data:
- * - name: (string) Name of the command
- * - httpMethod: (string) HTTP method of the operation
- * - uri: (string) URI template that can create a relative or absolute URL
- * - class: (string) Concrete class that implements this command
- * - parameters: (array) Associative array of parameters for the command. {@see Parameter} for information.
- * - summary: (string) This is a short summary of what the operation does
- * - notes: (string) A longer text field to explain the behavior of the operation.
- * - documentationUrl: (string) Reference URL providing more information about the operation
- * - responseClass: (string) This is what is returned from the method. Can be a primitive, PSR-0 compliant
- * class name, or model.
- * - responseNotes: (string) Information about the response returned by the operation
- * - responseType: (string) One of 'primitive', 'class', 'model', or 'documentation'. If not specified, this
- * value will be automatically inferred based on whether or not there is a model matching the
- * name, if a matching PSR-0 compliant class name is found, or set to 'primitive' by default.
- * - deprecated: (bool) Set to true if this is a deprecated command
- * - errorResponses: (array) Errors that could occur when executing the command. Array of hashes, each with a
- * 'code' (the HTTP response code), 'reason' (response reason phrase or description of the
- * error), and 'class' (a custom exception class that would be thrown if the error is
- * encountered).
- * - data: (array) Any extra data that might be used to help build or serialize the operation
- * - additionalParameters: (null|array) Parameter schema to use when an option is passed to the operation that is
- * not in the schema
- *
- * @param array $config Array of configuration data
- * @param ServiceDescriptionInterface $description Service description used to resolve models if $ref tags are found
- */
- public function __construct(array $config = array(), ServiceDescriptionInterface $description = null)
- {
- $this->description = $description;
-
- // Get the intersection of the available properties and properties set on the operation
- foreach (array_intersect_key($config, self::$properties) as $key => $value) {
- $this->{$key} = $value;
- }
-
- $this->class = $this->class ?: self::DEFAULT_COMMAND_CLASS;
- $this->deprecated = (bool) $this->deprecated;
- $this->errorResponses = $this->errorResponses ?: array();
- $this->data = $this->data ?: array();
-
- if (!$this->responseClass) {
- $this->responseClass = 'array';
- $this->responseType = 'primitive';
- } elseif ($this->responseType) {
- // Set the response type to perform validation
- $this->setResponseType($this->responseType);
- } else {
- // A response class was set and no response type was set, so guess what the type is
- $this->inferResponseType();
- }
-
- // Parameters need special handling when adding
- if ($this->parameters) {
- foreach ($this->parameters as $name => $param) {
- if ($param instanceof Parameter) {
- $param->setName($name)->setParent($this);
- } elseif (is_array($param)) {
- $param['name'] = $name;
- $this->addParam(new Parameter($param, $this->description));
- }
- }
- }
-
- if ($this->additionalParameters) {
- if ($this->additionalParameters instanceof Parameter) {
- $this->additionalParameters->setParent($this);
- } elseif (is_array($this->additionalParameters)) {
- $this->setadditionalParameters(new Parameter($this->additionalParameters, $this->description));
- }
- }
- }
-
- public function toArray()
- {
- $result = array();
- // Grab valid properties and filter out values that weren't set
- foreach (array_keys(self::$properties) as $check) {
- if ($value = $this->{$check}) {
- $result[$check] = $value;
- }
- }
- // Remove the name property
- unset($result['name']);
- // Parameters need to be converted to arrays
- $result['parameters'] = array();
- foreach ($this->parameters as $key => $param) {
- $result['parameters'][$key] = $param->toArray();
- }
- // Additional parameters need to be cast to an array
- if ($this->additionalParameters instanceof Parameter) {
- $result['additionalParameters'] = $this->additionalParameters->toArray();
- }
-
- return $result;
- }
-
- public function getServiceDescription()
- {
- return $this->description;
- }
-
- public function setServiceDescription(ServiceDescriptionInterface $description)
- {
- $this->description = $description;
-
- return $this;
- }
-
- public function getParams()
- {
- return $this->parameters;
- }
-
- public function getParamNames()
- {
- return array_keys($this->parameters);
- }
-
- public function hasParam($name)
- {
- return isset($this->parameters[$name]);
- }
-
- public function getParam($param)
- {
- return isset($this->parameters[$param]) ? $this->parameters[$param] : null;
- }
-
- /**
- * Add a parameter to the command
- *
- * @param Parameter $param Parameter to add
- *
- * @return self
- */
- public function addParam(Parameter $param)
- {
- $this->parameters[$param->getName()] = $param;
- $param->setParent($this);
-
- return $this;
- }
-
- /**
- * Remove a parameter from the command
- *
- * @param string $name Name of the parameter to remove
- *
- * @return self
- */
- public function removeParam($name)
- {
- unset($this->parameters[$name]);
-
- return $this;
- }
-
- public function getHttpMethod()
- {
- return $this->httpMethod;
- }
-
- /**
- * Set the HTTP method of the command
- *
- * @param string $httpMethod Method to set
- *
- * @return self
- */
- public function setHttpMethod($httpMethod)
- {
- $this->httpMethod = $httpMethod;
-
- return $this;
- }
-
- public function getClass()
- {
- return $this->class;
- }
-
- /**
- * Set the concrete class of the command
- *
- * @param string $className Concrete class name
- *
- * @return self
- */
- public function setClass($className)
- {
- $this->class = $className;
-
- return $this;
- }
-
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Set the name of the command
- *
- * @param string $name Name of the command
- *
- * @return self
- */
- public function setName($name)
- {
- $this->name = $name;
-
- return $this;
- }
-
- public function getSummary()
- {
- return $this->summary;
- }
-
- /**
- * Set a short summary of what the operation does
- *
- * @param string $summary Short summary of the operation
- *
- * @return self
- */
- public function setSummary($summary)
- {
- $this->summary = $summary;
-
- return $this;
- }
-
- public function getNotes()
- {
- return $this->notes;
- }
-
- /**
- * Set a longer text field to explain the behavior of the operation.
- *
- * @param string $notes Notes on the operation
- *
- * @return self
- */
- public function setNotes($notes)
- {
- $this->notes = $notes;
-
- return $this;
- }
-
- public function getDocumentationUrl()
- {
- return $this->documentationUrl;
- }
-
- /**
- * Set the URL pointing to additional documentation on the command
- *
- * @param string $docUrl Documentation URL
- *
- * @return self
- */
- public function setDocumentationUrl($docUrl)
- {
- $this->documentationUrl = $docUrl;
-
- return $this;
- }
-
- public function getResponseClass()
- {
- return $this->responseClass;
- }
-
- /**
- * Set what is returned from the method. Can be a primitive, class name, or model. For example: 'array',
- * 'Guzzle\\Foo\\Baz', or 'MyModelName' (to reference a model by ID).
- *
- * @param string $responseClass Type of response
- *
- * @return self
- */
- public function setResponseClass($responseClass)
- {
- $this->responseClass = $responseClass;
- $this->inferResponseType();
-
- return $this;
- }
-
- public function getResponseType()
- {
- return $this->responseType;
- }
-
- /**
- * Set qualifying information about the responseClass. One of 'primitive', 'class', 'model', or 'documentation'
- *
- * @param string $responseType Response type information
- *
- * @return self
- * @throws InvalidArgumentException
- */
- public function setResponseType($responseType)
- {
- static $types = array(
- self::TYPE_PRIMITIVE => true,
- self::TYPE_CLASS => true,
- self::TYPE_MODEL => true,
- self::TYPE_DOCUMENTATION => true
- );
- if (!isset($types[$responseType])) {
- throw new InvalidArgumentException('responseType must be one of ' . implode(', ', array_keys($types)));
- }
-
- $this->responseType = $responseType;
-
- return $this;
- }
-
- public function getResponseNotes()
- {
- return $this->responseNotes;
- }
-
- /**
- * Set notes about the response of the operation
- *
- * @param string $notes Response notes
- *
- * @return self
- */
- public function setResponseNotes($notes)
- {
- $this->responseNotes = $notes;
-
- return $this;
- }
-
- public function getDeprecated()
- {
- return $this->deprecated;
- }
-
- /**
- * Set whether or not the command is deprecated
- *
- * @param bool $isDeprecated Set to true to mark as deprecated
- *
- * @return self
- */
- public function setDeprecated($isDeprecated)
- {
- $this->deprecated = $isDeprecated;
-
- return $this;
- }
-
- public function getUri()
- {
- return $this->uri;
- }
-
- /**
- * Set the URI template of the command
- *
- * @param string $uri URI template to set
- *
- * @return self
- */
- public function setUri($uri)
- {
- $this->uri = $uri;
-
- return $this;
- }
-
- public function getErrorResponses()
- {
- return $this->errorResponses;
- }
-
- /**
- * Add an error to the command
- *
- * @param string $code HTTP response code
- * @param string $reason HTTP response reason phrase or information about the error
- * @param string $class Exception class associated with the error
- *
- * @return self
- */
- public function addErrorResponse($code, $reason, $class)
- {
- $this->errorResponses[] = array('code' => $code, 'reason' => $reason, 'class' => $class);
-
- return $this;
- }
-
- /**
- * Set all of the error responses of the operation
- *
- * @param array $errorResponses Hash of error name to a hash containing a code, reason, class
- *
- * @return self
- */
- public function setErrorResponses(array $errorResponses)
- {
- $this->errorResponses = $errorResponses;
-
- return $this;
- }
-
- public function getData($name)
- {
- return isset($this->data[$name]) ? $this->data[$name] : null;
- }
-
- /**
- * Set a particular data point on the operation
- *
- * @param string $name Name of the data value
- * @param mixed $value Value to set
- *
- * @return self
- */
- public function setData($name, $value)
- {
- $this->data[$name] = $value;
-
- return $this;
- }
-
- /**
- * Get the additionalParameters of the operation
- *
- * @return Parameter|null
- */
- public function getAdditionalParameters()
- {
- return $this->additionalParameters;
- }
-
- /**
- * Set the additionalParameters of the operation
- *
- * @param Parameter|null $parameter Parameter to set
- *
- * @return self
- */
- public function setAdditionalParameters($parameter)
- {
- if ($this->additionalParameters = $parameter) {
- $this->additionalParameters->setParent($this);
- }
-
- return $this;
- }
-
- /**
- * Infer the response type from the responseClass value
- */
- protected function inferResponseType()
- {
- static $primitives = array('array' => 1, 'boolean' => 1, 'string' => 1, 'integer' => 1, '' => 1);
- if (isset($primitives[$this->responseClass])) {
- $this->responseType = self::TYPE_PRIMITIVE;
- } elseif ($this->description && $this->description->hasModel($this->responseClass)) {
- $this->responseType = self::TYPE_MODEL;
- } else {
- $this->responseType = self::TYPE_CLASS;
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/OperationInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/OperationInterface.php
deleted file mode 100644
index 4de41bd..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/OperationInterface.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-use Guzzle\Common\ToArrayInterface;
-
-/**
- * Interface defining data objects that hold the information of an API operation
- */
-interface OperationInterface extends ToArrayInterface
-{
- const TYPE_PRIMITIVE = 'primitive';
- const TYPE_CLASS = 'class';
- const TYPE_DOCUMENTATION = 'documentation';
- const TYPE_MODEL = 'model';
-
- /**
- * Get the service description that the operation belongs to
- *
- * @return ServiceDescriptionInterface|null
- */
- public function getServiceDescription();
-
- /**
- * Set the service description that the operation belongs to
- *
- * @param ServiceDescriptionInterface $description Service description
- *
- * @return self
- */
- public function setServiceDescription(ServiceDescriptionInterface $description);
-
- /**
- * Get the params of the operation
- *
- * @return array
- */
- public function getParams();
-
- /**
- * Returns an array of parameter names
- *
- * @return array
- */
- public function getParamNames();
-
- /**
- * Check if the operation has a specific parameter by name
- *
- * @param string $name Name of the param
- *
- * @return bool
- */
- public function hasParam($name);
-
- /**
- * Get a single parameter of the operation
- *
- * @param string $param Parameter to retrieve by name
- *
- * @return Parameter|null
- */
- public function getParam($param);
-
- /**
- * Get the HTTP method of the operation
- *
- * @return string|null
- */
- public function getHttpMethod();
-
- /**
- * Get the concrete operation class that implements this operation
- *
- * @return string
- */
- public function getClass();
-
- /**
- * Get the name of the operation
- *
- * @return string|null
- */
- public function getName();
-
- /**
- * Get a short summary of what the operation does
- *
- * @return string|null
- */
- public function getSummary();
-
- /**
- * Get a longer text field to explain the behavior of the operation
- *
- * @return string|null
- */
- public function getNotes();
-
- /**
- * Get the documentation URL of the operation
- *
- * @return string|null
- */
- public function getDocumentationUrl();
-
- /**
- * Get what is returned from the method. Can be a primitive, class name, or model. For example, the responseClass
- * could be 'array', which would inherently use a responseType of 'primitive'. Using a class name would set a
- * responseType of 'class'. Specifying a model by ID will use a responseType of 'model'.
- *
- * @return string|null
- */
- public function getResponseClass();
-
- /**
- * Get information about how the response is unmarshalled: One of 'primitive', 'class', 'model', or 'documentation'
- *
- * @return string
- */
- public function getResponseType();
-
- /**
- * Get notes about the response of the operation
- *
- * @return string|null
- */
- public function getResponseNotes();
-
- /**
- * Get whether or not the operation is deprecated
- *
- * @return bool
- */
- public function getDeprecated();
-
- /**
- * Get the URI that will be merged into the generated request
- *
- * @return string
- */
- public function getUri();
-
- /**
- * Get the errors that could be encountered when executing the operation
- *
- * @return array
- */
- public function getErrorResponses();
-
- /**
- * Get extra data from the operation
- *
- * @param string $name Name of the data point to retrieve
- *
- * @return mixed|null
- */
- public function getData($name);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Parameter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Parameter.php
deleted file mode 100644
index 9ed3c30..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/Parameter.php
+++ /dev/null
@@ -1,925 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * API parameter object used with service descriptions
- */
-class Parameter
-{
- protected $name;
- protected $description;
- protected $serviceDescription;
- protected $type;
- protected $required;
- protected $enum;
- protected $pattern;
- protected $minimum;
- protected $maximum;
- protected $minLength;
- protected $maxLength;
- protected $minItems;
- protected $maxItems;
- protected $default;
- protected $static;
- protected $instanceOf;
- protected $filters;
- protected $location;
- protected $sentAs;
- protected $data;
- protected $properties = array();
- protected $additionalProperties;
- protected $items;
- protected $parent;
- protected $ref;
- protected $format;
- protected $propertiesCache = null;
-
- /**
- * Create a new Parameter using an associative array of data. The array can contain the following information:
- * - name: (string) Unique name of the parameter
- * - type: (string|array) Type of variable (string, number, integer, boolean, object, array, numeric,
- * null, any). Types are using for validation and determining the structure of a parameter. You
- * can use a union type by providing an array of simple types. If one of the union types matches
- * the provided value, then the value is valid.
- * - instanceOf: (string) When the type is an object, you can specify the class that the object must implement
- * - required: (bool) Whether or not the parameter is required
- * - default: (mixed) Default value to use if no value is supplied
- * - static: (bool) Set to true to specify that the parameter value cannot be changed from the default
- * - description: (string) Documentation of the parameter
- * - location: (string) The location of a request used to apply a parameter. Custom locations can be registered
- * with a command, but the defaults are uri, query, header, body, json, xml, postField, postFile.
- * - sentAs: (string) Specifies how the data being modeled is sent over the wire. For example, you may wish
- * to include certain headers in a response model that have a normalized casing of FooBar, but the
- * actual header is x-foo-bar. In this case, sentAs would be set to x-foo-bar.
- * - filters: (array) Array of static method names to to run a parameter value through. Each value in the
- * array must be a string containing the full class path to a static method or an array of complex
- * filter information. You can specify static methods of classes using the full namespace class
- * name followed by '::' (e.g. Foo\Bar::baz()). Some filters require arguments in order to properly
- * filter a value. For complex filters, use a hash containing a 'method' key pointing to a static
- * method, and an 'args' key containing an array of positional arguments to pass to the method.
- * Arguments can contain keywords that are replaced when filtering a value: '@value' is replaced
- * with the value being validated, '@api' is replaced with the Parameter object.
- * - properties: When the type is an object, you can specify nested parameters
- * - additionalProperties: (array) This attribute defines a schema for all properties that are not explicitly
- * defined in an object type definition. If specified, the value MUST be a schema or a boolean. If
- * false is provided, no additional properties are allowed beyond the properties defined in the
- * schema. The default value is an empty schema which allows any value for additional properties.
- * - items: This attribute defines the allowed items in an instance array, and MUST be a schema or an array
- * of schemas. The default value is an empty schema which allows any value for items in the
- * instance array.
- * When this attribute value is a schema and the instance value is an array, then all the items
- * in the array MUST be valid according to the schema.
- * - pattern: When the type is a string, you can specify the regex pattern that a value must match
- * - enum: When the type is a string, you can specify a list of acceptable values
- * - minItems: (int) Minimum number of items allowed in an array
- * - maxItems: (int) Maximum number of items allowed in an array
- * - minLength: (int) Minimum length of a string
- * - maxLength: (int) Maximum length of a string
- * - minimum: (int) Minimum value of an integer
- * - maximum: (int) Maximum value of an integer
- * - data: (array) Any additional custom data to use when serializing, validating, etc
- * - format: (string) Format used to coax a value into the correct format when serializing or unserializing.
- * You may specify either an array of filters OR a format, but not both.
- * Supported values: date-time, date, time, timestamp, date-time-http
- * - $ref: (string) String referencing a service description model. The parameter is replaced by the
- * schema contained in the model.
- *
- * @param array $data Array of data as seen in service descriptions
- * @param ServiceDescriptionInterface $description Service description used to resolve models if $ref tags are found
- *
- * @throws InvalidArgumentException
- */
- public function __construct(array $data = array(), ServiceDescriptionInterface $description = null)
- {
- if ($description) {
- if (isset($data['$ref'])) {
- if ($model = $description->getModel($data['$ref'])) {
- $data = $model->toArray() + $data;
- }
- } elseif (isset($data['extends'])) {
- // If this parameter extends from another parameter then start with the actual data
- // union in the parent's data (e.g. actual supersedes parent)
- if ($extends = $description->getModel($data['extends'])) {
- $data += $extends->toArray();
- }
- }
- }
-
- // Pull configuration data into the parameter
- foreach ($data as $key => $value) {
- $this->{$key} = $value;
- }
-
- $this->serviceDescription = $description;
- $this->required = (bool) $this->required;
- $this->data = (array) $this->data;
-
- if ($this->filters) {
- $this->setFilters((array) $this->filters);
- }
-
- if ($this->type == 'object' && $this->additionalProperties === null) {
- $this->additionalProperties = true;
- }
- }
-
- /**
- * Convert the object to an array
- *
- * @return array
- */
- public function toArray()
- {
- static $checks = array('required', 'description', 'static', 'type', 'format', 'instanceOf', 'location', 'sentAs',
- 'pattern', 'minimum', 'maximum', 'minItems', 'maxItems', 'minLength', 'maxLength', 'data', 'enum',
- 'filters');
-
- $result = array();
-
- // Anything that is in the `Items` attribute of an array *must* include it's name if available
- if ($this->parent instanceof self && $this->parent->getType() == 'array' && isset($this->name)) {
- $result['name'] = $this->name;
- }
-
- foreach ($checks as $c) {
- if ($value = $this->{$c}) {
- $result[$c] = $value;
- }
- }
-
- if ($this->default !== null) {
- $result['default'] = $this->default;
- }
-
- if ($this->items !== null) {
- $result['items'] = $this->getItems()->toArray();
- }
-
- if ($this->additionalProperties !== null) {
- $result['additionalProperties'] = $this->getAdditionalProperties();
- if ($result['additionalProperties'] instanceof self) {
- $result['additionalProperties'] = $result['additionalProperties']->toArray();
- }
- }
-
- if ($this->type == 'object' && $this->properties) {
- $result['properties'] = array();
- foreach ($this->getProperties() as $name => $property) {
- $result['properties'][$name] = $property->toArray();
- }
- }
-
- return $result;
- }
-
- /**
- * Get the default or static value of the command based on a value
- *
- * @param string $value Value that is currently set
- *
- * @return mixed Returns the value, a static value if one is present, or a default value
- */
- public function getValue($value)
- {
- if ($this->static || ($this->default !== null && $value === null)) {
- return $this->default;
- }
-
- return $value;
- }
-
- /**
- * Run a value through the filters OR format attribute associated with the parameter
- *
- * @param mixed $value Value to filter
- *
- * @return mixed Returns the filtered value
- */
- public function filter($value)
- {
- // Formats are applied exclusively and supersed filters
- if ($this->format) {
- return SchemaFormatter::format($this->format, $value);
- }
-
- // Convert Boolean values
- if ($this->type == 'boolean' && !is_bool($value)) {
- $value = filter_var($value, FILTER_VALIDATE_BOOLEAN);
- }
-
- // Apply filters to the value
- if ($this->filters) {
- foreach ($this->filters as $filter) {
- if (is_array($filter)) {
- // Convert complex filters that hold value place holders
- foreach ($filter['args'] as &$data) {
- if ($data == '@value') {
- $data = $value;
- } elseif ($data == '@api') {
- $data = $this;
- }
- }
- $value = call_user_func_array($filter['method'], $filter['args']);
- } else {
- $value = call_user_func($filter, $value);
- }
- }
- }
-
- return $value;
- }
-
- /**
- * Get the name of the parameter
- *
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Get the key of the parameter, where sentAs will supersede name if it is set
- *
- * @return string
- */
- public function getWireName()
- {
- return $this->sentAs ?: $this->name;
- }
-
- /**
- * Set the name of the parameter
- *
- * @param string $name Name to set
- *
- * @return self
- */
- public function setName($name)
- {
- $this->name = $name;
-
- return $this;
- }
-
- /**
- * Get the type(s) of the parameter
- *
- * @return string|array
- */
- public function getType()
- {
- return $this->type;
- }
-
- /**
- * Set the type(s) of the parameter
- *
- * @param string|array $type Type of parameter or array of simple types used in a union
- *
- * @return self
- */
- public function setType($type)
- {
- $this->type = $type;
-
- return $this;
- }
-
- /**
- * Get if the parameter is required
- *
- * @return bool
- */
- public function getRequired()
- {
- return $this->required;
- }
-
- /**
- * Set if the parameter is required
- *
- * @param bool $isRequired Whether or not the parameter is required
- *
- * @return self
- */
- public function setRequired($isRequired)
- {
- $this->required = (bool) $isRequired;
-
- return $this;
- }
-
- /**
- * Get the default value of the parameter
- *
- * @return string|null
- */
- public function getDefault()
- {
- return $this->default;
- }
-
- /**
- * Set the default value of the parameter
- *
- * @param string|null $default Default value to set
- *
- * @return self
- */
- public function setDefault($default)
- {
- $this->default = $default;
-
- return $this;
- }
-
- /**
- * Get the description of the parameter
- *
- * @return string|null
- */
- public function getDescription()
- {
- return $this->description;
- }
-
- /**
- * Set the description of the parameter
- *
- * @param string $description Description
- *
- * @return self
- */
- public function setDescription($description)
- {
- $this->description = $description;
-
- return $this;
- }
-
- /**
- * Get the minimum acceptable value for an integer
- *
- * @return int|null
- */
- public function getMinimum()
- {
- return $this->minimum;
- }
-
- /**
- * Set the minimum acceptable value for an integer
- *
- * @param int|null $min Minimum
- *
- * @return self
- */
- public function setMinimum($min)
- {
- $this->minimum = $min;
-
- return $this;
- }
-
- /**
- * Get the maximum acceptable value for an integer
- *
- * @return int|null
- */
- public function getMaximum()
- {
- return $this->maximum;
- }
-
- /**
- * Set the maximum acceptable value for an integer
- *
- * @param int $max Maximum
- *
- * @return self
- */
- public function setMaximum($max)
- {
- $this->maximum = $max;
-
- return $this;
- }
-
- /**
- * Get the minimum allowed length of a string value
- *
- * @return int
- */
- public function getMinLength()
- {
- return $this->minLength;
- }
-
- /**
- * Set the minimum allowed length of a string value
- *
- * @param int|null $min Minimum
- *
- * @return self
- */
- public function setMinLength($min)
- {
- $this->minLength = $min;
-
- return $this;
- }
-
- /**
- * Get the maximum allowed length of a string value
- *
- * @return int|null
- */
- public function getMaxLength()
- {
- return $this->maxLength;
- }
-
- /**
- * Set the maximum allowed length of a string value
- *
- * @param int $max Maximum length
- *
- * @return self
- */
- public function setMaxLength($max)
- {
- $this->maxLength = $max;
-
- return $this;
- }
-
- /**
- * Get the maximum allowed number of items in an array value
- *
- * @return int|null
- */
- public function getMaxItems()
- {
- return $this->maxItems;
- }
-
- /**
- * Set the maximum allowed number of items in an array value
- *
- * @param int $max Maximum
- *
- * @return self
- */
- public function setMaxItems($max)
- {
- $this->maxItems = $max;
-
- return $this;
- }
-
- /**
- * Get the minimum allowed number of items in an array value
- *
- * @return int
- */
- public function getMinItems()
- {
- return $this->minItems;
- }
-
- /**
- * Set the minimum allowed number of items in an array value
- *
- * @param int|null $min Minimum
- *
- * @return self
- */
- public function setMinItems($min)
- {
- $this->minItems = $min;
-
- return $this;
- }
-
- /**
- * Get the location of the parameter
- *
- * @return string|null
- */
- public function getLocation()
- {
- return $this->location;
- }
-
- /**
- * Set the location of the parameter
- *
- * @param string|null $location Location of the parameter
- *
- * @return self
- */
- public function setLocation($location)
- {
- $this->location = $location;
-
- return $this;
- }
-
- /**
- * Get the sentAs attribute of the parameter that used with locations to sentAs an attribute when it is being
- * applied to a location.
- *
- * @return string|null
- */
- public function getSentAs()
- {
- return $this->sentAs;
- }
-
- /**
- * Set the sentAs attribute
- *
- * @param string|null $name Name of the value as it is sent over the wire
- *
- * @return self
- */
- public function setSentAs($name)
- {
- $this->sentAs = $name;
-
- return $this;
- }
-
- /**
- * Retrieve a known property from the parameter by name or a data property by name. When not specific name value
- * is specified, all data properties will be returned.
- *
- * @param string|null $name Specify a particular property name to retrieve
- *
- * @return array|mixed|null
- */
- public function getData($name = null)
- {
- if (!$name) {
- return $this->data;
- }
-
- if (isset($this->data[$name])) {
- return $this->data[$name];
- } elseif (isset($this->{$name})) {
- return $this->{$name};
- }
-
- return null;
- }
-
- /**
- * Set the extra data properties of the parameter or set a specific extra property
- *
- * @param string|array|null $nameOrData The name of a specific extra to set or an array of extras to set
- * @param mixed|null $data When setting a specific extra property, specify the data to set for it
- *
- * @return self
- */
- public function setData($nameOrData, $data = null)
- {
- if (is_array($nameOrData)) {
- $this->data = $nameOrData;
- } else {
- $this->data[$nameOrData] = $data;
- }
-
- return $this;
- }
-
- /**
- * Get whether or not the default value can be changed
- *
- * @return mixed|null
- */
- public function getStatic()
- {
- return $this->static;
- }
-
- /**
- * Set to true if the default value cannot be changed
- *
- * @param bool $static True or false
- *
- * @return self
- */
- public function setStatic($static)
- {
- $this->static = (bool) $static;
-
- return $this;
- }
-
- /**
- * Get an array of filters used by the parameter
- *
- * @return array
- */
- public function getFilters()
- {
- return $this->filters ?: array();
- }
-
- /**
- * Set the array of filters used by the parameter
- *
- * @param array $filters Array of functions to use as filters
- *
- * @return self
- */
- public function setFilters(array $filters)
- {
- $this->filters = array();
- foreach ($filters as $filter) {
- $this->addFilter($filter);
- }
-
- return $this;
- }
-
- /**
- * Add a filter to the parameter
- *
- * @param string|array $filter Method to filter the value through
- *
- * @return self
- * @throws InvalidArgumentException
- */
- public function addFilter($filter)
- {
- if (is_array($filter)) {
- if (!isset($filter['method'])) {
- throw new InvalidArgumentException('A [method] value must be specified for each complex filter');
- }
- }
-
- if (!$this->filters) {
- $this->filters = array($filter);
- } else {
- $this->filters[] = $filter;
- }
-
- return $this;
- }
-
- /**
- * Get the parent object (an {@see OperationInterface} or {@see Parameter}
- *
- * @return OperationInterface|Parameter|null
- */
- public function getParent()
- {
- return $this->parent;
- }
-
- /**
- * Set the parent object of the parameter
- *
- * @param OperationInterface|Parameter|null $parent Parent container of the parameter
- *
- * @return self
- */
- public function setParent($parent)
- {
- $this->parent = $parent;
-
- return $this;
- }
-
- /**
- * Get the properties of the parameter
- *
- * @return array
- */
- public function getProperties()
- {
- if (!$this->propertiesCache) {
- $this->propertiesCache = array();
- foreach (array_keys($this->properties) as $name) {
- $this->propertiesCache[$name] = $this->getProperty($name);
- }
- }
-
- return $this->propertiesCache;
- }
-
- /**
- * Get a specific property from the parameter
- *
- * @param string $name Name of the property to retrieve
- *
- * @return null|Parameter
- */
- public function getProperty($name)
- {
- if (!isset($this->properties[$name])) {
- return null;
- }
-
- if (!($this->properties[$name] instanceof self)) {
- $this->properties[$name]['name'] = $name;
- $this->properties[$name] = new static($this->properties[$name], $this->serviceDescription);
- $this->properties[$name]->setParent($this);
- }
-
- return $this->properties[$name];
- }
-
- /**
- * Remove a property from the parameter
- *
- * @param string $name Name of the property to remove
- *
- * @return self
- */
- public function removeProperty($name)
- {
- unset($this->properties[$name]);
- $this->propertiesCache = null;
-
- return $this;
- }
-
- /**
- * Add a property to the parameter
- *
- * @param Parameter $property Properties to set
- *
- * @return self
- */
- public function addProperty(Parameter $property)
- {
- $this->properties[$property->getName()] = $property;
- $property->setParent($this);
- $this->propertiesCache = null;
-
- return $this;
- }
-
- /**
- * Get the additionalProperties value of the parameter
- *
- * @return bool|Parameter|null
- */
- public function getAdditionalProperties()
- {
- if (is_array($this->additionalProperties)) {
- $this->additionalProperties = new static($this->additionalProperties, $this->serviceDescription);
- $this->additionalProperties->setParent($this);
- }
-
- return $this->additionalProperties;
- }
-
- /**
- * Set the additionalProperties value of the parameter
- *
- * @param bool|Parameter|null $additional Boolean to allow any, an Parameter to specify a schema, or false to disallow
- *
- * @return self
- */
- public function setAdditionalProperties($additional)
- {
- $this->additionalProperties = $additional;
-
- return $this;
- }
-
- /**
- * Set the items data of the parameter
- *
- * @param Parameter|null $items Items to set
- *
- * @return self
- */
- public function setItems(Parameter $items = null)
- {
- if ($this->items = $items) {
- $this->items->setParent($this);
- }
-
- return $this;
- }
-
- /**
- * Get the item data of the parameter
- *
- * @return Parameter|null
- */
- public function getItems()
- {
- if (is_array($this->items)) {
- $this->items = new static($this->items, $this->serviceDescription);
- $this->items->setParent($this);
- }
-
- return $this->items;
- }
-
- /**
- * Get the class that the parameter must implement
- *
- * @return null|string
- */
- public function getInstanceOf()
- {
- return $this->instanceOf;
- }
-
- /**
- * Set the class that the parameter must be an instance of
- *
- * @param string|null $instanceOf Class or interface name
- *
- * @return self
- */
- public function setInstanceOf($instanceOf)
- {
- $this->instanceOf = $instanceOf;
-
- return $this;
- }
-
- /**
- * Get the enum of strings that are valid for the parameter
- *
- * @return array|null
- */
- public function getEnum()
- {
- return $this->enum;
- }
-
- /**
- * Set the enum of strings that are valid for the parameter
- *
- * @param array|null $enum Array of strings or null
- *
- * @return self
- */
- public function setEnum(array $enum = null)
- {
- $this->enum = $enum;
-
- return $this;
- }
-
- /**
- * Get the regex pattern that must match a value when the value is a string
- *
- * @return string
- */
- public function getPattern()
- {
- return $this->pattern;
- }
-
- /**
- * Set the regex pattern that must match a value when the value is a string
- *
- * @param string $pattern Regex pattern
- *
- * @return self
- */
- public function setPattern($pattern)
- {
- $this->pattern = $pattern;
-
- return $this;
- }
-
- /**
- * Get the format attribute of the schema
- *
- * @return string
- */
- public function getFormat()
- {
- return $this->format;
- }
-
- /**
- * Set the format attribute of the schema
- *
- * @param string $format Format to set (e.g. date, date-time, timestamp, time, date-time-http)
- *
- * @return self
- */
- public function setFormat($format)
- {
- $this->format = $format;
-
- return $this;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaFormatter.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaFormatter.php
deleted file mode 100644
index 7f47fc9..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaFormatter.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * JSON Schema formatter class
- */
-class SchemaFormatter
-{
- /** @var \DateTimeZone */
- protected static $utcTimeZone;
-
- /**
- * Format a value by a registered format name
- *
- * @param string $format Registered format used to format the value
- * @param mixed $value Value being formatted
- *
- * @return mixed
- */
- public static function format($format, $value)
- {
- switch ($format) {
- case 'date-time':
- return self::formatDateTime($value);
- case 'date-time-http':
- return self::formatDateTimeHttp($value);
- case 'date':
- return self::formatDate($value);
- case 'time':
- return self::formatTime($value);
- case 'timestamp':
- return self::formatTimestamp($value);
- case 'boolean-string':
- return self::formatBooleanAsString($value);
- default:
- return $value;
- }
- }
-
- /**
- * Create a ISO 8601 (YYYY-MM-DDThh:mm:ssZ) formatted date time value in UTC time
- *
- * @param string|integer|\DateTime $value Date time value
- *
- * @return string
- */
- public static function formatDateTime($value)
- {
- return self::dateFormatter($value, 'Y-m-d\TH:i:s\Z');
- }
-
- /**
- * Create an HTTP date (RFC 1123 / RFC 822) formatted UTC date-time string
- *
- * @param string|integer|\DateTime $value Date time value
- *
- * @return string
- */
- public static function formatDateTimeHttp($value)
- {
- return self::dateFormatter($value, 'D, d M Y H:i:s \G\M\T');
- }
-
- /**
- * Create a YYYY-MM-DD formatted string
- *
- * @param string|integer|\DateTime $value Date time value
- *
- * @return string
- */
- public static function formatDate($value)
- {
- return self::dateFormatter($value, 'Y-m-d');
- }
-
- /**
- * Create a hh:mm:ss formatted string
- *
- * @param string|integer|\DateTime $value Date time value
- *
- * @return string
- */
- public static function formatTime($value)
- {
- return self::dateFormatter($value, 'H:i:s');
- }
-
- /**
- * Formats a boolean value as a string
- *
- * @param string|integer|bool $value Value to convert to a boolean 'true' / 'false' value
- *
- * @return string
- */
- public static function formatBooleanAsString($value)
- {
- return filter_var($value, FILTER_VALIDATE_BOOLEAN) ? 'true' : 'false';
- }
-
- /**
- * Return a UNIX timestamp in the UTC timezone
- *
- * @param string|integer|\DateTime $value Time value
- *
- * @return int
- */
- public static function formatTimestamp($value)
- {
- return (int) self::dateFormatter($value, 'U');
- }
-
- /**
- * Get a UTC DateTimeZone object
- *
- * @return \DateTimeZone
- */
- protected static function getUtcTimeZone()
- {
- // @codeCoverageIgnoreStart
- if (!self::$utcTimeZone) {
- self::$utcTimeZone = new \DateTimeZone('UTC');
- }
- // @codeCoverageIgnoreEnd
-
- return self::$utcTimeZone;
- }
-
- /**
- * Perform the actual DateTime formatting
- *
- * @param int|string|\DateTime $dateTime Date time value
- * @param string $format Format of the result
- *
- * @return string
- * @throws InvalidArgumentException
- */
- protected static function dateFormatter($dateTime, $format)
- {
- if (is_numeric($dateTime)) {
- return gmdate($format, (int) $dateTime);
- }
-
- if (is_string($dateTime)) {
- $dateTime = new \DateTime($dateTime);
- }
-
- if ($dateTime instanceof \DateTime) {
- return $dateTime->setTimezone(self::getUtcTimeZone())->format($format);
- }
-
- throw new InvalidArgumentException('Date/Time values must be either a string, integer, or DateTime object');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaValidator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaValidator.php
deleted file mode 100644
index b045422..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/SchemaValidator.php
+++ /dev/null
@@ -1,291 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-use Guzzle\Common\ToArrayInterface;
-
-/**
- * Default parameter validator
- */
-class SchemaValidator implements ValidatorInterface
-{
- /** @var self Cache instance of the object */
- protected static $instance;
-
- /** @var bool Whether or not integers are converted to strings when an integer is received for a string input */
- protected $castIntegerToStringType;
-
- /** @var array Errors encountered while validating */
- protected $errors;
-
- /**
- * @return self
- * @codeCoverageIgnore
- */
- public static function getInstance()
- {
- if (!self::$instance) {
- self::$instance = new self();
- }
-
- return self::$instance;
- }
-
- /**
- * @param bool $castIntegerToStringType Set to true to convert integers into strings when a required type is a
- * string and the input value is an integer. Defaults to true.
- */
- public function __construct($castIntegerToStringType = true)
- {
- $this->castIntegerToStringType = $castIntegerToStringType;
- }
-
- public function validate(Parameter $param, &$value)
- {
- $this->errors = array();
- $this->recursiveProcess($param, $value);
-
- if (empty($this->errors)) {
- return true;
- } else {
- sort($this->errors);
- return false;
- }
- }
-
- /**
- * Get the errors encountered while validating
- *
- * @return array
- */
- public function getErrors()
- {
- return $this->errors ?: array();
- }
-
- /**
- * Recursively validate a parameter
- *
- * @param Parameter $param API parameter being validated
- * @param mixed $value Value to validate and validate. The value may change during this validate.
- * @param string $path Current validation path (used for error reporting)
- * @param int $depth Current depth in the validation validate
- *
- * @return bool Returns true if valid, or false if invalid
- */
- protected function recursiveProcess(Parameter $param, &$value, $path = '', $depth = 0)
- {
- // Update the value by adding default or static values
- $value = $param->getValue($value);
-
- $required = $param->getRequired();
- // if the value is null and the parameter is not required or is static, then skip any further recursion
- if ((null === $value && !$required) || $param->getStatic()) {
- return true;
- }
-
- $type = $param->getType();
- // Attempt to limit the number of times is_array is called by tracking if the value is an array
- $valueIsArray = is_array($value);
- // If a name is set then update the path so that validation messages are more helpful
- if ($name = $param->getName()) {
- $path .= "[{$name}]";
- }
-
- if ($type == 'object') {
-
- // Objects are either associative arrays, ToArrayInterface, or some other object
- if ($param->getInstanceOf()) {
- $instance = $param->getInstanceOf();
- if (!($value instanceof $instance)) {
- $this->errors[] = "{$path} must be an instance of {$instance}";
- return false;
- }
- }
-
- // Determine whether or not this "value" has properties and should be traversed
- $traverse = $temporaryValue = false;
-
- // Convert the value to an array
- if (!$valueIsArray && $value instanceof ToArrayInterface) {
- $value = $value->toArray();
- }
-
- if ($valueIsArray) {
- // Ensure that the array is associative and not numerically indexed
- if (isset($value[0])) {
- $this->errors[] = "{$path} must be an array of properties. Got a numerically indexed array.";
- return false;
- }
- $traverse = true;
- } elseif ($value === null) {
- // Attempt to let the contents be built up by default values if possible
- $value = array();
- $temporaryValue = $valueIsArray = $traverse = true;
- }
-
- if ($traverse) {
-
- if ($properties = $param->getProperties()) {
- // if properties were found, the validate each property of the value
- foreach ($properties as $property) {
- $name = $property->getName();
- if (isset($value[$name])) {
- $this->recursiveProcess($property, $value[$name], $path, $depth + 1);
- } else {
- $current = null;
- $this->recursiveProcess($property, $current, $path, $depth + 1);
- // Only set the value if it was populated with something
- if (null !== $current) {
- $value[$name] = $current;
- }
- }
- }
- }
-
- $additional = $param->getAdditionalProperties();
- if ($additional !== true) {
- // If additional properties were found, then validate each against the additionalProperties attr.
- $keys = array_keys($value);
- // Determine the keys that were specified that were not listed in the properties of the schema
- $diff = array_diff($keys, array_keys($properties));
- if (!empty($diff)) {
- // Determine which keys are not in the properties
- if ($additional instanceOf Parameter) {
- foreach ($diff as $key) {
- $this->recursiveProcess($additional, $value[$key], "{$path}[{$key}]", $depth);
- }
- } else {
- // if additionalProperties is set to false and there are additionalProperties in the values, then fail
- foreach ($diff as $prop) {
- $this->errors[] = sprintf('%s[%s] is not an allowed property', $path, $prop);
- }
- }
- }
- }
-
- // A temporary value will be used to traverse elements that have no corresponding input value.
- // This allows nested required parameters with default values to bubble up into the input.
- // Here we check if we used a temp value and nothing bubbled up, then we need to remote the value.
- if ($temporaryValue && empty($value)) {
- $value = null;
- $valueIsArray = false;
- }
- }
-
- } elseif ($type == 'array' && $valueIsArray && $param->getItems()) {
- foreach ($value as $i => &$item) {
- // Validate each item in an array against the items attribute of the schema
- $this->recursiveProcess($param->getItems(), $item, $path . "[{$i}]", $depth + 1);
- }
- }
-
- // If the value is required and the type is not null, then there is an error if the value is not set
- if ($required && $value === null && $type != 'null') {
- $message = "{$path} is " . ($param->getType() ? ('a required ' . implode(' or ', (array) $param->getType())) : 'required');
- if ($param->getDescription()) {
- $message .= ': ' . $param->getDescription();
- }
- $this->errors[] = $message;
- return false;
- }
-
- // Validate that the type is correct. If the type is string but an integer was passed, the class can be
- // instructed to cast the integer to a string to pass validation. This is the default behavior.
- if ($type && (!$type = $this->determineType($type, $value))) {
- if ($this->castIntegerToStringType && $param->getType() == 'string' && is_integer($value)) {
- $value = (string) $value;
- } else {
- $this->errors[] = "{$path} must be of type " . implode(' or ', (array) $param->getType());
- }
- }
-
- // Perform type specific validation for strings, arrays, and integers
- if ($type == 'string') {
-
- // Strings can have enums which are a list of predefined values
- if (($enum = $param->getEnum()) && !in_array($value, $enum)) {
- $this->errors[] = "{$path} must be one of " . implode(' or ', array_map(function ($s) {
- return '"' . addslashes($s) . '"';
- }, $enum));
- }
- // Strings can have a regex pattern that the value must match
- if (($pattern = $param->getPattern()) && !preg_match($pattern, $value)) {
- $this->errors[] = "{$path} must match the following regular expression: {$pattern}";
- }
-
- $strLen = null;
- if ($min = $param->getMinLength()) {
- $strLen = strlen($value);
- if ($strLen < $min) {
- $this->errors[] = "{$path} length must be greater than or equal to {$min}";
- }
- }
- if ($max = $param->getMaxLength()) {
- if (($strLen ?: strlen($value)) > $max) {
- $this->errors[] = "{$path} length must be less than or equal to {$max}";
- }
- }
-
- } elseif ($type == 'array') {
-
- $size = null;
- if ($min = $param->getMinItems()) {
- $size = count($value);
- if ($size < $min) {
- $this->errors[] = "{$path} must contain {$min} or more elements";
- }
- }
- if ($max = $param->getMaxItems()) {
- if (($size ?: count($value)) > $max) {
- $this->errors[] = "{$path} must contain {$max} or fewer elements";
- }
- }
-
- } elseif ($type == 'integer' || $type == 'number' || $type == 'numeric') {
- if (($min = $param->getMinimum()) && $value < $min) {
- $this->errors[] = "{$path} must be greater than or equal to {$min}";
- }
- if (($max = $param->getMaximum()) && $value > $max) {
- $this->errors[] = "{$path} must be less than or equal to {$max}";
- }
- }
-
- return empty($this->errors);
- }
-
- /**
- * From the allowable types, determine the type that the variable matches
- *
- * @param string $type Parameter type
- * @param mixed $value Value to determine the type
- *
- * @return string|bool Returns the matching type on
- */
- protected function determineType($type, $value)
- {
- foreach ((array) $type as $t) {
- if ($t == 'string' && (is_string($value) || (is_object($value) && method_exists($value, '__toString')))) {
- return 'string';
- } elseif ($t == 'object' && (is_array($value) || is_object($value))) {
- return 'object';
- } elseif ($t == 'array' && is_array($value)) {
- return 'array';
- } elseif ($t == 'integer' && is_integer($value)) {
- return 'integer';
- } elseif ($t == 'boolean' && is_bool($value)) {
- return 'boolean';
- } elseif ($t == 'number' && is_numeric($value)) {
- return 'number';
- } elseif ($t == 'numeric' && is_numeric($value)) {
- return 'numeric';
- } elseif ($t == 'null' && !$value) {
- return 'null';
- } elseif ($t == 'any') {
- return 'any';
- }
- }
-
- return false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescription.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescription.php
deleted file mode 100644
index 286e65e..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescription.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\ToArrayInterface;
-
-/**
- * A ServiceDescription stores service information based on a service document
- */
-class ServiceDescription implements ServiceDescriptionInterface, ToArrayInterface
-{
- /** @var array Array of {@see OperationInterface} objects */
- protected $operations = array();
-
- /** @var array Array of API models */
- protected $models = array();
-
- /** @var string Name of the API */
- protected $name;
-
- /** @var string API version */
- protected $apiVersion;
-
- /** @var string Summary of the API */
- protected $description;
-
- /** @var array Any extra API data */
- protected $extraData = array();
-
- /** @var ServiceDescriptionLoader Factory used in factory method */
- protected static $descriptionLoader;
-
- /** @var string baseUrl/basePath */
- protected $baseUrl;
-
- /**
- * {@inheritdoc}
- * @param string|array $config File to build or array of operation information
- * @param array $options Service description factory options
- *
- * @return self
- */
- public static function factory($config, array $options = array())
- {
- // @codeCoverageIgnoreStart
- if (!self::$descriptionLoader) {
- self::$descriptionLoader = new ServiceDescriptionLoader();
- }
- // @codeCoverageIgnoreEnd
-
- return self::$descriptionLoader->load($config, $options);
- }
-
- /**
- * @param array $config Array of configuration data
- */
- public function __construct(array $config = array())
- {
- $this->fromArray($config);
- }
-
- public function serialize()
- {
- return json_encode($this->toArray());
- }
-
- public function unserialize($json)
- {
- $this->operations = array();
- $this->fromArray(json_decode($json, true));
- }
-
- public function toArray()
- {
- $result = array(
- 'name' => $this->name,
- 'apiVersion' => $this->apiVersion,
- 'baseUrl' => $this->baseUrl,
- 'description' => $this->description
- ) + $this->extraData;
- $result['operations'] = array();
- foreach ($this->getOperations() as $name => $operation) {
- $result['operations'][$operation->getName() ?: $name] = $operation->toArray();
- }
- if (!empty($this->models)) {
- $result['models'] = array();
- foreach ($this->models as $id => $model) {
- $result['models'][$id] = $model instanceof Parameter ? $model->toArray(): $model;
- }
- }
-
- return array_filter($result);
- }
-
- public function getBaseUrl()
- {
- return $this->baseUrl;
- }
-
- /**
- * Set the baseUrl of the description
- *
- * @param string $baseUrl Base URL of each operation
- *
- * @return self
- */
- public function setBaseUrl($baseUrl)
- {
- $this->baseUrl = $baseUrl;
-
- return $this;
- }
-
- public function getOperations()
- {
- foreach (array_keys($this->operations) as $name) {
- $this->getOperation($name);
- }
-
- return $this->operations;
- }
-
- public function hasOperation($name)
- {
- return isset($this->operations[$name]);
- }
-
- public function getOperation($name)
- {
- // Lazily retrieve and build operations
- if (!isset($this->operations[$name])) {
- return null;
- }
-
- if (!($this->operations[$name] instanceof Operation)) {
- $this->operations[$name] = new Operation($this->operations[$name], $this);
- }
-
- return $this->operations[$name];
- }
-
- /**
- * Add a operation to the service description
- *
- * @param OperationInterface $operation Operation to add
- *
- * @return self
- */
- public function addOperation(OperationInterface $operation)
- {
- $this->operations[$operation->getName()] = $operation->setServiceDescription($this);
-
- return $this;
- }
-
- public function getModel($id)
- {
- if (!isset($this->models[$id])) {
- return null;
- }
-
- if (!($this->models[$id] instanceof Parameter)) {
- $this->models[$id] = new Parameter($this->models[$id] + array('name' => $id), $this);
- }
-
- return $this->models[$id];
- }
-
- public function getModels()
- {
- // Ensure all models are converted into parameter objects
- foreach (array_keys($this->models) as $id) {
- $this->getModel($id);
- }
-
- return $this->models;
- }
-
- public function hasModel($id)
- {
- return isset($this->models[$id]);
- }
-
- /**
- * Add a model to the service description
- *
- * @param Parameter $model Model to add
- *
- * @return self
- */
- public function addModel(Parameter $model)
- {
- $this->models[$model->getName()] = $model;
-
- return $this;
- }
-
- public function getApiVersion()
- {
- return $this->apiVersion;
- }
-
- public function getName()
- {
- return $this->name;
- }
-
- public function getDescription()
- {
- return $this->description;
- }
-
- public function getData($key)
- {
- return isset($this->extraData[$key]) ? $this->extraData[$key] : null;
- }
-
- public function setData($key, $value)
- {
- $this->extraData[$key] = $value;
-
- return $this;
- }
-
- /**
- * Initialize the state from an array
- *
- * @param array $config Configuration data
- * @throws InvalidArgumentException
- */
- protected function fromArray(array $config)
- {
- // Keep a list of default keys used in service descriptions that is later used to determine extra data keys
- static $defaultKeys = array('name', 'models', 'apiVersion', 'baseUrl', 'description');
- // Pull in the default configuration values
- foreach ($defaultKeys as $key) {
- if (isset($config[$key])) {
- $this->{$key} = $config[$key];
- }
- }
-
- // Account for the Swagger name for Guzzle's baseUrl
- if (isset($config['basePath'])) {
- $this->baseUrl = $config['basePath'];
- }
-
- // Ensure that the models and operations properties are always arrays
- $this->models = (array) $this->models;
- $this->operations = (array) $this->operations;
-
- // We want to add operations differently than adding the other properties
- $defaultKeys[] = 'operations';
-
- // Create operations for each operation
- if (isset($config['operations'])) {
- foreach ($config['operations'] as $name => $operation) {
- if (!($operation instanceof Operation) && !is_array($operation)) {
- throw new InvalidArgumentException('Invalid operation in service description: '
- . gettype($operation));
- }
- $this->operations[$name] = $operation;
- }
- }
-
- // Get all of the additional properties of the service description and store them in a data array
- foreach (array_diff(array_keys($config), $defaultKeys) as $key) {
- $this->extraData[$key] = $config[$key];
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionInterface.php
deleted file mode 100644
index 5983e58..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionInterface.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-/**
- * A ServiceDescription stores service information based on a service document
- */
-interface ServiceDescriptionInterface extends \Serializable
-{
- /**
- * Get the basePath/baseUrl of the description
- *
- * @return string
- */
- public function getBaseUrl();
-
- /**
- * Get the API operations of the service
- *
- * @return array Returns an array of {@see OperationInterface} objects
- */
- public function getOperations();
-
- /**
- * Check if the service has an operation by name
- *
- * @param string $name Name of the operation to check
- *
- * @return bool
- */
- public function hasOperation($name);
-
- /**
- * Get an API operation by name
- *
- * @param string $name Name of the command
- *
- * @return OperationInterface|null
- */
- public function getOperation($name);
-
- /**
- * Get a specific model from the description
- *
- * @param string $id ID of the model
- *
- * @return Parameter|null
- */
- public function getModel($id);
-
- /**
- * Get all service description models
- *
- * @return array
- */
- public function getModels();
-
- /**
- * Check if the description has a specific model by name
- *
- * @param string $id ID of the model
- *
- * @return bool
- */
- public function hasModel($id);
-
- /**
- * Get the API version of the service
- *
- * @return string
- */
- public function getApiVersion();
-
- /**
- * Get the name of the API
- *
- * @return string
- */
- public function getName();
-
- /**
- * Get a summary of the purpose of the API
- *
- * @return string
- */
- public function getDescription();
-
- /**
- * Get arbitrary data from the service description that is not part of the Guzzle spec
- *
- * @param string $key Data key to retrieve
- *
- * @return null|mixed
- */
- public function getData($key);
-
- /**
- * Set arbitrary data on the service description
- *
- * @param string $key Data key to set
- * @param mixed $value Value to set
- *
- * @return self
- */
- public function setData($key, $value);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionLoader.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionLoader.php
deleted file mode 100644
index 90fe7f4..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionLoader.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-use Guzzle\Service\AbstractConfigLoader;
-use Guzzle\Service\Exception\DescriptionBuilderException;
-
-/**
- * Loader for service descriptions
- */
-class ServiceDescriptionLoader extends AbstractConfigLoader
-{
- protected function build($config, array $options)
- {
- $operations = array();
- if (!empty($config['operations'])) {
- foreach ($config['operations'] as $name => $op) {
- $name = $op['name'] = isset($op['name']) ? $op['name'] : $name;
- // Extend other operations
- if (!empty($op['extends'])) {
- $this->resolveExtension($name, $op, $operations);
- }
- $op['parameters'] = isset($op['parameters']) ? $op['parameters'] : array();
- $operations[$name] = $op;
- }
- }
-
- return new ServiceDescription(array(
- 'apiVersion' => isset($config['apiVersion']) ? $config['apiVersion'] : null,
- 'baseUrl' => isset($config['baseUrl']) ? $config['baseUrl'] : null,
- 'description' => isset($config['description']) ? $config['description'] : null,
- 'operations' => $operations,
- 'models' => isset($config['models']) ? $config['models'] : null
- ) + $config);
- }
-
- /**
- * @param string $name Name of the operation
- * @param array $op Operation value array
- * @param array $operations Currently loaded operations
- * @throws DescriptionBuilderException when extending a non-existent operation
- */
- protected function resolveExtension($name, array &$op, array &$operations)
- {
- $resolved = array();
- $original = empty($op['parameters']) ? false: $op['parameters'];
- $hasClass = !empty($op['class']);
- foreach ((array) $op['extends'] as $extendedCommand) {
- if (empty($operations[$extendedCommand])) {
- throw new DescriptionBuilderException("{$name} extends missing operation {$extendedCommand}");
- }
- $toArray = $operations[$extendedCommand];
- $resolved = empty($resolved)
- ? $toArray['parameters']
- : array_merge($resolved, $toArray['parameters']);
-
- $op = $op + $toArray;
- if (!$hasClass && isset($toArray['class'])) {
- $op['class'] = $toArray['class'];
- }
- }
- $op['parameters'] = $original ? array_merge($resolved, $original) : $resolved;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ValidatorInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ValidatorInterface.php
deleted file mode 100644
index 94ca77d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Description/ValidatorInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Description;
-
-/**
- * Validator responsible for preparing and validating parameters against the parameter's schema
- */
-interface ValidatorInterface
-{
- /**
- * Validate a value against the acceptable types, regular expressions, minimum, maximums, instanceOf, enums, etc
- * Add default and static values to the passed in variable. If the validation completes successfully, the input
- * must be run correctly through the matching schema's filters attribute.
- *
- * @param Parameter $param Schema that is being validated against the value
- * @param mixed $value Value to validate and process. The value may change during this process.
- *
- * @return bool Returns true if the input data is valid for the schema
- */
- public function validate(Parameter $param, &$value);
-
- /**
- * Get validation errors encountered while validating
- *
- * @return array
- */
- public function getErrors();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandException.php
deleted file mode 100644
index 0f016fb..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-class CommandException extends RuntimeException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandTransferException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandTransferException.php
deleted file mode 100644
index eabe93d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/CommandTransferException.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-use Guzzle\Http\Exception\MultiTransferException;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Exception thrown when transferring commands in parallel
- */
-class CommandTransferException extends MultiTransferException
-{
- protected $successfulCommands = array();
- protected $failedCommands = array();
-
- /**
- * Creates a new CommandTransferException from a MultiTransferException
- *
- * @param MultiTransferException $e Exception to base a new exception on
- *
- * @return self
- */
- public static function fromMultiTransferException(MultiTransferException $e)
- {
- $ce = new self($e->getMessage(), $e->getCode(), $e->getPrevious());
- $ce->setSuccessfulRequests($e->getSuccessfulRequests());
-
- $alreadyAddedExceptions = array();
- foreach ($e->getFailedRequests() as $request) {
- if ($re = $e->getExceptionForFailedRequest($request)) {
- $alreadyAddedExceptions[] = $re;
- $ce->addFailedRequestWithException($request, $re);
- } else {
- $ce->addFailedRequest($request);
- }
- }
-
- // Add any exceptions that did not map to a request
- if (count($alreadyAddedExceptions) < count($e)) {
- foreach ($e as $ex) {
- if (!in_array($ex, $alreadyAddedExceptions)) {
- $ce->add($ex);
- }
- }
- }
-
- return $ce;
- }
-
- /**
- * Get all of the commands in the transfer
- *
- * @return array
- */
- public function getAllCommands()
- {
- return array_merge($this->successfulCommands, $this->failedCommands);
- }
-
- /**
- * Add to the array of successful commands
- *
- * @param CommandInterface $command Successful command
- *
- * @return self
- */
- public function addSuccessfulCommand(CommandInterface $command)
- {
- $this->successfulCommands[] = $command;
-
- return $this;
- }
-
- /**
- * Add to the array of failed commands
- *
- * @param CommandInterface $command Failed command
- *
- * @return self
- */
- public function addFailedCommand(CommandInterface $command)
- {
- $this->failedCommands[] = $command;
-
- return $this;
- }
-
- /**
- * Get an array of successful commands
- *
- * @return array
- */
- public function getSuccessfulCommands()
- {
- return $this->successfulCommands;
- }
-
- /**
- * Get an array of failed commands
- *
- * @return array
- */
- public function getFailedCommands()
- {
- return $this->failedCommands;
- }
-
- /**
- * Get the Exception that caused the given $command to fail
- *
- * @param CommandInterface $command Failed command
- *
- * @return \Exception|null
- */
- public function getExceptionForFailedCommand(CommandInterface $command)
- {
- return $this->getExceptionForFailedRequest($command->getRequest());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/DescriptionBuilderException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/DescriptionBuilderException.php
deleted file mode 100644
index 1407e56..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/DescriptionBuilderException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-class DescriptionBuilderException extends RuntimeException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/InconsistentClientTransferException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/InconsistentClientTransferException.php
deleted file mode 100644
index 71cbc01..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/InconsistentClientTransferException.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-/**
- * Command transfer exception when commands do not all use the same client
- */
-class InconsistentClientTransferException extends RuntimeException
-{
- /**
- * @var array Commands with an invalid client
- */
- private $invalidCommands = array();
-
- /**
- * @param array $commands Invalid commands
- */
- public function __construct(array $commands)
- {
- $this->invalidCommands = $commands;
- parent::__construct(
- 'Encountered commands in a batch transfer that use inconsistent clients. The batching ' .
- 'strategy you use with a command transfer must divide command batches by client.'
- );
- }
-
- /**
- * Get the invalid commands
- *
- * @return array
- */
- public function getCommands()
- {
- return $this->invalidCommands;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ResponseClassException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ResponseClassException.php
deleted file mode 100644
index d59ff21..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ResponseClassException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-class ResponseClassException extends RuntimeException
-{
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceBuilderException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceBuilderException.php
deleted file mode 100644
index e857e5f..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceBuilderException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-class ServiceBuilderException extends RuntimeException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceNotFoundException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceNotFoundException.php
deleted file mode 100644
index 59a0d55..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ServiceNotFoundException.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-class ServiceNotFoundException extends ServiceBuilderException {}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ValidationException.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ValidationException.php
deleted file mode 100644
index 9033bce..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Exception/ValidationException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Exception;
-
-use Guzzle\Common\Exception\RuntimeException;
-
-class ValidationException extends RuntimeException
-{
- protected $errors = array();
-
- /**
- * Set the validation error messages
- *
- * @param array $errors Array of validation errors
- */
- public function setErrors(array $errors)
- {
- $this->errors = $errors;
- }
-
- /**
- * Get any validation errors
- *
- * @return array
- */
- public function getErrors()
- {
- return $this->errors;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/AbstractResourceIteratorFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/AbstractResourceIteratorFactory.php
deleted file mode 100644
index 21140e7..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/AbstractResourceIteratorFactory.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Abstract resource iterator factory implementation
- */
-abstract class AbstractResourceIteratorFactory implements ResourceIteratorFactoryInterface
-{
- public function build(CommandInterface $command, array $options = array())
- {
- if (!$this->canBuild($command)) {
- throw new InvalidArgumentException('Iterator was not found for ' . $command->getName());
- }
-
- $className = $this->getClassName($command);
-
- return new $className($command, $options);
- }
-
- public function canBuild(CommandInterface $command)
- {
- return (bool) $this->getClassName($command);
- }
-
- /**
- * Get the name of the class to instantiate for the command
- *
- * @param CommandInterface $command Command that is associated with the iterator
- *
- * @return string
- */
- abstract protected function getClassName(CommandInterface $command);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/CompositeResourceIteratorFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/CompositeResourceIteratorFactory.php
deleted file mode 100644
index 2efc133..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/CompositeResourceIteratorFactory.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Factory that utilizes multiple factories for creating iterators
- */
-class CompositeResourceIteratorFactory implements ResourceIteratorFactoryInterface
-{
- /** @var array Array of factories */
- protected $factories;
-
- /** @param array $factories Array of factories used to instantiate iterators */
- public function __construct(array $factories)
- {
- $this->factories = $factories;
- }
-
- public function build(CommandInterface $command, array $options = array())
- {
- if (!($factory = $this->getFactory($command))) {
- throw new InvalidArgumentException('Iterator was not found for ' . $command->getName());
- }
-
- return $factory->build($command, $options);
- }
-
- public function canBuild(CommandInterface $command)
- {
- return $this->getFactory($command) !== false;
- }
-
- /**
- * Add a factory to the composite factory
- *
- * @param ResourceIteratorFactoryInterface $factory Factory to add
- *
- * @return self
- */
- public function addFactory(ResourceIteratorFactoryInterface $factory)
- {
- $this->factories[] = $factory;
-
- return $this;
- }
-
- /**
- * Get the factory that matches the command object
- *
- * @param CommandInterface $command Command retrieving the iterator for
- *
- * @return ResourceIteratorFactoryInterface|bool
- */
- protected function getFactory(CommandInterface $command)
- {
- foreach ($this->factories as $factory) {
- if ($factory->canBuild($command)) {
- return $factory;
- }
- }
-
- return false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/MapResourceIteratorFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/MapResourceIteratorFactory.php
deleted file mode 100644
index c71ca9d..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/MapResourceIteratorFactory.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Resource iterator factory used when explicitly mapping strings to iterator classes
- */
-class MapResourceIteratorFactory extends AbstractResourceIteratorFactory
-{
- /** @var array Associative array mapping iterator names to class names */
- protected $map;
-
- /** @param array $map Associative array mapping iterator names to class names */
- public function __construct(array $map)
- {
- $this->map = $map;
- }
-
- public function getClassName(CommandInterface $command)
- {
- $className = $command->getName();
-
- if (isset($this->map[$className])) {
- return $this->map[$className];
- } elseif (isset($this->map['*'])) {
- // If a wildcard was added, then always use that
- return $this->map['*'];
- }
-
- return null;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/Model.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/Model.php
deleted file mode 100644
index 2322434..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/Model.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Common\Collection;
-use Guzzle\Service\Description\Parameter;
-
-/**
- * Default model created when commands create service description model responses
- */
-class Model extends Collection
-{
- /** @var Parameter Structure of the model */
- protected $structure;
-
- /**
- * @param array $data Data contained by the model
- * @param Parameter $structure The structure of the model
- */
- public function __construct(array $data = array(), Parameter $structure = null)
- {
- $this->data = $data;
- $this->structure = $structure;
- }
-
- /**
- * Get the structure of the model
- *
- * @return Parameter
- */
- public function getStructure()
- {
- return $this->structure ?: new Parameter();
- }
-
- /**
- * Provides debug information about the model object
- *
- * @return string
- */
- public function __toString()
- {
- $output = 'Debug output of ';
- if ($this->structure) {
- $output .= $this->structure->getName() . ' ';
- }
- $output .= 'model';
- $output = str_repeat('=', strlen($output)) . "\n" . $output . "\n" . str_repeat('=', strlen($output)) . "\n\n";
- $output .= "Model data\n-----------\n\n";
- $output .= "This data can be retrieved from the model object using the get() method of the model "
- . "(e.g. \$model->get(\$key)) or accessing the model like an associative array (e.g. \$model['key']).\n\n";
- $lines = array_slice(explode("\n", trim(print_r($this->toArray(), true))), 2, -1);
- $output .= implode("\n", $lines);
-
- if ($this->structure) {
- $output .= "\n\nModel structure\n---------------\n\n";
- $output .= "The following JSON document defines how the model was parsed from an HTTP response into the "
- . "associative array structure you see above.\n\n";
- $output .= ' ' . json_encode($this->structure->toArray()) . "\n\n";
- }
-
- return $output . "\n";
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIterator.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIterator.php
deleted file mode 100644
index e141524..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIterator.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Service\Command\CommandInterface;
-
-abstract class ResourceIterator extends AbstractHasDispatcher implements ResourceIteratorInterface
-{
- /** @var CommandInterface Command used to send requests */
- protected $command;
-
- /** @var CommandInterface First sent command */
- protected $originalCommand;
-
- /** @var array Currently loaded resources */
- protected $resources;
-
- /** @var int Total number of resources that have been retrieved */
- protected $retrievedCount = 0;
-
- /** @var int Total number of resources that have been iterated */
- protected $iteratedCount = 0;
-
- /** @var string NextToken/Marker for a subsequent request */
- protected $nextToken = false;
-
- /** @var int Maximum number of resources to fetch per request */
- protected $pageSize;
-
- /** @var int Maximum number of resources to retrieve in total */
- protected $limit;
-
- /** @var int Number of requests sent */
- protected $requestCount = 0;
-
- /** @var array Initial data passed to the constructor */
- protected $data = array();
-
- /** @var bool Whether or not the current value is known to be invalid */
- protected $invalid;
-
- public static function getAllEvents()
- {
- return array(
- // About to issue another command to get more results
- 'resource_iterator.before_send',
- // Issued another command to get more results
- 'resource_iterator.after_send'
- );
- }
-
- /**
- * @param CommandInterface $command Initial command used for iteration
- * @param array $data Associative array of additional parameters. You may specify any number of custom
- * options for an iterator. Among these options, you may also specify the following values:
- * - limit: Attempt to limit the maximum number of resources to this amount
- * - page_size: Attempt to retrieve this number of resources per request
- */
- public function __construct(CommandInterface $command, array $data = array())
- {
- // Clone the command to keep track of the originating command for rewind
- $this->originalCommand = $command;
-
- // Parse options from the array of options
- $this->data = $data;
- $this->limit = array_key_exists('limit', $data) ? $data['limit'] : 0;
- $this->pageSize = array_key_exists('page_size', $data) ? $data['page_size'] : false;
- }
-
- /**
- * Get all of the resources as an array (Warning: this could issue a large number of requests)
- *
- * @return array
- */
- public function toArray()
- {
- return iterator_to_array($this, false);
- }
-
- public function setLimit($limit)
- {
- $this->limit = $limit;
- $this->resetState();
-
- return $this;
- }
-
- public function setPageSize($pageSize)
- {
- $this->pageSize = $pageSize;
- $this->resetState();
-
- return $this;
- }
-
- /**
- * Get an option from the iterator
- *
- * @param string $key Key of the option to retrieve
- *
- * @return mixed|null Returns NULL if not set or the value if set
- */
- public function get($key)
- {
- return array_key_exists($key, $this->data) ? $this->data[$key] : null;
- }
-
- /**
- * Set an option on the iterator
- *
- * @param string $key Key of the option to set
- * @param mixed $value Value to set for the option
- *
- * @return ResourceIterator
- */
- public function set($key, $value)
- {
- $this->data[$key] = $value;
-
- return $this;
- }
-
- public function current()
- {
- return $this->resources ? current($this->resources) : false;
- }
-
- public function key()
- {
- return max(0, $this->iteratedCount - 1);
- }
-
- public function count()
- {
- return $this->retrievedCount;
- }
-
- /**
- * Get the total number of requests sent
- *
- * @return int
- */
- public function getRequestCount()
- {
- return $this->requestCount;
- }
-
- /**
- * Rewind the Iterator to the first element and send the original command
- */
- public function rewind()
- {
- // Use the original command
- $this->command = clone $this->originalCommand;
- $this->resetState();
- $this->next();
- }
-
- public function valid()
- {
- return !$this->invalid && (!$this->resources || $this->current() || $this->nextToken)
- && (!$this->limit || $this->iteratedCount < $this->limit + 1);
- }
-
- public function next()
- {
- $this->iteratedCount++;
-
- // Check if a new set of resources needs to be retrieved
- $sendRequest = false;
- if (!$this->resources) {
- $sendRequest = true;
- } else {
- // iterate over the internal array
- $current = next($this->resources);
- $sendRequest = $current === false && $this->nextToken && (!$this->limit || $this->iteratedCount < $this->limit + 1);
- }
-
- if ($sendRequest) {
-
- $this->dispatch('resource_iterator.before_send', array(
- 'iterator' => $this,
- 'resources' => $this->resources
- ));
-
- // Get a new command object from the original command
- $this->command = clone $this->originalCommand;
- // Send a request and retrieve the newly loaded resources
- $this->resources = $this->sendRequest();
- $this->requestCount++;
-
- // If no resources were found, then the last request was not needed
- // and iteration must stop
- if (empty($this->resources)) {
- $this->invalid = true;
- } else {
- // Add to the number of retrieved resources
- $this->retrievedCount += count($this->resources);
- // Ensure that we rewind to the beginning of the array
- reset($this->resources);
- }
-
- $this->dispatch('resource_iterator.after_send', array(
- 'iterator' => $this,
- 'resources' => $this->resources
- ));
- }
- }
-
- /**
- * Retrieve the NextToken that can be used in other iterators.
- *
- * @return string Returns a NextToken
- */
- public function getNextToken()
- {
- return $this->nextToken;
- }
-
- /**
- * Returns the value that should be specified for the page size for a request that will maintain any hard limits,
- * but still honor the specified pageSize if the number of items retrieved + pageSize < hard limit
- *
- * @return int Returns the page size of the next request.
- */
- protected function calculatePageSize()
- {
- if ($this->limit && $this->iteratedCount + $this->pageSize > $this->limit) {
- return 1 + ($this->limit - $this->iteratedCount);
- }
-
- return (int) $this->pageSize;
- }
-
- /**
- * Reset the internal state of the iterator without triggering a rewind()
- */
- protected function resetState()
- {
- $this->iteratedCount = 0;
- $this->retrievedCount = 0;
- $this->nextToken = false;
- $this->resources = null;
- $this->invalid = false;
- }
-
- /**
- * Send a request to retrieve the next page of results. Hook for subclasses to implement.
- *
- * @return array Returns the newly loaded resources
- */
- abstract protected function sendRequest();
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorApplyBatched.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorApplyBatched.php
deleted file mode 100644
index 6aa3615..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorApplyBatched.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Common\AbstractHasDispatcher;
-use Guzzle\Batch\BatchBuilder;
-use Guzzle\Batch\BatchSizeDivisor;
-use Guzzle\Batch\BatchClosureTransfer;
-use Guzzle\Common\Version;
-
-/**
- * Apply a callback to the contents of a {@see ResourceIteratorInterface}
- * @deprecated Will be removed in a future version and is no longer maintained. Use the Batch\ abstractions instead.
- * @codeCoverageIgnore
- */
-class ResourceIteratorApplyBatched extends AbstractHasDispatcher
-{
- /** @var callable|array */
- protected $callback;
-
- /** @var ResourceIteratorInterface */
- protected $iterator;
-
- /** @var integer Total number of sent batches */
- protected $batches = 0;
-
- /** @var int Total number of iterated resources */
- protected $iterated = 0;
-
- public static function getAllEvents()
- {
- return array(
- // About to send a batch of requests to the callback
- 'iterator_batch.before_batch',
- // Finished sending a batch of requests to the callback
- 'iterator_batch.after_batch',
- // Created the batch object
- 'iterator_batch.created_batch'
- );
- }
-
- /**
- * @param ResourceIteratorInterface $iterator Resource iterator to apply a callback to
- * @param array|callable $callback Callback method accepting the resource iterator
- * and an array of the iterator's current resources
- */
- public function __construct(ResourceIteratorInterface $iterator, $callback)
- {
- $this->iterator = $iterator;
- $this->callback = $callback;
- Version::warn(__CLASS__ . ' is deprecated');
- }
-
- /**
- * Apply the callback to the contents of the resource iterator
- *
- * @param int $perBatch The number of records to group per batch transfer
- *
- * @return int Returns the number of iterated resources
- */
- public function apply($perBatch = 50)
- {
- $this->iterated = $this->batches = $batches = 0;
- $that = $this;
- $it = $this->iterator;
- $callback = $this->callback;
-
- $batch = BatchBuilder::factory()
- ->createBatchesWith(new BatchSizeDivisor($perBatch))
- ->transferWith(new BatchClosureTransfer(function (array $batch) use ($that, $callback, &$batches, $it) {
- $batches++;
- $that->dispatch('iterator_batch.before_batch', array('iterator' => $it, 'batch' => $batch));
- call_user_func_array($callback, array($it, $batch));
- $that->dispatch('iterator_batch.after_batch', array('iterator' => $it, 'batch' => $batch));
- }))
- ->autoFlushAt($perBatch)
- ->build();
-
- $this->dispatch('iterator_batch.created_batch', array('batch' => $batch));
-
- foreach ($this->iterator as $resource) {
- $this->iterated++;
- $batch->add($resource);
- }
-
- $batch->flush();
- $this->batches = $batches;
-
- return $this->iterated;
- }
-
- /**
- * Get the total number of batches sent
- *
- * @return int
- */
- public function getBatchCount()
- {
- return $this->batches;
- }
-
- /**
- * Get the total number of iterated resources
- *
- * @return int
- */
- public function getIteratedCount()
- {
- return $this->iterated;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorClassFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorClassFactory.php
deleted file mode 100644
index 2fd9980..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorClassFactory.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Inflection\InflectorInterface;
-use Guzzle\Inflection\Inflector;
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Factory for creating {@see ResourceIteratorInterface} objects using a convention of storing iterator classes under a
- * root namespace using the name of a {@see CommandInterface} object as a convention for determining the name of an
- * iterator class. The command name is converted to CamelCase and Iterator is appended (e.g. abc_foo => AbcFoo).
- */
-class ResourceIteratorClassFactory extends AbstractResourceIteratorFactory
-{
- /** @var array List of namespaces used to look for classes */
- protected $namespaces;
-
- /** @var InflectorInterface Inflector used to determine class names */
- protected $inflector;
-
- /**
- * @param string|array $namespaces List of namespaces for iterator objects
- * @param InflectorInterface $inflector Inflector used to resolve class names
- */
- public function __construct($namespaces = array(), InflectorInterface $inflector = null)
- {
- $this->namespaces = (array) $namespaces;
- $this->inflector = $inflector ?: Inflector::getDefault();
- }
-
- /**
- * Registers a namespace to check for Iterators
- *
- * @param string $namespace Namespace which contains Iterator classes
- *
- * @return self
- */
- public function registerNamespace($namespace)
- {
- array_unshift($this->namespaces, $namespace);
-
- return $this;
- }
-
- protected function getClassName(CommandInterface $command)
- {
- $iteratorName = $this->inflector->camel($command->getName()) . 'Iterator';
-
- // Determine the name of the class to load
- foreach ($this->namespaces as $namespace) {
- $potentialClassName = $namespace . '\\' . $iteratorName;
- if (class_exists($potentialClassName)) {
- return $potentialClassName;
- }
- }
-
- return false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorFactoryInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorFactoryInterface.php
deleted file mode 100644
index 8b4e8db..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorFactoryInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Service\Command\CommandInterface;
-
-/**
- * Factory for creating {@see ResourceIteratorInterface} objects
- */
-interface ResourceIteratorFactoryInterface
-{
- /**
- * Create a resource iterator
- *
- * @param CommandInterface $command Command to create an iterator for
- * @param array $options Iterator options that are exposed as data.
- *
- * @return ResourceIteratorInterface
- */
- public function build(CommandInterface $command, array $options = array());
-
- /**
- * Check if the factory can create an iterator
- *
- * @param CommandInterface $command Command to create an iterator for
- *
- * @return bool
- */
- public function canBuild(CommandInterface $command);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorInterface.php
deleted file mode 100644
index dbaafde..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorInterface.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Guzzle\Service\Resource;
-
-use Guzzle\Common\HasDispatcherInterface;
-use Guzzle\Common\ToArrayInterface;
-
-/**
- * Iterates over a paginated resource using subsequent requests in order to retrieve the entire matching result set
- */
-interface ResourceIteratorInterface extends ToArrayInterface, HasDispatcherInterface, \Iterator, \Countable
-{
- /**
- * Retrieve the NextToken that can be used in other iterators.
- *
- * @return string Returns a NextToken
- */
- public function getNextToken();
-
- /**
- * Attempt to limit the total number of resources returned by the iterator.
- *
- * You may still receive more items than you specify. Set to 0 to specify no limit.
- *
- * @param int $limit Limit amount
- *
- * @return ResourceIteratorInterface
- */
- public function setLimit($limit);
-
- /**
- * Attempt to limit the total number of resources retrieved per request by the iterator.
- *
- * The iterator may return more than you specify in the page size argument depending on the service and underlying
- * command implementation. Set to 0 to specify no page size limitation.
- *
- * @param int $pageSize Limit amount
- *
- * @return ResourceIteratorInterface
- */
- public function setPageSize($pageSize);
-
- /**
- * Get a data option from the iterator
- *
- * @param string $key Key of the option to retrieve
- *
- * @return mixed|null Returns NULL if not set or the value if set
- */
- public function get($key);
-
- /**
- * Set a data option on the iterator
- *
- * @param string $key Key of the option to set
- * @param mixed $value Value to set for the option
- *
- * @return ResourceIteratorInterface
- */
- public function set($key, $value);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/composer.json
deleted file mode 100644
index cb7ace6..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Service/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "guzzle/service",
- "description": "Guzzle service component for abstracting RESTful web services",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["web service", "webservice", "REST", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/cache": "self.version",
- "guzzle/http": "self.version",
- "guzzle/inflection": "self.version"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Service": "" }
- },
- "target-dir": "Guzzle/Service",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/PhpStreamRequestFactory.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/PhpStreamRequestFactory.php
deleted file mode 100644
index d115fd8..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/PhpStreamRequestFactory.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-
-namespace Guzzle\Stream;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Http\Message\EntityEnclosingRequestInterface;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Url;
-
-/**
- * Factory used to create fopen streams using PHP's http and https stream wrappers
- *
- * Note: PHP's http stream wrapper only supports streaming downloads. It does not support streaming uploads.
- */
-class PhpStreamRequestFactory implements StreamRequestFactoryInterface
-{
- /** @var resource Stream context options */
- protected $context;
-
- /** @var array Stream context */
- protected $contextOptions;
-
- /** @var Url Stream URL */
- protected $url;
-
- /** @var array Last response headers received by the HTTP request */
- protected $lastResponseHeaders;
-
- /**
- * {@inheritdoc}
- *
- * The $params array can contain the following custom keys specific to the PhpStreamRequestFactory:
- * - stream_class: The name of a class to create instead of a Guzzle\Stream\Stream object
- */
- public function fromRequest(RequestInterface $request, $context = array(), array $params = array())
- {
- if (is_resource($context)) {
- $this->contextOptions = stream_context_get_options($context);
- $this->context = $context;
- } elseif (is_array($context) || !$context) {
- $this->contextOptions = $context;
- $this->createContext($params);
- } elseif ($context) {
- throw new InvalidArgumentException('$context must be an array or resource');
- }
-
- // Dispatch the before send event
- $request->dispatch('request.before_send', array(
- 'request' => $request,
- 'context' => $this->context,
- 'context_options' => $this->contextOptions
- ));
-
- $this->setUrl($request);
- $this->addDefaultContextOptions($request);
- $this->addSslOptions($request);
- $this->addBodyOptions($request);
- $this->addProxyOptions($request);
-
- // Create the file handle but silence errors
- return $this->createStream($params)
- ->setCustomData('request', $request)
- ->setCustomData('response_headers', $this->getLastResponseHeaders());
- }
-
- /**
- * Set an option on the context and the internal options array
- *
- * @param string $wrapper Stream wrapper name of http
- * @param string $name Context name
- * @param mixed $value Context value
- * @param bool $overwrite Set to true to overwrite an existing value
- */
- protected function setContextValue($wrapper, $name, $value, $overwrite = false)
- {
- if (!isset($this->contextOptions[$wrapper])) {
- $this->contextOptions[$wrapper] = array($name => $value);
- } elseif (!$overwrite && isset($this->contextOptions[$wrapper][$name])) {
- return;
- }
- $this->contextOptions[$wrapper][$name] = $value;
- stream_context_set_option($this->context, $wrapper, $name, $value);
- }
-
- /**
- * Create a stream context
- *
- * @param array $params Parameter array
- */
- protected function createContext(array $params)
- {
- $options = $this->contextOptions;
- $this->context = $this->createResource(function () use ($params, $options) {
- return stream_context_create($options, $params);
- });
- }
-
- /**
- * Get the last response headers received by the HTTP request
- *
- * @return array
- */
- public function getLastResponseHeaders()
- {
- return $this->lastResponseHeaders;
- }
-
- /**
- * Adds the default context options to the stream context options
- *
- * @param RequestInterface $request Request
- */
- protected function addDefaultContextOptions(RequestInterface $request)
- {
- $this->setContextValue('http', 'method', $request->getMethod());
- $headers = $request->getHeaderLines();
-
- // "Connection: close" is required to get streams to work in HTTP 1.1
- if (!$request->hasHeader('Connection')) {
- $headers[] = 'Connection: close';
- }
-
- $this->setContextValue('http', 'header', $headers);
- $this->setContextValue('http', 'protocol_version', $request->getProtocolVersion());
- $this->setContextValue('http', 'ignore_errors', true);
- }
-
- /**
- * Set the URL to use with the factory
- *
- * @param RequestInterface $request Request that owns the URL
- */
- protected function setUrl(RequestInterface $request)
- {
- $this->url = $request->getUrl(true);
-
- // Check for basic Auth username
- if ($request->getUsername()) {
- $this->url->setUsername($request->getUsername());
- }
-
- // Check for basic Auth password
- if ($request->getPassword()) {
- $this->url->setPassword($request->getPassword());
- }
- }
-
- /**
- * Add SSL options to the stream context
- *
- * @param RequestInterface $request Request
- */
- protected function addSslOptions(RequestInterface $request)
- {
- if ($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER)) {
- $this->setContextValue('ssl', 'verify_peer', true, true);
- if ($cafile = $request->getCurlOptions()->get(CURLOPT_CAINFO)) {
- $this->setContextValue('ssl', 'cafile', $cafile, true);
- }
- } else {
- $this->setContextValue('ssl', 'verify_peer', false, true);
- }
- }
-
- /**
- * Add body (content) specific options to the context options
- *
- * @param RequestInterface $request
- */
- protected function addBodyOptions(RequestInterface $request)
- {
- // Add the content for the request if needed
- if (!($request instanceof EntityEnclosingRequestInterface)) {
- return;
- }
-
- if (count($request->getPostFields())) {
- $this->setContextValue('http', 'content', (string) $request->getPostFields(), true);
- } elseif ($request->getBody()) {
- $this->setContextValue('http', 'content', (string) $request->getBody(), true);
- }
-
- // Always ensure a content-length header is sent
- if (isset($this->contextOptions['http']['content'])) {
- $headers = isset($this->contextOptions['http']['header']) ? $this->contextOptions['http']['header'] : array();
- $headers[] = 'Content-Length: ' . strlen($this->contextOptions['http']['content']);
- $this->setContextValue('http', 'header', $headers, true);
- }
- }
-
- /**
- * Add proxy parameters to the context if needed
- *
- * @param RequestInterface $request Request
- */
- protected function addProxyOptions(RequestInterface $request)
- {
- if ($proxy = $request->getCurlOptions()->get(CURLOPT_PROXY)) {
- $this->setContextValue('http', 'proxy', $proxy);
- }
- }
-
- /**
- * Create the stream for the request with the context options
- *
- * @param array $params Parameters of the stream
- *
- * @return StreamInterface
- */
- protected function createStream(array $params)
- {
- $http_response_header = null;
- $url = $this->url;
- $context = $this->context;
- $fp = $this->createResource(function () use ($context, $url, &$http_response_header) {
- return fopen((string) $url, 'r', false, $context);
- });
-
- // Determine the class to instantiate
- $className = isset($params['stream_class']) ? $params['stream_class'] : __NAMESPACE__ . '\\Stream';
-
- /** @var $stream StreamInterface */
- $stream = new $className($fp);
-
- // Track the response headers of the request
- if (isset($http_response_header)) {
- $this->lastResponseHeaders = $http_response_header;
- $this->processResponseHeaders($stream);
- }
-
- return $stream;
- }
-
- /**
- * Process response headers
- *
- * @param StreamInterface $stream
- */
- protected function processResponseHeaders(StreamInterface $stream)
- {
- // Set the size on the stream if it was returned in the response
- foreach ($this->lastResponseHeaders as $header) {
- if ((stripos($header, 'Content-Length:')) === 0) {
- $stream->setSize(trim(substr($header, 15)));
- }
- }
- }
-
- /**
- * Create a resource and check to ensure it was created successfully
- *
- * @param callable $callback Closure to invoke that must return a valid resource
- *
- * @return resource
- * @throws RuntimeException on error
- */
- protected function createResource($callback)
- {
- $errors = null;
- set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
- $errors[] = array(
- 'message' => $msg,
- 'file' => $file,
- 'line' => $line
- );
- return true;
- });
- $resource = call_user_func($callback);
- restore_error_handler();
-
- if (!$resource) {
- $message = 'Error creating resource. ';
- foreach ($errors as $err) {
- foreach ($err as $key => $value) {
- $message .= "[$key] $value" . PHP_EOL;
- }
- }
- throw new RuntimeException(trim($message));
- }
-
- return $resource;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/Stream.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/Stream.php
deleted file mode 100644
index 12bed26..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/Stream.php
+++ /dev/null
@@ -1,289 +0,0 @@
-<?php
-
-namespace Guzzle\Stream;
-
-use Guzzle\Common\Exception\InvalidArgumentException;
-
-/**
- * PHP stream implementation
- */
-class Stream implements StreamInterface
-{
- const STREAM_TYPE = 'stream_type';
- const WRAPPER_TYPE = 'wrapper_type';
- const IS_LOCAL = 'is_local';
- const IS_READABLE = 'is_readable';
- const IS_WRITABLE = 'is_writable';
- const SEEKABLE = 'seekable';
-
- /** @var resource Stream resource */
- protected $stream;
-
- /** @var int Size of the stream contents in bytes */
- protected $size;
-
- /** @var array Stream cached data */
- protected $cache = array();
-
- /** @var array Custom stream data */
- protected $customData = array();
-
- /** @var array Hash table of readable and writeable stream types for fast lookups */
- protected static $readWriteHash = array(
- 'read' => array(
- 'r' => true, 'w+' => true, 'r+' => true, 'x+' => true, 'c+' => true,
- 'rb' => true, 'w+b' => true, 'r+b' => true, 'x+b' => true, 'c+b' => true,
- 'rt' => true, 'w+t' => true, 'r+t' => true, 'x+t' => true, 'c+t' => true, 'a+' => true
- ),
- 'write' => array(
- 'w' => true, 'w+' => true, 'rw' => true, 'r+' => true, 'x+' => true, 'c+' => true,
- 'wb' => true, 'w+b' => true, 'r+b' => true, 'x+b' => true, 'c+b' => true,
- 'w+t' => true, 'r+t' => true, 'x+t' => true, 'c+t' => true, 'a' => true, 'a+' => true
- )
- );
-
- /**
- * @param resource $stream Stream resource to wrap
- * @param int $size Size of the stream in bytes. Only pass if the size cannot be obtained from the stream.
- *
- * @throws InvalidArgumentException if the stream is not a stream resource
- */
- public function __construct($stream, $size = null)
- {
- $this->setStream($stream, $size);
- }
-
- /**
- * Closes the stream when the helper is destructed
- */
- public function __destruct()
- {
- $this->close();
- }
-
- public function __toString()
- {
- if (!$this->isReadable() || (!$this->isSeekable() && $this->isConsumed())) {
- return '';
- }
-
- $originalPos = $this->ftell();
- $body = stream_get_contents($this->stream, -1, 0);
- $this->seek($originalPos);
-
- return $body;
- }
-
- public function close()
- {
- if (is_resource($this->stream)) {
- fclose($this->stream);
- }
- $this->cache[self::IS_READABLE] = false;
- $this->cache[self::IS_WRITABLE] = false;
- }
-
- /**
- * Calculate a hash of a Stream
- *
- * @param StreamInterface $stream Stream to calculate the hash for
- * @param string $algo Hash algorithm (e.g. md5, crc32, etc)
- * @param bool $rawOutput Whether or not to use raw output
- *
- * @return bool|string Returns false on failure or a hash string on success
- */
- public static function getHash(StreamInterface $stream, $algo, $rawOutput = false)
- {
- $pos = $stream->ftell();
- if (!$stream->seek(0)) {
- return false;
- }
-
- $ctx = hash_init($algo);
- while (!$stream->feof()) {
- hash_update($ctx, $stream->read(8192));
- }
-
- $out = hash_final($ctx, (bool) $rawOutput);
- $stream->seek($pos);
-
- return $out;
- }
-
- public function getMetaData($key = null)
- {
- $meta = stream_get_meta_data($this->stream);
-
- return !$key ? $meta : (array_key_exists($key, $meta) ? $meta[$key] : null);
- }
-
- public function getStream()
- {
- return $this->stream;
- }
-
- public function setStream($stream, $size = null)
- {
- if (!is_resource($stream)) {
- throw new InvalidArgumentException('Stream must be a resource');
- }
-
- $this->size = $size;
- $this->stream = $stream;
- $this->rebuildCache();
-
- return $this;
- }
-
- public function detachStream()
- {
- $this->stream = null;
-
- return $this;
- }
-
- public function getWrapper()
- {
- return $this->cache[self::WRAPPER_TYPE];
- }
-
- public function getWrapperData()
- {
- return $this->getMetaData('wrapper_data') ?: array();
- }
-
- public function getStreamType()
- {
- return $this->cache[self::STREAM_TYPE];
- }
-
- public function getUri()
- {
- return $this->cache['uri'];
- }
-
- public function getSize()
- {
- if ($this->size !== null) {
- return $this->size;
- }
-
- // If the stream is a file based stream and local, then use fstat
- clearstatcache(true, $this->cache['uri']);
- $stats = fstat($this->stream);
- if (isset($stats['size'])) {
- $this->size = $stats['size'];
- return $this->size;
- } elseif ($this->cache[self::IS_READABLE] && $this->cache[self::SEEKABLE]) {
- // Only get the size based on the content if the the stream is readable and seekable
- $pos = $this->ftell();
- $this->size = strlen((string) $this);
- $this->seek($pos);
- return $this->size;
- }
-
- return false;
- }
-
- public function isReadable()
- {
- return $this->cache[self::IS_READABLE];
- }
-
- public function isRepeatable()
- {
- return $this->cache[self::IS_READABLE] && $this->cache[self::SEEKABLE];
- }
-
- public function isWritable()
- {
- return $this->cache[self::IS_WRITABLE];
- }
-
- public function isConsumed()
- {
- return feof($this->stream);
- }
-
- public function feof()
- {
- return $this->isConsumed();
- }
-
- public function isLocal()
- {
- return $this->cache[self::IS_LOCAL];
- }
-
- public function isSeekable()
- {
- return $this->cache[self::SEEKABLE];
- }
-
- public function setSize($size)
- {
- $this->size = $size;
-
- return $this;
- }
-
- public function seek($offset, $whence = SEEK_SET)
- {
- return $this->cache[self::SEEKABLE] ? fseek($this->stream, $offset, $whence) === 0 : false;
- }
-
- public function read($length)
- {
- return fread($this->stream, $length);
- }
-
- public function write($string)
- {
- // We can't know the size after writing anything
- $this->size = null;
-
- return fwrite($this->stream, $string);
- }
-
- public function ftell()
- {
- return ftell($this->stream);
- }
-
- public function rewind()
- {
- return $this->seek(0);
- }
-
- public function readLine($maxLength = null)
- {
- if (!$this->cache[self::IS_READABLE]) {
- return false;
- } else {
- return $maxLength ? fgets($this->getStream(), $maxLength) : fgets($this->getStream());
- }
- }
-
- public function setCustomData($key, $value)
- {
- $this->customData[$key] = $value;
-
- return $this;
- }
-
- public function getCustomData($key)
- {
- return isset($this->customData[$key]) ? $this->customData[$key] : null;
- }
-
- /**
- * Reprocess stream metadata
- */
- protected function rebuildCache()
- {
- $this->cache = stream_get_meta_data($this->stream);
- $this->cache[self::IS_LOCAL] = stream_is_local($this->stream);
- $this->cache[self::IS_READABLE] = isset(self::$readWriteHash['read'][$this->cache['mode']]);
- $this->cache[self::IS_WRITABLE] = isset(self::$readWriteHash['write'][$this->cache['mode']]);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamInterface.php
deleted file mode 100644
index 6d7dc37..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamInterface.php
+++ /dev/null
@@ -1,218 +0,0 @@
-<?php
-
-namespace Guzzle\Stream;
-
-/**
- * OO interface to PHP streams
- */
-interface StreamInterface
-{
- /**
- * Convert the stream to a string if the stream is readable and the stream is seekable.
- *
- * @return string
- */
- public function __toString();
-
- /**
- * Close the underlying stream
- */
- public function close();
-
- /**
- * Get stream metadata
- *
- * @param string $key Specific metadata to retrieve
- *
- * @return array|mixed|null
- */
- public function getMetaData($key = null);
-
- /**
- * Get the stream resource
- *
- * @return resource
- */
- public function getStream();
-
- /**
- * Set the stream that is wrapped by the object
- *
- * @param resource $stream Stream resource to wrap
- * @param int $size Size of the stream in bytes. Only pass if the size cannot be obtained from the stream.
- *
- * @return self
- */
- public function setStream($stream, $size = null);
-
- /**
- * Detach the current stream resource
- *
- * @return self
- */
- public function detachStream();
-
- /**
- * Get the stream wrapper type
- *
- * @return string
- */
- public function getWrapper();
-
- /**
- * Wrapper specific data attached to this stream.
- *
- * @return array
- */
- public function getWrapperData();
-
- /**
- * Get a label describing the underlying implementation of the stream
- *
- * @return string
- */
- public function getStreamType();
-
- /**
- * Get the URI/filename associated with this stream
- *
- * @return string
- */
- public function getUri();
-
- /**
- * Get the size of the stream if able
- *
- * @return int|bool
- */
- public function getSize();
-
- /**
- * Check if the stream is readable
- *
- * @return bool
- */
- public function isReadable();
-
- /**
- * Check if the stream is repeatable
- *
- * @return bool
- */
- public function isRepeatable();
-
- /**
- * Check if the stream is writable
- *
- * @return bool
- */
- public function isWritable();
-
- /**
- * Check if the stream has been consumed
- *
- * @return bool
- */
- public function isConsumed();
-
- /**
- * Alias of isConsumed
- *
- * @return bool
- */
- public function feof();
-
- /**
- * Check if the stream is a local stream vs a remote stream
- *
- * @return bool
- */
- public function isLocal();
-
- /**
- * Check if the string is repeatable
- *
- * @return bool
- */
- public function isSeekable();
-
- /**
- * Specify the size of the stream in bytes
- *
- * @param int $size Size of the stream contents in bytes
- *
- * @return self
- */
- public function setSize($size);
-
- /**
- * Seek to a position in the stream
- *
- * @param int $offset Stream offset
- * @param int $whence Where the offset is applied
- *
- * @return bool Returns TRUE on success or FALSE on failure
- * @link http://www.php.net/manual/en/function.fseek.php
- */
- public function seek($offset, $whence = SEEK_SET);
-
- /**
- * Read data from the stream
- *
- * @param int $length Up to length number of bytes read.
- *
- * @return string|bool Returns the data read from the stream or FALSE on failure or EOF
- */
- public function read($length);
-
- /**
- * Write data to the stream
- *
- * @param string $string The string that is to be written.
- *
- * @return int|bool Returns the number of bytes written to the stream on success or FALSE on failure.
- */
- public function write($string);
-
- /**
- * Returns the current position of the file read/write pointer
- *
- * @return int|bool Returns the position of the file pointer or false on error
- */
- public function ftell();
-
- /**
- * Rewind to the beginning of the stream
- *
- * @return bool Returns true on success or false on failure
- */
- public function rewind();
-
- /**
- * Read a line from the stream up to the maximum allowed buffer length
- *
- * @param int $maxLength Maximum buffer length
- *
- * @return string|bool
- */
- public function readLine($maxLength = null);
-
- /**
- * Set custom data on the stream
- *
- * @param string $key Key to set
- * @param mixed $value Value to set
- *
- * @return self
- */
- public function setCustomData($key, $value);
-
- /**
- * Get custom data from the stream
- *
- * @param string $key Key to retrieve
- *
- * @return null|mixed
- */
- public function getCustomData($key);
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamRequestFactoryInterface.php b/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamRequestFactoryInterface.php
deleted file mode 100644
index d00e622..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/StreamRequestFactoryInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Guzzle\Stream;
-
-use Guzzle\Http\Message\RequestInterface;
-
-/**
- * Interface used for creating streams from requests
- */
-interface StreamRequestFactoryInterface
-{
- /**
- * Create a stream based on a request object
- *
- * @param RequestInterface $request Base the stream on a request
- * @param array|resource $context A stream_context_options resource or array of parameters used to create a
- * stream context.
- * @param array $params Optional array of parameters specific to the factory
- *
- * @return StreamInterface Returns a stream object
- * @throws \Guzzle\Common\Exception\RuntimeException if the stream cannot be opened or an error occurs
- */
- public function fromRequest(RequestInterface $request, $context = array(), array $params = array());
-}
diff --git a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/composer.json b/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/composer.json
deleted file mode 100644
index 9c19d2b..0000000
--- a/inc/mailgun/guzzle/guzzle/src/Guzzle/Stream/composer.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "guzzle/stream",
- "description": "Guzzle stream wrapper component",
- "homepage": "http://guzzlephp.org/",
- "keywords": ["stream", "component", "guzzle"],
- "license": "MIT",
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "require": {
- "php": ">=5.3.2",
- "guzzle/common": "self.version"
- },
- "suggest": {
- "guzzle/http": "To convert Guzzle request objects to PHP streams"
- },
- "autoload": {
- "psr-0": { "Guzzle\\Stream": "" }
- },
- "target-dir": "Guzzle/Stream",
- "extra": {
- "branch-alias": {
- "dev-master": "3.7-dev"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/AbstractBatchDecoratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/AbstractBatchDecoratorTest.php
deleted file mode 100644
index 951738d..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/AbstractBatchDecoratorTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\Batch;
-
-/**
- * @covers Guzzle\Batch\AbstractBatchDecorator
- */
-class AbstractBatchDecoratorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testProxiesToWrappedObject()
- {
- $batch = new Batch(
- $this->getMock('Guzzle\Batch\BatchTransferInterface'),
- $this->getMock('Guzzle\Batch\BatchDivisorInterface')
- );
-
- $decoratorA = $this->getMockBuilder('Guzzle\Batch\AbstractBatchDecorator')
- ->setConstructorArgs(array($batch))
- ->getMockForAbstractClass();
-
- $decoratorB = $this->getMockBuilder('Guzzle\Batch\AbstractBatchDecorator')
- ->setConstructorArgs(array($decoratorA))
- ->getMockForAbstractClass();
-
- $decoratorA->add('foo');
- $this->assertFalse($decoratorB->isEmpty());
- $this->assertFalse($batch->isEmpty());
- $this->assertEquals(array($decoratorB, $decoratorA), $decoratorB->getDecorators());
- $this->assertEquals(array(), $decoratorB->flush());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchBuilderTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchBuilderTest.php
deleted file mode 100644
index 4da09d3..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchBuilderTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\BatchBuilder;
-
-/**
- * @covers Guzzle\Batch\BatchBuilder
- */
-class BatchBuilderTest extends \Guzzle\Tests\GuzzleTestCase
-{
- private function getMockTransfer()
- {
- return $this->getMock('Guzzle\Batch\BatchTransferInterface');
- }
-
- private function getMockDivisor()
- {
- return $this->getMock('Guzzle\Batch\BatchDivisorInterface');
- }
-
- private function getMockBatchBuilder()
- {
- return BatchBuilder::factory()
- ->transferWith($this->getMockTransfer())
- ->createBatchesWith($this->getMockDivisor());
- }
-
- public function testFactoryCreatesInstance()
- {
- $builder = BatchBuilder::factory();
- $this->assertInstanceOf('Guzzle\Batch\BatchBuilder', $builder);
- }
-
- public function testAddsAutoFlush()
- {
- $batch = $this->getMockBatchBuilder()->autoFlushAt(10)->build();
- $this->assertInstanceOf('Guzzle\Batch\FlushingBatch', $batch);
- }
-
- public function testAddsExceptionBuffering()
- {
- $batch = $this->getMockBatchBuilder()->bufferExceptions()->build();
- $this->assertInstanceOf('Guzzle\Batch\ExceptionBufferingBatch', $batch);
- }
-
- public function testAddHistory()
- {
- $batch = $this->getMockBatchBuilder()->keepHistory()->build();
- $this->assertInstanceOf('Guzzle\Batch\HistoryBatch', $batch);
- }
-
- public function testAddsNotify()
- {
- $batch = $this->getMockBatchBuilder()->notify(function() {})->build();
- $this->assertInstanceOf('Guzzle\Batch\NotifyingBatch', $batch);
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\RuntimeException
- */
- public function testTransferStrategyMustBeSet()
- {
- $batch = BatchBuilder::factory()->createBatchesWith($this->getMockDivisor())->build();
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\RuntimeException
- */
- public function testDivisorStrategyMustBeSet()
- {
- $batch = BatchBuilder::factory()->transferWith($this->getMockTransfer())->build();
- }
-
- public function testTransfersRequests()
- {
- $batch = BatchBuilder::factory()->transferRequests(10)->build();
- $this->assertInstanceOf('Guzzle\Batch\BatchRequestTransfer', $this->readAttribute($batch, 'transferStrategy'));
- }
-
- public function testTransfersCommands()
- {
- $batch = BatchBuilder::factory()->transferCommands(10)->build();
- $this->assertInstanceOf('Guzzle\Batch\BatchCommandTransfer', $this->readAttribute($batch, 'transferStrategy'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureDivisorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureDivisorTest.php
deleted file mode 100644
index 753db7d..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureDivisorTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\BatchClosureDivisor;
-
-/**
- * @covers Guzzle\Batch\BatchClosureDivisor
- */
-class BatchClosureDivisorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testEnsuresCallableIsCallable()
- {
- $d = new BatchClosureDivisor(new \stdClass());
- }
-
- public function testDividesBatch()
- {
- $queue = new \SplQueue();
- $queue[] = 'foo';
- $queue[] = 'baz';
-
- $d = new BatchClosureDivisor(function (\SplQueue $queue, $context) {
- return array(
- array('foo'),
- array('baz')
- );
- }, 'Bar!');
-
- $batches = $d->createBatches($queue);
- $this->assertEquals(array(array('foo'), array('baz')), $batches);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureTransferTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureTransferTest.php
deleted file mode 100644
index 6ba7ae0..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchClosureTransferTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\BatchClosureTransfer;
-
-/**
- * @covers Guzzle\Batch\BatchClosureTransfer
- */
-class BatchClosureTransferTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var \Guzzle\Batch\BatchClosureTransfer The transfer fixture */
- protected $transferStrategy;
-
- /** @var array|null An array for keeping track of items passed into the transfer closure */
- protected $itemsTransferred;
-
- protected function setUp()
- {
- $this->itemsTransferred = null;
- $itemsTransferred =& $this->itemsTransferred;
-
- $this->transferStrategy = new BatchClosureTransfer(function (array $batch) use (&$itemsTransferred) {
- $itemsTransferred = $batch;
- return;
- });
- }
-
- public function testTransfersBatch()
- {
- $batchedItems = array('foo', 'bar', 'baz');
- $this->transferStrategy->transfer($batchedItems);
-
- $this->assertEquals($batchedItems, $this->itemsTransferred);
- }
-
- public function testTransferBailsOnEmptyBatch()
- {
- $batchedItems = array();
- $this->transferStrategy->transfer($batchedItems);
-
- $this->assertNull($this->itemsTransferred);
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testEnsuresCallableIsCallable()
- {
- $foo = new BatchClosureTransfer('uh oh!');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchCommandTransferTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchCommandTransferTest.php
deleted file mode 100644
index a04efab..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchCommandTransferTest.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\BatchCommandTransfer;
-use Guzzle\Service\Client;
-use Guzzle\Tests\Service\Mock\Command\MockCommand as Mc;
-
-/**
- * @covers Guzzle\Batch\BatchCommandTransfer
- */
-class BatchCommandTransferTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testCreatesBatchesBasedOnClient()
- {
- $client1 = new Client('http://www.example.com');
- $client2 = new Client('http://www.example.com');
-
- $commands = array(new Mc(), new Mc(), new Mc(), new Mc(), new Mc());
-
- $queue = new \SplQueue();
- foreach ($commands as $i => $command) {
- if ($i % 2) {
- $command->setClient($client1);
- } else {
- $command->setClient($client2);
- }
- $queue[] = $command;
- }
-
- $batch = new BatchCommandTransfer(2);
- $this->assertEquals(array(
- array($commands[0], $commands[2]),
- array($commands[4]),
- array($commands[1], $commands[3])
- ), $batch->createBatches($queue));
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testEnsuresAllItemsAreCommands()
- {
- $queue = new \SplQueue();
- $queue[] = 'foo';
- $batch = new BatchCommandTransfer(2);
- $batch->createBatches($queue);
- }
-
- public function testTransfersBatches()
- {
- $client = $this->getMockBuilder('Guzzle\Service\Client')
- ->setMethods(array('send'))
- ->getMock();
- $client->expects($this->once())
- ->method('send');
- $command = new Mc();
- $command->setClient($client);
- $batch = new BatchCommandTransfer(2);
- $batch->transfer(array($command));
- }
-
- public function testDoesNotTransfersEmptyBatches()
- {
- $batch = new BatchCommandTransfer(2);
- $batch->transfer(array());
- }
-
- /**
- * @expectedException Guzzle\Service\Exception\InconsistentClientTransferException
- */
- public function testEnsuresAllCommandsUseTheSameClient()
- {
- $batch = new BatchCommandTransfer(2);
- $client1 = new Client('http://www.example.com');
- $client2 = new Client('http://www.example.com');
- $command1 = new Mc();
- $command1->setClient($client1);
- $command2 = new Mc();
- $command2->setClient($client2);
- $batch->transfer(array($command1, $command2));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchRequestTransferTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchRequestTransferTest.php
deleted file mode 100644
index dec7bd5..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchRequestTransferTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\BatchRequestTransfer;
-use Guzzle\Http\Client;
-use Guzzle\Http\Curl\CurlMulti;
-
-/**
- * @covers Guzzle\Batch\BatchRequestTransfer
- */
-class BatchRequestTransferTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testCreatesBatchesBasedOnCurlMultiHandles()
- {
- $client1 = new Client('http://www.example.com');
- $client1->setCurlMulti(new CurlMulti());
-
- $client2 = new Client('http://www.example.com');
- $client2->setCurlMulti(new CurlMulti());
-
- $request1 = $client1->get();
- $request2 = $client2->get();
- $request3 = $client1->get();
- $request4 = $client2->get();
- $request5 = $client1->get();
-
- $queue = new \SplQueue();
- $queue[] = $request1;
- $queue[] = $request2;
- $queue[] = $request3;
- $queue[] = $request4;
- $queue[] = $request5;
-
- $batch = new BatchRequestTransfer(2);
- $this->assertEquals(array(
- array($request1, $request3),
- array($request3),
- array($request2, $request4)
- ), $batch->createBatches($queue));
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testEnsuresAllItemsAreRequests()
- {
- $queue = new \SplQueue();
- $queue[] = 'foo';
- $batch = new BatchRequestTransfer(2);
- $batch->createBatches($queue);
- }
-
- public function testTransfersBatches()
- {
- $client = new Client('http://127.0.0.1:123');
- $request = $client->get();
- // For some reason... PHP unit clones the request, which emits a request.clone event. This causes the
- // 'sorted' property of the event dispatcher to contain an array in the cloned request that is not present in
- // the original.
- $request->dispatch('request.clone');
-
- $multi = $this->getMock('Guzzle\Http\Curl\CurlMultiInterface');
- $client->setCurlMulti($multi);
- $multi->expects($this->once())
- ->method('add')
- ->with($request);
- $multi->expects($this->once())
- ->method('send');
-
- $batch = new BatchRequestTransfer(2);
- $batch->transfer(array($request));
- }
-
- public function testDoesNotTransfersEmptyBatches()
- {
- $batch = new BatchRequestTransfer(2);
- $batch->transfer(array());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchSizeDivisorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchSizeDivisorTest.php
deleted file mode 100644
index 5542228..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchSizeDivisorTest.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\BatchSizeDivisor;
-
-/**
- * @covers Guzzle\Batch\BatchSizeDivisor
- */
-class BatchSizeDivisorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testDividesBatch()
- {
- $queue = new \SplQueue();
- $queue[] = 'foo';
- $queue[] = 'baz';
- $queue[] = 'bar';
- $d = new BatchSizeDivisor(3);
- $this->assertEquals(3, $d->getSize());
- $d->setSize(2);
- $batches = $d->createBatches($queue);
- $this->assertEquals(array(array('foo', 'baz'), array('bar')), $batches);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchTest.php
deleted file mode 100644
index 296f57a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/BatchTest.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\Batch;
-use Guzzle\Batch\Exception\BatchTransferException;
-
-/**
- * @covers Guzzle\Batch\Batch
- */
-class BatchTest extends \Guzzle\Tests\GuzzleTestCase
-{
- private function getMockTransfer()
- {
- return $this->getMock('Guzzle\Batch\BatchTransferInterface');
- }
-
- private function getMockDivisor()
- {
- return $this->getMock('Guzzle\Batch\BatchDivisorInterface');
- }
-
- public function testAddsItemsToQueue()
- {
- $batch = new Batch($this->getMockTransfer(), $this->getMockDivisor());
- $this->assertSame($batch, $batch->add('foo'));
- $this->assertEquals(1, count($batch));
- }
-
- public function testFlushReturnsItems()
- {
- $transfer = $this->getMockTransfer();
- $transfer->expects($this->exactly(2))
- ->method('transfer');
-
- $divisor = $this->getMockDivisor();
- $divisor->expects($this->once())
- ->method('createBatches')
- ->will($this->returnValue(array(array('foo', 'baz'), array('bar'))));
-
- $batch = new Batch($transfer, $divisor);
-
- $batch->add('foo')->add('baz')->add('bar');
- $items = $batch->flush();
-
- $this->assertEquals(array('foo', 'baz', 'bar'), $items);
- }
-
- public function testThrowsExceptionContainingTheFailedBatch()
- {
- $called = 0;
- $originalException = new \Exception('Foo!');
-
- $transfer = $this->getMockTransfer();
- $transfer->expects($this->exactly(2))
- ->method('transfer')
- ->will($this->returnCallback(function () use (&$called, $originalException) {
- if (++$called == 2) {
- throw $originalException;
- }
- }));
-
- $divisor = $this->getMockDivisor();
- $batch = new Batch($transfer, $divisor);
-
- // PHPunit clones objects before passing them to a callback.
- // Horrible hack to get around this!
- $queue = $this->readAttribute($batch, 'queue');
-
- $divisor->expects($this->once())
- ->method('createBatches')
- ->will($this->returnCallback(function ($batch) use ($queue) {
- foreach ($queue as $item) {
- $items[] = $item;
- }
- return array_chunk($items, 2);
- }));
-
- $batch->add('foo')->add('baz')->add('bar')->add('bee')->add('boo');
- $this->assertFalse($batch->isEmpty());
-
- try {
- $items = $batch->flush();
- $this->fail('Expected exception');
- } catch (BatchTransferException $e) {
- $this->assertEquals($originalException, $e->getPrevious());
- $this->assertEquals(array('bar', 'bee'), array_values($e->getBatch()));
- $this->assertEquals(1, count($batch));
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/ExceptionBufferingBatchTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/ExceptionBufferingBatchTest.php
deleted file mode 100644
index fd810b1..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/ExceptionBufferingBatchTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\ExceptionBufferingBatch;
-use Guzzle\Batch\Batch;
-use Guzzle\Batch\BatchSizeDivisor;
-
-/**
- * @covers Guzzle\Batch\ExceptionBufferingBatch
- */
-class ExceptionBufferingBatchTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testFlushesEntireBatchWhileBufferingErroredBatches()
- {
- $t = $this->getMockBuilder('Guzzle\Batch\BatchTransferInterface')
- ->setMethods(array('transfer'))
- ->getMock();
-
- $d = new BatchSizeDivisor(1);
- $batch = new Batch($t, $d);
-
- $called = 0;
- $t->expects($this->exactly(3))
- ->method('transfer')
- ->will($this->returnCallback(function ($batch) use (&$called) {
- if (++$called === 2) {
- throw new \Exception('Foo');
- }
- }));
-
- $decorator = new ExceptionBufferingBatch($batch);
- $decorator->add('foo')->add('baz')->add('bar');
- $result = $decorator->flush();
-
- $e = $decorator->getExceptions();
- $this->assertEquals(1, count($e));
- $this->assertEquals(array('baz'), $e[0]->getBatch());
-
- $decorator->clearExceptions();
- $this->assertEquals(0, count($decorator->getExceptions()));
-
- $this->assertEquals(array('foo', 'bar'), $result);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/FlushingBatchTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/FlushingBatchTest.php
deleted file mode 100644
index 9b37a48..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/FlushingBatchTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\FlushingBatch;
-use Guzzle\Batch\Batch;
-
-/**
- * @covers Guzzle\Batch\FlushingBatch
- */
-class FlushingBatchTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testFlushesWhenSizeMeetsThreshold()
- {
- $t = $this->getMock('Guzzle\Batch\BatchTransferInterface', array('transfer'));
- $d = $this->getMock('Guzzle\Batch\BatchDivisorInterface', array('createBatches'));
-
- $batch = new Batch($t, $d);
- $queue = $this->readAttribute($batch, 'queue');
-
- $d->expects($this->exactly(2))
- ->method('createBatches')
- ->will($this->returnCallback(function () use ($queue) {
- $items = array();
- foreach ($queue as $item) {
- $items[] = $item;
- }
- return array($items);
- }));
-
- $t->expects($this->exactly(2))
- ->method('transfer');
-
- $flush = new FlushingBatch($batch, 3);
- $this->assertEquals(3, $flush->getThreshold());
- $flush->setThreshold(2);
- $flush->add('foo')->add('baz')->add('bar')->add('bee')->add('boo');
- $this->assertEquals(1, count($flush));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/HistoryBatchTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/HistoryBatchTest.php
deleted file mode 100644
index 60d6f95..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/HistoryBatchTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\HistoryBatch;
-use Guzzle\Batch\Batch;
-
-/**
- * @covers Guzzle\Batch\HistoryBatch
- */
-class HistoryBatchTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testMaintainsHistoryOfItemsAddedToBatch()
- {
- $batch = new Batch(
- $this->getMock('Guzzle\Batch\BatchTransferInterface'),
- $this->getMock('Guzzle\Batch\BatchDivisorInterface')
- );
-
- $history = new HistoryBatch($batch);
- $history->add('foo')->add('baz');
- $this->assertEquals(array('foo', 'baz'), $history->getHistory());
- $history->clearHistory();
- $this->assertEquals(array(), $history->getHistory());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/NotifyingBatchTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/NotifyingBatchTest.php
deleted file mode 100644
index 69a8900..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Batch/NotifyingBatchTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Batch;
-
-use Guzzle\Batch\NotifyingBatch;
-use Guzzle\Batch\Batch;
-
-/**
- * @covers Guzzle\Batch\NotifyingBatch
- */
-class NotifyingBatchTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testNotifiesAfterFlush()
- {
- $batch = $this->getMock('Guzzle\Batch\Batch', array('flush'), array(
- $this->getMock('Guzzle\Batch\BatchTransferInterface'),
- $this->getMock('Guzzle\Batch\BatchDivisorInterface')
- ));
-
- $batch->expects($this->once())
- ->method('flush')
- ->will($this->returnValue(array('foo', 'baz')));
-
- $data = array();
- $decorator = new NotifyingBatch($batch, function ($batch) use (&$data) {
- $data[] = $batch;
- });
-
- $decorator->add('foo')->add('baz');
- $decorator->flush();
- $this->assertEquals(array(array('foo', 'baz')), $data);
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testEnsuresCallableIsValid()
- {
- $batch = new Batch(
- $this->getMock('Guzzle\Batch\BatchTransferInterface'),
- $this->getMock('Guzzle\Batch\BatchDivisorInterface')
- );
- $decorator = new NotifyingBatch($batch, 'foo');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterFactoryTest.php
deleted file mode 100644
index c4140a9..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterFactoryTest.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Cache;
-
-use Guzzle\Cache\CacheAdapterFactory;
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Doctrine\Common\Cache\ArrayCache;
-use Zend\Cache\StorageFactory;
-
-/**
- * @covers Guzzle\Cache\CacheAdapterFactory
- */
-class CacheAdapterFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var ArrayCache */
- private $cache;
-
- /** @var DoctrineCacheAdapter */
- private $adapter;
-
- /**
- * Prepares the environment before running a test.
- */
- protected function setup()
- {
- parent::setUp();
- $this->cache = new ArrayCache();
- $this->adapter = new DoctrineCacheAdapter($this->cache);
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testEnsuresConfigIsObject()
- {
- CacheAdapterFactory::fromCache(array());
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testEnsuresKnownType()
- {
- CacheAdapterFactory::fromCache(new \stdClass());
- }
-
- public function cacheProvider()
- {
- return array(
- array(new DoctrineCacheAdapter(new ArrayCache()), 'Guzzle\Cache\DoctrineCacheAdapter'),
- array(new ArrayCache(), 'Guzzle\Cache\DoctrineCacheAdapter'),
- array(StorageFactory::factory(array('adapter' => 'memory')), 'Guzzle\Cache\Zf2CacheAdapter'),
- );
- }
-
- /**
- * @dataProvider cacheProvider
- */
- public function testCreatesNullCacheAdapterByDefault($cache, $type)
- {
- $adapter = CacheAdapterFactory::fromCache($cache);
- $this->assertInstanceOf($type, $adapter);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterTest.php
deleted file mode 100644
index 3e30ddd..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/CacheAdapterTest.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Cache;
-
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Doctrine\Common\Cache\ArrayCache;
-
-/**
- * @covers Guzzle\Cache\DoctrineCacheAdapter
- * @covers Guzzle\Cache\AbstractCacheAdapter
- */
-class CacheAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var ArrayCache */
- private $cache;
-
- /** @var DoctrineCacheAdapter */
- private $adapter;
-
- /**
- * Prepares the environment before running a test.
- */
- protected function setUp()
- {
- parent::setUp();
- $this->cache = new ArrayCache();
- $this->adapter = new DoctrineCacheAdapter($this->cache);
- }
-
- /**
- * Cleans up the environment after running a test.
- */
- protected function tearDown()
- {
- $this->adapter = null;
- $this->cache = null;
- parent::tearDown();
- }
-
- public function testGetCacheObject()
- {
- $this->assertEquals($this->cache, $this->adapter->getCacheObject());
- }
-
- public function testSave()
- {
- $this->assertTrue($this->adapter->save('test', 'data', 1000));
- }
-
- public function testFetch()
- {
- $this->assertTrue($this->adapter->save('test', 'data', 1000));
- $this->assertEquals('data', $this->adapter->fetch('test'));
- }
-
- public function testContains()
- {
- $this->assertTrue($this->adapter->save('test', 'data', 1000));
- $this->assertTrue($this->adapter->contains('test'));
- }
-
- public function testDelete()
- {
- $this->assertTrue($this->adapter->save('test', 'data', 1000));
- $this->assertTrue($this->adapter->delete('test'));
- $this->assertFalse($this->adapter->contains('test'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/ClosureCacheAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/ClosureCacheAdapterTest.php
deleted file mode 100644
index 12de65b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/ClosureCacheAdapterTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Cache;
-
-use Guzzle\Cache\ClosureCacheAdapter;
-
-/**
- * @covers Guzzle\Cache\ClosureCacheAdapter
- */
-class ClosureCacheAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var ClosureCacheAdapter */
- private $adapter;
-
- /** Array of callables to use for testing */
- private $callables;
-
- /** Cache data for testing */
- public $data = array();
-
- /**
- * Prepares the environment before running a test.
- */
- protected function setUp()
- {
- parent::setUp();
-
- $that = $this;
- $this->callables = array(
- 'contains' => function($id, $options = array()) use ($that) {
- return array_key_exists($id, $that->data);
- },
- 'delete' => function($id, $options = array()) use ($that) {
- unset($that->data[$id]);
- return true;
- },
- 'fetch' => function($id, $options = array()) use ($that) {
- return array_key_exists($id, $that->data) ? $that->data[$id] : null;
- },
- 'save' => function($id, $data, $lifeTime, $options = array()) use ($that) {
- $that->data[$id] = $data;
- return true;
- }
- );
-
- $this->adapter = new ClosureCacheAdapter($this->callables);
- }
-
- /**
- * Cleans up the environment after running a test.
- */
- protected function tearDown()
- {
- $this->cache = null;
- $this->callables = null;
- parent::tearDown();
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- public function testEnsuresCallablesArePresent()
- {
- $callables = $this->callables;
- unset($callables['delete']);
- $cache = new ClosureCacheAdapter($callables);
- }
-
- public function testAllCallablesMustBePresent()
- {
- $cache = new ClosureCacheAdapter($this->callables);
- }
-
- public function testCachesDataUsingCallables()
- {
- $this->assertTrue($this->adapter->save('test', 'data', 1000));
- $this->assertEquals('data', $this->adapter->fetch('test'));
- }
-
- public function testChecksIfCacheContainsKeys()
- {
- $this->adapter->save('test', 'data', 1000);
- $this->assertTrue($this->adapter->contains('test'));
- $this->assertFalse($this->adapter->contains('foo'));
- }
-
- public function testDeletesFromCacheByKey()
- {
- $this->adapter->save('test', 'data', 1000);
- $this->assertTrue($this->adapter->contains('test'));
- $this->adapter->delete('test');
- $this->assertFalse($this->adapter->contains('test'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/NullCacheAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/NullCacheAdapterTest.php
deleted file mode 100644
index e05df3f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/NullCacheAdapterTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Common\Cache;
-
-use Guzzle\Cache\NullCacheAdapter;
-
-/**
- * @covers Guzzle\Cache\NullCacheAdapter
- */
-class NullCacheAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testNullCacheAdapter()
- {
- $c = new NullCacheAdapter();
- $this->assertEquals(false, $c->contains('foo'));
- $this->assertEquals(true, $c->delete('foo'));
- $this->assertEquals(false, $c->fetch('foo'));
- $this->assertEquals(true, $c->save('foo', 'bar'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/Zf2CacheAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/Zf2CacheAdapterTest.php
deleted file mode 100644
index 9077c12..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Cache/Zf2CacheAdapterTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Cache;
-
-use Guzzle\Cache\Zf2CacheAdapter;
-use Zend\Cache\StorageFactory;
-
-/**
- * @covers Guzzle\Cache\Zf2CacheAdapter
- */
-class Zf2CacheAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- private $cache;
- private $adapter;
-
- /**
- * Prepares the environment before running a test.
- */
- protected function setUp()
- {
- parent::setUp();
- $this->cache = StorageFactory::factory(array(
- 'adapter' => 'memory'
- ));
- $this->adapter = new Zf2CacheAdapter($this->cache);
- }
-
- /**
- * Cleans up the environment after running a test.
- */
- protected function tearDown()
- {
- $this->adapter = null;
- $this->cache = null;
- parent::tearDown();
- }
-
- public function testCachesDataUsingCallables()
- {
- $this->assertTrue($this->adapter->save('test', 'data', 1000));
- $this->assertEquals('data', $this->adapter->fetch('test'));
- }
-
- public function testChecksIfCacheContainsKeys()
- {
- $this->adapter->save('test', 'data', 1000);
- $this->assertTrue($this->adapter->contains('test'));
- $this->assertFalse($this->adapter->contains('foo'));
- }
-
- public function testDeletesFromCacheByKey()
- {
- $this->adapter->save('test', 'data', 1000);
- $this->assertTrue($this->adapter->contains('test'));
- $this->adapter->delete('test');
- $this->assertFalse($this->adapter->contains('test'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/AbstractHasDispatcherTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/AbstractHasDispatcherTest.php
deleted file mode 100644
index 19d12e6..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/AbstractHasDispatcherTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Common;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\AbstractHasDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-
-/**
- * @covers Guzzle\Common\AbstractHasDispatcher
- */
-class AbstractHasAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testDoesNotRequireRegisteredEvents()
- {
- $this->assertEquals(array(), AbstractHasDispatcher::getAllEvents());
- }
-
- public function testAllowsDispatcherToBeInjected()
- {
- $d = new EventDispatcher();
- $mock = $this->getMockForAbstractClass('Guzzle\Common\AbstractHasDispatcher');
- $this->assertSame($mock, $mock->setEventDispatcher($d));
- $this->assertSame($d, $mock->getEventDispatcher());
- }
-
- public function testCreatesDefaultEventDispatcherIfNeeded()
- {
- $mock = $this->getMockForAbstractClass('Guzzle\Common\AbstractHasDispatcher');
- $this->assertInstanceOf('Symfony\Component\EventDispatcher\EventDispatcher', $mock->getEventDispatcher());
- }
-
- public function testHelperDispatchesEvents()
- {
- $data = array();
- $mock = $this->getMockForAbstractClass('Guzzle\Common\AbstractHasDispatcher');
- $mock->getEventDispatcher()->addListener('test', function(Event $e) use (&$data) {
- $data = $e->getIterator()->getArrayCopy();
- });
- $mock->dispatch('test', array(
- 'param' => 'abc'
- ));
- $this->assertEquals(array(
- 'param' => 'abc',
- ), $data);
- }
-
- public function testHelperAttachesSubscribers()
- {
- $mock = $this->getMockForAbstractClass('Guzzle\Common\AbstractHasDispatcher');
- $subscriber = $this->getMockForAbstractClass('Symfony\Component\EventDispatcher\EventSubscriberInterface');
-
- $dispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcher')
- ->setMethods(array('addSubscriber'))
- ->getMock();
-
- $dispatcher->expects($this->once())
- ->method('addSubscriber');
-
- $mock->setEventDispatcher($dispatcher);
- $mock->addSubscriber($subscriber);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/CollectionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/CollectionTest.php
deleted file mode 100644
index 0648a02..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/CollectionTest.php
+++ /dev/null
@@ -1,529 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Common;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\Exception\InvalidArgumentException;
-use Guzzle\Http\QueryString;
-
-/**
- * @covers Guzzle\Common\Collection
- */
-class CollectionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var Collection */
- protected $coll;
-
- protected function setUp()
- {
- $this->coll = new Collection();
- }
-
- public function testConstructorCanBeCalledWithNoParams()
- {
- $this->coll = new Collection();
- $p = $this->coll->getAll();
- $this->assertEmpty($p, '-> Collection must be empty when no data is passed');
- }
-
- public function testConstructorCanBeCalledWithParams()
- {
- $testData = array(
- 'test' => 'value',
- 'test_2' => 'value2'
- );
- $this->coll = new Collection($testData);
- $this->assertEquals($this->coll->getAll(), $testData, '-> getAll() must return the data passed in the constructor');
- $this->assertEquals($this->coll->getAll(), $this->coll->toArray());
- }
-
- public function testImplementsIteratorAggregate()
- {
- $this->coll->set('key', 'value');
- $this->assertInstanceOf('ArrayIterator', $this->coll->getIterator());
- $this->assertEquals(1, count($this->coll));
- $total = 0;
- foreach ($this->coll as $key => $value) {
- $this->assertEquals('key', $key);
- $this->assertEquals('value', $value);
- $total++;
- }
- $this->assertEquals(1, $total);
- }
-
- public function testCanAddValuesToExistingKeysByUsingArray()
- {
- $this->coll->add('test', 'value1');
- $this->assertEquals($this->coll->getAll(), array('test' => 'value1'));
- $this->coll->add('test', 'value2');
- $this->assertEquals($this->coll->getAll(), array('test' => array('value1', 'value2')));
- $this->coll->add('test', 'value3');
- $this->assertEquals($this->coll->getAll(), array('test' => array('value1', 'value2', 'value3')));
- }
-
- public function testHandlesMergingInDisparateDataSources()
- {
- $params = array(
- 'test' => 'value1',
- 'test2' => 'value2',
- 'test3' => array('value3', 'value4')
- );
- $this->coll->merge($params);
- $this->assertEquals($this->coll->getAll(), $params);
-
- // Pass the same object to itself
- $this->assertEquals($this->coll->merge($this->coll), $this->coll);
- }
-
- public function testCanClearAllDataOrSpecificKeys()
- {
- $this->coll->merge(array(
- 'test' => 'value1',
- 'test2' => 'value2'
- ));
-
- // Clear a specific parameter by name
- $this->coll->remove('test');
-
- $this->assertEquals($this->coll->getAll(), array(
- 'test2' => 'value2'
- ));
-
- // Clear all parameters
- $this->coll->clear();
-
- $this->assertEquals($this->coll->getAll(), array());
- }
-
- public function testGetsValuesByKey()
- {
- $this->assertNull($this->coll->get('test'));
- $this->coll->add('test', 'value');
- $this->assertEquals('value', $this->coll->get('test'));
- $this->coll->set('test2', 'v2');
- $this->coll->set('test3', 'v3');
- $this->assertEquals(array(
- 'test' => 'value',
- 'test2' => 'v2'
- ), $this->coll->getAll(array('test', 'test2')));
- }
-
- public function testProvidesKeys()
- {
- $this->assertEquals(array(), $this->coll->getKeys());
- $this->coll->merge(array(
- 'test1' => 'value1',
- 'test2' => 'value2'
- ));
- $this->assertEquals(array('test1', 'test2'), $this->coll->getKeys());
- // Returns the cached array previously returned
- $this->assertEquals(array('test1', 'test2'), $this->coll->getKeys());
- $this->coll->remove('test1');
- $this->assertEquals(array('test2'), $this->coll->getKeys());
- $this->coll->add('test3', 'value3');
- $this->assertEquals(array('test2', 'test3'), $this->coll->getKeys());
- }
-
- public function testChecksIfHasKey()
- {
- $this->assertFalse($this->coll->hasKey('test'));
- $this->coll->add('test', 'value');
- $this->assertEquals(true, $this->coll->hasKey('test'));
- $this->coll->add('test2', 'value2');
- $this->assertEquals(true, $this->coll->hasKey('test'));
- $this->assertEquals(true, $this->coll->hasKey('test2'));
- $this->assertFalse($this->coll->hasKey('testing'));
- $this->assertEquals(false, $this->coll->hasKey('AB-C', 'junk'));
- }
-
- public function testChecksIfHasValue()
- {
- $this->assertFalse($this->coll->hasValue('value'));
- $this->coll->add('test', 'value');
- $this->assertEquals('test', $this->coll->hasValue('value'));
- $this->coll->add('test2', 'value2');
- $this->assertEquals('test', $this->coll->hasValue('value'));
- $this->assertEquals('test2', $this->coll->hasValue('value2'));
- $this->assertFalse($this->coll->hasValue('val'));
- }
-
- public function testCanGetAllValuesByArray()
- {
- $this->coll->add('foo', 'bar');
- $this->coll->add('tEsT', 'value');
- $this->coll->add('tesTing', 'v2');
- $this->coll->add('key', 'v3');
- $this->assertNull($this->coll->get('test'));
- $this->assertEquals(array(
- 'foo' => 'bar',
- 'tEsT' => 'value',
- 'tesTing' => 'v2'
- ), $this->coll->getAll(array(
- 'foo', 'tesTing', 'tEsT'
- )));
- }
-
- public function testImplementsCount()
- {
- $data = new Collection();
- $this->assertEquals(0, $data->count());
- $data->add('key', 'value');
- $this->assertEquals(1, count($data));
- $data->add('key', 'value2');
- $this->assertEquals(1, count($data));
- $data->add('key_2', 'value3');
- $this->assertEquals(2, count($data));
- }
-
- public function testAddParamsByMerging()
- {
- $params = array(
- 'test' => 'value1',
- 'test2' => 'value2',
- 'test3' => array('value3', 'value4')
- );
-
- // Add some parameters
- $this->coll->merge($params);
-
- // Add more parameters by merging them in
- $this->coll->merge(array(
- 'test' => 'another',
- 'different_key' => 'new value'
- ));
-
- $this->assertEquals(array(
- 'test' => array('value1', 'another'),
- 'test2' => 'value2',
- 'test3' => array('value3', 'value4'),
- 'different_key' => 'new value'
- ), $this->coll->getAll());
- }
-
- public function testAllowsFunctionalFilter()
- {
- $this->coll->merge(array(
- 'fruit' => 'apple',
- 'number' => 'ten',
- 'prepositions' => array('about', 'above', 'across', 'after'),
- 'same_number' => 'ten'
- ));
-
- $filtered = $this->coll->filter(function($key, $value) {
- return $value == 'ten';
- });
-
- $this->assertNotEquals($filtered, $this->coll);
-
- $this->assertEquals(array(
- 'number' => 'ten',
- 'same_number' => 'ten'
- ), $filtered->getAll());
- }
-
- public function testAllowsFunctionalMapping()
- {
- $this->coll->merge(array(
- 'number_1' => 1,
- 'number_2' => 2,
- 'number_3' => 3
- ));
-
- $mapped = $this->coll->map(function($key, $value) {
- return $value * $value;
- });
-
- $this->assertNotEquals($mapped, $this->coll);
-
- $this->assertEquals(array(
- 'number_1' => 1,
- 'number_2' => 4,
- 'number_3' => 9
- ), $mapped->getAll());
- }
-
- public function testImplementsArrayAccess()
- {
- $this->coll->merge(array(
- 'k1' => 'v1',
- 'k2' => 'v2'
- ));
-
- $this->assertTrue($this->coll->offsetExists('k1'));
- $this->assertFalse($this->coll->offsetExists('Krull'));
-
- $this->coll->offsetSet('k3', 'v3');
- $this->assertEquals('v3', $this->coll->offsetGet('k3'));
- $this->assertEquals('v3', $this->coll->get('k3'));
-
- $this->coll->offsetUnset('k1');
- $this->assertFalse($this->coll->offsetExists('k1'));
- }
-
- public function testUsesStaticWhenCreatingNew()
- {
- $qs = new QueryString(array(
- 'a' => 'b',
- 'c' => 'd'
- ));
-
- $this->assertInstanceOf('Guzzle\\Http\\QueryString', $qs->map(function($a, $b) {}));
- $this->assertInstanceOf('Guzzle\\Common\\Collection', $qs->map(function($a, $b) {}, array(), false));
-
- $this->assertInstanceOf('Guzzle\\Http\\QueryString', $qs->filter(function($a, $b) {}));
- $this->assertInstanceOf('Guzzle\\Common\\Collection', $qs->filter(function($a, $b) {}, false));
- }
-
- public function testCanReplaceAllData()
- {
- $this->assertSame($this->coll, $this->coll->replace(array(
- 'a' => '123'
- )));
-
- $this->assertEquals(array(
- 'a' => '123'
- ), $this->coll->getAll());
- }
-
- public function dataProvider()
- {
- return array(
- array('this_is_a_test', '{a}_is_a_{b}', array(
- 'a' => 'this',
- 'b' => 'test'
- )),
- array('this_is_a_test', '{abc}_is_a_{0}', array(
- 'abc' => 'this',
- 0 => 'test'
- )),
- array('this_is_a_test', '{abc}_is_a_{0}', array(
- 'abc' => 'this',
- 0 => 'test'
- )),
- array('this_is_a_test', 'this_is_a_test', array(
- 'abc' => 'this'
- )),
- array('{abc}_is_{not_found}a_{0}', '{abc}_is_{not_found}a_{0}', array())
- );
- }
-
- /**
- * @dataProvider dataProvider
- */
- public function testInjectsConfigData($output, $input, $config)
- {
- $collection = new Collection($config);
- $this->assertEquals($output, $collection->inject($input));
- }
-
- public function testCanSearchByKey()
- {
- $collection = new Collection(array(
- 'foo' => 'bar',
- 'BaZ' => 'pho'
- ));
-
- $this->assertEquals('foo', $collection->keySearch('FOO'));
- $this->assertEquals('BaZ', $collection->keySearch('baz'));
- $this->assertEquals(false, $collection->keySearch('Bar'));
- }
-
- public function testPreparesFromConfig()
- {
- $c = Collection::fromConfig(array(
- 'a' => '123',
- 'base_url' => 'http://www.test.com/'
- ), array(
- 'a' => 'xyz',
- 'b' => 'lol'
- ), array('a'));
-
- $this->assertInstanceOf('Guzzle\Common\Collection', $c);
- $this->assertEquals(array(
- 'a' => '123',
- 'b' => 'lol',
- 'base_url' => 'http://www.test.com/'
- ), $c->getAll());
-
- try {
- $c = Collection::fromConfig(array(), array(), array('a'));
- $this->fail('Exception not throw when missing config');
- } catch (InvalidArgumentException $e) {
- }
- }
-
- function falseyDataProvider()
- {
- return array(
- array(false, false),
- array(null, null),
- array('', ''),
- array(array(), array()),
- array(0, 0),
- );
- }
-
- /**
- * @dataProvider falseyDataProvider
- */
- public function testReturnsCorrectData($a, $b)
- {
- $c = new Collection(array('value' => $a));
- $this->assertSame($b, $c->get('value'));
- }
-
- public function testRetrievesNestedKeysUsingPath()
- {
- $data = array(
- 'foo' => 'bar',
- 'baz' => array(
- 'mesa' => array(
- 'jar' => 'jar'
- )
- )
- );
- $collection = new Collection($data);
- $this->assertEquals('bar', $collection->getPath('foo'));
- $this->assertEquals('jar', $collection->getPath('baz/mesa/jar'));
- $this->assertNull($collection->getPath('wewewf'));
- $this->assertNull($collection->getPath('baz/mesa/jar/jar'));
- }
-
- public function testFalseyKeysStillDescend()
- {
- $collection = new Collection(array(
- '0' => array(
- 'a' => 'jar'
- ),
- 1 => 'other'
- ));
- $this->assertEquals('jar', $collection->getPath('0/a'));
- $this->assertEquals('other', $collection->getPath('1'));
- }
-
- public function getPathProvider()
- {
- $data = array(
- 'foo' => 'bar',
- 'baz' => array(
- 'mesa' => array(
- 'jar' => 'jar',
- 'array' => array('a', 'b', 'c')
- ),
- 'bar' => array(
- 'baz' => 'bam',
- 'array' => array('d', 'e', 'f')
- )
- ),
- 'bam' => array(
- array('foo' => 1),
- array('foo' => 2),
- array('array' => array('h', 'i'))
- )
- );
- $c = new Collection($data);
-
- return array(
- // Simple path selectors
- array($c, 'foo', 'bar'),
- array($c, 'baz', $data['baz']),
- array($c, 'bam', $data['bam']),
- array($c, 'baz/mesa', $data['baz']['mesa']),
- array($c, 'baz/mesa/jar', 'jar'),
- // Merge everything two levels under baz
- array($c, 'baz/*', array(
- 'jar' => 'jar',
- 'array' => array_merge($data['baz']['mesa']['array'], $data['baz']['bar']['array']),
- 'baz' => 'bam'
- )),
- // Does not barf on missing keys
- array($c, 'fefwfw', null),
- // Does not barf when a wildcard does not resolve correctly
- array($c, '*/*/*/*/*/wefwfe', array()),
- // Allows custom separator
- array($c, '*|mesa', $data['baz']['mesa'], '|'),
- // Merge all 'array' keys two levels under baz (the trailing * does not hurt the results)
- array($c, 'baz/*/array/*', array_merge($data['baz']['mesa']['array'], $data['baz']['bar']['array'])),
- // Merge all 'array' keys two levels under baz
- array($c, 'baz/*/array', array_merge($data['baz']['mesa']['array'], $data['baz']['bar']['array'])),
- array($c, 'baz/mesa/array', $data['baz']['mesa']['array']),
- // Having a trailing * does not hurt the results
- array($c, 'baz/mesa/array/*', $data['baz']['mesa']['array']),
- // Merge of anything one level deep
- array($c, '*', array_merge(array('bar'), $data['baz'], $data['bam'])),
- // Funky merge of anything two levels deep
- array($c, '*/*', array(
- 'jar' => 'jar',
- 'array' => array('a', 'b', 'c', 'd', 'e', 'f', 'h', 'i'),
- 'baz' => 'bam',
- 'foo' => array(1, 2)
- )),
- // Funky merge of all 'array' keys that are two levels deep
- array($c, '*/*/array', array('a', 'b', 'c', 'd', 'e', 'f', 'h', 'i'))
- );
- }
-
- /**
- * @dataProvider getPathProvider
- */
- public function testGetPath(Collection $c, $path, $expected, $separator = '/')
- {
- $this->assertEquals($expected, $c->getPath($path, $separator));
- }
-
- public function testOverridesSettings()
- {
- $c = new Collection(array('foo' => 1, 'baz' => 2, 'bar' => 3));
- $c->overwriteWith(array('foo' => 10, 'bar' => 300));
- $this->assertEquals(array('foo' => 10, 'baz' => 2, 'bar' => 300), $c->getAll());
- }
-
- public function testOverwriteWithCollection()
- {
- $c = new Collection(array('foo' => 1, 'baz' => 2, 'bar' => 3));
- $b = new Collection(array('foo' => 10, 'bar' => 300));
- $c->overwriteWith($b);
- $this->assertEquals(array('foo' => 10, 'baz' => 2, 'bar' => 300), $c->getAll());
- }
-
- public function testOverwriteWithTraversable()
- {
- $c = new Collection(array('foo' => 1, 'baz' => 2, 'bar' => 3));
- $b = new Collection(array('foo' => 10, 'bar' => 300));
- $c->overwriteWith($b->getIterator());
- $this->assertEquals(array('foo' => 10, 'baz' => 2, 'bar' => 300), $c->getAll());
- }
-
- public function testCanSetNestedPathValueThatDoesNotExist()
- {
- $c = new Collection(array());
- $c->setPath('foo/bar/baz/123', 'hi');
- $this->assertEquals('hi', $c['foo']['bar']['baz']['123']);
- }
-
- public function testCanSetNestedPathValueThatExists()
- {
- $c = new Collection(array('foo' => array('bar' => 'test')));
- $c->setPath('foo/bar', 'hi');
- $this->assertEquals('hi', $c['foo']['bar']);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- */
- public function testVerifiesNestedPathIsValidAtExactLevel()
- {
- $c = new Collection(array('foo' => 'bar'));
- $c->setPath('foo/bar', 'hi');
- $this->assertEquals('hi', $c['foo']['bar']);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- */
- public function testVerifiesThatNestedPathIsValidAtAnyLevel()
- {
- $c = new Collection(array('foo' => 'bar'));
- $c->setPath('foo/bar/baz', 'test');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/EventTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/EventTest.php
deleted file mode 100644
index 5484e14..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/EventTest.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Common;
-
-use Guzzle\Common\Event;
-
-/**
- * @covers Guzzle\Common\Event
- */
-class EventTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @return Event
- */
- private function getEvent()
- {
- return new Event(array(
- 'test' => '123',
- 'other' => '456',
- 'event' => 'test.notify'
- ));
- }
-
- public function testAllowsParameterInjection()
- {
- $event = new Event(array(
- 'test' => '123'
- ));
- $this->assertEquals('123', $event['test']);
- }
-
- public function testImplementsArrayAccess()
- {
- $event = $this->getEvent();
- $this->assertEquals('123', $event['test']);
- $this->assertNull($event['foobar']);
-
- $this->assertTrue($event->offsetExists('test'));
- $this->assertFalse($event->offsetExists('foobar'));
-
- unset($event['test']);
- $this->assertFalse($event->offsetExists('test'));
-
- $event['test'] = 'new';
- $this->assertEquals('new', $event['test']);
- }
-
- public function testImplementsIteratorAggregate()
- {
- $event = $this->getEvent();
- $this->assertInstanceOf('ArrayIterator', $event->getIterator());
- }
-
- public function testConvertsToArray()
- {
- $this->assertEquals(array(
- 'test' => '123',
- 'other' => '456',
- 'event' => 'test.notify'
- ), $this->getEvent()->toArray());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/BatchTransferExceptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/BatchTransferExceptionTest.php
deleted file mode 100644
index c72a2a6..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/BatchTransferExceptionTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Common\Exception;
-
-use Guzzle\Batch\Exception\BatchTransferException;
-
-class BatchTransferExceptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testContainsBatch()
- {
- $e = new \Exception('Baz!');
- $t = $this->getMock('Guzzle\Batch\BatchTransferInterface');
- $d = $this->getMock('Guzzle\Batch\BatchDivisorInterface');
- $transferException = new BatchTransferException(array('foo'), array(1, 2), $e, $t, $d);
- $this->assertEquals(array('foo'), $transferException->getBatch());
- $this->assertSame($t, $transferException->getTransferStrategy());
- $this->assertSame($d, $transferException->getDivisorStrategy());
- $this->assertSame($e, $transferException->getPrevious());
- $this->assertEquals(array(1, 2), $transferException->getTransferredItems());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php
deleted file mode 100644
index 2aecf2a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Common\Exception;
-
-use Guzzle\Common\Exception\ExceptionCollection;
-
-class ExceptionCollectionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- private function getExceptions()
- {
- return array(
- new \Exception('Test'),
- new \Exception('Testing')
- );
- }
-
- public function testAggregatesExceptions()
- {
- $e = new ExceptionCollection();
- $exceptions = $this->getExceptions();
- $e->add($exceptions[0]);
- $e->add($exceptions[1]);
- $this->assertContains("(Exception) ./tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php line ", $e->getMessage());
- $this->assertContains(" Test\n\n #0 ./", $e->getMessage());
- $this->assertSame($exceptions[0], $e->getFirst());
- }
-
- public function testCanSetExceptions()
- {
- $ex = new \Exception('foo');
- $e = new ExceptionCollection();
- $e->setExceptions(array($ex));
- $this->assertSame($ex, $e->getFirst());
- }
-
- public function testActsAsArray()
- {
- $e = new ExceptionCollection();
- $exceptions = $this->getExceptions();
- $e->add($exceptions[0]);
- $e->add($exceptions[1]);
- $this->assertEquals(2, count($e));
- $this->assertEquals($exceptions, $e->getIterator()->getArrayCopy());
- }
-
- public function testCanAddSelf()
- {
- $e1 = new ExceptionCollection();
- $e1->add(new \Exception("Test"));
- $e2 = new ExceptionCollection('Meta description!');
- $e2->add(new \Exception("Test 2"));
- $e3 = new ExceptionCollection();
- $e3->add(new \Exception('Baz'));
- $e2->add($e3);
- $e1->add($e2);
- $message = $e1->getMessage();
- $this->assertContains("(Exception) ./tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php line ", $message);
- $this->assertContains("\n Test\n\n #0 ", $message);
- $this->assertContains("\n\n(Guzzle\\Common\\Exception\\ExceptionCollection) ./tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php line ", $message);
- $this->assertContains("\n\n Meta description!\n\n", $message);
- $this->assertContains(" (Exception) ./tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php line ", $message);
- $this->assertContains("\n Test 2\n\n #0 ", $message);
- $this->assertContains(" (Exception) ./tests/Guzzle/Tests/Common/Exception/ExceptionCollectionTest.php line ", $message);
- $this->assertContains(" Baz\n\n #0", $message);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/VersionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/VersionTest.php
deleted file mode 100644
index c3a81d1..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Common/VersionTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Common;
-
-use Guzzle\Common\Version;
-
-/**
- * @covers Guzzle\Common\Version
- */
-class VersionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException \PHPUnit_Framework_Error_Deprecated
- */
- public function testEmitsWarnings()
- {
- Version::$emitWarnings = true;
- Version::warn('testing!');
- }
-
- public function testCanSilenceWarnings()
- {
- Version::$emitWarnings = false;
- Version::warn('testing!');
- Version::$emitWarnings = true;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/GuzzleTestCase.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/GuzzleTestCase.php
deleted file mode 100644
index d89c5f0..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/GuzzleTestCase.php
+++ /dev/null
@@ -1,235 +0,0 @@
-<?php
-
-namespace Guzzle\Tests;
-
-use Guzzle\Common\HasDispatcherInterface;
-use Guzzle\Common\Event;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Tests\Http\Message\HeaderComparison;
-use Guzzle\Plugin\Mock\MockPlugin;
-use Guzzle\Http\Client;
-use Guzzle\Service\Builder\ServiceBuilderInterface;
-use Guzzle\Service\Builder\ServiceBuilder;
-use Guzzle\Tests\Mock\MockObserver;
-use Guzzle\Tests\Http\Server;
-use RuntimeException;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Base testcase class for all Guzzle testcases.
- */
-abstract class GuzzleTestCase extends \PHPUnit_Framework_TestCase
-{
- protected static $mockBasePath;
- public static $serviceBuilder;
- public static $server;
-
- private $requests = array();
- public $mockObserver;
-
- /**
- * Get the global server object used throughout the unit tests of Guzzle
- *
- * @return Server
- */
- public static function getServer()
- {
- if (!self::$server) {
- self::$server = new Server();
- if (self::$server->isRunning()) {
- self::$server->flush();
- } else {
- self::$server->start();
- }
- }
-
- return self::$server;
- }
-
- /**
- * Set the service builder to use for tests
- *
- * @param ServiceBuilderInterface $builder Service builder
- */
- public static function setServiceBuilder(ServiceBuilderInterface $builder)
- {
- self::$serviceBuilder = $builder;
- }
-
- /**
- * Get a service builder object that can be used throughout the service tests
- *
- * @return ServiceBuilder
- */
- public static function getServiceBuilder()
- {
- if (!self::$serviceBuilder) {
- throw new RuntimeException('No service builder has been set via setServiceBuilder()');
- }
-
- return self::$serviceBuilder;
- }
-
- /**
- * Check if an event dispatcher has a subscriber
- *
- * @param HasDispatcherInterface $dispatcher
- * @param EventSubscriberInterface $subscriber
- *
- * @return bool
- */
- protected function hasSubscriber(HasDispatcherInterface $dispatcher, EventSubscriberInterface $subscriber)
- {
- $class = get_class($subscriber);
- $all = array_keys(call_user_func(array($class, 'getSubscribedEvents')));
-
- foreach ($all as $i => $event) {
- foreach ($dispatcher->getEventDispatcher()->getListeners($event) as $e) {
- if ($e[0] === $subscriber) {
- unset($all[$i]);
- break;
- }
- }
- }
-
- return count($all) == 0;
- }
-
- /**
- * Get a wildcard observer for an event dispatcher
- *
- * @param HasDispatcherInterface $hasDispatcher
- *
- * @return MockObserver
- */
- public function getWildcardObserver(HasDispatcherInterface $hasDispatcher)
- {
- $class = get_class($hasDispatcher);
- $o = new MockObserver();
- $events = call_user_func(array($class, 'getAllEvents'));
- foreach ($events as $event) {
- $hasDispatcher->getEventDispatcher()->addListener($event, array($o, 'update'));
- }
-
- return $o;
- }
-
- /**
- * Set the mock response base path
- *
- * @param string $path Path to mock response folder
- *
- * @return GuzzleTestCase
- */
- public static function setMockBasePath($path)
- {
- self::$mockBasePath = $path;
- }
-
- /**
- * Mark a request as being mocked
- *
- * @param RequestInterface $request
- *
- * @return self
- */
- public function addMockedRequest(RequestInterface $request)
- {
- $this->requests[] = $request;
-
- return $this;
- }
-
- /**
- * Get all of the mocked requests
- *
- * @return array
- */
- public function getMockedRequests()
- {
- return $this->requests;
- }
-
- /**
- * Get a mock response for a client by mock file name
- *
- * @param string $path Relative path to the mock response file
- *
- * @return Response
- */
- public function getMockResponse($path)
- {
- return $path instanceof Response
- ? $path
- : MockPlugin::getMockFile(self::$mockBasePath . DIRECTORY_SEPARATOR . $path);
- }
-
- /**
- * Set a mock response from a mock file on the next client request.
- *
- * This method assumes that mock response files are located under the
- * Command/Mock/ directory of the Service being tested
- * (e.g. Unfuddle/Command/Mock/). A mock response is added to the next
- * request sent by the client.
- *
- * @param Client $client Client object to modify
- * @param string $paths Path to files within the Mock folder of the service
- *
- * @return MockPlugin returns the created mock plugin
- */
- public function setMockResponse(Client $client, $paths)
- {
- $this->requests = array();
- $that = $this;
- $mock = new MockPlugin(null, true);
- $client->getEventDispatcher()->removeSubscriber($mock);
- $mock->getEventDispatcher()->addListener('mock.request', function(Event $event) use ($that) {
- $that->addMockedRequest($event['request']);
- });
-
- if ($paths instanceof Response) {
- // A single response instance has been specified, create an array with that instance
- // as the only element for the following loop to work as expected
- $paths = array($paths);
- }
-
- foreach ((array) $paths as $path) {
- $mock->addResponse($this->getMockResponse($path));
- }
-
- $client->getEventDispatcher()->addSubscriber($mock);
-
- return $mock;
- }
-
- /**
- * Compare HTTP headers and use special markup to filter values
- * A header prefixed with '!' means it must not exist
- * A header prefixed with '_' means it must be ignored
- * A header value of '*' means anything after the * will be ignored
- *
- * @param array $filteredHeaders Array of special headers
- * @param array $actualHeaders Array of headers to check against
- *
- * @return array|bool Returns an array of the differences or FALSE if none
- */
- public function compareHeaders($filteredHeaders, $actualHeaders)
- {
- $comparison = new HeaderComparison();
-
- return $comparison->compare($filteredHeaders, $actualHeaders);
- }
-
- /**
- * Case insensitive assertContains
- *
- * @param string $needle Search string
- * @param string $haystack Search this
- * @param string $message Optional failure message
- */
- public function assertContainsIns($needle, $haystack, $message = null)
- {
- $this->assertContains(strtolower($needle), strtolower($haystack), $message);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/AbstractEntityBodyDecoratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/AbstractEntityBodyDecoratorTest.php
deleted file mode 100644
index 20feaa8..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/AbstractEntityBodyDecoratorTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\EntityBody;
-
-/**
- * @covers Guzzle\Http\AbstractEntityBodyDecorator
- */
-class AbstractEntityBodyDecoratorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testDecoratesEntityBody()
- {
- $e = EntityBody::factory();
- $mock = $this->getMockForAbstractClass('Guzzle\Http\AbstractEntityBodyDecorator', array($e));
-
- $this->assertSame($e->getStream(), $mock->getStream());
- $this->assertSame($e->getContentLength(), $mock->getContentLength());
- $this->assertSame($e->getSize(), $mock->getSize());
- $this->assertSame($e->getContentMd5(), $mock->getContentMd5());
- $this->assertSame($e->getContentType(), $mock->getContentType());
- $this->assertSame($e->__toString(), $mock->__toString());
- $this->assertSame($e->getUri(), $mock->getUri());
- $this->assertSame($e->getStreamType(), $mock->getStreamType());
- $this->assertSame($e->getWrapper(), $mock->getWrapper());
- $this->assertSame($e->getWrapperData(), $mock->getWrapperData());
- $this->assertSame($e->isReadable(), $mock->isReadable());
- $this->assertSame($e->isWritable(), $mock->isWritable());
- $this->assertSame($e->isConsumed(), $mock->isConsumed());
- $this->assertSame($e->isLocal(), $mock->isLocal());
- $this->assertSame($e->isSeekable(), $mock->isSeekable());
- $this->assertSame($e->getContentEncoding(), $mock->getContentEncoding());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/CachingEntityBodyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/CachingEntityBodyTest.php
deleted file mode 100644
index e6e6cdb..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/CachingEntityBodyTest.php
+++ /dev/null
@@ -1,249 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\CachingEntityBody;
-
-/**
- * @covers Guzzle\Http\CachingEntityBody
- */
-class CachingEntityBodyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var CachingEntityBody */
- protected $body;
-
- /** @var EntityBody */
- protected $decorated;
-
- public function setUp()
- {
- $this->decorated = EntityBody::factory('testing');
- $this->body = new CachingEntityBody($this->decorated);
- }
-
- public function testUsesRemoteSizeIfPossible()
- {
- $body = EntityBody::factory('test');
- $caching = new CachingEntityBody($body);
- $this->assertEquals(4, $caching->getSize());
- $this->assertEquals(4, $caching->getContentLength());
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- * @expectedExceptionMessage does not support custom stream rewind
- */
- public function testDoesNotAllowRewindFunction()
- {
- $this->body->setRewindFunction(true);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- * @expectedExceptionMessage Cannot seek to byte 10
- */
- public function testCannotSeekPastWhatHasBeenRead()
- {
- $this->body->seek(10);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- * @expectedExceptionMessage supports only SEEK_SET and SEEK_CUR
- */
- public function testCannotUseSeekEnd()
- {
- $this->body->seek(2, SEEK_END);
- }
-
- public function testChangingUnderlyingStreamUpdatesSizeAndStream()
- {
- $size = filesize(__FILE__);
- $s = fopen(__FILE__, 'r');
- $this->body->setStream($s, $size);
- $this->assertEquals($size, $this->body->getSize());
- $this->assertEquals($size, $this->decorated->getSize());
- $this->assertSame($s, $this->body->getStream());
- $this->assertSame($s, $this->decorated->getStream());
- }
-
- public function testRewindUsesSeek()
- {
- $a = EntityBody::factory('foo');
- $d = $this->getMockBuilder('Guzzle\Http\CachingEntityBody')
- ->setMethods(array('seek'))
- ->setConstructorArgs(array($a))
- ->getMock();
- $d->expects($this->once())
- ->method('seek')
- ->with(0)
- ->will($this->returnValue(true));
- $d->rewind();
- }
-
- public function testCanSeekToReadBytes()
- {
- $this->assertEquals('te', $this->body->read(2));
- $this->body->seek(0);
- $this->assertEquals('test', $this->body->read(4));
- $this->assertEquals(4, $this->body->ftell());
- $this->body->seek(2);
- $this->assertEquals(2, $this->body->ftell());
- $this->body->seek(2, SEEK_CUR);
- $this->assertEquals(4, $this->body->ftell());
- $this->assertEquals('ing', $this->body->read(3));
- }
-
- public function testWritesToBufferStream()
- {
- $this->body->read(2);
- $this->body->write('hi');
- $this->body->rewind();
- $this->assertEquals('tehiing', (string) $this->body);
- }
-
- public function testReadLinesFromBothStreams()
- {
- $this->body->seek($this->body->ftell());
- $this->body->write("test\n123\nhello\n1234567890\n");
- $this->body->rewind();
- $this->assertEquals("test\n", $this->body->readLine(7));
- $this->assertEquals("123\n", $this->body->readLine(7));
- $this->assertEquals("hello\n", $this->body->readLine(7));
- $this->assertEquals("123456", $this->body->readLine(7));
- $this->assertEquals("7890\n", $this->body->readLine(7));
- // We overwrote the decorated stream, so no more data
- $this->assertEquals('', $this->body->readLine(7));
- }
-
- public function testSkipsOverwrittenBytes()
- {
- $decorated = EntityBody::factory(
- implode("\n", array_map(function ($n) {
- return str_pad($n, 4, '0', STR_PAD_LEFT);
- }, range(0, 25)))
- );
-
- $body = new CachingEntityBody($decorated);
-
- $this->assertEquals("0000\n", $body->readLine());
- $this->assertEquals("0001\n", $body->readLine());
- // Write over part of the body yet to be read, so skip some bytes
- $this->assertEquals(5, $body->write("TEST\n"));
- $this->assertEquals(5, $this->readAttribute($body, 'skipReadBytes'));
- // Read, which skips bytes, then reads
- $this->assertEquals("0003\n", $body->readLine());
- $this->assertEquals(0, $this->readAttribute($body, 'skipReadBytes'));
- $this->assertEquals("0004\n", $body->readLine());
- $this->assertEquals("0005\n", $body->readLine());
-
- // Overwrite part of the cached body (so don't skip any bytes)
- $body->seek(5);
- $this->assertEquals(5, $body->write("ABCD\n"));
- $this->assertEquals(0, $this->readAttribute($body, 'skipReadBytes'));
- $this->assertEquals("TEST\n", $body->readLine());
- $this->assertEquals("0003\n", $body->readLine());
- $this->assertEquals("0004\n", $body->readLine());
- $this->assertEquals("0005\n", $body->readLine());
- $this->assertEquals("0006\n", $body->readLine());
- $this->assertEquals(5, $body->write("1234\n"));
- $this->assertEquals(5, $this->readAttribute($body, 'skipReadBytes'));
-
- // Seek to 0 and ensure the overwritten bit is replaced
- $body->rewind();
- $this->assertEquals("0000\nABCD\nTEST\n0003\n0004\n0005\n0006\n1234\n0008\n0009\n", $body->read(50));
-
- // Ensure that casting it to a string does not include the bit that was overwritten
- $this->assertContains("0000\nABCD\nTEST\n0003\n0004\n0005\n0006\n1234\n0008\n0009\n", (string) $body);
- }
-
- public function testWrapsContentType()
- {
- $a = $this->getMockBuilder('Guzzle\Http\EntityBody')
- ->setMethods(array('getContentType'))
- ->setConstructorArgs(array(fopen(__FILE__, 'r')))
- ->getMock();
- $a->expects($this->once())
- ->method('getContentType')
- ->will($this->returnValue('foo'));
- $d = new CachingEntityBody($a);
- $this->assertEquals('foo', $d->getContentType());
- }
-
- public function testWrapsContentEncoding()
- {
- $a = $this->getMockBuilder('Guzzle\Http\EntityBody')
- ->setMethods(array('getContentEncoding'))
- ->setConstructorArgs(array(fopen(__FILE__, 'r')))
- ->getMock();
- $a->expects($this->once())
- ->method('getContentEncoding')
- ->will($this->returnValue('foo'));
- $d = new CachingEntityBody($a);
- $this->assertEquals('foo', $d->getContentEncoding());
- }
-
- public function testWrapsMetadata()
- {
- $a = $this->getMockBuilder('Guzzle\Http\EntityBody')
- ->setMethods(array('getMetadata', 'getWrapper', 'getWrapperData', 'getStreamType', 'getUri'))
- ->setConstructorArgs(array(fopen(__FILE__, 'r')))
- ->getMock();
-
- $a->expects($this->once())
- ->method('getMetadata')
- ->will($this->returnValue(array()));
- // Called twice for getWrapper and getWrapperData
- $a->expects($this->exactly(1))
- ->method('getWrapper')
- ->will($this->returnValue('wrapper'));
- $a->expects($this->once())
- ->method('getWrapperData')
- ->will($this->returnValue(array()));
- $a->expects($this->once())
- ->method('getStreamType')
- ->will($this->returnValue('baz'));
- $a->expects($this->once())
- ->method('getUri')
- ->will($this->returnValue('path/to/foo'));
-
- $d = new CachingEntityBody($a);
- $this->assertEquals(array(), $d->getMetaData());
- $this->assertEquals('wrapper', $d->getWrapper());
- $this->assertEquals(array(), $d->getWrapperData());
- $this->assertEquals('baz', $d->getStreamType());
- $this->assertEquals('path/to/foo', $d->getUri());
- }
-
- public function testWrapsCustomData()
- {
- $a = $this->getMockBuilder('Guzzle\Http\EntityBody')
- ->setMethods(array('getCustomData', 'setCustomData'))
- ->setConstructorArgs(array(fopen(__FILE__, 'r')))
- ->getMock();
-
- $a->expects($this->exactly(1))
- ->method('getCustomData')
- ->with('foo')
- ->will($this->returnValue('bar'));
-
- $a->expects($this->exactly(1))
- ->method('setCustomData')
- ->with('foo', 'bar')
- ->will($this->returnSelf());
-
- $d = new CachingEntityBody($a);
- $this->assertSame($d, $d->setCustomData('foo', 'bar'));
- $this->assertEquals('bar', $d->getCustomData('foo'));
- }
-
- public function testClosesBothStreams()
- {
- $s = fopen('php://temp', 'r');
- $a = EntityBody::factory($s);
- $d = new CachingEntityBody($a);
- $d->close();
- $this->assertFalse(is_resource($s));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ClientTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ClientTest.php
deleted file mode 100644
index 4a91a18..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ClientTest.php
+++ /dev/null
@@ -1,601 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Common\Collection;
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Parser\UriTemplate\UriTemplate;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Log\LogPlugin;
-use Guzzle\Plugin\Mock\MockPlugin;
-use Guzzle\Http\Curl\CurlMulti;
-use Guzzle\Http\Client;
-use Guzzle\Common\Version;
-
-/**
- * @group server
- * @covers Guzzle\Http\Client
- */
-class ClientTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @return LogPlugin
- */
- private function getLogPlugin()
- {
- return new LogPlugin(new ClosureLogAdapter(
- function($message, $priority, $extras = null) {
- echo $message . ' ' . $priority . ' ' . implode(' - ', (array) $extras) . "\n";
- }
- ));
- }
-
- public function testAcceptsConfig()
- {
- $client = new Client('http://www.google.com/');
- $this->assertEquals('http://www.google.com/', $client->getBaseUrl());
- $this->assertSame($client, $client->setConfig(array(
- 'test' => '123'
- )));
- $this->assertEquals(array('test' => '123'), $client->getConfig()->getAll());
- $this->assertEquals('123', $client->getConfig('test'));
- $this->assertSame($client, $client->setBaseUrl('http://www.test.com/{test}'));
- $this->assertEquals('http://www.test.com/123', $client->getBaseUrl());
- $this->assertEquals('http://www.test.com/{test}', $client->getBaseUrl(false));
-
- try {
- $client->setConfig(false);
- } catch (\InvalidArgumentException $e) {
- }
- }
-
- public function testDescribesEvents()
- {
- $this->assertEquals(array('client.create_request'), Client::getAllEvents());
- }
-
- public function testConstructorCanAcceptConfig()
- {
- $client = new Client('http://www.test.com/', array(
- 'data' => '123'
- ));
- $this->assertEquals('123', $client->getConfig('data'));
- }
-
- public function testCanUseCollectionAsConfig()
- {
- $client = new Client('http://www.google.com/');
- $client->setConfig(new Collection(array(
- 'api' => 'v1',
- 'key' => 'value',
- 'base_url' => 'http://www.google.com/'
- )));
- $this->assertEquals('v1', $client->getConfig('api'));
- }
-
- public function testExpandsUriTemplatesUsingConfig()
- {
- $client = new Client('http://www.google.com/');
- $client->setConfig(array('api' => 'v1', 'key' => 'value', 'foo' => 'bar'));
- $ref = new \ReflectionMethod($client, 'expandTemplate');
- $ref->setAccessible(true);
- $this->assertEquals('Testing...api/v1/key/value', $ref->invoke($client, 'Testing...api/{api}/key/{key}'));
- }
-
- public function testClientAttachersObserversToRequests()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
-
- $client = new Client($this->getServer()->getUrl());
- $logPlugin = $this->getLogPlugin();
- $client->getEventDispatcher()->addSubscriber($logPlugin);
-
- // Get a request from the client and ensure the the observer was
- // attached to the new request
- $request = $client->createRequest();
- $this->assertTrue($this->hasSubscriber($request, $logPlugin));
- }
-
- public function testClientReturnsValidBaseUrls()
- {
- $client = new Client('http://www.{foo}.{data}/', array(
- 'data' => '123',
- 'foo' => 'bar'
- ));
- $this->assertEquals('http://www.bar.123/', $client->getBaseUrl());
- $client->setBaseUrl('http://www.google.com/');
- $this->assertEquals('http://www.google.com/', $client->getBaseUrl());
- }
-
- public function testClientAddsCurlOptionsToRequests()
- {
- $client = new Client('http://www.test.com/', array(
- 'api' => 'v1',
- // Adds the option using the curl values
- 'curl.options' => array(
- 'CURLOPT_HTTPAUTH' => 'CURLAUTH_DIGEST',
- 'abc' => 'foo',
- 'blacklist' => 'abc',
- 'debug' => true
- )
- ));
-
- $request = $client->createRequest();
- $options = $request->getCurlOptions();
- $this->assertEquals(CURLAUTH_DIGEST, $options->get(CURLOPT_HTTPAUTH));
- $this->assertEquals('foo', $options->get('abc'));
- $this->assertEquals('abc', $options->get('blacklist'));
- }
-
- public function testClientAllowsFineGrainedSslControlButIsSecureByDefault()
- {
- $client = new Client('https://www.secure.com/');
-
- // secure by default
- $request = $client->createRequest();
- $options = $request->getCurlOptions();
- $this->assertTrue($options->get(CURLOPT_SSL_VERIFYPEER));
-
- // set a capath if you prefer
- $client = new Client('https://www.secure.com/');
- $client->setSslVerification(__DIR__);
- $request = $client->createRequest();
- $options = $request->getCurlOptions();
- $this->assertSame(__DIR__, $options->get(CURLOPT_CAPATH));
- }
-
- public function testConfigSettingsControlSslConfiguration()
- {
- // Use the default ca certs on the system
- $client = new Client('https://www.secure.com/', array('ssl.certificate_authority' => 'system'));
- $this->assertNull($client->getConfig('curl.options'));
- // Can set the cacert value as well
- $client = new Client('https://www.secure.com/', array('ssl.certificate_authority' => false));
- $options = $client->getConfig('curl.options');
- $this->assertArrayNotHasKey(CURLOPT_CAINFO, $options);
- $this->assertSame(false, $options[CURLOPT_SSL_VERIFYPEER]);
- $this->assertSame(0, $options[CURLOPT_SSL_VERIFYHOST]);
- }
-
- public function testClientAllowsUnsafeOperationIfRequested()
- {
- // be really unsafe if you insist
- $client = new Client('https://www.secure.com/', array(
- 'api' => 'v1'
- ));
-
- $client->setSslVerification(false);
- $request = $client->createRequest();
- $options = $request->getCurlOptions();
- $this->assertFalse($options->get(CURLOPT_SSL_VERIFYPEER));
- $this->assertNull($options->get(CURLOPT_CAINFO));
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- */
- public function testThrowsExceptionForInvalidCertificate()
- {
- $client = new Client('https://www.secure.com/');
- $client->setSslVerification('/path/to/missing/file');
- }
-
- public function testClientAllowsSettingSpecificSslCaInfo()
- {
- // set a file other than the provided cacert.pem
- $client = new Client('https://www.secure.com/', array(
- 'api' => 'v1'
- ));
-
- $client->setSslVerification(__FILE__);
- $request = $client->createRequest();
- $options = $request->getCurlOptions();
- $this->assertSame(__FILE__, $options->get(CURLOPT_CAINFO));
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testClientPreventsInadvertentInsecureVerifyHostSetting()
- {
- // set a file other than the provided cacert.pem
- $client = new Client('https://www.secure.com/', array(
- 'api' => 'v1'
- ));
- $client->setSslVerification(__FILE__, true, true);
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testClientPreventsInvalidVerifyPeerSetting()
- {
- // set a file other than the provided cacert.pem
- $client = new Client('https://www.secure.com/', array(
- 'api' => 'v1'
- ));
- $client->setSslVerification(__FILE__, 'yes');
- }
-
- public function testClientAddsParamsToRequests()
- {
- Version::$emitWarnings = false;
- $client = new Client('http://www.example.com', array(
- 'api' => 'v1',
- 'request.params' => array(
- 'foo' => 'bar',
- 'baz' => 'jar'
- )
- ));
- $request = $client->createRequest();
- $this->assertEquals('bar', $request->getParams()->get('foo'));
- $this->assertEquals('jar', $request->getParams()->get('baz'));
- Version::$emitWarnings = true;
- }
-
- public function urlProvider()
- {
- $u = $this->getServer()->getUrl() . 'base/';
- $u2 = $this->getServer()->getUrl() . 'base?z=1';
- return array(
- array($u, '', $u),
- array($u, 'relative/path/to/resource', $u . 'relative/path/to/resource'),
- array($u, 'relative/path/to/resource?a=b&c=d', $u . 'relative/path/to/resource?a=b&c=d'),
- array($u, '/absolute/path/to/resource', $this->getServer()->getUrl() . 'absolute/path/to/resource'),
- array($u, '/absolute/path/to/resource?a=b&c=d', $this->getServer()->getUrl() . 'absolute/path/to/resource?a=b&c=d'),
- array($u2, '/absolute/path/to/resource?a=b&c=d', $this->getServer()->getUrl() . 'absolute/path/to/resource?a=b&c=d&z=1'),
- array($u2, 'relative/path/to/resource', $this->getServer()->getUrl() . 'base/relative/path/to/resource?z=1'),
- array($u2, 'relative/path/to/resource?another=query', $this->getServer()->getUrl() . 'base/relative/path/to/resource?another=query&z=1')
- );
- }
-
- /**
- * @dataProvider urlProvider
- */
- public function testBuildsRelativeUrls($baseUrl, $url, $result)
- {
- $client = new Client($baseUrl);
- $this->assertEquals($result, $client->get($url)->getUrl());
- }
-
- public function testAllowsConfigsToBeChangedAndInjectedInBaseUrl()
- {
- $client = new Client('http://{a}/{b}');
- $this->assertEquals('http:///', $client->getBaseUrl());
- $this->assertEquals('http://{a}/{b}', $client->getBaseUrl(false));
- $client->setConfig(array(
- 'a' => 'test.com',
- 'b' => 'index.html'
- ));
- $this->assertEquals('http://test.com/index.html', $client->getBaseUrl());
- }
-
- public function testCreatesRequestsWithDefaultValues()
- {
- $client = new Client($this->getServer()->getUrl() . 'base');
-
- // Create a GET request
- $request = $client->createRequest();
- $this->assertEquals('GET', $request->getMethod());
- $this->assertEquals($client->getBaseUrl(), $request->getUrl());
-
- // Create a DELETE request
- $request = $client->createRequest('DELETE');
- $this->assertEquals('DELETE', $request->getMethod());
- $this->assertEquals($client->getBaseUrl(), $request->getUrl());
-
- // Create a HEAD request with custom headers
- $request = $client->createRequest('HEAD', 'http://www.test.com/');
- $this->assertEquals('HEAD', $request->getMethod());
- $this->assertEquals('http://www.test.com/', $request->getUrl());
-
- // Create a PUT request
- $request = $client->createRequest('PUT');
- $this->assertEquals('PUT', $request->getMethod());
-
- // Create a PUT request with injected config
- $client->getConfig()->set('a', 1)->set('b', 2);
- $request = $client->createRequest('PUT', '/path/{a}?q={b}');
- $this->assertEquals($request->getUrl(), $this->getServer()->getUrl() . 'path/1?q=2');
- }
-
- public function testClientHasHelperMethodsForCreatingRequests()
- {
- $url = $this->getServer()->getUrl();
- $client = new Client($url . 'base');
- $this->assertEquals('GET', $client->get()->getMethod());
- $this->assertEquals('PUT', $client->put()->getMethod());
- $this->assertEquals('POST', $client->post()->getMethod());
- $this->assertEquals('HEAD', $client->head()->getMethod());
- $this->assertEquals('DELETE', $client->delete()->getMethod());
- $this->assertEquals('OPTIONS', $client->options()->getMethod());
- $this->assertEquals('PATCH', $client->patch()->getMethod());
- $this->assertEquals($url . 'base/abc', $client->get('abc')->getUrl());
- $this->assertEquals($url . 'zxy', $client->put('/zxy')->getUrl());
- $this->assertEquals($url . 'zxy?a=b', $client->post('/zxy?a=b')->getUrl());
- $this->assertEquals($url . 'base?a=b', $client->head('?a=b')->getUrl());
- $this->assertEquals($url . 'base?a=b', $client->delete('/base?a=b')->getUrl());
- }
-
- public function testClientInjectsConfigsIntoUrls()
- {
- $client = new Client('http://www.test.com/api/v1', array(
- 'test' => '123'
- ));
- $request = $client->get('relative/{test}');
- $this->assertEquals('http://www.test.com/api/v1/relative/123', $request->getUrl());
- }
-
- public function testAllowsEmptyBaseUrl()
- {
- $client = new Client();
- $request = $client->get('http://www.google.com/');
- $this->assertEquals('http://www.google.com/', $request->getUrl());
- $request->setResponse(new Response(200), true);
- $request->send();
- }
-
- public function testAllowsCustomCurlMultiObjects()
- {
- $mock = $this->getMock('Guzzle\\Http\\Curl\\CurlMulti', array('add', 'send'));
- $mock->expects($this->once())
- ->method('add')
- ->will($this->returnSelf());
- $mock->expects($this->once())
- ->method('send')
- ->will($this->returnSelf());
-
- $client = new Client();
- $client->setCurlMulti($mock);
-
- $request = $client->get();
- $request->setResponse(new Response(200), true);
- $client->send($request);
- }
-
- public function testClientSendsMultipleRequests()
- {
- $client = new Client($this->getServer()->getUrl());
- $mock = new MockPlugin();
-
- $responses = array(
- new Response(200),
- new Response(201),
- new Response(202)
- );
-
- $mock->addResponse($responses[0]);
- $mock->addResponse($responses[1]);
- $mock->addResponse($responses[2]);
-
- $client->getEventDispatcher()->addSubscriber($mock);
-
- $requests = array(
- $client->get(),
- $client->head(),
- $client->put('/', null, 'test')
- );
-
- $this->assertEquals(array(
- $responses[0],
- $responses[1],
- $responses[2]
- ), $client->send($requests));
- }
-
- public function testClientSendsSingleRequest()
- {
- $client = new Client($this->getServer()->getUrl());
- $mock = new MockPlugin();
- $response = new Response(200);
- $mock->addResponse($response);
- $client->getEventDispatcher()->addSubscriber($mock);
- $this->assertEquals($response, $client->send($client->get()));
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\BadResponseException
- */
- public function testClientThrowsExceptionForSingleRequest()
- {
- $client = new Client($this->getServer()->getUrl());
- $mock = new MockPlugin();
- $response = new Response(404);
- $mock->addResponse($response);
- $client->getEventDispatcher()->addSubscriber($mock);
- $client->send($client->get());
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\ExceptionCollection
- */
- public function testClientThrowsExceptionForMultipleRequests()
- {
- $client = new Client($this->getServer()->getUrl());
- $mock = new MockPlugin();
- $mock->addResponse(new Response(200));
- $mock->addResponse(new Response(404));
- $client->getEventDispatcher()->addSubscriber($mock);
- $client->send(array($client->get(), $client->head()));
- }
-
- public function testQueryStringsAreNotDoubleEncoded()
- {
- $client = new Client('http://test.com', array(
- 'path' => array('foo', 'bar'),
- 'query' => 'hi there',
- 'data' => array(
- 'test' => 'a&b'
- )
- ));
-
- $request = $client->get('{/path*}{?query,data*}');
- $this->assertEquals('http://test.com/foo/bar?query=hi%20there&test=a%26b', $request->getUrl());
- $this->assertEquals('hi there', $request->getQuery()->get('query'));
- $this->assertEquals('a&b', $request->getQuery()->get('test'));
- }
-
- public function testQueryStringsAreNotDoubleEncodedUsingAbsolutePaths()
- {
- $client = new Client('http://test.com', array(
- 'path' => array('foo', 'bar'),
- 'query' => 'hi there',
- ));
- $request = $client->get('http://test.com{?query}');
- $this->assertEquals('http://test.com?query=hi%20there', $request->getUrl());
- $this->assertEquals('hi there', $request->getQuery()->get('query'));
- }
-
- public function testAllowsUriTemplateInjection()
- {
- $client = new Client('http://test.com');
- $ref = new \ReflectionMethod($client, 'getUriTemplate');
- $ref->setAccessible(true);
- $a = $ref->invoke($client);
- $this->assertSame($a, $ref->invoke($client));
- $client->setUriTemplate(new UriTemplate());
- $this->assertNotSame($a, $ref->invoke($client));
- }
-
- public function testAllowsCustomVariablesWhenExpandingTemplates()
- {
- $client = new Client('http://test.com', array('test' => 'hi'));
- $ref = new \ReflectionMethod($client, 'expandTemplate');
- $ref->setAccessible(true);
- $uri = $ref->invoke($client, 'http://{test}{?query*}', array('query' => array('han' => 'solo')));
- $this->assertEquals('http://hi?han=solo', $uri);
- }
-
- public function testUriArrayAllowsCustomTemplateVariables()
- {
- $client = new Client();
- $vars = array(
- 'var' => 'hi'
- );
- $this->assertEquals('/hi', (string) $client->createRequest('GET', array('/{var}', $vars))->getUrl());
- $this->assertEquals('/hi', (string) $client->get(array('/{var}', $vars))->getUrl());
- $this->assertEquals('/hi', (string) $client->put(array('/{var}', $vars))->getUrl());
- $this->assertEquals('/hi', (string) $client->post(array('/{var}', $vars))->getUrl());
- $this->assertEquals('/hi', (string) $client->head(array('/{var}', $vars))->getUrl());
- $this->assertEquals('/hi', (string) $client->options(array('/{var}', $vars))->getUrl());
- }
-
- public function testAllowsDefaultHeaders()
- {
- Version::$emitWarnings = false;
- $default = array('X-Test' => 'Hi!');
- $other = array('X-Other' => 'Foo');
-
- $client = new Client();
- $client->setDefaultHeaders($default);
- $this->assertEquals($default, $client->getDefaultHeaders()->getAll());
- $client->setDefaultHeaders(new Collection($default));
- $this->assertEquals($default, $client->getDefaultHeaders()->getAll());
-
- $request = $client->createRequest('GET', null, $other);
- $this->assertEquals('Hi!', $request->getHeader('X-Test'));
- $this->assertEquals('Foo', $request->getHeader('X-Other'));
-
- $request = $client->createRequest('GET', null, new Collection($other));
- $this->assertEquals('Hi!', $request->getHeader('X-Test'));
- $this->assertEquals('Foo', $request->getHeader('X-Other'));
-
- $request = $client->createRequest('GET');
- $this->assertEquals('Hi!', $request->getHeader('X-Test'));
- Version::$emitWarnings = true;
- }
-
- public function testDontReuseCurlMulti()
- {
- $client1 = new Client();
- $client2 = new Client();
- $this->assertNotSame($client1->getCurlMulti(), $client2->getCurlMulti());
- }
-
- public function testGetDefaultUserAgent()
- {
- $client = new Client();
- $agent = $this->readAttribute($client, 'userAgent');
- $version = curl_version();
- $testAgent = sprintf('Guzzle/%s curl/%s PHP/%s', Version::VERSION, $version['version'], PHP_VERSION);
- $this->assertEquals($agent, $testAgent);
-
- $client->setUserAgent('foo');
- $this->assertEquals('foo', $this->readAttribute($client, 'userAgent'));
- }
-
- public function testOverwritesUserAgent()
- {
- $client = new Client();
- $request = $client->createRequest('GET', 'http://www.foo.com', array('User-agent' => 'foo'));
- $this->assertEquals('foo', (string) $request->getHeader('User-Agent'));
- }
-
- public function testUsesDefaultUserAgent()
- {
- $client = new Client();
- $request = $client->createRequest('GET', 'http://www.foo.com');
- $this->assertContains('Guzzle/', (string) $request->getHeader('User-Agent'));
- }
-
- public function testCanSetDefaultRequestOptions()
- {
- $client = new Client();
- $client->getConfig()->set('request.options', array(
- 'query' => array('test' => '123', 'other' => 'abc'),
- 'headers' => array('Foo' => 'Bar', 'Baz' => 'Bam')
- ));
- $request = $client->createRequest('GET', 'http://www.foo.com?test=hello', array('Foo' => 'Test'));
- // Explicit options on a request should overrule default options
- $this->assertEquals('Test', (string) $request->getHeader('Foo'));
- $this->assertEquals('hello', $request->getQuery()->get('test'));
- // Default options should still be set
- $this->assertEquals('abc', $request->getQuery()->get('other'));
- $this->assertEquals('Bam', (string) $request->getHeader('Baz'));
- }
-
- public function testCanSetSetOptionsOnRequests()
- {
- $client = new Client();
- $request = $client->createRequest('GET', 'http://www.foo.com?test=hello', array('Foo' => 'Test'), null, array(
- 'cookies' => array('michael' => 'test')
- ));
- $this->assertEquals('test', $request->getCookie('michael'));
- }
-
- public function testHasDefaultOptionsHelperMethods()
- {
- $client = new Client();
- // With path
- $client->setDefaultOption('headers/foo', 'bar');
- $this->assertEquals('bar', $client->getDefaultOption('headers/foo'));
- // With simple key
- $client->setDefaultOption('allow_redirects', false);
- $this->assertFalse($client->getDefaultOption('allow_redirects'));
-
- $this->assertEquals(array(
- 'headers' => array('foo' => 'bar'),
- 'allow_redirects' => false
- ), $client->getConfig('request.options'));
-
- $request = $client->get('/');
- $this->assertEquals('bar', $request->getHeader('foo'));
- }
-
- public function testHeadCanUseOptions()
- {
- $client = new Client();
- $head = $client->head('http://www.foo.com', array(), array('query' => array('foo' => 'bar')));
- $this->assertEquals('bar', $head->getQuery()->get('foo'));
- }
-
- public function testCanSetRelativeUrlStartingWithHttp()
- {
- $client = new Client('http://www.foo.com');
- $this->assertEquals(
- 'http://www.foo.com/httpfoo',
- $client->createRequest('GET', 'httpfoo')->getUrl()
- );
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlHandleTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlHandleTest.php
deleted file mode 100644
index 5bf28de..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlHandleTest.php
+++ /dev/null
@@ -1,947 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Curl;
-
-use Guzzle\Common\Collection;
-use Guzzle\Common\Event;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\QueryString;
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Curl\CurlHandle;
-
-/**
- * @group server
- * @covers Guzzle\Http\Curl\CurlHandle
- */
-class CurlHandleTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public $requestHandle;
-
- protected function updateForHandle(RequestInterface $request)
- {
- $that = $this;
- $request->getEventDispatcher()->addListener('request.sent', function (Event $e) use ($that) {
- $that->requestHandle = $e['handle'];
- });
-
- return $request;
- }
-
- public function setUp()
- {
- $this->requestHandle = null;
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testConstructorExpectsCurlResource()
- {
- $h = new CurlHandle(false, array());
- }
-
- public function testConstructorExpectsProperOptions()
- {
- $h = curl_init($this->getServer()->getUrl());
- try {
- $ha = new CurlHandle($h, false);
- $this->fail('Expected InvalidArgumentException');
- } catch (\InvalidArgumentException $e) {
- }
-
- $ha = new CurlHandle($h, array(
- CURLOPT_URL => $this->getServer()->getUrl()
- ));
- $this->assertEquals($this->getServer()->getUrl(), $ha->getOptions()->get(CURLOPT_URL));
-
- $ha = new CurlHandle($h, new Collection(array(
- CURLOPT_URL => $this->getServer()->getUrl()
- )));
- $this->assertEquals($this->getServer()->getUrl(), $ha->getOptions()->get(CURLOPT_URL));
- }
-
- public function testConstructorInitializesObject()
- {
- $handle = curl_init($this->getServer()->getUrl());
- $h = new CurlHandle($handle, array(
- CURLOPT_URL => $this->getServer()->getUrl()
- ));
- $this->assertSame($handle, $h->getHandle());
- $this->assertInstanceOf('Guzzle\\Http\\Url', $h->getUrl());
- $this->assertEquals($this->getServer()->getUrl(), (string) $h->getUrl());
- $this->assertEquals($this->getServer()->getUrl(), $h->getOptions()->get(CURLOPT_URL));
- }
-
- public function testStoresStdErr()
- {
- $request = RequestFactory::getInstance()->create('GET', 'http://test.com');
- $request->getCurlOptions()->set('debug', true);
- $h = CurlHandle::factory($request);
- $this->assertEquals($h->getStderr(true), $h->getOptions()->get(CURLOPT_STDERR));
- $this->assertInternalType('resource', $h->getStderr(true));
- $this->assertInternalType('string', $h->getStderr(false));
- $r = $h->getStderr(true);
- fwrite($r, 'test');
- $this->assertEquals('test', $h->getStderr(false));
- }
-
- public function testStoresCurlErrorNumber()
- {
- $h = new CurlHandle(curl_init('http://test.com'), array(CURLOPT_URL => 'http://test.com'));
- $this->assertEquals(CURLE_OK, $h->getErrorNo());
- $h->setErrorNo(CURLE_OPERATION_TIMEOUTED);
- $this->assertEquals(CURLE_OPERATION_TIMEOUTED, $h->getErrorNo());
- }
-
- public function testAccountsForMissingStdErr()
- {
- $handle = curl_init('http://www.test.com/');
- $h = new CurlHandle($handle, array(
- CURLOPT_URL => 'http://www.test.com/'
- ));
- $this->assertNull($h->getStderr(false));
- }
-
- public function testDeterminesIfResourceIsAvailable()
- {
- $handle = curl_init($this->getServer()->getUrl());
- $h = new CurlHandle($handle, array());
- $this->assertTrue($h->isAvailable());
-
- // Mess it up by closing the handle
- curl_close($handle);
- $this->assertFalse($h->isAvailable());
-
- // Mess it up by unsetting the handle
- $handle = null;
- $this->assertFalse($h->isAvailable());
- }
-
- public function testWrapsErrorsAndInfo()
- {
- if (!defined('CURLOPT_TIMEOUT_MS')) {
- $this->markTestSkipped('Update curl');
- }
-
- $settings = array(
- CURLOPT_PORT => 123,
- CURLOPT_CONNECTTIMEOUT_MS => 1,
- CURLOPT_TIMEOUT_MS => 1
- );
-
- $handle = curl_init($this->getServer()->getUrl());
- curl_setopt_array($handle, $settings);
- $h = new CurlHandle($handle, $settings);
- @curl_exec($handle);
-
- $errors = array(
- "couldn't connect to host",
- 'timeout was reached',
- 'connection time-out',
- 'connect() timed out!',
- 'failed connect to 127.0.0.1:123; connection refused',
- 'failed to connect to 127.0.0.1 port 123: connection refused'
- );
- $this->assertTrue(in_array(strtolower($h->getError()), $errors), $h->getError() . ' was not the error');
-
- $this->assertTrue($h->getErrorNo() > 0);
-
- $this->assertEquals($this->getServer()->getUrl(), $h->getInfo(CURLINFO_EFFECTIVE_URL));
- $this->assertInternalType('array', $h->getInfo());
-
- curl_close($handle);
- $this->assertEquals(null, $h->getInfo('url'));
- }
-
- public function testGetInfoWithoutDebugMode()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get($this->getServer()->getUrl());
- $response = $request->send();
-
- $info = $response->getInfo();
- $this->assertFalse(empty($info));
- $this->assertEquals($this->getServer()->getUrl(), $info['url']);
- }
-
- public function testWrapsCurlOptions()
- {
- $handle = curl_init($this->getServer()->getUrl());
- $h = new CurlHandle($handle, array(
- CURLOPT_AUTOREFERER => true,
- CURLOPT_BUFFERSIZE => 1024
- ));
-
- $this->assertEquals(true, $h->getOptions()->get(CURLOPT_AUTOREFERER));
- $this->assertEquals(1024, $h->getOptions()->get(CURLOPT_BUFFERSIZE));
- }
-
- /**
- * Data provider for factory tests
- *
- * @return array
- */
- public function dataProvider()
- {
- $testFile = __DIR__ . '/../../../../../phpunit.xml.dist';
-
- $postBody = new QueryString(array('file' => '@' . $testFile));
- $qs = new QueryString(array(
- 'x' => 'y',
- 'z' => 'a'
- ));
-
- $client = new Client();
- $userAgent = $client->getDefaultUserAgent();
- $auth = base64_encode('michael:123');
- $testFileSize = filesize($testFile);
-
- $tests = array(
- // Send a regular GET
- array('GET', 'http://www.google.com/', null, null, array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_HTTPHEADER => array('Accept:', 'Host: www.google.com', 'User-Agent: ' . $userAgent),
- )),
- // Test that custom request methods can be used
- array('TRACE', 'http://www.google.com/', null, null, array(
- CURLOPT_CUSTOMREQUEST => 'TRACE'
- )),
- // Send a GET using a port
- array('GET', 'http://127.0.0.1:8080', null, null, array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_PORT => 8080,
- CURLOPT_HTTPHEADER => array('Accept:', 'Host: 127.0.0.1:8080', 'User-Agent: ' . $userAgent),
- )),
- // Send a HEAD request
- array('HEAD', 'http://www.google.com/', null, null, array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_HTTPHEADER => array('Accept:', 'Host: www.google.com', 'User-Agent: ' . $userAgent),
- CURLOPT_NOBODY => 1
- )),
- // Send a GET using basic auth
- array('GET', 'https://michael:123@127.0.0.1/index.html?q=2', null, null, array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_HTTPHEADER => array(
- 'Accept:',
- 'Host: 127.0.0.1',
- 'Authorization: Basic ' . $auth,
- 'User-Agent: ' . $userAgent
- ),
- CURLOPT_PORT => 443
- )),
- // Send a GET request with custom headers
- array('GET', 'http://127.0.0.1:8124/', array(
- 'x-test-data' => 'Guzzle'
- ), null, array(
- CURLOPT_PORT => 8124,
- CURLOPT_HTTPHEADER => array(
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'x-test-data: Guzzle',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'x-test-data' => 'Guzzle'
- )),
- // Send a POST using a query string
- array('POST', 'http://127.0.0.1:8124/post.php', null, $qs, array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_POSTFIELDS => 'x=y&z=a',
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Length' => '7',
- '!Expect' => null,
- 'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8',
- '!Transfer-Encoding' => null
- )),
- // Send a PUT using raw data
- array('PUT', 'http://127.0.0.1:8124/put.php', null, EntityBody::factory(fopen($testFile, 'r+')), array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_READFUNCTION => 'callback',
- CURLOPT_INFILESIZE => filesize($testFile),
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- '!Expect' => null,
- 'Content-Length' => $testFileSize,
- '!Transfer-Encoding' => null
- )),
- // Send a POST request using an array of fields
- array('POST', 'http://127.0.0.1:8124/post.php', null, array(
- 'x' => 'y',
- 'a' => 'b'
- ), array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_POST => 1,
- CURLOPT_POSTFIELDS => 'x=y&a=b',
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Length' => '7',
- '!Expect' => null,
- 'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8',
- '!Transfer-Encoding' => null
- )),
- // Send a POST request with raw POST data and a custom content-type
- array('POST', 'http://127.0.0.1:8124/post.php', array(
- 'Content-Type' => 'application/json'
- ), '{"hi":"there"}', array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_UPLOAD => true,
- CURLOPT_INFILESIZE => 14,
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'Content-Type: application/json',
- 'User-Agent: ' . $userAgent
- ),
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Type' => 'application/json',
- '!Expect' => null,
- 'Content-Length' => '14',
- '!Transfer-Encoding' => null
- )),
- // Send a POST request with raw POST data, a custom content-type, and use chunked encoding
- array('POST', 'http://127.0.0.1:8124/post.php', array(
- 'Content-Type' => 'application/json',
- 'Transfer-Encoding' => 'chunked'
- ), '{"hi":"there"}', array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_UPLOAD => true,
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'Transfer-Encoding: chunked',
- 'Content-Type: application/json',
- 'User-Agent: ' . $userAgent
- ),
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Type' => 'application/json',
- '!Expect' => null,
- 'Transfer-Encoding' => 'chunked',
- '!Content-Length' => ''
- )),
- // Send a POST request with no body
- array('POST', 'http://127.0.0.1:8124/post.php', null, '', array(
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Length' => '0',
- '!Transfer-Encoding' => null
- )),
- // Send a POST request with empty post fields
- array('POST', 'http://127.0.0.1:8124/post.php', null, array(), array(
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Length' => '0',
- '!Transfer-Encoding' => null
- )),
- // Send a PATCH request
- array('PATCH', 'http://127.0.0.1:8124/patch.php', null, 'body', array(
- CURLOPT_INFILESIZE => 4,
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'User-Agent: ' . $userAgent
- )
- )),
- // Send a DELETE request with a body
- array('DELETE', 'http://127.0.0.1:8124/delete.php', null, 'body', array(
- CURLOPT_CUSTOMREQUEST => 'DELETE',
- CURLOPT_INFILESIZE => 4,
- CURLOPT_HTTPHEADER => array (
- 'Expect:',
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Length' => '4',
- '!Expect' => null,
- '!Transfer-Encoding' => null
- )),
-
- /**
- * Send a request with empty path and a fragment - the fragment must be
- * stripped out before sending it to curl
- *
- * @issue 453
- * @link https://github.com/guzzle/guzzle/issues/453
- */
- array('GET', 'http://www.google.com#head', null, null, array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_HTTPHEADER => array('Accept:', 'Host: www.google.com', 'User-Agent: ' . $userAgent),
- )),
- );
-
- $postTest = array('POST', 'http://127.0.0.1:8124/post.php', null, $postBody, array(
- CURLOPT_RETURNTRANSFER => 0,
- CURLOPT_HEADER => 0,
- CURLOPT_CONNECTTIMEOUT => 150,
- CURLOPT_WRITEFUNCTION => 'callback',
- CURLOPT_HEADERFUNCTION => 'callback',
- CURLOPT_POST => 1,
- CURLOPT_POSTFIELDS => array(
- 'file' => '@' . $testFile . ';filename=phpunit.xml.dist;type=application/octet-stream'
- ),
- CURLOPT_HTTPHEADER => array (
- 'Accept:',
- 'Host: 127.0.0.1:8124',
- 'Content-Type: multipart/form-data',
- 'Expect: 100-Continue',
- 'User-Agent: ' . $userAgent
- )
- ), array(
- 'Host' => '*',
- 'User-Agent' => '*',
- 'Content-Length' => '*',
- 'Expect' => '100-Continue',
- 'Content-Type' => 'multipart/form-data; boundary=*',
- '!Transfer-Encoding' => null
- ));
-
- if (version_compare(phpversion(), '5.5.0', '>=')) {
- $postTest[4][CURLOPT_POSTFIELDS] = array(
- 'file' => new \CurlFile($testFile, 'application/octet-stream', 'phpunit.xml.dist')
- );
- }
-
- $tests[] = $postTest;
-
- return $tests;
- }
-
- /**
- * @dataProvider dataProvider
- */
- public function testFactoryCreatesCurlBasedOnRequest($method, $url, $headers, $body, $options, $expectedHeaders = null)
- {
- $client = new Client();
- $request = $client->createRequest($method, $url, $headers, $body);
- $request->getCurlOptions()->set('debug', true);
-
- $originalRequest = clone $request;
- $curlTest = clone $request;
- $handle = CurlHandle::factory($curlTest);
-
- $this->assertInstanceOf('Guzzle\\Http\\Curl\\CurlHandle', $handle);
- $o = $handle->getOptions()->getAll();
-
- // Headers are case-insensitive
- if (isset($o[CURLOPT_HTTPHEADER])) {
- $o[CURLOPT_HTTPHEADER] = array_map('strtolower', $o[CURLOPT_HTTPHEADER]);
- }
- if (isset($options[CURLOPT_HTTPHEADER])) {
- $options[CURLOPT_HTTPHEADER] = array_map('strtolower', $options[CURLOPT_HTTPHEADER]);
- }
-
- $check = 0;
- foreach ($options as $key => $value) {
- $check++;
- $this->assertArrayHasKey($key, $o, '-> Check number ' . $check);
- if ($key != CURLOPT_HTTPHEADER && $key != CURLOPT_POSTFIELDS && (is_array($o[$key])) || $o[$key] instanceof \Closure) {
- $this->assertEquals('callback', $value, '-> Check number ' . $check);
- } else {
- $this->assertTrue($value == $o[$key], '-> Check number ' . $check . ' - ' . var_export($value, true) . ' != ' . var_export($o[$key], true));
- }
- }
-
- // If we are testing the actual sent headers
- if ($expectedHeaders) {
-
- // Send the request to the test server
- $client = new Client($this->getServer()->getUrl());
- $request->setClient($client);
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request->send();
-
- // Get the request that was sent and create a request that we expected
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals($method, $requests[0]->getMethod());
-
- $test = $this->compareHeaders($expectedHeaders, $requests[0]->getHeaders());
- $this->assertFalse($test, $test . "\nSent: \n" . $request . "\n\n" . $requests[0]);
-
- // Ensure only one Content-Length header is sent
- if ($request->getHeader('Content-Length')) {
- $this->assertEquals((string) $request->getHeader('Content-Length'), (string) $requests[0]->getHeader('Content-Length'));
- }
- }
- }
-
- public function testFactoryUsesSpecifiedProtocol()
- {
- $request = RequestFactory::getInstance()->create('GET', 'http://127.0.0.1:8124/');
- $request->setProtocolVersion('1.1');
- $handle = CurlHandle::factory($request);
- $options = $handle->getOptions();
- $this->assertEquals(CURL_HTTP_VERSION_1_1, $options[CURLOPT_HTTP_VERSION]);
- }
-
- public function testUploadsPutData()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put('/');
- $request->getCurlOptions()->set('debug', true);
- $request->setBody(EntityBody::factory('test'), 'text/plain', false);
- $request->getCurlOptions()->set('progress', true);
-
- $o = $this->getWildcardObserver($request);
- $request->send();
-
- // Make sure that the events were dispatched
- $this->assertTrue($o->has('curl.callback.progress'));
-
- // Ensure that the request was received exactly as intended
- $r = $this->getServer()->getReceivedRequests(true);
- $this->assertFalse($r[0]->hasHeader('Transfer-Encoding'));
- $this->assertEquals(4, (string) $r[0]->getHeader('Content-Length'));
- $sent = strtolower($r[0]);
- $this->assertContains('put / http/1.1', $sent);
- $this->assertContains('host: 127.0.0.1', $sent);
- $this->assertContains('user-agent:', $sent);
- $this->assertContains('content-type: text/plain', $sent);
- }
-
- public function testUploadsPutDataUsingChunkedEncodingWhenLengthCannotBeDetermined()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi"
- ));
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put('/');
- $request->setBody(EntityBody::factory(fopen($this->getServer()->getUrl(), 'r')), 'text/plain');
- $request->send();
-
- $r = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('chunked', $r[1]->getHeader('Transfer-Encoding'));
- $this->assertFalse($r[1]->hasHeader('Content-Length'));
- }
-
- public function testUploadsPutDataUsingChunkedEncodingWhenForced()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put('/', array('Transfer-Encoding' => 'chunked'), 'hi!');
- $request->send();
-
- $r = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('chunked', $r[0]->getHeader('Transfer-Encoding'));
- $this->assertFalse($r[0]->hasHeader('Content-Length'));
- $this->assertEquals('hi!', $r[0]->getBody(true));
- }
-
- public function testSendsPostRequestsWithFields()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
-
- $request = RequestFactory::getInstance()->create('POST', $this->getServer()->getUrl());
- $request->getCurlOptions()->set('debug', true);
- $request->setClient(new Client());
- $request->addPostFields(array(
- 'a' => 'b',
- 'c' => 'ay! ~This is a test, isn\'t it?'
- ));
- $request->send();
-
- // Make sure that the request was sent correctly
- $r = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('a=b&c=ay%21%20~This%20is%20a%20test%2C%20isn%27t%20it%3F', (string) $r[0]->getBody());
- $this->assertFalse($r[0]->hasHeader('Transfer-Encoding'));
- $this->assertEquals(56, (string) $r[0]->getHeader('Content-Length'));
- $sent = strtolower($r[0]);
- $this->assertContains('post / http/1.1', $sent);
- $this->assertContains('content-type: application/x-www-form-urlencoded; charset=utf-8', $sent);
- }
-
- public function testSendsPostRequestsWithFiles()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
-
- $request = RequestFactory::getInstance()->create('POST', $this->getServer()->getUrl());
- $request->getCurlOptions()->set('debug', true);
- $request->setClient(new Client());
- $request->addPostFiles(array(
- 'foo' => __FILE__,
- ));
- $request->addPostFields(array(
- 'bar' => 'baz',
- 'arr' => array('a' => 1, 'b' => 2),
- ));
- $this->updateForHandle($request);
- $request->send();
-
- // Ensure the CURLOPT_POSTFIELDS option was set properly
- $options = $this->requestHandle->getOptions()->getAll();
- if (version_compare(phpversion(), '5.5.0', '<')) {
- $this->assertContains('@' . __FILE__ . ';filename=CurlHandleTest.php;type=text/x-', $options[CURLOPT_POSTFIELDS]['foo']);
- } else{
- $this->assertInstanceOf('CURLFile', $options[CURLOPT_POSTFIELDS]['foo']);
- }
- $this->assertEquals('baz', $options[CURLOPT_POSTFIELDS]['bar']);
- $this->assertEquals('1', $options[CURLOPT_POSTFIELDS]['arr[a]']);
- $this->assertEquals('2', $options[CURLOPT_POSTFIELDS]['arr[b]']);
- // Ensure that a Content-Length header was sent by cURL
- $this->assertTrue($request->hasHeader('Content-Length'));
- }
-
- public function testCurlConfigurationOptionsAreSet()
- {
- $request = RequestFactory::getInstance()->create('PUT', $this->getServer()->getUrl());
- $request->setClient(new Client('http://www.example.com'));
- $request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT, 99);
- $request->getCurlOptions()->set('curl.fake_opt', 99);
- $request->getCurlOptions()->set(CURLOPT_PORT, 8181);
- $handle = CurlHandle::factory($request);
- $this->assertEquals(99, $handle->getOptions()->get(CURLOPT_CONNECTTIMEOUT));
- $this->assertEquals(8181, $handle->getOptions()->get(CURLOPT_PORT));
- $this->assertNull($handle->getOptions()->get('curl.fake_opt'));
- $this->assertNull($handle->getOptions()->get('fake_opt'));
- }
-
- public function testEnsuresRequestsHaveResponsesWhenUpdatingFromTransfer()
- {
- $request = RequestFactory::getInstance()->create('PUT', $this->getServer()->getUrl());
- $handle = CurlHandle::factory($request);
- $handle->updateRequestFromTransfer($request);
- }
-
- public function testCanSendBodyAsString()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put('/', null, 'foo');
- $request->getCurlOptions()->set('body_as_string', true);
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(false);
- $this->assertContains('PUT /', $requests[0]);
- $this->assertContains("\nfoo", $requests[0]);
- $this->assertContains('content-length: 3', $requests[0]);
- $this->assertNotContains('content-type', $requests[0]);
- }
-
- public function testCanSendPostBodyAsString()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $client = new Client($this->getServer()->getUrl());
- $request = $client->post('/', null, 'foo');
- $request->getCurlOptions()->set('body_as_string', true);
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(false);
- $this->assertContains('POST /', $requests[0]);
- $this->assertContains("\nfoo", $requests[0]);
- $this->assertContains('content-length: 3', $requests[0]);
- $this->assertNotContains('content-type', $requests[0]);
- }
-
- public function testAllowsWireTransferInfoToBeEnabled()
- {
- $request = RequestFactory::getInstance()->create('PUT', $this->getServer()->getUrl());
- $request->getCurlOptions()->set('debug', true);
- $handle = CurlHandle::factory($request);
- $this->assertNotNull($handle->getOptions()->get(CURLOPT_STDERR));
- $this->assertNotNull($handle->getOptions()->get(CURLOPT_VERBOSE));
- }
-
- public function testAddsCustomCurlOptions()
- {
- $request = RequestFactory::getInstance()->create('PUT', $this->getServer()->getUrl());
- $request->getCurlOptions()->set(CURLOPT_TIMEOUT, 200);
- $handle = CurlHandle::factory($request);
- $this->assertEquals(200, $handle->getOptions()->get(CURLOPT_TIMEOUT));
- }
-
- public function testSendsPostUploadsWithContentDispositionHeaders()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\n\r\nContent-Length: 0\r\n\r\n");
-
- $fileToUpload = dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'TestData' . DIRECTORY_SEPARATOR . 'test_service.json';
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->post();
- $request->addPostFile('foo', $fileToUpload, 'application/json');
- $request->addPostFile('foo', __FILE__);
-
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $body = (string) $requests[0]->getBody();
-
- $this->assertContains('Content-Disposition: form-data; name="foo[0]"; filename="', $body);
- $this->assertContains('Content-Type: application/json', $body);
- $this->assertContains('Content-Type: text/x-', $body);
- $this->assertContains('Content-Disposition: form-data; name="foo[1]"; filename="', $body);
- }
-
- public function requestMethodProvider()
- {
- return array(array('POST'), array('PUT'), array('PATCH'));
- }
-
- /**
- * @dataProvider requestMethodProvider
- */
- public function testSendsRequestsWithNoBodyUsingContentLengthZero($method)
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $client = new Client($this->getServer()->getUrl());
- $client->createRequest($method)->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertFalse($requests[0]->hasHeader('Transfer-Encoding'));
- $this->assertTrue($requests[0]->hasHeader('Content-Length'));
- $this->assertEquals('0', (string) $requests[0]->getHeader('Content-Length'));
- }
-
- /**
- * @dataProvider provideCurlConfig
- */
- public function testParseCurlConfigConvertsStringKeysToConstantKeys($options, $expected)
- {
- $actual = CurlHandle::parseCurlConfig($options);
- $this->assertEquals($expected, $actual);
- }
-
- /**
- * Data provider for curl configurations
- *
- * @return array
- */
- public function provideCurlConfig()
- {
- return array(
- // Conversion of option name to constant value
- array(
- array(
- 'CURLOPT_PORT' => 10,
- 'CURLOPT_TIMEOUT' => 99
- ),
- array(
- CURLOPT_PORT => 10,
- CURLOPT_TIMEOUT => 99
- )
- ),
- // Keeps non constant options
- array(
- array('debug' => true),
- array('debug' => true)
- ),
- // Conversion of constant names to constant values
- array(
- array('debug' => 'CURLPROXY_HTTP'),
- array('debug' => CURLPROXY_HTTP)
- )
- );
- }
-
- public function testSeeksToBeginningOfStreamWhenSending()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put('/', null, 'test');
- $request->send();
- $request->send();
-
- $received = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals(2, count($received));
- $this->assertEquals('test', (string) $received[0]->getBody());
- $this->assertEquals('test', (string) $received[1]->getBody());
- }
-
- public function testAllowsCurloptEncodingToBeSet()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get('/', null);
- $request->getCurlOptions()->set(CURLOPT_ENCODING, '');
- $this->updateForHandle($request);
- $request->send();
- $options = $this->requestHandle->getOptions()->getAll();
- $this->assertSame('', $options[CURLOPT_ENCODING]);
- $received = $this->getServer()->getReceivedRequests(false);
- $this->assertContainsIns('accept: */*', $received[0]);
- $this->assertContainsIns('accept-encoding: ', $received[0]);
- }
-
- public function testSendsExpectHeaderWhenSizeIsGreaterThanCutoff()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put('/', null, 'test');
- // Start sending the expect header to 2 bytes
- $this->updateForHandle($request);
- $request->setExpectHeaderCutoff(2)->send();
- $options = $this->requestHandle->getOptions()->getAll();
- $this->assertContains('Expect: 100-Continue', $options[CURLOPT_HTTPHEADER]);
- $received = $this->getServer()->getReceivedRequests(false);
- $this->assertContainsIns('expect: 100-continue', $received[0]);
- }
-
- public function testSetsCurloptEncodingWhenAcceptEncodingHeaderIsSet()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata");
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get('/', array(
- 'Accept' => 'application/json',
- 'Accept-Encoding' => 'gzip, deflate',
- ));
- $this->updateForHandle($request);
- $request->send();
- $options = $this->requestHandle->getOptions()->getAll();
- $this->assertSame('gzip, deflate', $options[CURLOPT_ENCODING]);
- $received = $this->getServer()->getReceivedRequests(false);
- $this->assertContainsIns('accept: application/json', $received[0]);
- $this->assertContainsIns('accept-encoding: gzip, deflate', $received[0]);
- }
-
- public function testSendsPostFieldsForNonPostRequests()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\n\r\nContent-Length: 0\r\n\r\n");
-
- $client = new Client();
- $request = $client->put($this->getServer()->getUrl(), null, array(
- 'foo' => 'baz',
- 'baz' => 'bar'
- ));
-
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('PUT', $requests[0]->getMethod());
- $this->assertEquals(
- 'application/x-www-form-urlencoded; charset=utf-8',
- (string) $requests[0]->getHeader('Content-Type')
- );
- $this->assertEquals(15, (string) $requests[0]->getHeader('Content-Length'));
- $this->assertEquals('foo=baz&baz=bar', (string) $requests[0]->getBody());
- }
-
- public function testSendsPostFilesForNonPostRequests()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\n\r\nContent-Length: 0\r\n\r\n");
-
- $client = new Client();
- $request = $client->put($this->getServer()->getUrl(), null, array(
- 'foo' => '@' . __FILE__
- ));
-
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('PUT', $requests[0]->getMethod());
- $this->assertContains('multipart/form-data', (string) $requests[0]->getHeader('Content-Type'));
- $this->assertContains('testSendsPostFilesForNonPostRequests', (string) $requests[0]->getBody());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiProxyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiProxyTest.php
deleted file mode 100644
index e04141c..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiProxyTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Curl;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Curl\CurlMultiProxy;
-
-/**
- * @group server
- * @covers Guzzle\Http\Curl\CurlMultiProxy
- */
-class CurlMultiProxyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- const SELECT_TIMEOUT = 23.1;
-
- const MAX_HANDLES = 2;
-
- /** @var \Guzzle\Http\Curl\CurlMultiProxy */
- private $multi;
-
- protected function setUp()
- {
- parent::setUp();
- $this->multi = new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT);
- }
-
- public function tearDown()
- {
- unset($this->multi);
- }
-
- public function testConstructorSetsMaxHandles()
- {
- $m = new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT);
- $this->assertEquals(self::MAX_HANDLES, $this->readAttribute($m, 'maxHandles'));
- }
-
- public function testConstructorSetsSelectTimeout()
- {
- $m = new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT);
- $this->assertEquals(self::SELECT_TIMEOUT, $this->readAttribute($m, 'selectTimeout'));
- }
-
- public function testAddingRequestsAddsToQueue()
- {
- $r = new Request('GET', 'http://www.foo.com');
- $this->assertSame($this->multi, $this->multi->add($r));
- $this->assertEquals(1, count($this->multi));
- $this->assertEquals(array($r), $this->multi->all());
-
- $this->assertTrue($this->multi->remove($r));
- $this->assertFalse($this->multi->remove($r));
- $this->assertEquals(0, count($this->multi));
- }
-
- public function testResetClearsState()
- {
- $r = new Request('GET', 'http://www.foo.com');
- $this->multi->add($r);
- $this->multi->reset();
- $this->assertEquals(0, count($this->multi));
- }
-
- public function testSendWillSendQueuedRequestsFirst()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
- $client = new Client($this->getServer()->getUrl());
- $events = array();
- $client->getCurlMulti()->getEventDispatcher()->addListener(
- CurlMultiProxy::ADD_REQUEST,
- function ($e) use (&$events) {
- $events[] = $e;
- }
- );
- $request = $client->get();
- $request->getEventDispatcher()->addListener('request.complete', function () use ($client) {
- $client->get('/foo')->send();
- });
- $request->send();
- $received = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals(2, count($received));
- $this->assertEquals($this->getServer()->getUrl(), $received[0]->getUrl());
- $this->assertEquals($this->getServer()->getUrl() . 'foo', $received[1]->getUrl());
- $this->assertEquals(2, count($events));
- }
-
- public function testTrimsDownMaxHandleCount()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 307 OK\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
- $client = new Client($this->getServer()->getUrl());
- $client->setCurlMulti(new CurlMultiProxy(self::MAX_HANDLES, self::SELECT_TIMEOUT));
- $request = $client->get();
- $request->send();
- $this->assertEquals(200, $request->getResponse()->getStatusCode());
- $handles = $this->readAttribute($client->getCurlMulti(), 'handles');
- $this->assertEquals(2, count($handles));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiTest.php
deleted file mode 100644
index 1272281..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlMultiTest.php
+++ /dev/null
@@ -1,455 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Curl;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Http\Exception\MultiTransferException;
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Curl\CurlMulti;
-use Guzzle\Http\Exception\CurlException;
-use Guzzle\Tests\Mock\MockMulti;
-
-/**
- * @group server
- * @covers Guzzle\Http\Curl\CurlMulti
- */
-class CurlMultiTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var \Guzzle\Http\Curl\CurlMulti */
- private $multi;
-
- /**
- * Prepares the environment before running a test.
- */
- protected function setUp()
- {
- parent::setUp();
- $this->multi = new MockMulti();
- }
-
- public function tearDown()
- {
- unset($this->multi);
- }
-
- public function testConstructorCreateMultiHandle()
- {
- $this->assertInternalType('resource', $this->multi->getHandle());
- $this->assertEquals('curl_multi', get_resource_type($this->multi->getHandle()));
- }
-
- public function testDestructorClosesMultiHandle()
- {
- $handle = $this->multi->getHandle();
- $this->multi->__destruct();
- $this->assertFalse(is_resource($handle));
- }
-
- public function testRequestsCanBeAddedAndCounted()
- {
- $multi = new CurlMulti();
- $request1 = new Request('GET', 'http://www.google.com/');
- $multi->add($request1);
- $this->assertEquals(array($request1), $multi->all());
- $request2 = new Request('POST', 'http://www.google.com/');
- $multi->add($request2);
- $this->assertEquals(array($request1, $request2), $multi->all());
- $this->assertEquals(2, count($multi));
- }
-
- public function testRequestsCanBeRemoved()
- {
- $request1 = new Request('GET', 'http://www.google.com/');
- $this->multi->add($request1);
- $request2 = new Request('PUT', 'http://www.google.com/');
- $this->multi->add($request2);
- $this->assertEquals(array($request1, $request2), $this->multi->all());
- $this->assertTrue($this->multi->remove($request1));
- $this->assertFalse($this->multi->remove($request1));
- $this->assertEquals(array($request2), $this->multi->all());
- }
-
- public function testsResetRemovesRequestsAndResetsState()
- {
- $this->multi->add(new Request('GET', 'http://www.google.com/'));
- $this->multi->reset();
- $this->assertEquals(array(), $this->multi->all());
- }
-
- public function testSendsRequestsThroughCurl()
- {
- $this->getServer()->enqueue(array(
- "HTTP/1.1 204 No content\r\n" .
- "Content-Length: 0\r\n" .
- "Server: Jetty(6.1.3)\r\n\r\n",
- "HTTP/1.1 200 OK\r\n" .
- "Content-Type: text/html; charset=utf-8\r\n" .
- "Content-Length: 4\r\n" .
- "Server: Jetty(6.1.3)\r\n\r\n" .
- "data"
- ));
-
- $request1 = new Request('GET', $this->getServer()->getUrl());
- $request2 = new Request('GET', $this->getServer()->getUrl());
- $this->multi->add($request1);
- $this->multi->add($request2);
- $this->multi->send();
-
- $response1 = $request1->getResponse();
- $response2 = $request2->getResponse();
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $response1);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $response2);
-
- $this->assertTrue($response1->getBody(true) == 'data' || $response2->getBody(true) == 'data');
- $this->assertTrue($response1->getBody(true) == '' || $response2->getBody(true) == '');
- $this->assertTrue($response1->getStatusCode() == '204' || $response2->getStatusCode() == '204');
- $this->assertNotEquals((string) $response1, (string) $response2);
- }
-
- public function testSendsThroughCurlAndAggregatesRequestExceptions()
- {
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\n" .
- "Content-Type: text/html; charset=utf-8\r\n" .
- "Content-Length: 4\r\n" .
- "Server: Jetty(6.1.3)\r\n" .
- "\r\n" .
- "data",
- "HTTP/1.1 204 No content\r\n" .
- "Content-Length: 0\r\n" .
- "Server: Jetty(6.1.3)\r\n" .
- "\r\n",
- "HTTP/1.1 404 Not Found\r\n" .
- "Content-Length: 0\r\n" .
- "\r\n"
- ));
-
- $request1 = new Request('GET', $this->getServer()->getUrl());
- $request2 = new Request('HEAD', $this->getServer()->getUrl());
- $request3 = new Request('GET', $this->getServer()->getUrl());
- $this->multi->add($request1);
- $this->multi->add($request2);
- $this->multi->add($request3);
-
- try {
- $this->multi->send();
- $this->fail('MultiTransferException not thrown when aggregating request exceptions');
- } catch (MultiTransferException $e) {
-
- $this->assertTrue($e->containsRequest($request1));
- $this->assertTrue($e->containsRequest($request2));
- $this->assertTrue($e->containsRequest($request3));
- $this->assertInstanceOf('ArrayIterator', $e->getIterator());
- $this->assertEquals(1, count($e));
- $exceptions = $e->getIterator();
-
- $response1 = $request1->getResponse();
- $response2 = $request2->getResponse();
- $response3 = $request3->getResponse();
-
- $this->assertNotEquals((string) $response1, (string) $response2);
- $this->assertNotEquals((string) $response3, (string) $response1);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $response1);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $response2);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $response3);
-
- $failed = $exceptions[0]->getResponse();
- $this->assertEquals(404, $failed->getStatusCode());
- $this->assertEquals(1, count($e));
-
- // Test the IteratorAggregate functionality
- foreach ($e as $except) {
- $this->assertEquals($failed, $except->getResponse());
- }
-
- $this->assertEquals(1, count($e->getFailedRequests()));
- $this->assertEquals(2, count($e->getSuccessfulRequests()));
- $this->assertEquals(3, count($e->getAllRequests()));
- }
- }
-
- public function testCurlErrorsAreCaught()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- try {
- $request = RequestFactory::getInstance()->create('GET', 'http://127.0.0.1:9876/');
- $request->setClient(new Client());
- $request->getCurlOptions()->set(CURLOPT_FRESH_CONNECT, true);
- $request->getCurlOptions()->set(CURLOPT_FORBID_REUSE, true);
- $request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT_MS, 5);
- $request->send();
- $this->fail('CurlException not thrown');
- } catch (CurlException $e) {
- $m = $e->getMessage();
- $this->assertContains('[curl] ', $m);
- $this->assertContains('[url] http://127.0.0.1:9876/', $m);
- $this->assertInternalType('array', $e->getCurlInfo());
- }
- }
-
- public function testRemovesQueuedRequests()
- {
- $request = RequestFactory::getInstance()->create('GET', 'http://127.0.0.1:9876/');
- $r = new Response(200);
- $request->setClient(new Client());
- $request->setResponse($r, true);
- $this->multi->add($request);
- $this->multi->send();
- $this->assertSame($r, $request->getResponse());
- }
-
- public function testRemovesQueuedRequestsAddedInTransit()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"));
- $client = new Client($this->getServer()->getUrl());
- $r = $client->get();
- $r->getEventDispatcher()->addListener('request.receive.status_line', function (Event $event) use ($client) {
- // Create a request using a queued response
- $request = $client->get()->setResponse(new Response(200), true);
- $request->send();
- });
- $r->send();
- $this->assertEquals(1, count($this->getServer()->getReceivedRequests(false)));
- }
-
- public function testCatchesExceptionsBeforeSendingSingleRequest()
- {
- $client = new Client($this->getServer()->getUrl());
- $multi = new CurlMulti();
- $client->setCurlMulti($multi);
- $request = $client->get();
- $request->getEventDispatcher()->addListener('request.before_send', function() {
- throw new \RuntimeException('Testing!');
- });
- try {
- $request->send();
- $this->fail('Did not throw');
- } catch (\RuntimeException $e) {
- // Ensure it was removed
- $this->assertEquals(0, count($multi));
- }
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\ExceptionCollection
- * @expectedExceptionMessage Thrown before sending!
- */
- public function testCatchesExceptionsBeforeSendingMultipleRequests()
- {
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get();
- $request->getEventDispatcher()->addListener('request.before_send', function() {
- throw new \RuntimeException('Thrown before sending!');
- });
- $client->send(array($request));
- }
-
- public function testCatchesExceptionsWhenRemovingQueuedRequests()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $client = new Client($this->getServer()->getUrl());
- $r = $client->get();
- $r->getEventDispatcher()->addListener('request.sent', function() use ($client) {
- // Create a request using a queued response
- $client->get()->setResponse(new Response(404), true)->send();
- });
- try {
- $r->send();
- $this->fail('Did not throw');
- } catch (BadResponseException $e) {
- $this->assertCount(0, $client->getCurlMulti());
- }
- }
-
- public function testCatchesExceptionsWhenRemovingQueuedRequestsBeforeSending()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $client = new Client($this->getServer()->getUrl());
- $r = $client->get();
- $r->getEventDispatcher()->addListener('request.before_send', function() use ($client) {
- // Create a request using a queued response
- $client->get()->setResponse(new Response(404), true)->send();
- });
- try {
- $r->send();
- $this->fail('Did not throw');
- } catch (BadResponseException $e) {
- $this->assertCount(0, $client->getCurlMulti());
- }
- }
-
- /**
- * @expectedException \RuntimeException
- * @expectedExceptionMessage test
- */
- public function testDoesNotCatchRandomExceptionsThrownDuringPerform()
- {
- $client = new Client($this->getServer()->getUrl());
- $multi = $this->getMock('Guzzle\\Http\\Curl\\CurlMulti', array('perform'));
- $multi->expects($this->once())
- ->method('perform')
- ->will($this->throwException(new \RuntimeException('test')));
- $multi->add($client->get());
- $multi->send();
- }
-
- public function testDoesNotSendRequestsDecliningToBeSent()
- {
- if (!defined('CURLOPT_TIMEOUT_MS')) {
- $this->markTestSkipped('Update curl');
- }
-
- // Create a client that is bound to fail connecting
- $client = new Client('http://127.0.0.1:123', array(
- 'curl.CURLOPT_PORT' => 123,
- 'curl.CURLOPT_CONNECTTIMEOUT_MS' => 1,
- ));
-
- $request = $client->get();
- $multi = new CurlMulti();
- $multi->add($request);
-
- // Listen for request exceptions, and when they occur, first change the
- // state of the request back to transferring, and then just allow it to
- // exception out
- $request->getEventDispatcher()->addListener('request.exception', function(Event $event) use ($multi) {
- $retries = $event['request']->getParams()->get('retries');
- // Allow the first failure to retry
- if ($retries == 0) {
- $event['request']->setState('transfer');
- $event['request']->getParams()->set('retries', 1);
- // Remove the request to try again
- $multi->remove($event['request']);
- $multi->add($event['request']);
- }
- });
-
- try {
- $multi->send();
- $this->fail('Did not throw an exception at all!?!');
- } catch (\Exception $e) {
- $this->assertEquals(1, $request->getParams()->get('retries'));
- }
- }
-
- public function testDoesNotThrowExceptionsWhenRequestsRecoverWithRetry()
- {
- $this->getServer()->flush();
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get();
- $request->getEventDispatcher()->addListener('request.before_send', function(Event $event) {
- $event['request']->setResponse(new Response(200));
- });
-
- $multi = new CurlMulti();
- $multi->add($request);
- $multi->send();
- $this->assertEquals(0, count($this->getServer()->getReceivedRequests(false)));
- }
-
- public function testDoesNotThrowExceptionsWhenRequestsRecoverWithSuccess()
- {
- // Attempt a port that 99.9% is not listening
- $client = new Client('http://127.0.0.1:123');
- $request = $client->get();
- // Ensure it times out quickly if needed
- $request->getCurlOptions()->set(CURLOPT_TIMEOUT_MS, 1)->set(CURLOPT_CONNECTTIMEOUT_MS, 1);
-
- $request->getEventDispatcher()->addListener('request.exception', function(Event $event) use (&$count) {
- $event['request']->setResponse(new Response(200));
- });
-
- $multi = new CurlMulti();
- $multi->add($request);
- $multi->send();
-
- // Ensure that the exception was caught, and the response was set manually
- $this->assertEquals(200, $request->getResponse()->getStatusCode());
- }
-
- public function testHardResetReopensMultiHandle()
- {
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
-
- $stream = fopen('php://temp', 'w+');
- $client = new Client($this->getServer()->getUrl());
- $client->getConfig()->set('curl.CURLOPT_VERBOSE', true)->set('curl.CURLOPT_STDERR', $stream);
-
- $request = $client->get();
- $multi = new CurlMulti();
- $multi->add($request);
- $multi->send();
- $multi->reset(true);
- $multi->add($request);
- $multi->send();
-
- rewind($stream);
- $this->assertNotContains('Re-using existing connection', stream_get_contents($stream));
- }
-
- public function testThrowsMeaningfulExceptionsForCurlMultiErrors()
- {
- $multi = new CurlMulti();
-
- // Set the state of the multi object to sending to trigger the exception
- $reflector = new \ReflectionMethod('Guzzle\Http\Curl\CurlMulti', 'checkCurlResult');
- $reflector->setAccessible(true);
-
- // Successful
- $reflector->invoke($multi, 0);
-
- // Known error
- try {
- $reflector->invoke($multi, CURLM_BAD_HANDLE);
- $this->fail('Expected an exception here');
- } catch (CurlException $e) {
- $this->assertContains('The passed-in handle is not a valid CURLM handle.', $e->getMessage());
- $this->assertContains('CURLM_BAD_HANDLE', $e->getMessage());
- $this->assertContains(strval(CURLM_BAD_HANDLE), $e->getMessage());
- }
-
- // Unknown error
- try {
- $reflector->invoke($multi, 255);
- $this->fail('Expected an exception here');
- } catch (CurlException $e) {
- $this->assertEquals('Unexpected cURL error: 255', $e->getMessage());
- }
- }
-
- public function testRequestBeforeSendIncludesContentLengthHeaderIfEmptyBody()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request = new Request('PUT', $this->getServer()->getUrl());
- $that = $this;
- $request->getEventDispatcher()->addListener('request.before_send', function ($event) use ($that) {
- $that->assertEquals(0, $event['request']->getHeader('Content-Length'));
- });
- $this->multi->add($request);
- $this->multi->send();
- }
-
- public function testRemovesConflictingTransferEncodingHeader()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put('/', null, fopen($this->getServer()->getUrl(), 'r'));
- $request->setHeader('Content-Length', 4);
- $request->send();
- $received = $this->getServer()->getReceivedRequests(true);
- $this->assertFalse($received[1]->hasHeader('Transfer-Encoding'));
- $this->assertEquals(4, (string) $received[1]->getHeader('Content-Length'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlVersionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlVersionTest.php
deleted file mode 100644
index c7b5ee6..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/CurlVersionTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Curl;
-
-use Guzzle\Http\Curl\CurlVersion;
-
-/**
- * @covers Guzzle\Http\Curl\CurlVersion
- */
-class CurlVersionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testCachesCurlInfo()
- {
- $info = curl_version();
- $instance = CurlVersion::getInstance();
-
- // Clear out the info cache
- $refObject = new \ReflectionObject($instance);
- $refProperty = $refObject->getProperty('version');
- $refProperty->setAccessible(true);
- $refProperty->setValue($instance, array());
-
- $this->assertEquals($info, $instance->getAll());
- $this->assertEquals($info, $instance->getAll());
-
- $this->assertEquals($info['version'], $instance->get('version'));
- $this->assertFalse($instance->get('foo'));
- }
-
- public function testIsSingleton()
- {
- $refObject = new \ReflectionClass('Guzzle\Http\Curl\CurlVersion');
- $refProperty = $refObject->getProperty('instance');
- $refProperty->setAccessible(true);
- $refProperty->setValue(null, null);
-
- $this->assertInstanceOf('Guzzle\Http\Curl\CurlVersion', CurlVersion::getInstance());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/RequestMediatorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/RequestMediatorTest.php
deleted file mode 100644
index c69e0c9..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Curl/RequestMediatorTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Curl;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Curl\RequestMediator;
-
-/**
- * @covers Guzzle\Http\Curl\RequestMediator
- */
-class RequestMediatorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public $events = array();
-
- public function event($event)
- {
- $this->events[] = $event;
- }
-
- public function testEmitsEvents()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://www.example.com');
- $request->setBody('foo');
- $request->setResponse(new Response(200));
-
- // Ensure that IO events are emitted
- $request->getCurlOptions()->set('emit_io', true);
-
- // Attach listeners for each event type
- $request->getEventDispatcher()->addListener('curl.callback.progress', array($this, 'event'));
- $request->getEventDispatcher()->addListener('curl.callback.read', array($this, 'event'));
- $request->getEventDispatcher()->addListener('curl.callback.write', array($this, 'event'));
-
- $mediator = new RequestMediator($request, true);
-
- $mediator->progress('a', 'b', 'c', 'd');
- $this->assertEquals(1, count($this->events));
- $this->assertEquals('curl.callback.progress', $this->events[0]->getName());
-
- $this->assertEquals(3, $mediator->writeResponseBody('foo', 'bar'));
- $this->assertEquals(2, count($this->events));
- $this->assertEquals('curl.callback.write', $this->events[1]->getName());
- $this->assertEquals('bar', $this->events[1]['write']);
- $this->assertSame($request, $this->events[1]['request']);
-
- $this->assertEquals('foo', $mediator->readRequestBody('a', 'b', 3));
- $this->assertEquals(3, count($this->events));
- $this->assertEquals('curl.callback.read', $this->events[2]->getName());
- $this->assertEquals('foo', $this->events[2]['read']);
- $this->assertSame($request, $this->events[2]['request']);
- }
-
- public function testDoesNotUseRequestResponseBodyWhenNotCustom()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 307 Foo\r\nLocation: /foo\r\nContent-Length: 2\r\n\r\nHI",
- "HTTP/1.1 301 Foo\r\nLocation: /foo\r\nContent-Length: 2\r\n\r\nFI",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest",
- ));
- $client = new Client($this->getServer()->getUrl());
- $response = $client->get()->send();
- $this->assertEquals('test', $response->getBody(true));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/EntityBodyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/EntityBodyTest.php
deleted file mode 100644
index 124a44d..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/EntityBodyTest.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\QueryString;
-
-/**
- * @group server
- * @covers Guzzle\Http\EntityBody
- */
-class EntityBodyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testFactoryThrowsException()
- {
- $body = EntityBody::factory(false);
- }
-
- public function testFactory()
- {
- $body = EntityBody::factory('data');
- $this->assertEquals('data', (string) $body);
- $this->assertEquals(4, $body->getContentLength());
- $this->assertEquals('PHP', $body->getWrapper());
- $this->assertEquals('TEMP', $body->getStreamType());
-
- $handle = fopen(__DIR__ . '/../../../../phpunit.xml.dist', 'r');
- if (!$handle) {
- $this->fail('Could not open test file');
- }
- $body = EntityBody::factory($handle);
- $this->assertEquals(__DIR__ . '/../../../../phpunit.xml.dist', $body->getUri());
- $this->assertTrue($body->isLocal());
- $this->assertEquals(__DIR__ . '/../../../../phpunit.xml.dist', $body->getUri());
- $this->assertEquals(filesize(__DIR__ . '/../../../../phpunit.xml.dist'), $body->getContentLength());
-
- // make sure that a body will return as the same object
- $this->assertTrue($body === EntityBody::factory($body));
- }
-
- public function testFactoryCreatesTempStreamByDefault()
- {
- $body = EntityBody::factory('');
- $this->assertEquals('PHP', $body->getWrapper());
- $this->assertEquals('TEMP', $body->getStreamType());
- $body = EntityBody::factory();
- $this->assertEquals('PHP', $body->getWrapper());
- $this->assertEquals('TEMP', $body->getStreamType());
- }
-
- public function testFactoryCanCreateFromObject()
- {
- $body = EntityBody::factory(new QueryString(array('foo' => 'bar')));
- $this->assertEquals('foo=bar', (string) $body);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testFactoryEnsuresObjectsHaveToStringMethod()
- {
- EntityBody::factory(new \stdClass('a'));
- }
-
- public function testHandlesCompression()
- {
- $body = EntityBody::factory('testing 123...testing 123');
- $this->assertFalse($body->getContentEncoding(), '-> getContentEncoding() must initially return FALSE');
- $size = $body->getContentLength();
- $body->compress();
- $this->assertEquals('gzip', $body->getContentEncoding(), '-> getContentEncoding() must return the correct encoding after compressing');
- $this->assertEquals(gzdeflate('testing 123...testing 123'), (string) $body);
- $this->assertTrue($body->getContentLength() < $size);
- $this->assertTrue($body->uncompress());
- $this->assertEquals('testing 123...testing 123', (string) $body);
- $this->assertFalse($body->getContentEncoding(), '-> getContentEncoding() must reset to FALSE');
-
- if (in_array('bzip2.*', stream_get_filters())) {
- $this->assertTrue($body->compress('bzip2.compress'));
- $this->assertEquals('compress', $body->getContentEncoding(), '-> compress() must set \'compress\' as the Content-Encoding');
- }
-
- $this->assertFalse($body->compress('non-existent'), '-> compress() must return false when a non-existent stream filter is used');
-
- // Release the body
- unset($body);
-
- // Use gzip compression on the initial content. This will include a
- // gzip header which will need to be stripped when deflating the stream
- $body = EntityBody::factory(gzencode('test'));
- $this->assertSame($body, $body->setStreamFilterContentEncoding('zlib.deflate'));
- $this->assertTrue($body->uncompress('zlib.inflate'));
- $this->assertEquals('test', (string) $body);
- unset($body);
-
- // Test using a very long string
- $largeString = '';
- for ($i = 0; $i < 25000; $i++) {
- $largeString .= chr(rand(33, 126));
- }
- $body = EntityBody::factory($largeString);
- $this->assertEquals($largeString, (string) $body);
- $this->assertTrue($body->compress());
- $this->assertNotEquals($largeString, (string) $body);
- $compressed = (string) $body;
- $this->assertTrue($body->uncompress());
- $this->assertEquals($largeString, (string) $body);
- $this->assertEquals($compressed, gzdeflate($largeString));
-
- $body = EntityBody::factory(fopen(__DIR__ . '/../TestData/compress_test', 'w'));
- $this->assertFalse($body->compress());
- unset($body);
-
- unlink(__DIR__ . '/../TestData/compress_test');
- }
-
- public function testDeterminesContentType()
- {
- // Test using a string/temp stream
- $body = EntityBody::factory('testing 123...testing 123');
- $this->assertNull($body->getContentType());
-
- // Use a local file
- $body = EntityBody::factory(fopen(__FILE__, 'r'));
- $this->assertContains('text/x-', $body->getContentType());
- }
-
- public function testCreatesMd5Checksum()
- {
- $body = EntityBody::factory('testing 123...testing 123');
- $this->assertEquals(md5('testing 123...testing 123'), $body->getContentMd5());
-
- $server = $this->getServer()->enqueue(
- "HTTP/1.1 200 OK" . "\r\n" .
- "Content-Length: 3" . "\r\n\r\n" .
- "abc"
- );
-
- $body = EntityBody::factory(fopen($this->getServer()->getUrl(), 'r'));
- $this->assertFalse($body->getContentMd5());
- }
-
- public function testSeeksToOriginalPosAfterMd5()
- {
- $body = EntityBody::factory('testing 123');
- $body->seek(4);
- $this->assertEquals(md5('testing 123'), $body->getContentMd5());
- $this->assertEquals(4, $body->ftell());
- $this->assertEquals('ing 123', $body->read(1000));
- }
-
- public function testGetTypeFormBodyFactoring()
- {
- $body = EntityBody::factory(array('key1' => 'val1', 'key2' => 'val2'));
- $this->assertEquals('key1=val1&key2=val2', (string) $body);
- }
-
- public function testAllowsCustomRewind()
- {
- $body = EntityBody::factory('foo');
- $rewound = false;
- $body->setRewindFunction(function ($body) use (&$rewound) {
- $rewound = true;
- return $body->seek(0);
- });
- $body->seek(2);
- $this->assertTrue($body->rewind());
- $this->assertTrue($rewound);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testCustomRewindFunctionMustBeCallable()
- {
- $body = EntityBody::factory();
- $body->setRewindFunction('foo');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/CurlExceptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/CurlExceptionTest.php
deleted file mode 100644
index df3e4b7..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/CurlExceptionTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Exception;
-
-use Guzzle\Http\Exception\CurlException;
-use Guzzle\Http\Curl\CurlHandle;
-
-/**
- * @covers Guzzle\Http\Exception\CurlException
- */
-class CurlExceptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testStoresCurlError()
- {
- $e = new CurlException();
- $this->assertNull($e->getError());
- $this->assertNull($e->getErrorNo());
- $this->assertSame($e, $e->setError('test', 12));
- $this->assertEquals('test', $e->getError());
- $this->assertEquals(12, $e->getErrorNo());
-
- $handle = new CurlHandle(curl_init(), array());
- $e->setCurlHandle($handle);
- $this->assertSame($handle, $e->getCurlHandle());
- $handle->close();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/ExceptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/ExceptionTest.php
deleted file mode 100644
index 12cfd36..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/ExceptionTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Exception;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Exception\RequestException;
-use Guzzle\Http\Exception\BadResponseException;
-
-class ExceptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @covers Guzzle\Http\Exception\RequestException
- */
- public function testRequestException()
- {
- $e = new RequestException('Message');
- $request = new Request('GET', 'http://www.guzzle-project.com/');
- $e->setRequest($request);
- $this->assertEquals($request, $e->getRequest());
- }
-
- /**
- * @covers Guzzle\Http\Exception\BadResponseException
- */
- public function testBadResponseException()
- {
- $e = new BadResponseException('Message');
- $response = new Response(200);
- $e->setResponse($response);
- $this->assertEquals($response, $e->getResponse());
- }
-
- /**
- * @covers Guzzle\Http\Exception\BadResponseException::factory
- */
- public function testCreatesGenericErrorExceptionOnError()
- {
- $request = new Request('GET', 'http://www.example.com');
- $response = new Response(307);
- $e = BadResponseException::factory($request, $response);
- $this->assertInstanceOf('Guzzle\Http\Exception\BadResponseException', $e);
- }
-
- /**
- * @covers Guzzle\Http\Exception\BadResponseException::factory
- */
- public function testCreatesClientErrorExceptionOnClientError()
- {
- $request = new Request('GET', 'http://www.example.com');
- $response = new Response(404);
- $e = BadResponseException::factory($request, $response);
- $this->assertInstanceOf('Guzzle\Http\Exception\ClientErrorResponseException', $e);
- }
-
- /**
- * @covers Guzzle\Http\Exception\BadResponseException::factory
- */
- public function testCreatesServerErrorExceptionOnServerError()
- {
- $request = new Request('GET', 'http://www.example.com');
- $response = new Response(503);
- $e = BadResponseException::factory($request, $response);
- $this->assertInstanceOf('Guzzle\Http\Exception\ServerErrorResponseException', $e);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/MultiTransferExceptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/MultiTransferExceptionTest.php
deleted file mode 100644
index fa4ec26..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Exception/MultiTransferExceptionTest.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Exception;
-
-use Guzzle\Http\Exception\MultiTransferException;
-use Guzzle\Http\Curl\CurlHandle;
-use Guzzle\Http\Message\Request;
-
-/**
- * @covers Guzzle\Http\Exception\MultiTransferException
- */
-class MultiTransferExceptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testHasRequests()
- {
- $r1 = new Request('GET', 'http://www.foo.com');
- $r2 = new Request('GET', 'http://www.foo.com');
- $e = new MultiTransferException();
- $e->addSuccessfulRequest($r1);
- $e->addFailedRequest($r2);
- $this->assertEquals(array($r1), $e->getSuccessfulRequests());
- $this->assertEquals(array($r2), $e->getSuccessfulRequests());
- $this->assertEquals(array($r1, $r2), $e->getAllRequests());
- $this->assertTrue($e->containsRequest($r1));
- $this->assertTrue($e->containsRequest($r2));
- $this->assertFalse($e->containsRequest(new Request('POST', '/foo')));
- }
-
- public function testCanSetRequests()
- {
- $s = array($r1 = new Request('GET', 'http://www.foo.com'));
- $f = array($r2 = new Request('GET', 'http://www.foo.com'));
- $e = new MultiTransferException();
- $e->setSuccessfulRequests($s);
- $e->setFailedRequests($f);
- $this->assertEquals(array($r1), $e->getSuccessfulRequests());
- $this->assertEquals(array($r2), $e->getSuccessfulRequests());
- }
-
- public function testAssociatesExceptionsWithRequests()
- {
- $r1 = new Request('GET', 'http://www.foo.com');
- $re1 = new \Exception('foo');
- $re2 = new \Exception('bar');
- $e = new MultiTransferException();
- $e->add($re2);
- $e->addFailedRequestWithException($r1, $re1);
- $this->assertSame($re1, $e->getExceptionForFailedRequest($r1));
- $this->assertNull($e->getExceptionForFailedRequest(new Request('POST', '/foo')));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/IoEmittingEntityBodyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/IoEmittingEntityBodyTest.php
deleted file mode 100644
index cd6355f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/IoEmittingEntityBodyTest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\IoEmittingEntityBody;
-
-/**
- * @covers Guzzle\Http\IoEmittingEntityBody
- */
-class IoEmittingEntityBodyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $body;
- protected $decorated;
-
- public function setUp()
- {
- $this->decorated = EntityBody::factory('hello');
- $this->body = new IoEmittingEntityBody($this->decorated);
- }
-
- public function testEmitsReadEvents()
- {
- $e = null;
- $this->body->getEventDispatcher()->addListener('body.read', function ($event) use (&$e) {
- $e = $event;
- });
- $this->assertEquals('hel', $this->body->read(3));
- $this->assertEquals('hel', $e['read']);
- $this->assertEquals(3, $e['length']);
- $this->assertSame($this->body, $e['body']);
- }
-
- public function testEmitsWriteEvents()
- {
- $e = null;
- $this->body->getEventDispatcher()->addListener('body.write', function ($event) use (&$e) {
- $e = $event;
- });
- $this->body->seek(0, SEEK_END);
- $this->assertEquals(5, $this->body->write('there'));
- $this->assertEquals('there', $e['write']);
- $this->assertEquals(5, $e['result']);
- $this->assertSame($this->body, $e['body']);
- $this->assertEquals('hellothere', (string) $this->body);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php
deleted file mode 100644
index 9447d8c..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message;
-
-use Guzzle\Http\Message\Header;
-use Guzzle\Http\Message\Request;
-use Guzzle\Common\Collection;
-
-/**
- * @covers Guzzle\Http\Message\AbstractMessage
- */
-class AbstractMessageTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var Request Request object */
- private $request;
-
- /** @var AbstractMessage */
- private $mock;
-
- public function setUp()
- {
- parent::setUp();
- $this->mock = $this->getMockForAbstractClass('Guzzle\Http\Message\AbstractMessage');
- }
-
- public function tearDown()
- {
- $this->mock = $this->request = null;
- }
-
- public function testGetParams()
- {
- $request = new Request('GET', 'http://example.com');
- $this->assertInstanceOf('Guzzle\\Common\\Collection', $request->getParams());
- }
-
- public function testAddHeaders()
- {
- $this->mock->setHeader('A', 'B');
-
- $this->assertEquals($this->mock, $this->mock->addHeaders(array(
- 'X-Data' => '123'
- )));
-
- $this->assertTrue($this->mock->hasHeader('X-Data') !== false);
- $this->assertTrue($this->mock->hasHeader('A') !== false);
- }
-
- public function testAllowsHeaderToSetAsHeader()
- {
- $h = new Header('A', 'B');
- $this->mock->setHeader('A', $h);
- $this->assertSame($h, $this->mock->getHeader('A'));
- }
-
- public function testGetHeader()
- {
- $this->mock->setHeader('Test', '123');
- $this->assertEquals('123', $this->mock->getHeader('Test'));
- }
-
- public function testGetHeaders()
- {
- $this->assertSame($this->mock, $this->mock->setHeaders(array('a' => 'b', 'c' => 'd')));
- $h = $this->mock->getHeaders();
- $this->assertArrayHasKey('a', $h->toArray());
- $this->assertArrayHasKey('c', $h->toArray());
- $this->assertInstanceOf('Guzzle\Http\Message\Header\HeaderInterface', $h->get('a'));
- $this->assertInstanceOf('Guzzle\Http\Message\Header\HeaderInterface', $h->get('c'));
- }
-
- public function testGetHeaderLinesUsesGlue()
- {
- $this->mock->setHeaders(array('a' => 'b', 'c' => 'd'));
- $this->mock->addHeader('a', 'e');
- $this->mock->getHeader('a')->setGlue('!');
- $this->assertEquals(array(
- 'a: b! e',
- 'c: d'
- ), $this->mock->getHeaderLines());
- }
-
- public function testHasHeader()
- {
- $this->assertFalse($this->mock->hasHeader('Foo'));
- $this->mock->setHeader('Foo', 'Bar');
- $this->assertEquals(true, $this->mock->hasHeader('Foo'));
- $this->mock->setHeader('foo', 'yoo');
- $this->assertEquals(true, $this->mock->hasHeader('Foo'));
- $this->assertEquals(true, $this->mock->hasHeader('foo'));
- $this->assertEquals(false, $this->mock->hasHeader('bar'));
- }
-
- public function testRemoveHeader()
- {
- $this->mock->setHeader('Foo', 'Bar');
- $this->assertEquals(true, $this->mock->hasHeader('Foo'));
- $this->mock->removeHeader('Foo');
- $this->assertFalse($this->mock->hasHeader('Foo'));
- }
-
- public function testReturnsNullWhenHeaderIsNotFound()
- {
- $this->assertNull($this->mock->getHeader('foo'));
- }
-
- public function testAddingHeadersPreservesOriginalHeaderCase()
- {
- $this->mock->addHeaders(array(
- 'test' => '123',
- 'Test' => 'abc'
- ));
- $this->mock->addHeader('test', '456');
- $this->mock->addHeader('test', '789');
-
- $header = $this->mock->getHeader('test');
- $this->assertContains('123', $header->toArray());
- $this->assertContains('456', $header->toArray());
- $this->assertContains('789', $header->toArray());
- $this->assertContains('abc', $header->toArray());
- }
-
- public function testCanStoreEmptyHeaders()
- {
- $this->mock->setHeader('Content-Length', 0);
- $this->assertTrue($this->mock->hasHeader('Content-Length'));
- $this->assertEquals(0, (string) $this->mock->getHeader('Content-Length'));
- }
-
- public function testCanSetCustomHeaderFactory()
- {
- $f = new Header\HeaderFactory();
- $this->mock->setHeaderFactory($f);
- $this->assertSame($f, $this->readAttribute($this->mock, 'headerFactory'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/EntityEnclosingRequestTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/EntityEnclosingRequestTest.php
deleted file mode 100644
index 191b022..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/EntityEnclosingRequestTest.php
+++ /dev/null
@@ -1,434 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\RedirectPlugin;
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Http\Message\PostFile;
-use Guzzle\Http\QueryString;
-
-/**
- * @group server
- * @covers Guzzle\Http\Message\EntityEnclosingRequest
- */
-class EntityEnclosingRequestTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $client;
-
- public function setUp()
- {
- $this->client = new Client();
- }
-
- public function tearDown()
- {
- $this->client = null;
- }
-
- public function testConstructorConfiguresRequest()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com', array(
- 'X-Test' => '123'
- ));
- $request->setBody('Test');
- $this->assertEquals('123', $request->getHeader('X-Test'));
- $this->assertNull($request->getHeader('Expect'));
- }
-
- public function testCanSetBodyWithoutOverridingContentType()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com', array('Content-Type' => 'foooooo'));
- $request->setBody('{"a":"b"}');
- $this->assertEquals('foooooo', $request->getHeader('Content-Type'));
- }
-
- public function testRequestIncludesBodyInMessage()
- {
-
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.guzzle-project.com/', null, 'data');
- $this->assertEquals("PUT / HTTP/1.1\r\n"
- . "Host: www.guzzle-project.com\r\n"
- . "Content-Length: 4\r\n\r\n"
- . "data", (string) $request);
- }
-
- public function testRequestIncludesPostBodyInMessageOnlyWhenNoPostFiles()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/', null, array(
- 'foo' => 'bar'
- ));
- $this->assertEquals("POST / HTTP/1.1\r\n"
- . "Host: www.guzzle-project.com\r\n"
- . "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n\r\n"
- . "foo=bar", (string) $request);
-
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/', null, array(
- 'foo' => '@' . __FILE__
- ));
- $this->assertEquals("POST / HTTP/1.1\r\n"
- . "Host: www.guzzle-project.com\r\n"
- . "Content-Type: multipart/form-data\r\n"
- . "Expect: 100-Continue\r\n\r\n", (string) $request);
- }
-
- public function testAddsPostFieldsAndSetsContentLength()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/', null, array(
- 'data' => '123'
- ));
- $this->assertEquals("POST / HTTP/1.1\r\n"
- . "Host: www.guzzle-project.com\r\n"
- . "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n\r\n"
- . "data=123", (string) $request);
- }
-
- public function testAddsPostFilesAndSetsContentType()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.test.com/')
- ->addPostFiles(array(
- 'file' => __FILE__
- ))->addPostFields(array(
- 'a' => 'b'
- ));
- $message = (string) $request;
- $this->assertEquals('multipart/form-data', $request->getHeader('Content-Type'));
- $this->assertEquals('100-Continue', $request->getHeader('Expect'));
- }
-
- public function testRequestBodyContainsPostFiles()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.test.com/');
- $request->addPostFields(array(
- 'test' => '123'
- ));
- $this->assertContains("\r\n\r\ntest=123", (string) $request);
- }
-
- public function testRequestBodyAddsContentLength()
- {
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.test.com/');
- $request->setBody(EntityBody::factory('test'));
- $this->assertEquals(4, (string) $request->getHeader('Content-Length'));
- $this->assertFalse($request->hasHeader('Transfer-Encoding'));
- }
-
- public function testRequestBodyDoesNotUseContentLengthWhenChunked()
- {
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.test.com/', array(
- 'Transfer-Encoding' => 'chunked'
- ), 'test');
- $this->assertNull($request->getHeader('Content-Length'));
- $this->assertTrue($request->hasHeader('Transfer-Encoding'));
- }
-
- public function testRequestHasMutableBody()
- {
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.guzzle-project.com/', null, 'data');
- $body = $request->getBody();
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $body);
- $this->assertSame($body, $request->getBody());
-
- $newBody = EntityBody::factory('foobar');
- $request->setBody($newBody);
- $this->assertEquals('foobar', (string) $request->getBody());
- $this->assertSame($newBody, $request->getBody());
- }
-
- public function testSetPostFields()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/');
- $this->assertInstanceOf('Guzzle\\Http\\QueryString', $request->getPostFields());
-
- $fields = new QueryString(array(
- 'a' => 'b'
- ));
- $request->addPostFields($fields);
- $this->assertEquals($fields->getAll(), $request->getPostFields()->getAll());
- $this->assertEquals(array(), $request->getPostFiles());
- }
-
- public function testSetPostFiles()
- {
- $request = RequestFactory::getInstance()->create('POST', $this->getServer()->getUrl())
- ->setClient(new Client())
- ->addPostFiles(array(__FILE__))
- ->addPostFields(array(
- 'test' => 'abc'
- ));
-
- $request->getCurlOptions()->set('debug', true);
-
- $this->assertEquals(array(
- 'test' => 'abc'
- ), $request->getPostFields()->getAll());
-
- $files = $request->getPostFiles();
- $post = $files['file'][0];
- $this->assertEquals('file', $post->getFieldName());
- $this->assertContains('text/x-', $post->getContentType());
- $this->assertEquals(__FILE__, $post->getFilename());
-
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request->send();
-
- $this->assertNotNull($request->getHeader('Content-Length'));
- $this->assertContains('multipart/form-data; boundary=', (string) $request->getHeader('Content-Type'), '-> cURL must add the boundary');
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testSetPostFilesThrowsExceptionWhenFileIsNotFound()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/')
- ->addPostFiles(array(
- 'file' => 'filenotfound.ini'
- ));
- }
-
- /**
- * @expectedException Guzzle\Http\Exception\RequestException
- */
- public function testThrowsExceptionWhenNonStringsAreAddedToPost()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/')
- ->addPostFile('foo', new \stdClass());
- }
-
- public function testAllowsContentTypeInPostUploads()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/')
- ->addPostFile('foo', __FILE__, 'text/plain');
-
- $this->assertEquals(array(
- new PostFile('foo', __FILE__, 'text/plain')
- ), $request->getPostFile('foo'));
- }
-
- public function testGuessesContentTypeOfPostUpload()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/')
- ->addPostFile('foo', __FILE__);
- $file = $request->getPostFile('foo');
- $this->assertContains('text/x-', $file[0]->getContentType());
- }
-
- public function testAllowsContentDispositionFieldsInPostUploadsWhenSettingInBulk()
- {
- $postFile = new PostFile('foo', __FILE__, 'text/x-php');
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/')
- ->addPostFiles(array('foo' => $postFile));
-
- $this->assertEquals(array($postFile), $request->getPostFile('foo'));
- }
-
- public function testPostRequestsUseApplicationXwwwForUrlEncodedForArrays()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/');
- $request->setPostField('a', 'b');
- $this->assertContains("\r\n\r\na=b", (string) $request);
- $this->assertEquals('application/x-www-form-urlencoded; charset=utf-8', $request->getHeader('Content-Type'));
- }
-
- public function testProcessMethodAddsContentType()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/');
- $request->setPostField('a', 'b');
- $this->assertEquals('application/x-www-form-urlencoded; charset=utf-8', $request->getHeader('Content-Type'));
- }
-
- public function testPostRequestsUseMultipartFormDataWithFiles()
- {
- $request = RequestFactory::getInstance()->create('POST', 'http://www.guzzle-project.com/');
- $request->addPostFiles(array('file' => __FILE__));
- $this->assertEquals('multipart/form-data', $request->getHeader('Content-Type'));
- }
-
- public function testCanSendMultipleRequestsUsingASingleRequestObject()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 201 Created\r\nContent-Length: 0\r\n\r\n",
- ));
-
- // Send the first request
- $request = RequestFactory::getInstance()->create('PUT', $this->getServer()->getUrl())
- ->setBody('test')
- ->setClient(new Client());
- $request->send();
- $this->assertEquals(200, $request->getResponse()->getStatusCode());
-
- // Send the second request
- $request->setBody('abcdefg', 'application/json', false);
- $request->send();
- $this->assertEquals(201, $request->getResponse()->getStatusCode());
-
- // Ensure that the same request was sent twice with different bodies
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals(2, count($requests));
- $this->assertEquals(4, (string) $requests[0]->getHeader('Content-Length'));
- $this->assertEquals(7, (string) $requests[1]->getHeader('Content-Length'));
- }
-
- public function testRemovingPostFieldRebuildsPostFields()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com');
- $request->setPostField('test', 'value');
- $request->removePostField('test');
- $this->assertNull($request->getPostField('test'));
- }
-
- public function testUsesChunkedTransferWhenBodyLengthCannotBeDetermined()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request = new EntityEnclosingRequest('PUT', 'http://test.com/');
- $request->setBody(fopen($this->getServer()->getUrl(), 'r'));
- $this->assertEquals('chunked', $request->getHeader('Transfer-Encoding'));
- $this->assertFalse($request->hasHeader('Content-Length'));
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\RequestException
- */
- public function testThrowsExceptionWhenContentLengthCannotBeDeterminedAndUsingHttp1()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com/');
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request->setProtocolVersion('1.0');
- $request->setBody(fopen($this->getServer()->getUrl(), 'r'));
- }
-
- public function testAllowsNestedPostData()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com/');
- $request->addPostFields(array(
- 'a' => array('b', 'c')
- ));
- $this->assertEquals(array(
- 'a' => array('b', 'c')
- ), $request->getPostFields()->getAll());
- }
-
- public function testAllowsEmptyFields()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com/');
- $request->addPostFields(array(
- 'a' => ''
- ));
- $this->assertEquals(array(
- 'a' => ''
- ), $request->getPostFields()->getAll());
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\RequestException
- */
- public function testFailsOnInvalidFiles()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com/');
- $request->addPostFiles(array(
- 'a' => new \stdClass()
- ));
- }
-
- public function testHandlesEmptyStrings()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com/');
- $request->addPostFields(array(
- 'a' => '',
- 'b' => null,
- 'c' => 'Foo'
- ));
- $this->assertEquals(array(
- 'a' => '',
- 'b' => null,
- 'c' => 'Foo'
- ), $request->getPostFields()->getAll());
- }
-
- public function testHoldsPostFiles()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com/');
- $request->addPostFile('foo', __FILE__);
- $request->addPostFile(new PostFile('foo', __FILE__));
-
- $this->assertArrayHasKey('foo', $request->getPostFiles());
- $foo = $request->getPostFile('foo');
- $this->assertEquals(2, count($foo));
- $this->assertEquals(__FILE__, $foo[0]->getFilename());
- $this->assertEquals(__FILE__, $foo[1]->getFilename());
-
- $request->removePostFile('foo');
- $this->assertEquals(array(), $request->getPostFiles());
- }
-
- public function testAllowsAtPrefixWhenAddingPostFiles()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com/');
- $request->addPostFiles(array(
- 'foo' => '@' . __FILE__
- ));
- $foo = $request->getPostFile('foo');
- $this->assertEquals(__FILE__, $foo[0]->getFilename());
- }
-
- public function testSetStateToTransferWithEmptyBodySetsContentLengthToZero()
- {
- $request = new EntityEnclosingRequest('POST', 'http://test.com/');
- $request->setState($request::STATE_TRANSFER);
- $this->assertEquals('0', (string) $request->getHeader('Content-Length'));
- }
-
- public function testSettingExpectHeaderCutoffChangesRequest()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com/');
- $request->setHeader('Expect', '100-Continue');
- $request->setExpectHeaderCutoff(false);
- $this->assertNull($request->getHeader('Expect'));
- // There is not body, so remove the expect header
- $request->setHeader('Expect', '100-Continue');
- $request->setExpectHeaderCutoff(10);
- $this->assertNull($request->getHeader('Expect'));
- // The size is less than the cutoff
- $request->setBody('foo');
- $this->assertNull($request->getHeader('Expect'));
- // The size is greater than the cutoff
- $request->setBody('foobazbarbamboo');
- $this->assertNotNull($request->getHeader('Expect'));
- }
-
- public function testStrictRedirectsCanBeSpecifiedOnEntityEnclosingRequests()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com/');
- $request->configureRedirects(true);
- $this->assertTrue($request->getParams()->get(RedirectPlugin::STRICT_REDIRECTS));
- }
-
- public function testCanDisableRedirects()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com/');
- $request->configureRedirects(false, false);
- $this->assertTrue($request->getParams()->get(RedirectPlugin::DISABLE));
- }
-
- public function testSetsContentTypeWhenSettingBodyByGuessingFromEntityBody()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com/foo');
- $request->setBody(EntityBody::factory(fopen(__FILE__, 'r')));
- $this->assertEquals('text/x-php', (string) $request->getHeader('Content-Type'));
- }
-
- public function testDoesNotCloneBody()
- {
- $request = new EntityEnclosingRequest('PUT', 'http://test.com/foo');
- $request->setBody('test');
- $newRequest = clone $request;
- $newRequest->setBody('foo');
- $this->assertInternalType('string', (string) $request->getBody());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/HeaderFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/HeaderFactoryTest.php
deleted file mode 100644
index 62ca555..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/HeaderFactoryTest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message\Header;
-
-use Guzzle\Http\Message\Header\HeaderFactory;
-
-/**
- * @covers Guzzle\Http\Message\Header\HeaderFactory
- */
-class HeaderFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testCreatesBasicHeaders()
- {
- $f = new HeaderFactory();
- $h = $f->createHeader('Foo', 'Bar');
- $this->assertInstanceOf('Guzzle\Http\Message\Header', $h);
- $this->assertEquals('Foo', $h->getName());
- $this->assertEquals('Bar', (string) $h);
- }
-
- public function testCreatesSpecificHeaders()
- {
- $f = new HeaderFactory();
- $h = $f->createHeader('Link', '<http>; rel="test"');
- $this->assertInstanceOf('Guzzle\Http\Message\Header\Link', $h);
- $this->assertEquals('Link', $h->getName());
- $this->assertEquals('<http>; rel="test"', (string) $h);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/LinkTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/LinkTest.php
deleted file mode 100644
index c834d10..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/Header/LinkTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message\Header;
-
-use Guzzle\Http\Message\Header\Link;
-use Guzzle\Tests\GuzzleTestCase;
-
-class LinkTest extends GuzzleTestCase
-{
- public function testParsesLinks()
- {
- $link = new Link('Link', '<http:/.../front.jpeg>; rel=front; type="image/jpeg", <http://.../back.jpeg>; rel=back; type="image/jpeg", <http://.../side.jpeg?test=1>; rel=side; type="image/jpeg"');
- $links = $link->getLinks();
- $this->assertEquals(array(
- array(
- 'rel' => 'front',
- 'type' => 'image/jpeg',
- 'url' => 'http:/.../front.jpeg',
- ),
- array(
- 'rel' => 'back',
- 'type' => 'image/jpeg',
- 'url' => 'http://.../back.jpeg',
- ),
- array(
- 'rel' => 'side',
- 'type' => 'image/jpeg',
- 'url' => 'http://.../side.jpeg?test=1'
- )
- ), $links);
-
- $this->assertEquals(array(
- 'rel' => 'back',
- 'type' => 'image/jpeg',
- 'url' => 'http://.../back.jpeg',
- ), $link->getLink('back'));
-
- $this->assertTrue($link->hasLink('front'));
- $this->assertFalse($link->hasLink('foo'));
- }
-
- public function testCanAddLink()
- {
- $link = new Link('Link', '<http://foo>; rel=a; type="image/jpeg"');
- $link->addLink('http://test.com', 'test', array('foo' => 'bar'));
- $this->assertEquals(
- '<http://foo>; rel=a; type="image/jpeg", <http://test.com>; rel="test"; foo="bar"',
- (string) $link
- );
- }
-
- public function testCanParseLinksWithCommas()
- {
- $link = new Link('Link', '<http://example.com/TheBook/chapter1>; rel="previous"; title="start, index"');
- $this->assertEquals(array(
- array(
- 'rel' => 'previous',
- 'title' => 'start, index',
- 'url' => 'http://example.com/TheBook/chapter1',
- )
- ), $link->getLinks());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparison.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparison.php
deleted file mode 100644
index a3f511b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparison.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Http\Message\Header\HeaderCollection;
-
-/**
- * Class used to compare HTTP headers using a custom DSL
- */
-class HeaderComparison
-{
- /**
- * Compare HTTP headers and use special markup to filter values
- * A header prefixed with '!' means it must not exist
- * A header prefixed with '_' means it must be ignored
- * A header value of '*' means anything after the * will be ignored
- *
- * @param array $filteredHeaders Array of special headers
- * @param array $actualHeaders Array of headers to check against
- *
- * @return array|bool Returns an array of the differences or FALSE if none
- */
- public function compare($filteredHeaders, $actualHeaders)
- {
- $expected = array();
- $ignore = array();
- $absent = array();
-
- if ($actualHeaders instanceof HeaderCollection) {
- $actualHeaders = $actualHeaders->toArray();
- }
-
- foreach ($filteredHeaders as $k => $v) {
- if ($k[0] == '_') {
- // This header should be ignored
- $ignore[] = str_replace('_', '', $k);
- } elseif ($k[0] == '!') {
- // This header must not be present
- $absent[] = str_replace('!', '', $k);
- } else {
- $expected[$k] = $v;
- }
- }
-
- return $this->compareArray($expected, $actualHeaders, $ignore, $absent);
- }
-
- /**
- * Check if an array of HTTP headers matches another array of HTTP headers while taking * into account as a wildcard
- *
- * @param array $expected Expected HTTP headers (allows wildcard values)
- * @param array|Collection $actual Actual HTTP header array
- * @param array $ignore Headers to ignore from the comparison
- * @param array $absent Array of headers that must not be present
- *
- * @return array|bool Returns an array of the differences or FALSE if none
- */
- public function compareArray(array $expected, $actual, array $ignore = array(), array $absent = array())
- {
- $differences = array();
-
- // Add information about headers that were present but weren't supposed to be
- foreach ($absent as $header) {
- if ($this->hasKey($header, $actual)) {
- $differences["++ {$header}"] = $actual[$header];
- unset($actual[$header]);
- }
- }
-
- // Check if expected headers are missing
- foreach ($expected as $header => $value) {
- if (!$this->hasKey($header, $actual)) {
- $differences["- {$header}"] = $value;
- }
- }
-
- // Flip the ignore array so it works with the case insensitive helper
- $ignore = array_flip($ignore);
- // Allow case-insensitive comparisons in wildcards
- $expected = array_change_key_case($expected);
-
- // Compare the expected and actual HTTP headers in no particular order
- foreach ($actual as $key => $value) {
-
- // If this is to be ignored, the skip it
- if ($this->hasKey($key, $ignore)) {
- continue;
- }
-
- // If the header was not expected
- if (!$this->hasKey($key, $expected)) {
- $differences["+ {$key}"] = $value;
- continue;
- }
-
- // Check values and take wildcards into account
- $lkey = strtolower($key);
- $pos = is_string($expected[$lkey]) ? strpos($expected[$lkey], '*') : false;
-
- foreach ((array) $actual[$key] as $v) {
- if (($pos === false && $v != $expected[$lkey]) || $pos > 0 && substr($v, 0, $pos) != substr($expected[$lkey], 0, $pos)) {
- $differences[$key] = "{$value} != {$expected[$lkey]}";
- }
- }
- }
-
- return empty($differences) ? false : $differences;
- }
-
- /**
- * Case insensitive check if an array have a key
- *
- * @param string $key Key to check
- * @param array $array Array to check
- *
- * @return bool
- */
- protected function hasKey($key, $array)
- {
- if ($array instanceof Collection) {
- $keys = $array->getKeys();
- } else {
- $keys = array_keys($array);
- }
-
- foreach ($keys as $k) {
- if (!strcasecmp($k, $key)) {
- return true;
- }
- }
-
- return false;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparisonTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparisonTest.php
deleted file mode 100644
index 86c4fe8..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderComparisonTest.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Tests\Http\Message\HeaderComparison;
-
-class HeaderComparisonTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function filterProvider()
- {
- return array(
-
- // Headers match
- array(array(
- 'Content-Length' => 'Foo'
- ), array(
- 'Content-Length' => 'Foo'
- ), false),
-
- // Missing header
- array(array(
- 'X-Foo' => 'Bar'
- ), array(), array(
- '- X-Foo' => 'Bar'
- )),
-
- // Extra headers is present
- array(array(
- 'X-Foo' => 'Bar'
- ), array(
- 'X-Foo' => 'Bar',
- 'X-Baz' => 'Jar'
- ), array(
- '+ X-Baz' => 'Jar'
- )),
-
- // Header is present but must be absent
- array(array(
- '!X-Foo' => '*'
- ), array(
- 'X-Foo' => 'Bar'
- ), array(
- '++ X-Foo' => 'Bar'
- )),
-
- // Different values
- array(array(
- 'X-Foo' => 'Bar'
- ), array(
- 'X-Foo' => 'Baz'
- ), array(
- 'X-Foo' => 'Baz != Bar'
- )),
-
- // Wildcard search passes
- array(array(
- 'X-Foo' => '*'
- ), array(
- 'X-Foo' => 'Bar'
- ), false),
-
- // Wildcard search fails
- array(array(
- 'X-Foo' => '*'
- ), array(), array(
- '- X-Foo' => '*'
- )),
-
- // Ignore extra header if present
- array(array(
- 'X-Foo' => '*',
- '_X-Bar' => '*',
- ), array(
- 'X-Foo' => 'Baz',
- 'X-Bar' => 'Jar'
- ), false),
-
- // Ignore extra header if present and is not
- array(array(
- 'X-Foo' => '*',
- '_X-Bar' => '*',
- ), array(
- 'X-Foo' => 'Baz'
- ), false),
-
- // Case insensitive
- array(array(
- 'X-Foo' => '*',
- '_X-Bar' => '*',
- ), array(
- 'x-foo' => 'Baz',
- 'x-BAR' => 'baz'
- ), false),
-
- // Case insensitive with collection
- array(array(
- 'X-Foo' => '*',
- '_X-Bar' => '*',
- ), new Collection(array(
- 'x-foo' => 'Baz',
- 'x-BAR' => 'baz'
- )), false),
- );
- }
-
- /**
- * @dataProvider filterProvider
- */
- public function testComparesHeaders($filters, $headers, $result)
- {
- $compare = new HeaderComparison();
- $this->assertEquals($result, $compare->compare($filters, $headers));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderTest.php
deleted file mode 100644
index c750234..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/HeaderTest.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message;
-
-use Guzzle\Http\Message\Header;
-use Guzzle\Http\Message\Response;
-
-/**
- * @covers Guzzle\Http\Message\Header
- */
-class HeaderTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $test = array(
- 'zoo' => array('foo', 'Foo'),
- 'Zoo' => 'bar',
- );
-
- public function testStoresHeaderName()
- {
- $i = new Header('Zoo', $this->test);
- $this->assertEquals('Zoo', $i->getName());
- }
-
- public function testConvertsToString()
- {
- $i = new Header('Zoo', $this->test);
- $this->assertEquals('foo, Foo, bar', (string) $i);
- $i->setGlue(';');
- $this->assertEquals('foo; Foo; bar', (string) $i);
- }
-
- public function testNormalizesGluedHeaders()
- {
- $h = new Header('Zoo', array('foo, Faz', 'bar'));
- $result = $h->normalize(true)->toArray();
- natsort($result);
- $this->assertEquals(array('bar', 'foo', 'Faz'), $result);
- }
-
- public function testCanSearchForValues()
- {
- $h = new Header('Zoo', $this->test);
- $this->assertTrue($h->hasValue('foo'));
- $this->assertTrue($h->hasValue('Foo'));
- $this->assertTrue($h->hasValue('bar'));
- $this->assertFalse($h->hasValue('moo'));
- $this->assertFalse($h->hasValue('FoO'));
- }
-
- public function testIsCountable()
- {
- $h = new Header('Zoo', $this->test);
- $this->assertEquals(3, count($h));
- }
-
- public function testCanBeIterated()
- {
- $h = new Header('Zoo', $this->test);
- $results = array();
- foreach ($h as $key => $value) {
- $results[$key] = $value;
- }
- $this->assertEquals(array(
- 'foo', 'Foo', 'bar'
- ), $results);
- }
-
- public function testAllowsFalseyValues()
- {
- // Allows 0
- $h = new Header('Foo', 0, ';');
- $this->assertEquals('0', (string) $h);
- $this->assertEquals(1, count($h));
- $this->assertEquals(';', $h->getGlue());
-
- // Does not add a null header by default
- $h = new Header('Foo');
- $this->assertEquals('', (string) $h);
- $this->assertEquals(0, count($h));
-
- // Allows null array for a single null header
- $h = new Header('Foo', array(null));
- $this->assertEquals('', (string) $h);
-
- // Allows empty string
- $h = new Header('Foo', '');
- $this->assertEquals('', (string) $h);
- $this->assertEquals(1, count($h));
- $this->assertEquals(1, count($h->normalize()->toArray()));
- }
-
- public function testCanRemoveValues()
- {
- $h = new Header('Foo', array('Foo', 'baz', 'bar'));
- $h->removeValue('bar');
- $this->assertTrue($h->hasValue('Foo'));
- $this->assertFalse($h->hasValue('bar'));
- $this->assertTrue($h->hasValue('baz'));
- }
-
- public function testAllowsArrayInConstructor()
- {
- $h = new Header('Foo', array('Testing', '123', 'Foo=baz'));
- $this->assertEquals(array('Testing', '123', 'Foo=baz'), $h->toArray());
- }
-
- public function parseParamsProvider()
- {
- $res1 = array(
- array(
- '<http:/.../front.jpeg>' => '',
- 'rel' => 'front',
- 'type' => 'image/jpeg',
- ),
- array(
- '<http://.../back.jpeg>' => '',
- 'rel' => 'back',
- 'type' => 'image/jpeg',
- ),
- );
-
- return array(
- array(
- '<http:/.../front.jpeg>; rel="front"; type="image/jpeg", <http://.../back.jpeg>; rel=back; type="image/jpeg"',
- $res1
- ),
- array(
- '<http:/.../front.jpeg>; rel="front"; type="image/jpeg",<http://.../back.jpeg>; rel=back; type="image/jpeg"',
- $res1
- ),
- array(
- 'foo="baz"; bar=123, boo, test="123", foobar="foo;bar"',
- array(
- array('foo' => 'baz', 'bar' => '123'),
- array('boo' => ''),
- array('test' => '123'),
- array('foobar' => 'foo;bar')
- )
- ),
- array(
- '<http://.../side.jpeg?test=1>; rel="side"; type="image/jpeg",<http://.../side.jpeg?test=2>; rel=side; type="image/jpeg"',
- array(
- array('<http://.../side.jpeg?test=1>' => '', 'rel' => 'side', 'type' => 'image/jpeg'),
- array('<http://.../side.jpeg?test=2>' => '', 'rel' => 'side', 'type' => 'image/jpeg')
- )
- ),
- array(
- '',
- array()
- )
- );
- }
-
- /**
- * @dataProvider parseParamsProvider
- */
- public function testParseParams($header, $result)
- {
- $response = new Response(200, array('Link' => $header));
- $this->assertEquals($result, $response->getHeader('Link')->parseParams());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/PostFileTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/PostFileTest.php
deleted file mode 100644
index be048cb..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/PostFileTest.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\PostFile;
-
-/**
- * @covers Guzzle\Http\Message\PostFile
- * @group server
- */
-class PostFileTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testConstructorConfiguresPostFile()
- {
- $file = new PostFile('foo', __FILE__, 'x-foo', 'boo');
- $this->assertEquals('foo', $file->getFieldName());
- $this->assertEquals(__FILE__, $file->getFilename());
- $this->assertEquals('boo', $file->getPostName());
- $this->assertEquals('x-foo', $file->getContentType());
- }
-
- public function testRemovesLeadingAtSymbolFromPath()
- {
- $file = new PostFile('foo', '@' . __FILE__);
- $this->assertEquals(__FILE__, $file->getFilename());
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testEnsuresFileIsReadable()
- {
- $file = new PostFile('foo', '/foo/baz/bar');
- }
-
- public function testCanChangeContentType()
- {
- $file = new PostFile('foo', '@' . __FILE__);
- $file->setContentType('Boo');
- $this->assertEquals('Boo', $file->getContentType());
- }
-
- public function testCanChangeFieldName()
- {
- $file = new PostFile('foo', '@' . __FILE__);
- $file->setFieldName('Boo');
- $this->assertEquals('Boo', $file->getFieldName());
- }
-
- public function testReturnsCurlValueString()
- {
- $file = new PostFile('foo', __FILE__);
- if (version_compare(phpversion(), '5.5.0', '<')) {
- $this->assertContains('@' . __FILE__ . ';filename=PostFileTest.php;type=text/x-', $file->getCurlValue());
- } else {
- $c = $file->getCurlValue();
- $this->assertEquals(__FILE__, $c->getFilename());
- $this->assertEquals('PostFileTest.php', $c->getPostFilename());
- $this->assertContains('text/x-', $c->getMimeType());
- }
- }
-
- public function testReturnsCurlValueStringAndPostname()
- {
- $file = new PostFile('foo', __FILE__, null, 'NewPostFileTest.php');
- if (version_compare(phpversion(), '5.5.0', '<')) {
- $this->assertContains('@' . __FILE__ . ';filename=NewPostFileTest.php;type=text/x-', $file->getCurlValue());
- } else {
- $c = $file->getCurlValue();
- $this->assertEquals(__FILE__, $c->getFilename());
- $this->assertEquals('NewPostFileTest.php', $c->getPostFilename());
- $this->assertContains('text/x-', $c->getMimeType());
- }
- }
-
- public function testContentDispositionFilePathIsStripped()
- {
- $this->getServer()->flush();
- $client = new Client($this->getServer()->getUrl());
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request = $client->post()->addPostFile('file', __FILE__);
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(false);
- $this->assertContains('POST / HTTP/1.1', $requests[0]);
- $this->assertContains('Content-Disposition: form-data; name="file"; filename="PostFileTest.php"', $requests[0]);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php
deleted file mode 100644
index 80b8d54..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestFactoryTest.php
+++ /dev/null
@@ -1,616 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Url;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\QueryString;
-use Guzzle\Parser\Message\MessageParser;
-use Guzzle\Plugin\Log\LogPlugin;
-use Guzzle\Plugin\Mock\MockPlugin;
-
-/**
- * @group server
- * @covers Guzzle\Http\Message\RequestFactory
- */
-class HttpRequestFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testCachesSingletonInstance()
- {
- $factory = RequestFactory::getInstance();
- $this->assertSame($factory, RequestFactory::getInstance());
- }
-
- public function testCreatesNewGetRequests()
- {
- $request = RequestFactory::getInstance()->create('GET', 'http://www.google.com/');
- $this->assertInstanceOf('Guzzle\\Http\\Message\\MessageInterface', $request);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\RequestInterface', $request);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Request', $request);
- $this->assertEquals('GET', $request->getMethod());
- $this->assertEquals('http', $request->getScheme());
- $this->assertEquals('http://www.google.com/', $request->getUrl());
- $this->assertEquals('www.google.com', $request->getHost());
- $this->assertEquals('/', $request->getPath());
- $this->assertEquals('/', $request->getResource());
-
- // Create a GET request with a custom receiving body
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $b = EntityBody::factory();
- $request = RequestFactory::getInstance()->create('GET', $this->getServer()->getUrl(), null, $b);
- $request->setClient(new Client());
- $response = $request->send();
- $this->assertSame($b, $response->getBody());
- }
-
- public function testCreatesPutRequests()
- {
- // Test using a string
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.google.com/path?q=1&v=2', null, 'Data');
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- $this->assertEquals('PUT', $request->getMethod());
- $this->assertEquals('http', $request->getScheme());
- $this->assertEquals('http://www.google.com/path?q=1&v=2', $request->getUrl());
- $this->assertEquals('www.google.com', $request->getHost());
- $this->assertEquals('/path', $request->getPath());
- $this->assertEquals('/path?q=1&v=2', $request->getResource());
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $request->getBody());
- $this->assertEquals('Data', (string) $request->getBody());
- unset($request);
-
- // Test using an EntityBody
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.google.com/path?q=1&v=2', null, EntityBody::factory('Data'));
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- $this->assertEquals('Data', (string) $request->getBody());
-
- // Test using a resource
- $resource = fopen('php://temp', 'w+');
- fwrite($resource, 'Data');
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.google.com/path?q=1&v=2', null, $resource);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- $this->assertEquals('Data', (string) $request->getBody());
-
- // Test using an object that can be cast as a string
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.google.com/path?q=1&v=2', null, Url::factory('http://www.example.com/'));
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- $this->assertEquals('http://www.example.com/', (string) $request->getBody());
- }
-
- public function testCreatesHeadAndDeleteRequests()
- {
- $request = RequestFactory::getInstance()->create('DELETE', 'http://www.test.com/');
- $this->assertEquals('DELETE', $request->getMethod());
- $request = RequestFactory::getInstance()->create('HEAD', 'http://www.test.com/');
- $this->assertEquals('HEAD', $request->getMethod());
- }
-
- public function testCreatesOptionsRequests()
- {
- $request = RequestFactory::getInstance()->create('OPTIONS', 'http://www.example.com/');
- $this->assertEquals('OPTIONS', $request->getMethod());
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- }
-
- public function testCreatesNewPutRequestWithBody()
- {
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.google.com/path?q=1&v=2', null, 'Data');
- $this->assertEquals('Data', (string) $request->getBody());
- }
-
- public function testCreatesNewPostRequestWithFields()
- {
- // Use an array
- $request = RequestFactory::getInstance()->create('POST', 'http://www.google.com/path?q=1&v=2', null, array(
- 'a' => 'b'
- ));
- $this->assertEquals(array('a' => 'b'), $request->getPostFields()->getAll());
- unset($request);
-
- // Use a collection
- $request = RequestFactory::getInstance()->create('POST', 'http://www.google.com/path?q=1&v=2', null, new Collection(array(
- 'a' => 'b'
- )));
- $this->assertEquals(array('a' => 'b'), $request->getPostFields()->getAll());
-
- // Use a QueryString
- $request = RequestFactory::getInstance()->create('POST', 'http://www.google.com/path?q=1&v=2', null, new QueryString(array(
- 'a' => 'b'
- )));
- $this->assertEquals(array('a' => 'b'), $request->getPostFields()->getAll());
-
- $request = RequestFactory::getInstance()->create('POST', 'http://www.test.com/', null, array(
- 'a' => 'b',
- 'file' => '@' . __FILE__
- ));
-
- $this->assertEquals(array(
- 'a' => 'b'
- ), $request->getPostFields()->getAll());
-
- $files = $request->getPostFiles();
- $this->assertInstanceOf('Guzzle\Http\Message\PostFile', $files['file'][0]);
- }
-
- public function testCreatesFromParts()
- {
- $parts = parse_url('http://michael:123@www.google.com:8080/path?q=1&v=2');
-
- $request = RequestFactory::getInstance()->fromParts('PUT', $parts, null, 'Data');
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- $this->assertEquals('PUT', $request->getMethod());
- $this->assertEquals('http', $request->getScheme());
- $this->assertEquals('http://www.google.com:8080/path?q=1&v=2', $request->getUrl());
- $this->assertEquals('www.google.com', $request->getHost());
- $this->assertEquals('www.google.com:8080', $request->getHeader('Host'));
- $this->assertEquals('/path', $request->getPath());
- $this->assertEquals('/path?q=1&v=2', $request->getResource());
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $request->getBody());
- $this->assertEquals('Data', (string) $request->getBody());
- $this->assertEquals('michael', $request->getUsername());
- $this->assertEquals('123', $request->getPassword());
- $this->assertEquals('8080', $request->getPort());
- $this->assertEquals(array(
- 'scheme' => 'http',
- 'host' => 'www.google.com',
- 'port' => 8080,
- 'path' => '/path',
- 'query' => 'q=1&v=2',
- ), parse_url($request->getUrl()));
- }
-
- public function testCreatesFromMessage()
- {
- $auth = base64_encode('michael:123');
- $message = "PUT /path?q=1&v=2 HTTP/1.1\r\nHost: www.google.com:8080\r\nContent-Length: 4\r\nAuthorization: Basic {$auth}\r\n\r\nData";
- $request = RequestFactory::getInstance()->fromMessage($message);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- $this->assertEquals('PUT', $request->getMethod());
- $this->assertEquals('http', $request->getScheme());
- $this->assertEquals('http://www.google.com:8080/path?q=1&v=2', $request->getUrl());
- $this->assertEquals('www.google.com', $request->getHost());
- $this->assertEquals('www.google.com:8080', $request->getHeader('Host'));
- $this->assertEquals('/path', $request->getPath());
- $this->assertEquals('/path?q=1&v=2', $request->getResource());
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $request->getBody());
- $this->assertEquals('Data', (string) $request->getBody());
- $this->assertEquals("Basic {$auth}", (string) $request->getHeader('Authorization'));
- $this->assertEquals('8080', $request->getPort());
-
- // Test passing a blank message returns false
- $this->assertFalse($request = RequestFactory::getInstance()->fromMessage(''));
-
- // Test passing a url with no port
- $message = "PUT /path?q=1&v=2 HTTP/1.1\r\nHost: www.google.com\r\nContent-Length: 4\r\nAuthorization: Basic {$auth}\r\n\r\nData";
- $request = RequestFactory::getInstance()->fromMessage($message);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\EntityEnclosingRequest', $request);
- $this->assertEquals('PUT', $request->getMethod());
- $this->assertEquals('http', $request->getScheme());
- $this->assertEquals('http://www.google.com/path?q=1&v=2', $request->getUrl());
- $this->assertEquals('www.google.com', $request->getHost());
- $this->assertEquals('/path', $request->getPath());
- $this->assertEquals('/path?q=1&v=2', $request->getResource());
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $request->getBody());
- $this->assertEquals('Data', (string) $request->getBody());
- $this->assertEquals("Basic {$auth}", (string) $request->getHeader('Authorization'));
- $this->assertEquals(80, $request->getPort());
- }
-
- public function testCreatesNewTraceRequest()
- {
- $request = RequestFactory::getInstance()->create('TRACE', 'http://www.google.com/');
- $this->assertFalse($request instanceof \Guzzle\Http\Message\EntityEnclosingRequest);
- $this->assertEquals('TRACE', $request->getMethod());
- }
-
- public function testCreatesProperTransferEncodingRequests()
- {
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.google.com/', array(
- 'Transfer-Encoding' => 'chunked'
- ), 'hello');
- $this->assertEquals('chunked', $request->getHeader('Transfer-Encoding'));
- $this->assertFalse($request->hasHeader('Content-Length'));
- }
-
- public function testProperlyDealsWithDuplicateHeaders()
- {
- $parser = new MessageParser();
-
- $message = "POST / http/1.1\r\n"
- . "DATE:Mon, 09 Sep 2011 23:36:00 GMT\r\n"
- . "host:host.foo.com\r\n"
- . "ZOO:abc\r\n"
- . "ZOO:123\r\n"
- . "ZOO:HI\r\n"
- . "zoo:456\r\n\r\n";
-
- $parts = $parser->parseRequest($message);
- $this->assertEquals(array (
- 'DATE' => 'Mon, 09 Sep 2011 23:36:00 GMT',
- 'host' => 'host.foo.com',
- 'ZOO' => array('abc', '123', 'HI'),
- 'zoo' => '456',
- ), $parts['headers']);
-
- $request = RequestFactory::getInstance()->fromMessage($message);
-
- $this->assertEquals(array(
- 'abc', '123', 'HI', '456'
- ), $request->getHeader('zoo')->toArray());
- }
-
- public function testCreatesHttpMessagesWithBodiesAndNormalizesLineEndings()
- {
- $message = "POST / http/1.1\r\n"
- . "Content-Type:application/x-www-form-urlencoded; charset=utf8\r\n"
- . "Date:Mon, 09 Sep 2011 23:36:00 GMT\r\n"
- . "Host:host.foo.com\r\n\r\n"
- . "foo=bar";
-
- $request = RequestFactory::getInstance()->fromMessage($message);
- $this->assertEquals('application/x-www-form-urlencoded; charset=utf8', (string) $request->getHeader('Content-Type'));
- $this->assertEquals('foo=bar', (string) $request->getBody());
-
- $message = "POST / http/1.1\n"
- . "Content-Type:application/x-www-form-urlencoded; charset=utf8\n"
- . "Date:Mon, 09 Sep 2011 23:36:00 GMT\n"
- . "Host:host.foo.com\n\n"
- . "foo=bar";
- $request = RequestFactory::getInstance()->fromMessage($message);
- $this->assertEquals('foo=bar', (string) $request->getBody());
-
- $message = "PUT / HTTP/1.1\r\nContent-Length: 0\r\n\r\n";
- $request = RequestFactory::getInstance()->fromMessage($message);
- $this->assertTrue($request->hasHeader('Content-Length'));
- $this->assertEquals(0, (string) $request->getHeader('Content-Length'));
- }
-
- public function testBugPathIncorrectlyHandled()
- {
- $message = "POST /foo\r\n\r\nBODY";
- $request = RequestFactory::getInstance()->fromMessage($message);
- $this->assertSame('POST', $request->getMethod());
- $this->assertSame('/foo', $request->getPath());
- $this->assertSame('BODY', (string) $request->getBody());
- }
-
- public function testHandlesChunkedTransferEncoding()
- {
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.foo.com/', array(
- 'Transfer-Encoding' => 'chunked'
- ), 'Test');
- $this->assertFalse($request->hasHeader('Content-Length'));
- $this->assertEquals('chunked', $request->getHeader('Transfer-Encoding'));
-
- $request = RequestFactory::getInstance()->create('POST', 'http://www.foo.com/', array(
- 'transfer-encoding' => 'chunked'
- ), array(
- 'foo' => 'bar'
- ));
-
- $this->assertFalse($request->hasHeader('Content-Length'));
- $this->assertEquals('chunked', $request->getHeader('Transfer-Encoding'));
- }
-
- public function testClonesRequestsWithMethodWithoutClient()
- {
- $f = RequestFactory::getInstance();
- $request = $f->create('GET', 'http://www.test.com', array('X-Foo' => 'Bar'));
- $request->getParams()->replace(array('test' => '123'));
- $request->getCurlOptions()->set('foo', 'bar');
- $cloned = $f->cloneRequestWithMethod($request, 'PUT');
- $this->assertEquals('PUT', $cloned->getMethod());
- $this->assertEquals('Bar', (string) $cloned->getHeader('X-Foo'));
- $this->assertEquals('http://www.test.com', $cloned->getUrl());
- // Ensure params are cloned and cleaned up
- $this->assertEquals(1, count($cloned->getParams()->getAll()));
- $this->assertEquals('123', $cloned->getParams()->get('test'));
- // Ensure curl options are cloned
- $this->assertEquals('bar', $cloned->getCurlOptions()->get('foo'));
- // Ensure event dispatcher is cloned
- $this->assertNotSame($request->getEventDispatcher(), $cloned->getEventDispatcher());
- }
-
- public function testClonesRequestsWithMethodWithClient()
- {
- $f = RequestFactory::getInstance();
- $client = new Client();
- $request = $client->put('http://www.test.com', array('Content-Length' => 4), 'test');
- $cloned = $f->cloneRequestWithMethod($request, 'GET');
- $this->assertEquals('GET', $cloned->getMethod());
- $this->assertNull($cloned->getHeader('Content-Length'));
- $this->assertEquals('http://www.test.com', $cloned->getUrl());
- $this->assertSame($request->getClient(), $cloned->getClient());
- }
-
- public function testClonesRequestsWithMethodWithClientWithEntityEnclosingChange()
- {
- $f = RequestFactory::getInstance();
- $client = new Client();
- $request = $client->put('http://www.test.com', array('Content-Length' => 4), 'test');
- $cloned = $f->cloneRequestWithMethod($request, 'POST');
- $this->assertEquals('POST', $cloned->getMethod());
- $this->assertEquals('test', (string) $cloned->getBody());
- }
-
- public function testCanDisableRedirects()
- {
- $this->getServer()->enqueue(array(
- "HTTP/1.1 307\r\nLocation: " . $this->getServer()->getUrl() . "\r\nContent-Length: 0\r\n\r\n"
- ));
- $client = new Client($this->getServer()->getUrl());
- $response = $client->get('/', array(), array('allow_redirects' => false))->send();
- $this->assertEquals(307, $response->getStatusCode());
- }
-
- public function testCanAddCookies()
- {
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get('/', array(), array('cookies' => array('Foo' => 'Bar')));
- $this->assertEquals('Bar', $request->getCookie('Foo'));
- }
-
- public function testCanAddQueryString()
- {
- $request = RequestFactory::getInstance()->create('GET', 'http://foo.com', array(), null, array(
- 'query' => array('Foo' => 'Bar')
- ));
- $this->assertEquals('Bar', $request->getQuery()->get('Foo'));
- }
-
- public function testCanSetDefaultQueryString()
- {
- $request = new Request('GET', 'http://www.foo.com?test=abc');
- RequestFactory::getInstance()->applyOptions($request, array(
- 'query' => array('test' => '123', 'other' => 't123')
- ), RequestFactory::OPTIONS_AS_DEFAULTS);
- $this->assertEquals('abc', $request->getQuery()->get('test'));
- $this->assertEquals('t123', $request->getQuery()->get('other'));
- }
-
- public function testCanAddBasicAuth()
- {
- $request = RequestFactory::getInstance()->create('GET', 'http://foo.com', array(), null, array(
- 'auth' => array('michael', 'test')
- ));
- $this->assertEquals('michael', $request->getUsername());
- $this->assertEquals('test', $request->getPassword());
- }
-
- public function testCanAddDigestAuth()
- {
- $request = RequestFactory::getInstance()->create('GET', 'http://foo.com', array(), null, array(
- 'auth' => array('michael', 'test', 'digest')
- ));
- $this->assertEquals(CURLAUTH_DIGEST, $request->getCurlOptions()->get(CURLOPT_HTTPAUTH));
- $this->assertEquals('michael', $request->getUsername());
- $this->assertEquals('test', $request->getPassword());
- }
-
- public function testCanAddEvents()
- {
- $foo = null;
- $client = new Client();
- $client->addSubscriber(new MockPlugin(array(new Response(200))));
- $request = $client->get($this->getServer()->getUrl(), array(), array(
- 'events' => array(
- 'request.before_send' => function () use (&$foo) { $foo = true; }
- )
- ));
- $request->send();
- $this->assertTrue($foo);
- }
-
- public function testCanAddEventsWithPriority()
- {
- $foo = null;
- $client = new Client();
- $client->addSubscriber(new MockPlugin(array(new Response(200))));
- $request = $client->get($this->getServer()->getUrl(), array(), array(
- 'events' => array(
- 'request.before_send' => array(function () use (&$foo) { $foo = true; }, 100)
- )
- ));
- $request->send();
- $this->assertTrue($foo);
- }
-
- public function testCanAddPlugins()
- {
- $mock = new MockPlugin(array(
- new Response(200),
- new Response(200)
- ));
- $client = new Client();
- $client->addSubscriber($mock);
- $request = $client->get('/', array(), array(
- 'plugins' => array($mock)
- ));
- $request->send();
- }
-
- public function testCanDisableExceptions()
- {
- $client = new Client();
- $request = $client->get('/', array(), array(
- 'plugins' => array(new MockPlugin(array(new Response(500)))),
- 'exceptions' => false
- ));
- $this->assertEquals(500, $request->send()->getStatusCode());
- }
-
- public function testCanDisableExceptionsWithErrorListener()
- {
- $client = new Client();
- $client->getEventDispatcher()->addListener('request.error', function () {});
- $request = $client->get('/', array(), array(
- 'plugins' => array(new MockPlugin(array(new Response(500)))),
- 'exceptions' => false
- ));
- $this->assertEquals(500, $request->send()->getStatusCode());
- }
-
- public function testCanChangeSaveToLocation()
- {
- $r = EntityBody::factory();
- $client = new Client();
- $request = $client->get('/', array(), array(
- 'plugins' => array(new MockPlugin(array(new Response(200, array(), 'testing')))),
- 'save_to' => $r
- ));
- $request->send();
- $this->assertEquals('testing', (string) $r);
- }
-
- public function testCanSetProxy()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('proxy' => '192.168.16.121'));
- $this->assertEquals('192.168.16.121', $request->getCurlOptions()->get(CURLOPT_PROXY));
- }
-
- public function testCanSetHeadersOption()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('headers' => array('Foo' => 'Bar')));
- $this->assertEquals('Bar', (string) $request->getHeader('Foo'));
- }
-
- public function testCanSetDefaultHeadersOptions()
- {
- $request = new Request('GET', 'http://www.foo.com', array('Foo' => 'Bar'));
- RequestFactory::getInstance()->applyOptions($request, array(
- 'headers' => array('Foo' => 'Baz', 'Bam' => 't123')
- ), RequestFactory::OPTIONS_AS_DEFAULTS);
- $this->assertEquals('Bar', (string) $request->getHeader('Foo'));
- $this->assertEquals('t123', (string) $request->getHeader('Bam'));
- }
-
- public function testCanSetBodyOption()
- {
- $client = new Client();
- $request = $client->put('/', array(), null, array('body' => 'test'));
- $this->assertEquals('test', (string) $request->getBody());
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testValidatesBodyOption()
- {
- $client = new Client();
- $client->get('/', array(), array('body' => 'test'));
- }
-
- public function testCanSetTimeoutOption()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('timeout' => 1.5));
- $this->assertEquals(1500, $request->getCurlOptions()->get(CURLOPT_TIMEOUT_MS));
- }
-
- public function testCanSetConnectTimeoutOption()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('connect_timeout' => 1.5));
- $this->assertEquals(1500, $request->getCurlOptions()->get(CURLOPT_CONNECTTIMEOUT_MS));
- }
-
- public function testCanSetDebug()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('debug' => true));
- $this->assertTrue($request->getCurlOptions()->get(CURLOPT_VERBOSE));
- }
-
- public function testCanSetVerifyToOff()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('verify' => false));
- $this->assertNull($request->getCurlOptions()->get(CURLOPT_CAINFO));
- $this->assertSame(0, $request->getCurlOptions()->get(CURLOPT_SSL_VERIFYHOST));
- $this->assertFalse($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER));
- }
-
- public function testCanSetVerifyToOn()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('verify' => true));
- $this->assertNotNull($request->getCurlOptions()->get(CURLOPT_CAINFO));
- $this->assertSame(2, $request->getCurlOptions()->get(CURLOPT_SSL_VERIFYHOST));
- $this->assertTrue($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER));
- }
-
- public function testCanSetVerifyToPath()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('verify' => '/foo.pem'));
- $this->assertEquals('/foo.pem', $request->getCurlOptions()->get(CURLOPT_CAINFO));
- $this->assertSame(2, $request->getCurlOptions()->get(CURLOPT_SSL_VERIFYHOST));
- $this->assertTrue($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER));
- }
-
- public function inputValidation()
- {
- return array_map(function ($option) { return array($option); }, array(
- 'headers', 'query', 'cookies', 'auth', 'events', 'plugins', 'params'
- ));
- }
-
- /**
- * @dataProvider inputValidation
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testValidatesInput($option)
- {
- $client = new Client();
- $client->get('/', array(), array($option => 'foo'));
- }
-
- public function testCanAddRequestParams()
- {
- $client = new Client();
- $request = $client->put('/', array(), null, array('params' => array('foo' => 'test')));
- $this->assertEquals('test', $request->getParams()->get('foo'));
- }
-
- public function testCanAddSslKey()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('ssl_key' => '/foo.pem'));
- $this->assertEquals('/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLKEY));
- }
-
- public function testCanAddSslKeyPassword()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('ssl_key' => array('/foo.pem', 'bar')));
- $this->assertEquals('/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLKEY));
- $this->assertEquals('bar', $request->getCurlOptions()->get(CURLOPT_SSLKEYPASSWD));
- }
-
- public function testCanAddSslCert()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('cert' => '/foo.pem'));
- $this->assertEquals('/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLCERT));
- }
-
- public function testCanAddSslCertPassword()
- {
- $client = new Client();
- $request = $client->get('/', array(), array('cert' => array('/foo.pem', 'bar')));
- $this->assertEquals('/foo.pem', $request->getCurlOptions()->get(CURLOPT_SSLCERT));
- $this->assertEquals('bar', $request->getCurlOptions()->get(CURLOPT_SSLCERTPASSWD));
- }
-
- public function testCreatesBodyWithoutZeroString()
- {
- $request = RequestFactory::getInstance()->create('PUT', 'http://test.com', array(), '0');
- $this->assertSame('0', (string) $request->getBody());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestTest.php
deleted file mode 100644
index 5bf6248..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/RequestTest.php
+++ /dev/null
@@ -1,639 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Url;
-use Guzzle\Http\Client;
-use Guzzle\Plugin\Async\AsyncPlugin;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\RedirectPlugin;
-use Guzzle\Http\Exception\BadResponseException;
-
-/**
- * @group server
- * @covers Guzzle\Http\Message\Request
- * @covers Guzzle\Http\Message\AbstractMessage
- */
-class RequestTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var Request */
- protected $request;
-
- /** @var Client */
- protected $client;
-
- protected function setUp()
- {
- $this->client = new Client($this->getServer()->getUrl());
- $this->request = $this->client->get();
- }
-
- public function tearDown()
- {
- unset($this->request);
- unset($this->client);
- }
-
- public function testConstructorBuildsRequestWithArrayHeaders()
- {
- // Test passing an array of headers
- $request = new Request('GET', 'http://www.guzzle-project.com/', array(
- 'foo' => 'bar'
- ));
-
- $this->assertEquals('GET', $request->getMethod());
- $this->assertEquals('http://www.guzzle-project.com/', $request->getUrl());
- $this->assertEquals('bar', $request->getHeader('foo'));
- }
-
- public function testDescribesEvents()
- {
- $this->assertInternalType('array', Request::getAllEvents());
- }
-
- public function testConstructorBuildsRequestWithCollectionHeaders()
- {
- $request = new Request('GET', 'http://www.guzzle-project.com/', new Collection(array(
- 'foo' => 'bar'
- )));
- $this->assertEquals('bar', $request->getHeader('foo'));
- }
-
- public function testConstructorBuildsRequestWithNoHeaders()
- {
- $request = new Request('GET', 'http://www.guzzle-project.com/', null);
- $this->assertFalse($request->hasHeader('foo'));
- }
-
- public function testConstructorHandlesNonBasicAuth()
- {
- $request = new Request('GET', 'http://www.guzzle-project.com/', array(
- 'Authorization' => 'Foo bar'
- ));
- $this->assertNull($request->getUserName());
- $this->assertNull($request->getPassword());
- $this->assertEquals('Foo bar', (string) $request->getHeader('Authorization'));
- }
-
- public function testRequestsCanBeConvertedToRawMessageStrings()
- {
- $auth = base64_encode('michael:123');
- $message = "PUT /path?q=1&v=2 HTTP/1.1\r\n"
- . "Host: www.google.com\r\n"
- . "Authorization: Basic {$auth}\r\n"
- . "Content-Length: 4\r\n\r\nData";
-
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.google.com/path?q=1&v=2', array(
- 'Authorization' => 'Basic ' . $auth
- ), 'Data');
-
- $this->assertEquals($message, $request->__toString());
- }
-
- /**
- * Add authorization after the fact and see that it was put in the message
- */
- public function testRequestStringsIncludeAuth()
- {
- $auth = base64_encode('michael:123');
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request = RequestFactory::getInstance()->create('PUT', $this->getServer()->getUrl(), null, 'Data')
- ->setClient($this->client)
- ->setAuth('michael', '123', CURLAUTH_BASIC);
- $request->send();
-
- $this->assertContains('Authorization: Basic ' . $auth, (string) $request);
- }
-
- public function testGetEventDispatcher()
- {
- $d = $this->request->getEventDispatcher();
- $this->assertInstanceOf('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface', $d);
- $this->assertEquals($d, $this->request->getEventDispatcher());
- }
-
- public function testRequestsManageClients()
- {
- $request = new Request('GET', 'http://test.com');
- $this->assertNull($request->getClient());
- $request->setClient($this->client);
- $this->assertSame($this->client, $request->getClient());
- }
-
- /**
- * @expectedException \RuntimeException
- * @expectedExceptionMessage A client must be set on the request
- */
- public function testRequestsRequireClients()
- {
- $request = new Request('GET', 'http://test.com');
- $request->send();
- }
-
- public function testSend()
- {
- $response = new Response(200, array(
- 'Content-Length' => 3
- ), 'abc');
- $this->request->setResponse($response, true);
- $r = $this->request->send();
-
- $this->assertSame($response, $r);
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $this->request->getResponse());
- $this->assertSame($r, $this->request->getResponse());
- $this->assertEquals('complete', $this->request->getState());
- }
-
- public function testGetResponse()
- {
- $this->assertNull($this->request->getResponse());
- $response = new Response(200, array('Content-Length' => 3), 'abc');
-
- $this->request->setResponse($response);
- $this->assertEquals($response, $this->request->getResponse());
-
- $client = new Client('http://www.google.com');
- $request = $client->get('http://www.google.com/');
- $request->setResponse($response, true);
- $request->send();
- $requestResponse = $request->getResponse();
- $this->assertSame($response, $requestResponse);
-
- // Try again, making sure it's still the same response
- $this->assertSame($requestResponse, $request->getResponse());
-
- $response = new Response(204);
- $request = $client->get();
- $request->setResponse($response, true);
- $request->send();
- $requestResponse = $request->getResponse();
- $this->assertSame($response, $requestResponse);
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $response->getBody());
- }
-
- public function testRequestThrowsExceptionOnBadResponse()
- {
- try {
- $this->request->setResponse(new Response(404, array('Content-Length' => 3), 'abc'), true);
- $this->request->send();
- $this->fail('Expected exception not thrown');
- } catch (BadResponseException $e) {
- $this->assertInstanceOf('Guzzle\\Http\\Message\\RequestInterface', $e->getRequest());
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $e->getResponse());
- $this->assertContains('Client error response', $e->getMessage());
- }
- }
-
- public function testManagesQuery()
- {
- $this->assertInstanceOf('Guzzle\\Http\\QueryString', $this->request->getQuery());
- $this->request->getQuery()->set('test', '123');
- $this->assertEquals('test=123', $this->request->getQuery(true));
- }
-
- public function testRequestHasMethod()
- {
- $this->assertEquals('GET', $this->request->getMethod());
- }
-
- public function testRequestHasScheme()
- {
- $this->assertEquals('http', $this->request->getScheme());
- $this->assertEquals($this->request, $this->request->setScheme('https'));
- $this->assertEquals('https', $this->request->getScheme());
- }
-
- public function testRequestHasHost()
- {
- $this->assertEquals('127.0.0.1', $this->request->getHost());
- $this->assertEquals('127.0.0.1:8124', (string) $this->request->getHeader('Host'));
-
- $this->assertSame($this->request, $this->request->setHost('www2.google.com'));
- $this->assertEquals('www2.google.com', $this->request->getHost());
- $this->assertEquals('www2.google.com:8124', (string) $this->request->getHeader('Host'));
-
- $this->assertSame($this->request, $this->request->setHost('www.test.com:8081'));
- $this->assertEquals('www.test.com', $this->request->getHost());
- $this->assertEquals(8081, $this->request->getPort());
- }
-
- public function testRequestHasProtocol()
- {
- $this->assertEquals('1.1', $this->request->getProtocolVersion());
- $this->assertEquals($this->request, $this->request->setProtocolVersion('1.1'));
- $this->assertEquals('1.1', $this->request->getProtocolVersion());
- $this->assertEquals($this->request, $this->request->setProtocolVersion('1.0'));
- $this->assertEquals('1.0', $this->request->getProtocolVersion());
- }
-
- public function testRequestHasPath()
- {
- $this->assertEquals('/', $this->request->getPath());
- $this->assertEquals($this->request, $this->request->setPath('/index.html'));
- $this->assertEquals('/index.html', $this->request->getPath());
- $this->assertEquals($this->request, $this->request->setPath('index.html'));
- $this->assertEquals('/index.html', $this->request->getPath());
- }
-
- public function testPermitsFalsyComponents()
- {
- $request = new Request('GET', 'http://0/0?0');
- $this->assertSame('0', $request->getHost());
- $this->assertSame('/0', $request->getPath());
- $this->assertSame('0', $request->getQuery(true));
-
- $request = new Request('GET', '0');
- $this->assertEquals('/0', $request->getPath());
- }
-
- public function testRequestHasPort()
- {
- $this->assertEquals(8124, $this->request->getPort());
- $this->assertEquals('127.0.0.1:8124', $this->request->getHeader('Host'));
-
- $this->assertEquals($this->request, $this->request->setPort('8080'));
- $this->assertEquals('8080', $this->request->getPort());
- $this->assertEquals('127.0.0.1:8080', $this->request->getHeader('Host'));
-
- $this->request->setPort(80);
- $this->assertEquals('127.0.0.1', $this->request->getHeader('Host'));
- }
-
- public function testRequestHandlesAuthorization()
- {
- // Uninitialized auth
- $this->assertEquals(null, $this->request->getUsername());
- $this->assertEquals(null, $this->request->getPassword());
-
- // Set an auth
- $this->assertSame($this->request, $this->request->setAuth('michael', '123'));
- $this->assertEquals('michael', $this->request->getUsername());
- $this->assertEquals('123', $this->request->getPassword());
-
- // Set an auth with blank password
- $this->assertSame($this->request, $this->request->setAuth('michael', ''));
- $this->assertEquals('michael', $this->request->getUsername());
- $this->assertEquals('', $this->request->getPassword());
-
- // Remove the auth
- $this->request->setAuth(false);
- $this->assertEquals(null, $this->request->getUsername());
- $this->assertEquals(null, $this->request->getPassword());
-
- // Make sure that the cURL based auth works too
- $request = new Request('GET', $this->getServer()->getUrl());
- $request->setAuth('michael', 'password', CURLAUTH_DIGEST);
- $this->assertEquals('michael:password', $request->getCurlOptions()->get(CURLOPT_USERPWD));
- $this->assertEquals(CURLAUTH_DIGEST, $request->getCurlOptions()->get(CURLOPT_HTTPAUTH));
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testValidatesAuth()
- {
- $this->request->setAuth('foo', 'bar', 'bam');
- }
-
- public function testGetResourceUri()
- {
- $this->assertEquals('/', $this->request->getResource());
- $this->request->setPath('/index.html');
- $this->assertEquals('/index.html', $this->request->getResource());
- $this->request->getQuery()->add('v', '1');
- $this->assertEquals('/index.html?v=1', $this->request->getResource());
- }
-
- public function testRequestHasMutableUrl()
- {
- $url = 'http://www.test.com:8081/path?q=123#fragment';
- $u = Url::factory($url);
- $this->assertSame($this->request, $this->request->setUrl($url));
- $this->assertEquals($url, $this->request->getUrl());
-
- $this->assertSame($this->request, $this->request->setUrl($u));
- $this->assertEquals($url, $this->request->getUrl());
- }
-
- public function testRequestHasState()
- {
- $this->assertEquals(RequestInterface::STATE_NEW, $this->request->getState());
- $this->request->setState(RequestInterface::STATE_TRANSFER);
- $this->assertEquals(RequestInterface::STATE_TRANSFER, $this->request->getState());
- }
-
- public function testSetManualResponse()
- {
- $response = new Response(200, array(
- 'Date' => 'Sat, 16 Oct 2010 17:27:14 GMT',
- 'Expires' => '-1',
- 'Cache-Control' => 'private, max-age=0',
- 'Content-Type' => 'text/html; charset=ISO-8859-1',
- ), 'response body');
-
- $this->assertSame($this->request, $this->request->setResponse($response), '-> setResponse() must use a fluent interface');
- $this->assertEquals('complete', $this->request->getState(), '-> setResponse() must change the state of the request to complete');
- $this->assertSame($response, $this->request->getResponse(), '-> setResponse() must set the exact same response that was passed in to it');
- }
-
- public function testRequestCanHaveManuallySetResponseBody()
- {
- $file = __DIR__ . '/../../TestData/temp.out';
- if (file_exists($file)) {
- unlink($file);
- }
-
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata");
- $request = RequestFactory::getInstance()->create('GET', $this->getServer()->getUrl());
- $request->setClient($this->client);
- $entityBody = EntityBody::factory(fopen($file, 'w+'));
- $request->setResponseBody($entityBody);
- $response = $request->send();
- $this->assertSame($entityBody, $response->getBody());
-
- $this->assertTrue(file_exists($file));
- $this->assertEquals('data', file_get_contents($file));
- unlink($file);
-
- $this->assertEquals('data', $response->getBody(true));
- }
-
- public function testHoldsCookies()
- {
- $this->assertNull($this->request->getCookie('test'));
-
- // Set a cookie
- $this->assertSame($this->request, $this->request->addCookie('test', 'abc'));
- $this->assertEquals('abc', $this->request->getCookie('test'));
-
- // Multiple cookies by setting the Cookie header
- $this->request->setHeader('Cookie', '__utma=1.638370270.1344367610.1374365610.1944450276.2; __utmz=1.1346368610.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); hl=de; PHPSESSID=ak93pqashi5uubuoq8fjv60897');
- $this->assertEquals('1.638370270.1344367610.1374365610.1944450276.2', $this->request->getCookie('__utma'));
- $this->assertEquals('1.1346368610.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)', $this->request->getCookie('__utmz'));
- $this->assertEquals('de', $this->request->getCookie('hl'));
- $this->assertEquals('ak93pqashi5uubuoq8fjv60897', $this->request->getCookie('PHPSESSID'));
-
- // Unset the cookies by setting the Cookie header to null
- $this->request->setHeader('Cookie', null);
- $this->assertNull($this->request->getCookie('test'));
- $this->request->removeHeader('Cookie');
-
- // Set and remove a cookie
- $this->assertSame($this->request, $this->request->addCookie('test', 'abc'));
- $this->assertEquals('abc', $this->request->getCookie('test'));
- $this->assertSame($this->request, $this->request->removeCookie('test'));
- $this->assertNull($this->request->getCookie('test'));
-
- // Remove the cookie header
- $this->assertSame($this->request, $this->request->addCookie('test', 'abc'));
- $this->request->removeHeader('Cookie');
- $this->assertEquals('', (string) $this->request->getHeader('Cookie'));
-
- // Remove a cookie value
- $this->request->addCookie('foo', 'bar')->addCookie('baz', 'boo');
- $this->request->removeCookie('foo');
- $this->assertEquals(array(
- 'baz' => 'boo'
- ), $this->request->getCookies());
-
- $this->request->addCookie('foo', 'bar');
- $this->assertEquals('baz=boo; foo=bar', (string) $this->request->getHeader('Cookie'));
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\RequestException
- * @expectedExceptionMessage Error completing request
- */
- public function testRequestThrowsExceptionWhenSetToCompleteWithNoResponse()
- {
- $this->request->setState(RequestInterface::STATE_COMPLETE);
- }
-
- public function testClonedRequestsUseNewInternalState()
- {
- $p = new AsyncPlugin();
- $this->request->getEventDispatcher()->addSubscriber($p);
- $h = $this->request->getHeader('Host');
-
- $r = clone $this->request;
- $this->assertEquals(RequestInterface::STATE_NEW, $r->getState());
- $this->assertNotSame($r->getQuery(), $this->request->getQuery());
- $this->assertNotSame($r->getCurlOptions(), $this->request->getCurlOptions());
- $this->assertNotSame($r->getEventDispatcher(), $this->request->getEventDispatcher());
- $this->assertEquals($r->getHeaders(), $this->request->getHeaders());
- $this->assertNotSame($h, $r->getHeader('Host'));
- $this->assertNotSame($r->getParams(), $this->request->getParams());
- $this->assertTrue($this->request->getEventDispatcher()->hasListeners('request.sent'));
- }
-
- public function testRecognizesBasicAuthCredentialsInUrls()
- {
- $this->request->setUrl('http://michael:test@test.com/');
- $this->assertEquals('michael', $this->request->getUsername());
- $this->assertEquals('test', $this->request->getPassword());
- }
-
- public function testRequestCanBeSentUsingCurl()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\nExpires: Thu, 01 Dec 1994 16:00:00 GMT\r\nConnection: close\r\n\r\ndata",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\nExpires: Thu, 01 Dec 1994 16:00:00 GMT\r\nConnection: close\r\n\r\ndata",
- "HTTP/1.1 404 Not Found\r\nContent-Encoding: application/xml\r\nContent-Length: 48\r\n\r\n<error><mesage>File not found</message></error>"
- ));
-
- $request = RequestFactory::getInstance()->create('GET', $this->getServer()->getUrl());
- $request->setClient($this->client);
- $response = $request->send();
-
- $this->assertEquals('data', $response->getBody(true));
- $this->assertEquals(200, (int) $response->getStatusCode());
- $this->assertEquals('OK', $response->getReasonPhrase());
- $this->assertEquals(4, $response->getContentLength());
- $this->assertEquals('Thu, 01 Dec 1994 16:00:00 GMT', $response->getExpires());
-
- // Test that the same handle can be sent twice without setting state to new
- $response2 = $request->send();
- $this->assertNotSame($response, $response2);
-
- try {
- $request = RequestFactory::getInstance()->create('GET', $this->getServer()->getUrl() . 'index.html');
- $request->setClient($this->client);
- $response = $request->send();
- $this->fail('Request did not receive a 404 response');
- } catch (BadResponseException $e) {
- }
-
- $requests = $this->getServer()->getReceivedRequests(true);
- $messages = $this->getServer()->getReceivedRequests(false);
- $port = $this->getServer()->getPort();
-
- $userAgent = $this->client->getDefaultUserAgent();
-
- $this->assertEquals('127.0.0.1:' . $port, $requests[0]->getHeader('Host'));
- $this->assertEquals('127.0.0.1:' . $port, $requests[1]->getHeader('Host'));
- $this->assertEquals('127.0.0.1:' . $port, $requests[2]->getHeader('Host'));
-
- $this->assertEquals('/', $requests[0]->getPath());
- $this->assertEquals('/', $requests[1]->getPath());
- $this->assertEquals('/index.html', $requests[2]->getPath());
-
- $parts = explode("\r\n", $messages[0]);
- $this->assertEquals('GET / HTTP/1.1', $parts[0]);
-
- $parts = explode("\r\n", $messages[1]);
- $this->assertEquals('GET / HTTP/1.1', $parts[0]);
-
- $parts = explode("\r\n", $messages[2]);
- $this->assertEquals('GET /index.html HTTP/1.1', $parts[0]);
- }
-
- public function testThrowsExceptionsWhenUnsuccessfulResponseIsReceivedByDefault()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 404 Not found\r\nContent-Length: 0\r\n\r\n");
-
- try {
- $request = $this->client->get('/index.html');
- $response = $request->send();
- $this->fail('Request did not receive a 404 response');
- } catch (BadResponseException $e) {
- $this->assertContains('Client error response', $e->getMessage());
- $this->assertContains('[status code] 404', $e->getMessage());
- $this->assertContains('[reason phrase] Not found', $e->getMessage());
- }
- }
-
- public function testCanShortCircuitErrorHandling()
- {
- $request = $this->request;
- $response = new Response(404);
- $request->setResponse($response, true);
- $out = '';
- $that = $this;
- $request->getEventDispatcher()->addListener('request.error', function($event) use (&$out, $that) {
- $out .= $event['request'] . "\n" . $event['response'] . "\n";
- $event->stopPropagation();
- });
- $request->send();
- $this->assertContains((string) $request, $out);
- $this->assertContains((string) $request->getResponse(), $out);
- $this->assertSame($response, $request->getResponse());
- }
-
- public function testCanOverrideUnsuccessfulResponses()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 404 NOT FOUND\r\n" .
- "Content-Length: 0\r\n" .
- "\r\n",
- "HTTP/1.1 200 OK\r\n" .
- "Content-Length: 0\r\n" .
- "\r\n"
- ));
-
- $newResponse = null;
-
- $request = $this->request;
- $request->getEventDispatcher()->addListener('request.error', function($event) use (&$newResponse) {
- if ($event['response']->getStatusCode() == 404) {
- $newRequest = clone $event['request'];
- $newResponse = $newRequest->send();
- // Override the original response and bypass additional response processing
- $event['response'] = $newResponse;
- // Call $event['request']->setResponse($newResponse); to re-apply events
- $event->stopPropagation();
- }
- });
-
- $request->send();
-
- $this->assertEquals(200, $request->getResponse()->getStatusCode());
- $this->assertSame($newResponse, $request->getResponse());
- $this->assertEquals(2, count($this->getServer()->getReceivedRequests()));
- }
-
- public function testCanRetrieveUrlObject()
- {
- $request = new Request('GET', 'http://www.example.com/foo?abc=d');
- $this->assertInstanceOf('Guzzle\Http\Url', $request->getUrl(true));
- $this->assertEquals('http://www.example.com/foo?abc=d', $request->getUrl());
- $this->assertEquals('http://www.example.com/foo?abc=d', (string) $request->getUrl(true));
- }
-
- public function testUnresolvedRedirectsReturnResponse()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 303 SEE OTHER\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Foo\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n"
- ));
- $request = $this->request;
- $this->assertEquals(303, $request->send()->getStatusCode());
- $request->getParams()->set(RedirectPlugin::DISABLE, true);
- $this->assertEquals(301, $request->send()->getStatusCode());
- }
-
- public function testCanSendCustomRequests()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $request = $this->client->createRequest('PROPFIND', $this->getServer()->getUrl(), array(
- 'Content-Type' => 'text/plain'
- ), 'foo');
- $response = $request->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('PROPFIND', $requests[0]->getMethod());
- $this->assertEquals(3, (string) $requests[0]->getHeader('Content-Length'));
- $this->assertEquals('foo', (string) $requests[0]->getBody());
- }
-
- /**
- * @expectedException \PHPUnit_Framework_Error_Warning
- */
- public function testEnsuresFileCanBeCreated()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest");
- $this->client->get('/')->setResponseBody('/wefwefefefefwewefwe/wefwefwefefwe/wefwefewfw.txt')->send();
- }
-
- public function testAllowsFilenameForDownloadingContent()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest");
- $name = sys_get_temp_dir() . '/foo.txt';
- $this->client->get('/')->setResponseBody($name)->send();
- $this->assertEquals('test', file_get_contents($name));
- unlink($name);
- }
-
- public function testUsesCustomResponseBodyWhenItIsCustom()
- {
- $en = EntityBody::factory();
- $request = $this->client->get();
- $request->setResponseBody($en);
- $request->setResponse(new Response(200, array(), 'foo'));
- $this->assertEquals('foo', (string) $en);
- }
-
- public function testCanChangePortThroughScheme()
- {
- $request = new Request('GET', 'http://foo.com');
- $request->setScheme('https');
- $this->assertEquals('https://foo.com', (string) $request->getUrl());
- $this->assertEquals('foo.com', $request->getHost());
- $request->setScheme('http');
- $this->assertEquals('http://foo.com', (string) $request->getUrl());
- $this->assertEquals('foo.com', $request->getHost());
- $request->setPort(null);
- $this->assertEquals('http://foo.com', (string) $request->getUrl());
- $this->assertEquals('foo.com', $request->getHost());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/ResponseTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/ResponseTest.php
deleted file mode 100644
index 08b4df8..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Message/ResponseTest.php
+++ /dev/null
@@ -1,677 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Message;
-
-use Guzzle\Common\Collection;
-use Guzzle\Http\ClientInterface;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\HttpException;
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Http\Message\Response;
-
-/**
- * @group server
- * @covers Guzzle\Http\Message\Response
- */
-class ResponseTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var Response The response object to test */
- protected $response;
-
- public function setup()
- {
- $this->response = new Response(200, new Collection(array(
- 'Accept-Ranges' => 'bytes',
- 'Age' => '12',
- 'Allow' => 'GET, HEAD',
- 'Cache-Control' => 'no-cache',
- 'Content-Encoding' => 'gzip',
- 'Content-Language' => 'da',
- 'Content-Length' => '348',
- 'Content-Location' => '/index.htm',
- 'Content-Disposition' => 'attachment; filename=fname.ext',
- 'Content-MD5' => 'Q2hlY2sgSW50ZWdyaXR5IQ==',
- 'Content-Range' => 'bytes 21010-47021/47022',
- 'Content-Type' => 'text/html; charset=utf-8',
- 'Date' => 'Tue, 15 Nov 1994 08:12:31 GMT',
- 'ETag' => '737060cd8c284d8af7ad3082f209582d',
- 'Expires' => 'Thu, 01 Dec 1994 16:00:00 GMT',
- 'Last-Modified' => 'Tue, 15 Nov 1994 12:45:26 GMT',
- 'Location' => 'http://www.w3.org/pub/WWW/People.html',
- 'Pragma' => 'no-cache',
- 'Proxy-Authenticate' => 'Basic',
- 'Retry-After' => '120',
- 'Server' => 'Apache/1.3.27 (Unix) (Red-Hat/Linux)',
- 'Set-Cookie' => 'UserID=JohnDoe; Max-Age=3600; Version=1',
- 'Trailer' => 'Max-Forwards',
- 'Transfer-Encoding' => 'chunked',
- 'Vary' => '*',
- 'Via' => '1.0 fred, 1.1 nowhere.com (Apache/1.1)',
- 'Warning' => '199 Miscellaneous warning',
- 'WWW-Authenticate' => 'Basic'
- )), 'body');
- }
-
- public function tearDown()
- {
- unset($this->response);
- }
-
- public function testConstructor()
- {
- $params = new Collection();
- $body = EntityBody::factory('');
- $response = new Response(200, $params, $body);
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertEquals($body, $response->getBody());
- $this->assertEquals('OK', $response->getReasonPhrase());
- $this->assertEquals("HTTP/1.1 200 OK\r\n\r\n", $response->getRawHeaders());
-
- // Make sure Content-Length is set automatically
- $response = new Response(200, $params);
- $this->assertEquals("HTTP/1.1 200 OK\r\n\r\n", $response->getRawHeaders());
-
- // Pass bodies to the response
- $response = new Response(200, null, 'data');
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $response->getBody());
- $response = new Response(200, null, EntityBody::factory('data'));
- $this->assertInstanceOf('Guzzle\\Http\\EntityBody', $response->getBody());
- $this->assertEquals('data', $response->getBody(true));
- $response = new Response(200, null, '0');
- $this->assertSame('0', $response->getBody(true), 'getBody(true) should return "0" if response body is "0".');
-
- // Make sure the proper exception is thrown
- try {
- //$response = new Response(200, null, array('foo' => 'bar'));
- //$this->fail('Response did not throw exception when passing invalid body');
- } catch (HttpException $e) {
- }
-
- // Ensure custom codes can be set
- $response = new Response(2);
- $this->assertEquals(2, $response->getStatusCode());
- $this->assertEquals('', $response->getReasonPhrase());
-
- // Make sure the proper exception is thrown when sending invalid headers
- try {
- $response = new Response(200, 'adidas');
- $this->fail('Response did not throw exception when passing invalid $headers');
- } catch (BadResponseException $e) {
- }
- }
-
- public function test__toString()
- {
- $response = new Response(200);
- $this->assertEquals("HTTP/1.1 200 OK\r\n\r\n", (string) $response);
-
- // Add another header
- $response = new Response(200, array(
- 'X-Test' => 'Guzzle'
- ));
- $this->assertEquals("HTTP/1.1 200 OK\r\nX-Test: Guzzle\r\n\r\n", (string) $response);
-
- $response = new Response(200, array(
- 'Content-Length' => 4
- ), 'test');
- $this->assertEquals("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest", (string) $response);
- }
-
- public function testFactory()
- {
- $response = Response::fromMessage("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest");
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertEquals('OK', $response->getReasonPhrase());
- $this->assertEquals(4, (string) $response->getContentLength());
- $this->assertEquals('test', $response->getBody(true));
-
- // Make sure that automatic Content-Length works
- $response = Response::fromMessage("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest");
- $this->assertEquals(4, (string) $response->getContentLength());
- $this->assertEquals('test', $response->getBody(true));
- }
-
- public function testFactoryCanCreateHeadResponses()
- {
- $response = Response::fromMessage("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\n");
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertEquals('OK', $response->getReasonPhrase());
- $this->assertEquals(4, (string) $response->getContentLength());
- $this->assertEquals('', $response->getBody(true));
- }
-
- public function testFactoryRequiresMessage()
- {
- $this->assertFalse(Response::fromMessage(''));
- }
-
- public function testGetBody()
- {
- $body = EntityBody::factory('');
- $response = new Response(403, new Collection(), $body);
- $this->assertEquals($body, $response->getBody());
- $response->setBody('foo');
- $this->assertEquals('foo', $response->getBody(true));
- }
-
- public function testManagesStatusCode()
- {
- $response = new Response(403);
- $this->assertEquals(403, $response->getStatusCode());
- }
-
- public function testGetMessage()
- {
- $response = new Response(200, new Collection(array(
- 'Content-Length' => 4
- )), 'body');
-
- $this->assertEquals("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nbody", $response->getMessage());
- }
-
- public function testGetRawHeaders()
- {
- $response = new Response(200, new Collection(array(
- 'Keep-Alive' => 155,
- 'User-Agent' => 'Guzzle',
- 'Content-Length' => 4
- )), 'body');
-
- $this->assertEquals("HTTP/1.1 200 OK\r\nKeep-Alive: 155\r\nUser-Agent: Guzzle\r\nContent-Length: 4\r\n\r\n", $response->getRawHeaders());
- }
-
- public function testHandlesStatusAndStatusCodes()
- {
- $response = new Response(200, new Collection(), 'body');
- $this->assertEquals('OK', $response->getReasonPhrase());
-
- $this->assertSame($response, $response->setStatus(204));
- $this->assertEquals('No Content', $response->getReasonPhrase());
- $this->assertEquals(204, $response->getStatusCode());
-
- $this->assertSame($response, $response->setStatus(204, 'Testing!'));
- $this->assertEquals('Testing!', $response->getReasonPhrase());
- $this->assertEquals(204, $response->getStatusCode());
-
- $response->setStatus(2000);
- $this->assertEquals(2000, $response->getStatusCode());
- $this->assertEquals('', $response->getReasonPhrase());
-
- $response->setStatus(200, 'Foo');
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertEquals('Foo', $response->getReasonPhrase());
- }
-
- public function testIsClientError()
- {
- $response = new Response(403);
- $this->assertTrue($response->isClientError());
- $response = new Response(200);
- $this->assertFalse($response->isClientError());
- }
-
- public function testIsError()
- {
- $response = new Response(403);
- $this->assertTrue($response->isError());
- $response = new Response(200);
- $this->assertFalse($response->isError());
- $response = new Response(500);
- $this->assertTrue($response->isError());
- }
-
- public function testIsInformational()
- {
- $response = new Response(100);
- $this->assertTrue($response->isInformational());
- $response = new Response(200);
- $this->assertFalse($response->isInformational());
- }
-
- public function testIsRedirect()
- {
- $response = new Response(301);
- $this->assertTrue($response->isRedirect());
- $response = new Response(200);
- $this->assertFalse($response->isRedirect());
- }
-
- public function testIsServerError()
- {
- $response = new Response(500);
- $this->assertTrue($response->isServerError());
- $response = new Response(400);
- $this->assertFalse($response->isServerError());
- }
-
- public function testIsSuccessful()
- {
- $response = new Response(200);
- $this->assertTrue($response->isSuccessful());
- $response = new Response(403);
- $this->assertFalse($response->isSuccessful());
- }
-
- public function testGetAcceptRanges()
- {
- $this->assertEquals('bytes', $this->response->getAcceptRanges());
- }
-
- public function testCalculatesAge()
- {
- $this->assertEquals(12, $this->response->calculateAge());
-
- $this->response->removeHeader('Age');
- $this->response->removeHeader('Date');
- $this->assertNull($this->response->calculateAge());
-
- $this->response->setHeader('Date', gmdate(ClientInterface::HTTP_DATE, strtotime('-1 minute')));
- // If the test runs slowly, still pass with a +5 second allowance
- $this->assertTrue($this->response->getAge() - 60 <= 5);
- }
-
- public function testGetAllow()
- {
- $this->assertEquals('GET, HEAD', $this->response->getAllow());
- }
-
- public function testGetCacheControl()
- {
- $this->assertEquals('no-cache', $this->response->getCacheControl());
- }
-
- public function testGetContentEncoding()
- {
- $this->assertEquals('gzip', $this->response->getContentEncoding());
- }
-
- public function testGetContentLanguage()
- {
- $this->assertEquals('da', $this->response->getContentLanguage());
- }
-
- public function testGetContentLength()
- {
- $this->assertEquals('348', $this->response->getContentLength());
- }
-
- public function testGetContentLocation()
- {
- $this->assertEquals('/index.htm', $this->response->getContentLocation());
- }
-
- public function testGetContentDisposition()
- {
- $this->assertEquals('attachment; filename=fname.ext', $this->response->getContentDisposition());
- }
-
- public function testGetContentMd5()
- {
- $this->assertEquals('Q2hlY2sgSW50ZWdyaXR5IQ==', $this->response->getContentMd5());
- }
-
- public function testGetContentRange()
- {
- $this->assertEquals('bytes 21010-47021/47022', $this->response->getContentRange());
- }
-
- public function testGetContentType()
- {
- $this->assertEquals('text/html; charset=utf-8', $this->response->getContentType());
- }
-
- public function testGetDate()
- {
- $this->assertEquals('Tue, 15 Nov 1994 08:12:31 GMT', $this->response->getDate());
- }
-
- public function testGetEtag()
- {
- $this->assertEquals('737060cd8c284d8af7ad3082f209582d', $this->response->getEtag());
- }
-
- public function testGetExpires()
- {
- $this->assertEquals('Thu, 01 Dec 1994 16:00:00 GMT', $this->response->getExpires());
- }
-
- public function testGetLastModified()
- {
- $this->assertEquals('Tue, 15 Nov 1994 12:45:26 GMT', $this->response->getLastModified());
- }
-
- public function testGetLocation()
- {
- $this->assertEquals('http://www.w3.org/pub/WWW/People.html', $this->response->getLocation());
- }
-
- public function testGetPragma()
- {
- $this->assertEquals('no-cache', $this->response->getPragma());
- }
-
- public function testGetProxyAuthenticate()
- {
- $this->assertEquals('Basic', $this->response->getProxyAuthenticate());
- }
-
- public function testGetServer()
- {
- $this->assertEquals('Apache/1.3.27 (Unix) (Red-Hat/Linux)', $this->response->getServer());
- }
-
- public function testGetSetCookie()
- {
- $this->assertEquals('UserID=JohnDoe; Max-Age=3600; Version=1', $this->response->getSetCookie());
- }
-
- public function testGetMultipleSetCookie()
- {
- $this->response->addHeader('Set-Cookie', 'UserID=Mike; Max-Age=200');
- $this->assertEquals(array(
- 'UserID=JohnDoe; Max-Age=3600; Version=1',
- 'UserID=Mike; Max-Age=200',
- ), $this->response->getHeader('Set-Cookie')->toArray());
- }
-
- public function testGetSetCookieNormalizesHeaders()
- {
- $this->response->addHeaders(array(
- 'Set-Cooke' => 'boo',
- 'set-cookie' => 'foo'
- ));
-
- $this->assertEquals(array(
- 'UserID=JohnDoe; Max-Age=3600; Version=1',
- 'foo'
- ), $this->response->getHeader('Set-Cookie')->toArray());
-
- $this->response->addHeaders(array(
- 'set-cookie' => 'fubu'
- ));
- $this->assertEquals(
- array('UserID=JohnDoe; Max-Age=3600; Version=1', 'foo', 'fubu'),
- $this->response->getHeader('Set-Cookie')->toArray()
- );
- }
-
- public function testGetTrailer()
- {
- $this->assertEquals('Max-Forwards', $this->response->getTrailer());
- }
-
- public function testGetTransferEncoding()
- {
- $this->assertEquals('chunked', $this->response->getTransferEncoding());
- }
-
- public function testGetVary()
- {
- $this->assertEquals('*', $this->response->getVary());
- }
-
- public function testReturnsViaHeader()
- {
- $this->assertEquals('1.0 fred, 1.1 nowhere.com (Apache/1.1)', $this->response->getVia());
- }
- public function testGetWarning()
- {
- $this->assertEquals('199 Miscellaneous warning', $this->response->getWarning());
- }
-
- public function testReturnsWwwAuthenticateHeader()
- {
- $this->assertEquals('Basic', $this->response->getWwwAuthenticate());
- }
-
- public function testReturnsConnectionHeader()
- {
- $this->assertEquals(null, $this->response->getConnection());
- $this->response->setHeader('Connection', 'close');
- $this->assertEquals('close', $this->response->getConnection());
- }
-
- public function testReturnsHeaders()
- {
- $this->assertEquals('Basic', $this->response->getHeader('WWW-Authenticate', null, true));
- $this->assertEquals('chunked', $this->response->getHeader('Transfer-Encoding', null, false));
- }
-
- public function testHasTransferInfo()
- {
- $stats = array (
- 'url' => 'http://www.google.com/',
- 'content_type' => 'text/html; charset=ISO-8859-1',
- 'http_code' => 200,
- 'header_size' => 606,
- 'request_size' => 53,
- 'filetime' => -1,
- 'ssl_verify_result' => 0,
- 'redirect_count' => 0,
- 'total_time' => 0.093284,
- 'namelookup_time' => 0.001349,
- 'connect_time' => 0.01635,
- 'pretransfer_time' => 0.016358,
- 'size_upload' => 0,
- 'size_download' => 10330,
- 'speed_download' => 110737,
- 'speed_upload' => 0,
- 'download_content_length' => -1,
- 'upload_content_length' => 0,
- 'starttransfer_time' => 0.07066,
- 'redirect_time' => 0,
- );
-
- // Uninitialized state
- $this->assertNull($this->response->getInfo('url'));
- $this->assertEquals(array(), $this->response->getInfo());
-
- // Set the stats
- $this->response->setInfo($stats);
- $this->assertEquals($stats, $this->response->getInfo());
- $this->assertEquals(606, $this->response->getInfo('header_size'));
- $this->assertNull($this->response->getInfo('does_not_exist'));
- }
-
- /**
- * @return Response
- */
- private function getResponse($code, array $headers = null, EntityBody $body = null)
- {
- return new Response($code, $headers, $body);
- }
-
- public function testDeterminesIfItCanBeCached()
- {
- $this->assertTrue($this->getResponse(200)->canCache());
- $this->assertTrue($this->getResponse(410)->canCache());
- $this->assertFalse($this->getResponse(404)->canCache());
- $this->assertTrue($this->getResponse(200, array(
- 'Cache-Control' => 'public'
- ))->canCache());
-
- // This has the no-store directive
- $this->assertFalse($this->getResponse(200, array(
- 'Cache-Control' => 'private, no-store'
- ))->canCache());
-
- // The body cannot be read, so it cannot be cached
- $tmp = tempnam('/tmp', 'not-readable');
- $resource = fopen($tmp, 'w');
- $this->assertFalse($this->getResponse(200, array(
- 'Transfer-Encoding' => 'chunked'
- ), EntityBody::factory($resource, 10))->canCache());
- unlink($tmp);
-
- // The body is 0 length, cannot be read, so it can be cached
- $tmp = tempnam('/tmp', 'not-readable');
- $resource = fopen($tmp, 'w');
- $this->assertTrue($this->getResponse(200, array(array(
- 'Content-Length' => 0
- )), EntityBody::factory($resource, 0))->canCache());
- unlink($tmp);
- }
-
- public function testDeterminesResponseMaxAge()
- {
- $this->assertEquals(null, $this->getResponse(200)->getMaxAge());
-
- // Uses the response's s-maxage
- $this->assertEquals(140, $this->getResponse(200, array(
- 'Cache-Control' => 's-maxage=140'
- ))->getMaxAge());
-
- // Uses the response's max-age
- $this->assertEquals(120, $this->getResponse(200, array(
- 'Cache-Control' => 'max-age=120'
- ))->getMaxAge());
-
- // Uses the response's max-age
- $this->assertEquals(120, $this->getResponse(200, array(
- 'Cache-Control' => 'max-age=120',
- 'Expires' => gmdate(ClientInterface::HTTP_DATE, strtotime('+1 day'))
- ))->getMaxAge());
-
- // Uses the Expires date
- $this->assertGreaterThanOrEqual(82400, $this->getResponse(200, array(
- 'Expires' => gmdate(ClientInterface::HTTP_DATE, strtotime('+1 day'))
- ))->getMaxAge());
-
- // Uses the Expires date
- $this->assertGreaterThanOrEqual(82400, $this->getResponse(200, array(
- 'Expires' => gmdate(ClientInterface::HTTP_DATE, strtotime('+1 day'))
- ))->getMaxAge());
- }
-
- public function testDeterminesIfItCanValidate()
- {
- $response = new Response(200);
- $this->assertFalse($response->canValidate());
- $response->setHeader('ETag', '123');
- $this->assertTrue($response->canValidate());
- $response->removeHeader('ETag');
- $this->assertFalse($response->canValidate());
- $response->setHeader('Last-Modified', '123');
- $this->assertTrue($response->canValidate());
- }
-
- public function testCalculatesFreshness()
- {
- $response = new Response(200);
- $this->assertNull($response->isFresh());
- $this->assertNull($response->getFreshness());
-
- $response->setHeader('Cache-Control', 'max-age=120');
- $response->setHeader('Age', 100);
- $this->assertEquals(20, $response->getFreshness());
- $this->assertTrue($response->isFresh());
-
- $response->setHeader('Age', 120);
- $this->assertEquals(0, $response->getFreshness());
- $this->assertTrue($response->isFresh());
-
- $response->setHeader('Age', 150);
- $this->assertEquals(-30, $response->getFreshness());
- $this->assertFalse($response->isFresh());
- }
-
- public function testHandlesProtocols()
- {
- $this->assertSame($this->response, $this->response->setProtocol('HTTP', '1.0'));
- $this->assertEquals('HTTP', $this->response->getProtocol());
- $this->assertEquals('1.0', $this->response->getProtocolVersion());
- }
-
- public function testComparesContentType()
- {
- $response = new Response(200, array(
- 'Content-Type' => 'text/html; charset=ISO-8859-4'
- ));
-
- $this->assertTrue($response->isContentType('text/html'));
- $this->assertTrue($response->isContentType('TExT/html'));
- $this->assertTrue($response->isContentType('charset=ISO-8859-4'));
- $this->assertFalse($response->isContentType('application/xml'));
- }
-
- public function testResponseDeterminesIfMethodIsAllowedBaseOnAllowHeader()
- {
- $response = new Response(200, array(
- 'Allow' => 'OPTIONS, POST, deletE,GET'
- ));
-
- $this->assertTrue($response->isMethodAllowed('get'));
- $this->assertTrue($response->isMethodAllowed('GET'));
- $this->assertTrue($response->isMethodAllowed('options'));
- $this->assertTrue($response->isMethodAllowed('post'));
- $this->assertTrue($response->isMethodAllowed('Delete'));
- $this->assertFalse($response->isMethodAllowed('put'));
- $this->assertFalse($response->isMethodAllowed('PUT'));
-
- $response = new Response(200);
- $this->assertFalse($response->isMethodAllowed('get'));
- }
-
- public function testParsesJsonResponses()
- {
- $response = new Response(200, array(), '{"foo": "bar"}');
- $this->assertEquals(array('foo' => 'bar'), $response->json());
- // Return array when null is a service response
- $response = new Response(200);
- $this->assertEquals(array(), $response->json());
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- * @expectedExceptionMessage Unable to parse response body into JSON: 4
- */
- public function testThrowsExceptionWhenFailsToParseJsonResponse()
- {
- $response = new Response(200, array(), '{"foo": "');
- $response->json();
- }
-
- public function testParsesXmlResponses()
- {
- $response = new Response(200, array(), '<abc><foo>bar</foo></abc>');
- $this->assertEquals('bar', (string) $response->xml()->foo);
- // Always return a SimpleXMLElement from the xml method
- $response = new Response(200);
- $this->assertEmpty((string) $response->xml()->foo);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- * @expectedExceptionMessage Unable to parse response body into XML: String could not be parsed as XML
- */
- public function testThrowsExceptionWhenFailsToParseXmlResponse()
- {
- $response = new Response(200, array(), '<abc');
- $response->xml();
- }
-
- public function testResponseIsSerializable()
- {
- $response = new Response(200, array('Foo' => 'bar'), 'test');
- $r = unserialize(serialize($response));
- $this->assertEquals(200, $r->getStatusCode());
- $this->assertEquals('bar', (string) $r->getHeader('Foo'));
- $this->assertEquals('test', (string) $r->getBody());
- }
-
- public function testPreventsComplexExternalEntities()
- {
- $xml = '<?xml version="1.0"?><!DOCTYPE scan[<!ENTITY test SYSTEM "php://filter/read=convert.base64-encode/resource=ResponseTest.php">]><scan>&test;</scan>';
- $response = new Response(200, array(), $xml);
-
- $oldCwd = getcwd();
- chdir(__DIR__);
- try {
- $xml = $response->xml();
- chdir($oldCwd);
- $this->markTestIncomplete('Did not throw the expected exception! XML resolved as: ' . $xml->asXML());
- } catch (\Exception $e) {
- chdir($oldCwd);
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/MimetypesTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/MimetypesTest.php
deleted file mode 100644
index 7228453..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/MimetypesTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\Mimetypes;
-
-/**
- * @covers Guzzle\Http\Mimetypes
- */
-class MimetypesTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testGetsFromExtension()
- {
- $this->assertEquals('text/x-php', Mimetypes::getInstance()->fromExtension('php'));
- }
-
- public function testGetsFromFilename()
- {
- $this->assertEquals('text/x-php', Mimetypes::getInstance()->fromFilename(__FILE__));
- }
-
- public function testGetsFromCaseInsensitiveFilename()
- {
- $this->assertEquals('text/x-php', Mimetypes::getInstance()->fromFilename(strtoupper(__FILE__)));
- }
-
- public function testReturnsNullWhenNoMatchFound()
- {
- $this->assertNull(Mimetypes::getInstance()->fromExtension('foobar'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/CommaAggregatorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/CommaAggregatorTest.php
deleted file mode 100644
index 549d3ed..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/CommaAggregatorTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\QueryString;
-use Guzzle\Http\QueryAggregator\CommaAggregator as Ag;
-
-class CommaAggregatorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testAggregates()
- {
- $query = new QueryString();
- $a = new Ag();
- $key = 'test 123';
- $value = array('foo 123', 'baz', 'bar');
- $result = $a->aggregate($key, $value, $query);
- $this->assertEquals(array('test%20123' => 'foo%20123,baz,bar'), $result);
- }
-
- public function testEncodes()
- {
- $query = new QueryString();
- $query->useUrlEncoding(false);
- $a = new Ag();
- $key = 'test 123';
- $value = array('foo 123', 'baz', 'bar');
- $result = $a->aggregate($key, $value, $query);
- $this->assertEquals(array('test 123' => 'foo 123,baz,bar'), $result);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/DuplicateAggregatorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/DuplicateAggregatorTest.php
deleted file mode 100644
index 6a4d9d9..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/DuplicateAggregatorTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\QueryString;
-use Guzzle\Http\QueryAggregator\DuplicateAggregator as Ag;
-
-class DuplicateAggregatorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testAggregates()
- {
- $query = new QueryString();
- $a = new Ag();
- $key = 'facet 1';
- $value = array('size a', 'width b');
- $result = $a->aggregate($key, $value, $query);
- $this->assertEquals(array('facet%201' => array('size%20a', 'width%20b')), $result);
- }
-
- public function testEncodes()
- {
- $query = new QueryString();
- $query->useUrlEncoding(false);
- $a = new Ag();
- $key = 'facet 1';
- $value = array('size a', 'width b');
- $result = $a->aggregate($key, $value, $query);
- $this->assertEquals(array('facet 1' => array('size a', 'width b')), $result);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/PhpAggregatorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/PhpAggregatorTest.php
deleted file mode 100644
index 1e7f0c2..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryAggregator/PhpAggregatorTest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\QueryString;
-use Guzzle\Http\QueryAggregator\PhpAggregator as Ag;
-
-class PhpAggregatorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testEncodes()
- {
- $query = new QueryString();
- $query->useUrlEncoding(false);
- $a = new Ag();
- $key = 't';
- $value = array(
- 'v1' => 'a',
- 'v2' => 'b',
- 'v3' => array(
- 'v4' => 'c',
- 'v5' => 'd',
- )
- );
- $result = $a->aggregate($key, $value, $query);
- $this->assertEquals(array(
- 't[v1]' => 'a',
- 't[v2]' => 'b',
- 't[v3][v4]' => 'c',
- 't[v3][v5]' => 'd',
- ), $result);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryStringTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryStringTest.php
deleted file mode 100644
index 948db44..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/QueryStringTest.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\QueryString;
-use Guzzle\Http\QueryAggregator\DuplicateAggregator;
-use Guzzle\Http\QueryAggregator\CommaAggregator;
-
-class QueryStringTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var \Guzzle\Http\QueryString The query string object to test */
- protected $q;
-
- public function setup()
- {
- $this->q = new QueryString();
- }
-
- public function testGetFieldSeparator()
- {
- $this->assertEquals('&', $this->q->getFieldSeparator());
- }
-
- public function testGetValueSeparator()
- {
- $this->assertEquals('=', $this->q->getValueSeparator());
- }
-
- public function testIsUrlEncoding()
- {
- $this->assertEquals('RFC 3986', $this->q->getUrlEncoding());
- $this->assertTrue($this->q->isUrlEncoding());
- $this->assertEquals('foo%20bar', $this->q->encodeValue('foo bar'));
-
- $this->q->useUrlEncoding(QueryString::FORM_URLENCODED);
- $this->assertTrue($this->q->isUrlEncoding());
- $this->assertEquals(QueryString::FORM_URLENCODED, $this->q->getUrlEncoding());
- $this->assertEquals('foo+bar', $this->q->encodeValue('foo bar'));
-
- $this->assertSame($this->q, $this->q->useUrlEncoding(false));
- $this->assertFalse($this->q->isUrlEncoding());
- $this->assertFalse($this->q->isUrlEncoding());
- }
-
- public function testSetFieldSeparator()
- {
- $this->assertEquals($this->q, $this->q->setFieldSeparator('/'));
- $this->assertEquals('/', $this->q->getFieldSeparator());
- }
-
- public function testSetValueSeparator()
- {
- $this->assertEquals($this->q, $this->q->setValueSeparator('/'));
- $this->assertEquals('/', $this->q->getValueSeparator());
- }
-
- public function testUrlEncode()
- {
- $params = array(
- 'test' => 'value',
- 'test 2' => 'this is a test?',
- 'test3' => array('v1', 'v2', 'v3'),
- 'ሴ' => 'bar'
- );
- $encoded = array(
- 'test' => 'value',
- 'test%202' => rawurlencode('this is a test?'),
- 'test3%5B0%5D' => 'v1',
- 'test3%5B1%5D' => 'v2',
- 'test3%5B2%5D' => 'v3',
- '%E1%88%B4' => 'bar'
- );
- $this->q->replace($params);
- $this->assertEquals($encoded, $this->q->urlEncode());
-
- // Disable encoding
- $testData = array('test 2' => 'this is a test');
- $this->q->replace($testData);
- $this->q->useUrlEncoding(false);
- $this->assertEquals($testData, $this->q->urlEncode());
- }
-
- public function testToString()
- {
- // Check with no parameters
- $this->assertEquals('', $this->q->__toString());
-
- $params = array(
- 'test' => 'value',
- 'test 2' => 'this is a test?',
- 'test3' => array('v1', 'v2', 'v3'),
- 'test4' => null,
- );
- $this->q->replace($params);
- $this->assertEquals('test=value&test%202=this%20is%20a%20test%3F&test3%5B0%5D=v1&test3%5B1%5D=v2&test3%5B2%5D=v3&test4', $this->q->__toString());
- $this->q->useUrlEncoding(false);
- $this->assertEquals('test=value&test 2=this is a test?&test3[0]=v1&test3[1]=v2&test3[2]=v3&test4', $this->q->__toString());
-
- // Use an alternative aggregator
- $this->q->setAggregator(new CommaAggregator());
- $this->assertEquals('test=value&test 2=this is a test?&test3=v1,v2,v3&test4', $this->q->__toString());
- }
-
- public function testAllowsMultipleValuesPerKey()
- {
- $q = new QueryString();
- $q->add('facet', 'size');
- $q->add('facet', 'width');
- $q->add('facet.field', 'foo');
- // Use the duplicate aggregator
- $q->setAggregator(new DuplicateAggregator());
- $this->assertEquals('facet=size&facet=width&facet.field=foo', $q->__toString());
- }
-
- public function testAllowsNestedQueryData()
- {
- $this->q->replace(array(
- 'test' => 'value',
- 't' => array(
- 'v1' => 'a',
- 'v2' => 'b',
- 'v3' => array(
- 'v4' => 'c',
- 'v5' => 'd',
- )
- )
- ));
-
- $this->q->useUrlEncoding(false);
- $this->assertEquals('test=value&t[v1]=a&t[v2]=b&t[v3][v4]=c&t[v3][v5]=d', $this->q->__toString());
- }
-
- public function parseQueryProvider()
- {
- return array(
- // Ensure that multiple query string values are allowed per value
- array('q=a&q=b', array('q' => array('a', 'b'))),
- // Ensure that PHP array style query string values are parsed
- array('q[]=a&q[]=b', array('q' => array('a', 'b'))),
- // Ensure that a single PHP array style query string value is parsed into an array
- array('q[]=a', array('q' => array('a'))),
- // Ensure that decimals are allowed in query strings
- array('q.a=a&q.b=b', array(
- 'q.a' => 'a',
- 'q.b' => 'b'
- )),
- // Ensure that query string values are percent decoded
- array('q%20a=a%20b', array('q a' => 'a b')),
- // Ensure null values can be added
- array('q&a', array('q' => false, 'a' => false)),
- );
- }
-
- /**
- * @dataProvider parseQueryProvider
- */
- public function testParsesQueryStrings($query, $data)
- {
- $query = QueryString::fromString($query);
- $this->assertEquals($data, $query->getAll());
- }
-
- public function testProperlyDealsWithDuplicateQueryStringValues()
- {
- $query = QueryString::fromString('foo=a&foo=b&?µ=c');
- $this->assertEquals(array('a', 'b'), $query->get('foo'));
- $this->assertEquals('c', $query->get('?µ'));
- }
-
- public function testAllowsBlankQueryStringValues()
- {
- $query = QueryString::fromString('foo');
- $this->assertEquals('foo', (string) $query);
- $query->set('foo', QueryString::BLANK);
- $this->assertEquals('foo', (string) $query);
- }
-
- public function testAllowsFalsyQueryStringValues()
- {
- $query = QueryString::fromString('0');
- $this->assertEquals('0', (string) $query);
- $query->set('0', QueryString::BLANK);
- $this->assertSame('0', (string) $query);
- }
-
- public function testFromStringIgnoresQuestionMark()
- {
- $query = QueryString::fromString('foo=baz&bar=boo');
- $this->assertEquals('foo=baz&bar=boo', (string) $query);
- }
-
- public function testConvertsPlusSymbolsToSpaces()
- {
- $query = QueryString::fromString('var=foo+bar');
- $this->assertEquals('foo bar', $query->get('var'));
- }
-
- public function testFromStringDoesntMangleZeroes()
- {
- $query = QueryString::fromString('var=0');
- $this->assertSame('0', $query->get('var'));
- }
-
- public function testAllowsZeroValues()
- {
- $query = new QueryString(array(
- 'foo' => 0,
- 'baz' => '0',
- 'bar' => null,
- 'boo' => false,
- 'bam' => ''
- ));
- $this->assertEquals('foo=0&baz=0&bar&boo&bam=', (string) $query);
- }
-
- public function testFromStringDoesntStripTrailingEquals()
- {
- $query = QueryString::fromString('data=mF0b3IiLCJUZWFtIERldiJdfX0=');
- $this->assertEquals('mF0b3IiLCJUZWFtIERldiJdfX0=', $query->get('data'));
- }
-
- public function testGuessesIfDuplicateAggregatorShouldBeUsed()
- {
- $query = QueryString::fromString('test=a&test=b');
- $this->assertEquals('test=a&test=b', (string) $query);
- }
-
- public function testGuessesIfDuplicateAggregatorShouldBeUsedAndChecksForPhpStyle()
- {
- $query = QueryString::fromString('test[]=a&test[]=b');
- $this->assertEquals('test%5B0%5D=a&test%5B1%5D=b', (string) $query);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ReadLimitEntityBodyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ReadLimitEntityBodyTest.php
deleted file mode 100644
index 6bb3fed..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/ReadLimitEntityBodyTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\ReadLimitEntityBody;
-
-/**
- * @covers Guzzle\Http\ReadLimitEntityBody
- */
-class ReadLimitEntityBodyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var ReadLimitEntityBody */
- protected $body;
-
- /** @var EntityBody */
- protected $decorated;
-
- public function setUp()
- {
- $this->decorated = EntityBody::factory(fopen(__FILE__, 'r'));
- $this->body = new ReadLimitEntityBody($this->decorated, 10, 3);
- }
-
- public function testReturnsSubsetWhenCastToString()
- {
- $body = EntityBody::factory('foo_baz_bar');
- $limited = new ReadLimitEntityBody($body, 3, 4);
- $this->assertEquals('baz', (string) $limited);
- }
-
- public function testReturnsSubsetOfEmptyBodyWhenCastToString()
- {
- $body = EntityBody::factory('');
- $limited = new ReadLimitEntityBody($body, 0, 10);
- $this->assertEquals('', (string) $limited);
- }
-
- public function testSeeksWhenConstructed()
- {
- $this->assertEquals(3, $this->body->ftell());
- }
-
- public function testAllowsBoundedSeek()
- {
- $this->body->seek(100);
- $this->assertEquals(13, $this->body->ftell());
- $this->body->seek(0);
- $this->assertEquals(3, $this->body->ftell());
- $this->assertEquals(false, $this->body->seek(1000, SEEK_END));
- }
-
- public function testReadsOnlySubsetOfData()
- {
- $data = $this->body->read(100);
- $this->assertEquals(10, strlen($data));
- $this->assertFalse($this->body->read(1000));
-
- $this->body->setOffset(10);
- $newData = $this->body->read(100);
- $this->assertEquals(10, strlen($newData));
- $this->assertNotSame($data, $newData);
- }
-
- public function testClaimsConsumedWhenReadLimitIsReached()
- {
- $this->assertFalse($this->body->isConsumed());
- $this->body->read(1000);
- $this->assertTrue($this->body->isConsumed());
- }
-
- public function testContentLengthIsBounded()
- {
- $this->assertEquals(10, $this->body->getContentLength());
- }
-
- public function testContentMd5IsBasedOnSubsection()
- {
- $this->assertNotSame($this->body->getContentMd5(), $this->decorated->getContentMd5());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/RedirectPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/RedirectPluginTest.php
deleted file mode 100755
index 886236d..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/RedirectPluginTest.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Redirect;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\RedirectPlugin;
-use Guzzle\Http\Exception\TooManyRedirectsException;
-use Guzzle\Plugin\History\HistoryPlugin;
-
-/**
- * @covers Guzzle\Http\RedirectPlugin
- */
-class RedirectPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRedirectsRequests()
- {
- // Flush the server and queue up a redirect followed by a successful response
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect2\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- ));
-
- // Create a client that uses the default redirect behavior
- $client = new Client($this->getServer()->getUrl());
- $history = new HistoryPlugin();
- $client->addSubscriber($history);
-
- $request = $client->get('/foo');
- $response = $request->send();
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertContains('/redirect2', $response->getEffectiveUrl());
-
- // Ensure that two requests were sent
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('/foo', $requests[0]->getResource());
- $this->assertEquals('GET', $requests[0]->getMethod());
- $this->assertEquals('/redirect1', $requests[1]->getResource());
- $this->assertEquals('GET', $requests[1]->getMethod());
- $this->assertEquals('/redirect2', $requests[2]->getResource());
- $this->assertEquals('GET', $requests[2]->getMethod());
-
- // Ensure that the redirect count was incremented
- $this->assertEquals(2, $request->getParams()->get(RedirectPlugin::REDIRECT_COUNT));
- $this->assertCount(3, $history);
- $requestHistory = $history->getAll();
-
- $this->assertEquals(301, $requestHistory[0]['response']->getStatusCode());
- $this->assertEquals('/redirect1', (string) $requestHistory[0]['response']->getHeader('Location'));
- $this->assertEquals(301, $requestHistory[1]['response']->getStatusCode());
- $this->assertEquals('/redirect2', (string) $requestHistory[1]['response']->getHeader('Location'));
- $this->assertEquals(200, $requestHistory[2]['response']->getStatusCode());
- }
-
- public function testCanLimitNumberOfRedirects()
- {
- // Flush the server and queue up a redirect followed by a successful response
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect2\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect3\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect4\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect5\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect6\r\nContent-Length: 0\r\n\r\n"
- ));
-
- try {
- $client = new Client($this->getServer()->getUrl());
- $client->get('/foo')->send();
- $this->fail('Did not throw expected exception');
- } catch (TooManyRedirectsException $e) {
- $this->assertContains(
- "5 redirects were issued for this request:\nGET /foo HTTP/1.1\r\n",
- $e->getMessage()
- );
- }
- }
-
- public function testDefaultBehaviorIsToRedirectWithGetForEntityEnclosingRequests()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $client->post('/foo', array('X-Baz' => 'bar'), 'testing')->send();
-
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('POST', $requests[0]->getMethod());
- $this->assertEquals('GET', $requests[1]->getMethod());
- $this->assertEquals('bar', (string) $requests[1]->getHeader('X-Baz'));
- $this->assertEquals('GET', $requests[2]->getMethod());
- }
-
- public function testCanRedirectWithStrictRfcCompliance()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->post('/foo', array('X-Baz' => 'bar'), 'testing');
- $request->getParams()->set(RedirectPlugin::STRICT_REDIRECTS, true);
- $request->send();
-
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('POST', $requests[0]->getMethod());
- $this->assertEquals('POST', $requests[1]->getMethod());
- $this->assertEquals('bar', (string) $requests[1]->getHeader('X-Baz'));
- $this->assertEquals('POST', $requests[2]->getMethod());
- }
-
- public function testRedirect303WithGet()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 303 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->post('/foo');
- $request->send();
-
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('POST', $requests[0]->getMethod());
- $this->assertEquals('GET', $requests[1]->getMethod());
- }
-
- public function testRedirect303WithGetWithStrictRfcCompliance()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 303 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->post('/foo');
- $request->getParams()->set(RedirectPlugin::STRICT_REDIRECTS, true);
- $request->send();
-
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('POST', $requests[0]->getMethod());
- $this->assertEquals('GET', $requests[1]->getMethod());
- }
-
- public function testRewindsStreamWhenRedirectingIfNeeded()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put();
- $request->configureRedirects(true);
- $body = EntityBody::factory('foo');
- $body->read(1);
- $request->setBody($body);
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('foo', (string) $requests[0]->getBody());
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\CouldNotRewindStreamException
- */
- public function testThrowsExceptionWhenStreamCannotBeRewound()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect\r\nContent-Length: 0\r\n\r\n"
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put();
- $request->configureRedirects(true);
- $body = EntityBody::factory(fopen($this->getServer()->getUrl(), 'r'));
- $body->read(1);
- $request->setBody($body)->send();
- }
-
- public function testRedirectsCanBeDisabledPerRequest()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array("HTTP/1.1 301 Foo\r\nLocation: /foo\r\nContent-Length: 0\r\n\r\n"));
- $client = new Client($this->getServer()->getUrl());
- $request = $client->put();
- $request->configureRedirects(false, 0);
- $this->assertEquals(301, $request->send()->getStatusCode());
- }
-
- public function testCanRedirectWithNoLeadingSlashAndQuery()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: redirect?foo=bar\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- ));
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get('?foo=bar');
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals($this->getServer()->getUrl() . '?foo=bar', $requests[0]->getUrl());
- $this->assertEquals($this->getServer()->getUrl() . 'redirect?foo=bar', $requests[1]->getUrl());
- // Ensure that the history on the actual request is correct
- $this->assertEquals($this->getServer()->getUrl() . '?foo=bar', $request->getUrl());
- }
-
- public function testRedirectWithStrictRfc386Compliance()
- {
- // Flush the server and queue up a redirect followed by a successful response
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: redirect\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get('/foo');
- $request->send();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('/redirect', $requests[1]->getResource());
- }
-
- public function testResetsHistoryEachSend()
- {
- // Flush the server and queue up a redirect followed by a successful response
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect2\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
-
- // Create a client that uses the default redirect behavior
- $client = new Client($this->getServer()->getUrl());
- $history = new HistoryPlugin();
- $client->addSubscriber($history);
-
- $request = $client->get('/foo');
- $response = $request->send();
- $this->assertEquals(3, count($history));
- $this->assertTrue($request->getParams()->hasKey('redirect.count'));
- $this->assertContains('/redirect2', $response->getEffectiveUrl());
-
- $request->send();
- $this->assertFalse($request->getParams()->hasKey('redirect.count'));
- }
-
- public function testHandlesRedirectsWithSpacesProperly()
- {
- // Flush the server and queue up a redirect followed by a successful response
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect 1\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
- ));
- $client = new Client($this->getServer()->getUrl());
- $request = $client->get('/foo');
- $request->send();
- $reqs = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('/redirect%201', $reqs[1]->getResource());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Server.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Server.php
deleted file mode 100644
index 94eb59a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/Server.php
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Common\Exception\RuntimeException;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Client;
-
-/**
- * The Server class is used to control a scripted webserver using node.js that
- * will respond to HTTP requests with queued responses.
- *
- * Queued responses will be served to requests using a FIFO order. All requests
- * received by the server are stored on the node.js server and can be retrieved
- * by calling {@see Server::getReceivedRequests()}.
- *
- * Mock responses that don't require data to be transmitted over HTTP a great
- * for testing. Mock response, however, cannot test the actual sending of an
- * HTTP request using cURL. This test server allows the simulation of any
- * number of HTTP request response transactions to test the actual sending of
- * requests over the wire without having to leave an internal network.
- */
-class Server
-{
- const DEFAULT_PORT = 8124;
- const REQUEST_DELIMITER = "\n----[request]\n";
-
- /** @var int Port that the server will listen on */
- private $port;
-
- /** @var bool Is the server running */
- private $running = false;
-
- /** @var Client */
- private $client;
-
- /**
- * Create a new scripted server
- *
- * @param int $port Port to listen on (defaults to 8124)
- */
- public function __construct($port = null)
- {
- $this->port = $port ?: self::DEFAULT_PORT;
- $this->client = new Client($this->getUrl());
- register_shutdown_function(array($this, 'stop'));
- }
-
- /**
- * Flush the received requests from the server
- * @throws RuntimeException
- */
- public function flush()
- {
- $this->client->delete('guzzle-server/requests')->send();
- }
-
- /**
- * Queue an array of responses or a single response on the server.
- *
- * Any currently queued responses will be overwritten. Subsequent requests
- * on the server will return queued responses in FIFO order.
- *
- * @param array|Response $responses A single or array of Responses to queue
- * @throws BadResponseException
- */
- public function enqueue($responses)
- {
- $data = array();
- foreach ((array) $responses as $response) {
-
- // Create the response object from a string
- if (is_string($response)) {
- $response = Response::fromMessage($response);
- } elseif (!($response instanceof Response)) {
- throw new BadResponseException('Responses must be strings or implement Response');
- }
-
- $data[] = array(
- 'statusCode' => $response->getStatusCode(),
- 'reasonPhrase' => $response->getReasonPhrase(),
- 'headers' => $response->getHeaders()->toArray(),
- 'body' => $response->getBody(true)
- );
- }
-
- $request = $this->client->put('guzzle-server/responses', null, json_encode($data));
- $request->send();
- }
-
- /**
- * Check if the server is running
- *
- * @return bool
- */
- public function isRunning()
- {
- if ($this->running) {
- return true;
- }
-
- try {
- $this->client->get('guzzle-server/perf', array(), array('timeout' => 5))->send();
- $this->running = true;
- return true;
- } catch (\Exception $e) {
- return false;
- }
- }
-
- /**
- * Get the URL to the server
- *
- * @return string
- */
- public function getUrl()
- {
- return 'http://127.0.0.1:' . $this->getPort() . '/';
- }
-
- /**
- * Get the port that the server is listening on
- *
- * @return int
- */
- public function getPort()
- {
- return $this->port;
- }
-
- /**
- * Get all of the received requests
- *
- * @param bool $hydrate Set to TRUE to turn the messages into
- * actual {@see RequestInterface} objects. If $hydrate is FALSE,
- * requests will be returned as strings.
- *
- * @return array
- * @throws RuntimeException
- */
- public function getReceivedRequests($hydrate = false)
- {
- $response = $this->client->get('guzzle-server/requests')->send();
- $data = array_filter(explode(self::REQUEST_DELIMITER, $response->getBody(true)));
- if ($hydrate) {
- $data = array_map(function($message) {
- return RequestFactory::getInstance()->fromMessage($message);
- }, $data);
- }
-
- return $data;
- }
-
- /**
- * Start running the node.js server in the background
- */
- public function start()
- {
- if (!$this->isRunning()) {
- exec('node ' . __DIR__ . \DIRECTORY_SEPARATOR
- . 'server.js ' . $this->port
- . ' >> /tmp/server.log 2>&1 &');
- // Wait at most 5 seconds for the server the setup before
- // proceeding.
- $start = time();
- while (!$this->isRunning() && time() - $start < 5);
- if (!$this->running) {
- throw new RuntimeException(
- 'Unable to contact server.js. Have you installed node.js v0.5.0+? node must be in your path.'
- );
- }
- }
- }
-
- /**
- * Stop running the node.js server
- */
- public function stop()
- {
- if (!$this->isRunning()) {
- return false;
- }
-
- $this->running = false;
- $this->client->delete('guzzle-server')->send();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/StaticClientTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/StaticClientTest.php
deleted file mode 100644
index 091314b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/StaticClientTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Redirect;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\StaticClient;
-use Guzzle\Plugin\Mock\MockPlugin;
-use Guzzle\Http\Message\Response;
-use Guzzle\Stream\Stream;
-
-/**
- * @covers Guzzle\Http\StaticClient
- */
-class StaticClientTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testMountsClient()
- {
- $client = new Client();
- StaticClient::mount('FooBazBar', $client);
- $this->assertTrue(class_exists('FooBazBar'));
- $this->assertSame($client, $this->readAttribute('Guzzle\Http\StaticClient', 'client'));
- }
-
- public function requestProvider()
- {
- return array_map(
- function ($m) { return array($m); },
- array('GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS')
- );
- }
-
- /**
- * @dataProvider requestProvider
- */
- public function testSendsRequests($method)
- {
- $mock = new MockPlugin(array(new Response(200)));
- call_user_func('Guzzle\Http\StaticClient::' . $method, 'http://foo.com', array(
- 'plugins' => array($mock)
- ));
- $requests = $mock->getReceivedRequests();
- $this->assertCount(1, $requests);
- $this->assertEquals($method, $requests[0]->getMethod());
- }
-
- public function testCanCreateStreamsUsingDefaultFactory()
- {
- $this->getServer()->enqueue(array("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest"));
- $stream = StaticClient::get($this->getServer()->getUrl(), array('stream' => true));
- $this->assertInstanceOf('Guzzle\Stream\StreamInterface', $stream);
- $this->assertEquals('test', (string) $stream);
- }
-
- public function testCanCreateStreamsUsingCustomFactory()
- {
- $stream = $this->getMockBuilder('Guzzle\Stream\StreamRequestFactoryInterface')
- ->setMethods(array('fromRequest'))
- ->getMockForAbstractClass();
- $resource = new Stream(fopen('php://temp', 'r+'));
- $stream->expects($this->once())
- ->method('fromRequest')
- ->will($this->returnValue($resource));
- $this->getServer()->enqueue(array("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ntest"));
- $result = StaticClient::get($this->getServer()->getUrl(), array('stream' => $stream));
- $this->assertSame($resource, $result);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/UrlTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/UrlTest.php
deleted file mode 100644
index 28f2671..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/UrlTest.php
+++ /dev/null
@@ -1,303 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Http;
-
-use Guzzle\Http\QueryString;
-use Guzzle\Http\Url;
-
-/**
- * @covers Guzzle\Http\Url
- */
-class UrlTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testEmptyUrl()
- {
- $url = Url::factory('');
- $this->assertEquals('', (string) $url);
- }
-
- public function testPortIsDeterminedFromScheme()
- {
- $this->assertEquals(80, Url::factory('http://www.test.com/')->getPort());
- $this->assertEquals(443, Url::factory('https://www.test.com/')->getPort());
- $this->assertEquals(null, Url::factory('ftp://www.test.com/')->getPort());
- $this->assertEquals(8192, Url::factory('http://www.test.com:8192/')->getPort());
- }
-
- public function testCloneCreatesNewInternalObjects()
- {
- $u1 = Url::factory('http://www.test.com/');
- $u2 = clone $u1;
- $this->assertNotSame($u1->getQuery(), $u2->getQuery());
- }
-
- public function testValidatesUrlPartsInFactory()
- {
- $url = Url::factory('/index.php');
- $this->assertEquals('/index.php', (string) $url);
- $this->assertFalse($url->isAbsolute());
-
- $url = 'http://michael:test@test.com:80/path/123?q=abc#test';
- $u = Url::factory($url);
- $this->assertEquals('http://michael:test@test.com/path/123?q=abc#test', (string) $u);
- $this->assertTrue($u->isAbsolute());
- }
-
- public function testAllowsFalsyUrlParts()
- {
- $url = Url::factory('http://0:50/0?0#0');
- $this->assertSame('0', $url->getHost());
- $this->assertEquals(50, $url->getPort());
- $this->assertSame('/0', $url->getPath());
- $this->assertEquals('0', (string) $url->getQuery());
- $this->assertSame('0', $url->getFragment());
- $this->assertEquals('http://0:50/0?0#0', (string) $url);
-
- $url = Url::factory('');
- $this->assertSame('', (string) $url);
-
- $url = Url::factory('0');
- $this->assertSame('0', (string) $url);
- }
-
- public function testBuildsRelativeUrlsWithFalsyParts()
- {
- $url = Url::buildUrl(array(
- 'host' => '0',
- 'path' => '0',
- ));
-
- $this->assertSame('//0/0', $url);
-
- $url = Url::buildUrl(array(
- 'path' => '0',
- ));
- $this->assertSame('0', $url);
- }
-
- public function testUrlStoresParts()
- {
- $url = Url::factory('http://test:pass@www.test.com:8081/path/path2/?a=1&b=2#fragment');
- $this->assertEquals('http', $url->getScheme());
- $this->assertEquals('test', $url->getUsername());
- $this->assertEquals('pass', $url->getPassword());
- $this->assertEquals('www.test.com', $url->getHost());
- $this->assertEquals(8081, $url->getPort());
- $this->assertEquals('/path/path2/', $url->getPath());
- $this->assertEquals('fragment', $url->getFragment());
- $this->assertEquals('a=1&b=2', (string) $url->getQuery());
-
- $this->assertEquals(array(
- 'fragment' => 'fragment',
- 'host' => 'www.test.com',
- 'pass' => 'pass',
- 'path' => '/path/path2/',
- 'port' => 8081,
- 'query' => 'a=1&b=2',
- 'scheme' => 'http',
- 'user' => 'test'
- ), $url->getParts());
- }
-
- public function testHandlesPathsCorrectly()
- {
- $url = Url::factory('http://www.test.com');
- $this->assertEquals('', $url->getPath());
- $url->setPath('test');
- $this->assertEquals('test', $url->getPath());
-
- $url->setPath('/test/123/abc');
- $this->assertEquals(array('test', '123', 'abc'), $url->getPathSegments());
-
- $parts = parse_url('http://www.test.com/test');
- $parts['path'] = '';
- $this->assertEquals('http://www.test.com', Url::buildUrl($parts));
- $parts['path'] = 'test';
- $this->assertEquals('http://www.test.com/test', Url::buildUrl($parts));
- }
-
- public function testAddsQueryStringIfPresent()
- {
- $this->assertEquals('?foo=bar', Url::buildUrl(array(
- 'query' => 'foo=bar'
- )));
- }
-
- public function testAddsToPath()
- {
- // Does nothing here
- $this->assertEquals('http://e.com/base?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath(false));
- $this->assertEquals('http://e.com/base?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath(null));
- $this->assertEquals('http://e.com/base?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath(array()));
- $this->assertEquals('http://e.com/base?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath(new \stdClass()));
- $this->assertEquals('http://e.com/base?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath(''));
- $this->assertEquals('http://e.com/base?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath('/'));
- $this->assertEquals('http://e.com/baz/foo', (string) Url::factory('http://e.com/baz/')->addPath('foo'));
- $this->assertEquals('http://e.com/base/relative?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath('relative'));
- $this->assertEquals('http://e.com/base/relative?a=1', (string) Url::factory('http://e.com/base?a=1')->addPath('/relative'));
- $this->assertEquals('http://e.com/base/0', (string) Url::factory('http://e.com/base')->addPath('0'));
- $this->assertEquals('http://e.com/base/0/1', (string) Url::factory('http://e.com/base')->addPath('0')->addPath('1'));
- }
-
- /**
- * URL combination data provider
- *
- * @return array
- */
- public function urlCombineDataProvider()
- {
- return array(
- array('http://www.example.com/', 'http://www.example.com/', 'http://www.example.com/'),
- array('http://www.example.com/path', '/absolute', 'http://www.example.com/absolute'),
- array('http://www.example.com/path', '/absolute?q=2', 'http://www.example.com/absolute?q=2'),
- array('http://www.example.com/path', 'more', 'http://www.example.com/path/more'),
- array('http://www.example.com/path', 'more?q=1', 'http://www.example.com/path/more?q=1'),
- array('http://www.example.com/', '?q=1', 'http://www.example.com/?q=1'),
- array('http://www.example.com/path', 'http://test.com', 'http://test.com'),
- array('http://www.example.com:8080/path', 'http://test.com', 'http://test.com'),
- array('http://www.example.com:8080/path', '?q=2#abc', 'http://www.example.com:8080/path?q=2#abc'),
- array('http://u:a@www.example.com/path', 'test', 'http://u:a@www.example.com/path/test'),
- array('http://www.example.com/path', 'http://u:a@www.example.com/', 'http://u:a@www.example.com/'),
- array('/path?q=2', 'http://www.test.com/', 'http://www.test.com/path?q=2'),
- array('http://api.flickr.com/services/', 'http://www.flickr.com/services/oauth/access_token', 'http://www.flickr.com/services/oauth/access_token'),
- array('http://www.example.com/?foo=bar', 'some/path', 'http://www.example.com/some/path?foo=bar'),
- array('http://www.example.com/?foo=bar', 'some/path?boo=moo', 'http://www.example.com/some/path?boo=moo&foo=bar'),
- array('http://www.example.com/some/', 'path?foo=bar&foo=baz', 'http://www.example.com/some/path?foo=bar&foo=baz'),
- );
- }
-
- /**
- * @dataProvider urlCombineDataProvider
- */
- public function testCombinesUrls($a, $b, $c)
- {
- $this->assertEquals($c, (string) Url::factory($a)->combine($b));
- }
-
- public function testHasGettersAndSetters()
- {
- $url = Url::factory('http://www.test.com/');
- $this->assertEquals('example.com', $url->setHost('example.com')->getHost());
- $this->assertEquals('8080', $url->setPort(8080)->getPort());
- $this->assertEquals('/foo/bar', $url->setPath(array('foo', 'bar'))->getPath());
- $this->assertEquals('a', $url->setPassword('a')->getPassword());
- $this->assertEquals('b', $url->setUsername('b')->getUsername());
- $this->assertEquals('abc', $url->setFragment('abc')->getFragment());
- $this->assertEquals('https', $url->setScheme('https')->getScheme());
- $this->assertEquals('a=123', (string) $url->setQuery('a=123')->getQuery());
- $this->assertEquals('https://b:a@example.com:8080/foo/bar?a=123#abc', (string) $url);
- $this->assertEquals('b=boo', (string) $url->setQuery(new QueryString(array(
- 'b' => 'boo'
- )))->getQuery());
- $this->assertEquals('https://b:a@example.com:8080/foo/bar?b=boo#abc', (string) $url);
- }
-
- public function testSetQueryAcceptsArray()
- {
- $url = Url::factory('http://www.test.com');
- $url->setQuery(array('a' => 'b'));
- $this->assertEquals('http://www.test.com?a=b', (string) $url);
- }
-
- public function urlProvider()
- {
- return array(
- array('/foo/..', '/'),
- array('//foo//..', '/'),
- array('/foo/../..', '/'),
- array('/foo/../.', '/'),
- array('/./foo/..', '/'),
- array('/./foo', '/foo'),
- array('/./foo/', '/foo/'),
- array('/./foo/bar/baz/pho/../..', '/foo/bar'),
- array('*', '*'),
- array('/foo', '/foo'),
- array('/abc/123/../foo/', '/abc/foo/'),
- array('/a/b/c/./../../g', '/a/g'),
- array('/b/c/./../../g', '/g'),
- array('/b/c/./../../g', '/g'),
- array('/c/./../../g', '/g'),
- array('/./../../g', '/g'),
- );
- }
-
- /**
- * @dataProvider urlProvider
- */
- public function testNormalizesPaths($path, $result)
- {
- $url = Url::factory('http://www.example.com/');
- $url->setPath($path)->normalizePath();
- $this->assertEquals($result, $url->getPath());
- }
-
- public function testSettingHostWithPortModifiesPort()
- {
- $url = Url::factory('http://www.example.com');
- $url->setHost('foo:8983');
- $this->assertEquals('foo', $url->getHost());
- $this->assertEquals(8983, $url->getPort());
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testValidatesUrlCanBeParsed()
- {
- Url::factory('foo:////');
- }
-
- public function testConvertsSpecialCharsInPathWhenCastingToString()
- {
- $url = Url::factory('http://foo.com/baz bar?a=b');
- $url->addPath('?');
- $this->assertEquals('http://foo.com/baz%20bar/%3F?a=b', (string) $url);
- }
-
- /**
- * @link http://tools.ietf.org/html/rfc3986#section-5.4.1
- */
- public function rfc3986UrlProvider()
- {
- $result = array(
- array('g', 'http://a/b/c/g'),
- array('./g', 'http://a/b/c/g'),
- array('g/', 'http://a/b/c/g/'),
- array('/g', 'http://a/g'),
- array('?y', 'http://a/b/c/d;p?y'),
- array('g?y', 'http://a/b/c/g?y'),
- array('#s', 'http://a/b/c/d;p?q#s'),
- array('g#s', 'http://a/b/c/g#s'),
- array('g?y#s', 'http://a/b/c/g?y#s'),
- array(';x', 'http://a/b/c/;x'),
- array('g;x', 'http://a/b/c/g;x'),
- array('g;x?y#s', 'http://a/b/c/g;x?y#s'),
- array('', 'http://a/b/c/d;p?q'),
- array('.', 'http://a/b/c'),
- array('./', 'http://a/b/c/'),
- array('..', 'http://a/b'),
- array('../', 'http://a/b/'),
- array('../g', 'http://a/b/g'),
- array('../..', 'http://a/'),
- array('../../', 'http://a/'),
- array('../../g', 'http://a/g')
- );
-
- // This support was added in PHP 5.4.7: https://bugs.php.net/bug.php?id=62844
- if (version_compare(PHP_VERSION, '5.4.7', '>=')) {
- $result[] = array('//g', 'http://g');
- }
-
- return $result;
- }
-
- /**
- * @dataProvider rfc3986UrlProvider
- */
- public function testCombinesUrlsUsingRfc3986($relative, $result)
- {
- $a = Url::factory('http://a/b/c/d;p?q');
- $b = Url::factory($relative);
- $this->assertEquals($result, trim((string) $a->combine($b, true), '='));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/server.js b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/server.js
deleted file mode 100644
index 4156f1a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Http/server.js
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Guzzle node.js test server to return queued responses to HTTP requests and
- * expose a RESTful API for enqueueing responses and retrieving the requests
- * that have been received.
- *
- * - Delete all requests that have been received:
- * DELETE /guzzle-server/requests
- * Host: 127.0.0.1:8124
- *
- * - Enqueue responses
- * PUT /guzzle-server/responses
- * Host: 127.0.0.1:8124
- *
- * [{ "statusCode": 200, "reasonPhrase": "OK", "headers": {}, "body": "" }]
- *
- * - Get the received requests
- * GET /guzzle-server/requests
- * Host: 127.0.0.1:8124
- *
- * - Shutdown the server
- * DELETE /guzzle-server
- * Host: 127.0.0.1:8124
- *
- * @package Guzzle PHP <http://www.guzzlephp.org>
- * @license See the LICENSE file that was distributed with this source code.
- */
-
-var http = require("http");
-
-/**
- * Guzzle node.js server
- * @class
- */
-var GuzzleServer = function(port, log) {
-
- this.port = port;
- this.log = log;
- this.responses = [];
- this.requests = [];
- var that = this;
-
- var controlRequest = function(request, req, res) {
- if (req.url == '/guzzle-server/perf') {
- res.writeHead(200, "OK", {"Content-Length": 16});
- res.end("Body of response");
- } else if (req.method == "DELETE") {
- if (req.url == "/guzzle-server/requests") {
- // Clear the received requests
- that.requests = [];
- res.writeHead(200, "OK", { "Content-Length": 0 });
- res.end();
- if (this.log) {
- console.log("Flushing requests");
- }
- } else if (req.url == "/guzzle-server") {
- // Shutdown the server
- res.writeHead(200, "OK", { "Content-Length": 0, "Connection": "close" });
- res.end();
- if (this.log) {
- console.log("Shutting down");
- }
- that.server.close();
- }
- } else if (req.method == "GET") {
- if (req.url === "/guzzle-server/requests") {
- // Get received requests
- var data = that.requests.join("\n----[request]\n");
- res.writeHead(200, "OK", { "Content-Length": data.length });
- res.end(data);
- if (that.log) {
- console.log("Sending receiving requests");
- }
- }
- } else if (req.method == "PUT") {
- if (req.url == "/guzzle-server/responses") {
- if (that.log) {
- console.log("Adding responses...");
- }
- // Received response to queue
- var data = request.split("\r\n\r\n")[1];
- if (!data) {
- if (that.log) {
- console.log("No response data was provided");
- }
- res.writeHead(400, "NO RESPONSES IN REQUEST", { "Content-Length": 0 });
- } else {
- that.responses = eval("(" + data + ")");
- if (that.log) {
- console.log(that.responses);
- }
- res.writeHead(200, "OK", { "Content-Length": 0 });
- }
- res.end();
- }
- }
- };
-
- var receivedRequest = function(request, req, res) {
- if (req.url.indexOf("/guzzle-server") === 0) {
- controlRequest(request, req, res);
- } else if (req.url.indexOf("/guzzle-server") == -1 && !that.responses.length) {
- res.writeHead(500);
- res.end("No responses in queue");
- } else {
- var response = that.responses.shift();
- res.writeHead(response.statusCode, response.reasonPhrase, response.headers);
- res.end(response.body);
- that.requests.push(request);
- }
- };
-
- this.start = function() {
-
- that.server = http.createServer(function(req, res) {
-
- var request = req.method + " " + req.url + " HTTP/" + req.httpVersion + "\r\n";
- for (var i in req.headers) {
- request += i + ": " + req.headers[i] + "\r\n";
- }
- request += "\r\n";
-
- // Receive each chunk of the request body
- req.addListener("data", function(chunk) {
- request += chunk;
- });
-
- // Called when the request completes
- req.addListener("end", function() {
- receivedRequest(request, req, res);
- });
- });
- that.server.listen(port, "127.0.0.1");
-
- if (this.log) {
- console.log("Server running at http://127.0.0.1:8124/");
- }
- };
-};
-
-// Get the port from the arguments
-port = process.argv.length >= 3 ? process.argv[2] : 8124;
-log = process.argv.length >= 4 ? process.argv[3] : false;
-
-// Start the server
-server = new GuzzleServer(port, log);
-server.start();
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/InflectorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/InflectorTest.php
deleted file mode 100644
index 990c0af..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/InflectorTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Inflection;
-
-use Guzzle\Inflection\Inflector;
-
-/**
- * @covers Guzzle\Inflection\Inflector
- */
-class InflectorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testReturnsDefaultInstance()
- {
- $this->assertSame(Inflector::getDefault(), Inflector::getDefault());
- }
-
- public function testSnake()
- {
- $this->assertEquals('camel_case', Inflector::getDefault()->snake('camelCase'));
- $this->assertEquals('camel_case', Inflector::getDefault()->snake('CamelCase'));
- $this->assertEquals('camel_case_words', Inflector::getDefault()->snake('CamelCaseWords'));
- $this->assertEquals('camel_case_words', Inflector::getDefault()->snake('CamelCase_words'));
- $this->assertEquals('test', Inflector::getDefault()->snake('test'));
- $this->assertEquals('test', Inflector::getDefault()->snake('test'));
- $this->assertEquals('expect100_continue', Inflector::getDefault()->snake('Expect100Continue'));
- }
-
- public function testCamel()
- {
- $this->assertEquals('CamelCase', Inflector::getDefault()->camel('camel_case'));
- $this->assertEquals('CamelCaseWords', Inflector::getDefault()->camel('camel_case_words'));
- $this->assertEquals('Test', Inflector::getDefault()->camel('test'));
- $this->assertEquals('Expect100Continue', ucfirst(Inflector::getDefault()->camel('expect100_continue')));
- // Get from cache
- $this->assertEquals('Test', Inflector::getDefault()->camel('test', false));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/MemoizingInflectorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/MemoizingInflectorTest.php
deleted file mode 100644
index f00b7fa..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/MemoizingInflectorTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Inflection;
-
-use Guzzle\Inflection\MemoizingInflector;
-use Guzzle\Inflection\Inflector;
-
-/**
- * @covers Guzzle\Inflection\MemoizingInflector
- */
-class MemoizingInflectorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testUsesCache()
- {
- $mock = $this->getMock('Guzzle\Inflection\Inflector', array('snake', 'camel'));
- $mock->expects($this->once())->method('snake')->will($this->returnValue('foo_bar'));
- $mock->expects($this->once())->method('camel')->will($this->returnValue('FooBar'));
-
- $inflector = new MemoizingInflector($mock);
- $this->assertEquals('foo_bar', $inflector->snake('FooBar'));
- $this->assertEquals('foo_bar', $inflector->snake('FooBar'));
- $this->assertEquals('FooBar', $inflector->camel('foo_bar'));
- $this->assertEquals('FooBar', $inflector->camel('foo_bar'));
- }
-
- public function testProtectsAgainstCacheOverflow()
- {
- $inflector = new MemoizingInflector(new Inflector(), 10);
- for ($i = 1; $i < 11; $i++) {
- $inflector->camel('foo_' . $i);
- $inflector->snake('Foo' . $i);
- }
-
- $cache = $this->readAttribute($inflector, 'cache');
- $this->assertEquals(10, count($cache['snake']));
- $this->assertEquals(10, count($cache['camel']));
-
- $inflector->camel('baz!');
- $inflector->snake('baz!');
-
- // Now ensure that 20% of the cache was removed (2), then the item was added
- $cache = $this->readAttribute($inflector, 'cache');
- $this->assertEquals(9, count($cache['snake']));
- $this->assertEquals(9, count($cache['camel']));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/PreComputedInflectorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/PreComputedInflectorTest.php
deleted file mode 100644
index ff2654c..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Inflection/PreComputedInflectorTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Inflection;
-
-use Guzzle\Inflection\PreComputedInflector;
-
-/**
- * @covers Guzzle\Inflection\PreComputedInflector
- */
-class PreComputedInflectorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testUsesPreComputedHash()
- {
- $mock = $this->getMock('Guzzle\Inflection\Inflector', array('snake', 'camel'));
- $mock->expects($this->once())->method('snake')->with('Test')->will($this->returnValue('test'));
- $mock->expects($this->once())->method('camel')->with('Test')->will($this->returnValue('Test'));
- $inflector = new PreComputedInflector($mock, array('FooBar' => 'foo_bar'), array('foo_bar' => 'FooBar'));
- $this->assertEquals('FooBar', $inflector->camel('foo_bar'));
- $this->assertEquals('foo_bar', $inflector->snake('FooBar'));
- $this->assertEquals('Test', $inflector->camel('Test'));
- $this->assertEquals('test', $inflector->snake('Test'));
- }
-
- public function testMirrorsPrecomputedValues()
- {
- $mock = $this->getMock('Guzzle\Inflection\Inflector', array('snake', 'camel'));
- $mock->expects($this->never())->method('snake');
- $mock->expects($this->never())->method('camel');
- $inflector = new PreComputedInflector($mock, array('Zeep' => 'zeep'), array(), true);
- $this->assertEquals('Zeep', $inflector->camel('zeep'));
- $this->assertEquals('zeep', $inflector->snake('Zeep'));
- }
-
- public function testMirrorsPrecomputedValuesByMerging()
- {
- $mock = $this->getMock('Guzzle\Inflection\Inflector', array('snake', 'camel'));
- $mock->expects($this->never())->method('snake');
- $mock->expects($this->never())->method('camel');
- $inflector = new PreComputedInflector($mock, array('Zeep' => 'zeep'), array('foo' => 'Foo'), true);
- $this->assertEquals('Zeep', $inflector->camel('zeep'));
- $this->assertEquals('zeep', $inflector->snake('Zeep'));
- $this->assertEquals('Foo', $inflector->camel('foo'));
- $this->assertEquals('foo', $inflector->snake('Foo'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/AppendIteratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/AppendIteratorTest.php
deleted file mode 100644
index 8d6ae84..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/AppendIteratorTest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Iterator;
-
-use Guzzle\Iterator\AppendIterator;
-
-/**
- * @covers Guzzle\Iterator\AppendIterator
- */
-class AppendIteratorTest extends \PHPUnit_Framework_TestCase
-{
- public function testTraversesIteratorsInOrder()
- {
- $a = new \ArrayIterator(array(
- 'a' => 1,
- 'b' => 2
- ));
- $b = new \ArrayIterator(array());
- $c = new \ArrayIterator(array(
- 'c' => 3,
- 'd' => 4
- ));
- $i = new AppendIterator();
- $i->append($a);
- $i->append($b);
- $i->append($c);
- $this->assertEquals(array(1, 2, 3, 4), iterator_to_array($i, false));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/ChunkedIteratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/ChunkedIteratorTest.php
deleted file mode 100644
index ec4c129..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/ChunkedIteratorTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Iterator;
-
-use Guzzle\Iterator\ChunkedIterator;
-
-/**
- * @covers Guzzle\Iterator\ChunkedIterator
- */
-class ChunkedIteratorTest extends \PHPUnit_Framework_TestCase
-{
- public function testChunksIterator()
- {
- $chunked = new ChunkedIterator(new \ArrayIterator(range(0, 100)), 10);
- $chunks = iterator_to_array($chunked, false);
- $this->assertEquals(11, count($chunks));
- foreach ($chunks as $j => $chunk) {
- $this->assertEquals(range($j * 10, min(100, $j * 10 + 9)), $chunk);
- }
- }
-
- public function testChunksIteratorWithOddValues()
- {
- $chunked = new ChunkedIterator(new \ArrayIterator(array(1, 2, 3, 4, 5)), 2);
- $chunks = iterator_to_array($chunked, false);
- $this->assertEquals(3, count($chunks));
- $this->assertEquals(array(1, 2), $chunks[0]);
- $this->assertEquals(array(3, 4), $chunks[1]);
- $this->assertEquals(array(5), $chunks[2]);
- }
-
- public function testMustNotTerminateWithTraversable()
- {
- $traversable = simplexml_load_string('<root><foo/><foo/><foo/></root>')->foo;
- $chunked = new ChunkedIterator($traversable, 2);
- $actual = iterator_to_array($chunked, false);
- $this->assertCount(2, $actual);
- }
-
- public function testSizeOfZeroMakesIteratorInvalid() {
- $chunked = new ChunkedIterator(new \ArrayIterator(range(1, 5)), 0);
- $chunked->rewind();
- $this->assertFalse($chunked->valid());
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testSizeLowerZeroThrowsException() {
- new ChunkedIterator(new \ArrayIterator(range(1, 5)), -1);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/FilterIteratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/FilterIteratorTest.php
deleted file mode 100644
index 73b4f69..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/FilterIteratorTest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Iterator;
-
-use Guzzle\Iterator\FilterIterator;
-
-/**
- * @covers Guzzle\Iterator\FilterIterator
- */
-class FilterIteratorTest extends \PHPUnit_Framework_TestCase
-{
- public function testFiltersValues()
- {
- $i = new FilterIterator(new \ArrayIterator(range(0, 100)), function ($value) {
- return $value % 2;
- });
-
- $this->assertEquals(range(1, 99, 2), iterator_to_array($i, false));
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testValidatesCallable()
- {
- $i = new FilterIterator(new \ArrayIterator(), new \stdClass());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MapIteratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MapIteratorTest.php
deleted file mode 100644
index 4de4a6b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MapIteratorTest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Iterator;
-
-use Guzzle\Iterator\MapIterator;
-
-/**
- * @covers Guzzle\Iterator\MapIterator
- */
-class MapIteratorTest extends \PHPUnit_Framework_TestCase
-{
- public function testFiltersValues()
- {
- $i = new MapIterator(new \ArrayIterator(range(0, 100)), function ($value) {
- return $value * 10;
- });
-
- $this->assertEquals(range(0, 1000, 10), iterator_to_array($i, false));
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testValidatesCallable()
- {
- $i = new MapIterator(new \ArrayIterator(), new \stdClass());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MethodProxyIteratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MethodProxyIteratorTest.php
deleted file mode 100644
index 5bcf06f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Iterator/MethodProxyIteratorTest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Iterator;
-
-use Guzzle\Iterator\MethodProxyIterator;
-use Guzzle\Iterator\ChunkedIterator;
-
-/**
- * @covers Guzzle\Iterator\MethodProxyIterator
- */
-class MethodProxyIteratorTest extends \PHPUnit_Framework_TestCase
-{
- public function testProxiesMagicCallsToInnermostIterator()
- {
- $i = new \ArrayIterator();
- $proxy = new MethodProxyIterator(new MethodProxyIterator(new MethodProxyIterator($i)));
- $proxy->append('a');
- $proxy->append('b');
- $this->assertEquals(array('a', 'b'), $i->getArrayCopy());
- $this->assertEquals(array('a', 'b'), $proxy->getArrayCopy());
- }
-
- public function testUsesInnerIterator()
- {
- $i = new MethodProxyIterator(new ChunkedIterator(new \ArrayIterator(array(1, 2, 3, 4, 5)), 2));
- $this->assertEquals(3, count(iterator_to_array($i, false)));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ArrayLogAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ArrayLogAdapterTest.php
deleted file mode 100644
index a66882f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ArrayLogAdapterTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Log;
-
-use Guzzle\Log\ArrayLogAdapter;
-
-class ArrayLogAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testLog()
- {
- $adapter = new ArrayLogAdapter();
- $adapter->log('test', \LOG_NOTICE, '127.0.0.1');
- $this->assertEquals(array(array('message' => 'test', 'priority' => \LOG_NOTICE, 'extras' => '127.0.0.1')), $adapter->getLogs());
- }
-
- public function testClearLog()
- {
- $adapter = new ArrayLogAdapter();
- $adapter->log('test', \LOG_NOTICE, '127.0.0.1');
- $adapter->clearLogs();
- $this->assertEquals(array(), $adapter->getLogs());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ClosureLogAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ClosureLogAdapterTest.php
deleted file mode 100644
index 0177dc0..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/ClosureLogAdapterTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Log;
-
-use Guzzle\Log\ClosureLogAdapter;
-
-/**
- * @covers Guzzle\Log\ClosureLogAdapter
- */
-class ClosureLogAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testClosure()
- {
- $that = $this;
- $modified = null;
- $this->adapter = new ClosureLogAdapter(function($message, $priority, $extras = null) use ($that, &$modified) {
- $modified = array($message, $priority, $extras);
- });
- $this->adapter->log('test', LOG_NOTICE, '127.0.0.1');
- $this->assertEquals(array('test', LOG_NOTICE, '127.0.0.1'), $modified);
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- public function testThrowsExceptionWhenNotCallable()
- {
- $this->adapter = new ClosureLogAdapter(123);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/MessageFormatterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/MessageFormatterTest.php
deleted file mode 100644
index 3ff4b07..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/MessageFormatterTest.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Log;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\Curl\CurlHandle;
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\Response;
-use Guzzle\Log\MessageFormatter;
-use Guzzle\Plugin\Log\LogPlugin;
-use Guzzle\Log\ClosureLogAdapter;
-
-/**
- * @covers Guzzle\Log\MessageFormatter
- */
-class MessageFormatterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $request;
- protected $response;
- protected $handle;
-
- public function setUp()
- {
- $this->request = new EntityEnclosingRequest('POST', 'http://foo.com?q=test', array(
- 'X-Foo' => 'bar',
- 'Authorization' => 'Baz'
- ));
- $this->request->setBody(EntityBody::factory('Hello'));
-
- $this->response = new Response(200, array(
- 'X-Test' => 'Abc'
- ), 'Foo');
-
- $this->handle = $this->getMockBuilder('Guzzle\Http\Curl\CurlHandle')
- ->disableOriginalConstructor()
- ->setMethods(array('getError', 'getErrorNo', 'getStderr', 'getInfo'))
- ->getMock();
-
- $this->handle->expects($this->any())
- ->method('getError')
- ->will($this->returnValue('e'));
-
- $this->handle->expects($this->any())
- ->method('getErrorNo')
- ->will($this->returnValue('123'));
-
- $this->handle->expects($this->any())
- ->method('getStderr')
- ->will($this->returnValue('testing'));
-
- $this->handle->expects($this->any())
- ->method('getInfo')
- ->will($this->returnValueMap(array(
- array(CURLINFO_CONNECT_TIME, '123'),
- array(CURLINFO_TOTAL_TIME, '456')
- )));
- }
-
- public function logProvider()
- {
- return array(
- // Uses the cache for the second time
- array('{method} - {method}', 'POST - POST'),
- array('{url}', 'http://foo.com?q=test'),
- array('{port}', '80'),
- array('{resource}', '/?q=test'),
- array('{host}', 'foo.com'),
- array('{hostname}', gethostname()),
- array('{protocol}/{version}', 'HTTP/1.1'),
- array('{code} {phrase}', '200 OK'),
- array('{req_header_Foo}', ''),
- array('{req_header_X-Foo}', 'bar'),
- array('{req_header_Authorization}', 'Baz'),
- array('{res_header_foo}', ''),
- array('{res_header_X-Test}', 'Abc'),
- array('{req_body}', 'Hello'),
- array('{res_body}', 'Foo'),
- array('{curl_stderr}', 'testing'),
- array('{curl_error}', 'e'),
- array('{curl_code}', '123'),
- array('{connect_time}', '123'),
- array('{total_time}', '456')
- );
- }
-
- /**
- * @dataProvider logProvider
- */
- public function testFormatsMessages($template, $output)
- {
- $formatter = new MessageFormatter($template);
- $this->assertEquals($output, $formatter->format($this->request, $this->response, $this->handle));
- }
-
- public function testFormatsRequestsAndResponses()
- {
- $formatter = new MessageFormatter();
- $formatter->setTemplate('{request}{response}');
- $this->assertEquals($this->request . $this->response, $formatter->format($this->request, $this->response));
- }
-
- public function testAddsTimestamp()
- {
- $formatter = new MessageFormatter('{ts}');
- $this->assertNotEmpty($formatter->format($this->request, $this->response));
- }
-
- public function testUsesResponseWhenNoHandleAndGettingCurlInformation()
- {
- $formatter = new MessageFormatter('{connect_time}/{total_time}');
- $response = $this->getMockBuilder('Guzzle\Http\Message\Response')
- ->setConstructorArgs(array(200))
- ->setMethods(array('getInfo'))
- ->getMock();
- $response->expects($this->exactly(2))
- ->method('getInfo')
- ->will($this->returnValueMap(array(
- array('connect_time', '1'),
- array('total_time', '2'),
- )));
- $this->assertEquals('1/2', $formatter->format($this->request, $response));
- }
-
- public function testUsesEmptyStringWhenNoHandleAndNoResponse()
- {
- $formatter = new MessageFormatter('{connect_time}/{total_time}');
- $this->assertEquals('/', $formatter->format($this->request));
- }
-
- public function testInjectsTotalTime()
- {
- $out = '';
- $formatter = new MessageFormatter('{connect_time}/{total_time}');
- $adapter = new ClosureLogAdapter(function ($m) use (&$out) { $out .= $m; });
- $log = new LogPlugin($adapter, $formatter);
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nHI");
- $client = new Client($this->getServer()->getUrl());
- $client->addSubscriber($log);
- $client->get('/')->send();
- $this->assertNotEquals('/', $out);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/PsrLogAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/PsrLogAdapterTest.php
deleted file mode 100644
index 7b72dd6..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/PsrLogAdapterTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Log;
-
-use Guzzle\Log\PsrLogAdapter;
-use Monolog\Logger;
-use Monolog\Handler\TestHandler;
-
-/**
- * @covers Guzzle\Log\PsrLogAdapter
- * @covers Guzzle\Log\AbstractLogAdapter
- */
-class PsrLogAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testLogsMessagesToAdaptedObject()
- {
- $log = new Logger('test');
- $handler = new TestHandler();
- $log->pushHandler($handler);
- $adapter = new PsrLogAdapter($log);
- $adapter->log('test!', LOG_INFO);
- $this->assertTrue($handler->hasInfoRecords());
- $this->assertSame($log, $adapter->getLogObject());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/Zf2LogAdapterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/Zf2LogAdapterTest.php
deleted file mode 100644
index 1b61283..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Log/Zf2LogAdapterTest.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Log;
-
-use Guzzle\Log\Zf2LogAdapter;
-use Zend\Log\Logger;
-use Zend\Log\Writer\Stream;
-
-/**
- * @covers Guzzle\Log\Zf2LogAdapter
- */
-class Zf2LogAdapterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var Zf2LogAdapter */
- protected $adapter;
-
- /** @var Logger */
- protected $log;
-
- /** @var resource */
- protected $stream;
-
- protected function setUp()
- {
- $this->stream = fopen('php://temp', 'r+');
- $this->log = new Logger();
- $this->log->addWriter(new Stream($this->stream));
- $this->adapter = new Zf2LogAdapter($this->log);
-
- }
-
- public function testLogsMessagesToAdaptedObject()
- {
- // Test without a priority
- $this->adapter->log('Zend_Test!', \LOG_NOTICE);
- rewind($this->stream);
- $contents = stream_get_contents($this->stream);
- $this->assertEquals(1, substr_count($contents, 'Zend_Test!'));
-
- // Test with a priority
- $this->adapter->log('Zend_Test!', \LOG_ALERT);
- rewind($this->stream);
- $contents = stream_get_contents($this->stream);
- $this->assertEquals(2, substr_count($contents, 'Zend_Test!'));
- }
-
- public function testExposesAdaptedLogObject()
- {
- $this->assertEquals($this->log, $this->adapter->getLogObject());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/CustomResponseModel.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/CustomResponseModel.php
deleted file mode 100644
index 3fb6527..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/CustomResponseModel.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Mock;
-
-use Guzzle\Service\Command\ResponseClassInterface;
-use Guzzle\Service\Command\OperationCommand;
-
-class CustomResponseModel implements ResponseClassInterface
-{
- public $command;
-
- public static function fromCommand(OperationCommand $command)
- {
- return new self($command);
- }
-
- public function __construct($command)
- {
- $this->command = $command;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ErrorResponseMock.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ErrorResponseMock.php
deleted file mode 100644
index aabb15f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ErrorResponseMock.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Mock;
-
-use Guzzle\Plugin\ErrorResponse\ErrorResponseExceptionInterface;
-use Guzzle\Service\Command\CommandInterface;
-use Guzzle\Http\Message\Response;
-
-class ErrorResponseMock extends \Exception implements ErrorResponseExceptionInterface
-{
- public $command;
- public $response;
-
- public static function fromCommand(CommandInterface $command, Response $response)
- {
- return new self($command, $response);
- }
-
- public function __construct($command, $response)
- {
- $this->command = $command;
- $this->response = $response;
- $this->message = 'Error from ' . $response;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ExceptionMock.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ExceptionMock.php
deleted file mode 100644
index 97a1974..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/ExceptionMock.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Mock;
-
-class ExceptionMock
-{
- public function __construct()
- {
- throw new \Exception('Oh no!');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockMulti.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockMulti.php
deleted file mode 100644
index b4d6b82..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockMulti.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Mock;
-
-class MockMulti extends \Guzzle\Http\Curl\CurlMulti
-{
- public function getHandle()
- {
- return $this->multiHandle;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockObserver.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockObserver.php
deleted file mode 100644
index 11e22eb..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockObserver.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Mock;
-
-use Guzzle\Common\Event;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-class MockObserver implements \Countable, EventSubscriberInterface
-{
- public $events = array();
-
- public static function getSubscribedEvents()
- {
- return array();
- }
-
- public function has($eventName)
- {
- foreach ($this->events as $event) {
- if ($event->getName() == $eventName) {
- return true;
- }
- }
-
- return false;
- }
-
- public function getLastEvent()
- {
- return end($this->events);
- }
-
- public function count()
- {
- return count($this->events);
- }
-
- public function getGrouped()
- {
- $events = array();
- foreach ($this->events as $event) {
- if (!isset($events[$event->getName()])) {
- $events[$event->getName()] = array();
- }
- $events[$event->getName()][] = $event;
- }
-
- return $events;
- }
-
- public function getData($event, $key, $occurrence = 0)
- {
- $grouped = $this->getGrouped();
- if (isset($grouped[$event])) {
- return $grouped[$event][$occurrence][$key];
- }
-
- return null;
- }
-
- public function update(Event $event)
- {
- $this->events[] = $event;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockSubject.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockSubject.php
deleted file mode 100644
index e011959..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Mock/MockSubject.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Mock;
-
-class MockSubject extends \Guzzle\Common\Event\AbstractSubject
-{
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserProvider.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserProvider.php
deleted file mode 100644
index 86d43c0..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserProvider.php
+++ /dev/null
@@ -1,381 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parser\Cookie;
-
-use Guzzle\Http\Url;
-
-/**
- * @covers Guzzle\Parser\Cookie\CookieParser
- */
-class CookieParserProvider extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * Provides the parsed information from a cookie
- *
- * @return array
- */
- public function cookieParserDataProvider()
- {
- return array(
- array(
- 'ASIHTTPRequestTestCookie=This+is+the+value; expires=Sat, 26-Jul-2008 17:00:42 GMT; path=/tests; domain=allseeing-i.com; PHPSESSID=6c951590e7a9359bcedde25cda73e43c; path=/";',
- array(
- 'domain' => 'allseeing-i.com',
- 'path' => '/',
- 'data' => array(
- 'PHPSESSID' => '6c951590e7a9359bcedde25cda73e43c'
- ),
- 'max_age' => NULL,
- 'expires' => 'Sat, 26-Jul-2008 17:00:42 GMT',
- 'version' => NULL,
- 'secure' => NULL,
- 'discard' => NULL,
- 'port' => NULL,
- 'cookies' => array(
- 'ASIHTTPRequestTestCookie' => 'This+is+the+value'
- ),
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- array('', false),
- array('foo', false),
- // Test setting a blank value for a cookie
- array(array(
- 'foo=', 'foo =', 'foo =;', 'foo= ;', 'foo =', 'foo= '),
- array(
- 'cookies' => array(
- 'foo' => ''
- ),
- 'data' => array(),
- 'discard' => null,
- 'domain' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- // Test setting a value and removing quotes
- array(array(
- 'foo=1', 'foo =1', 'foo =1;', 'foo=1 ;', 'foo =1', 'foo= 1', 'foo = 1 ;', 'foo="1"', 'foo="1";', 'foo= "1";'),
- array(
- 'cookies' => array(
- 'foo' => '1'
- ),
- 'data' => array(),
- 'discard' => null,
- 'domain' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- // Test setting multiple values
- array(array(
- 'foo=1; bar=2;', 'foo =1; bar = "2"', 'foo=1; bar=2'),
- array(
- 'cookies' => array(
- 'foo' => '1',
- 'bar' => '2',
- ),
- 'data' => array(),
- 'discard' => null,
- 'domain' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- // Tests getting the domain and path from a reference request
- array(array(
- 'foo=1; port="80,8081"; httponly', 'foo=1; port="80,8081"; domain=www.test.com; HttpOnly;', 'foo=1; ; domain=www.test.com; path=/path; port="80,8081"; HttpOnly;'),
- array(
- 'cookies' => array(
- 'foo' => 1
- ),
- 'data' => array(),
- 'discard' => null,
- 'domain' => 'www.test.com',
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/path',
- 'port' => array('80', '8081'),
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => true
- ),
- 'http://www.test.com/path/'
- ),
- // Some of the following tests are based on http://framework.zend.com/svn/framework/standard/trunk/tests/Zend/Http/CookieTest.php
- array(
- 'justacookie=foo; domain=example.com',
- array(
- 'cookies' => array(
- 'justacookie' => 'foo'
- ),
- 'domain' => 'example.com',
- 'data' => array(),
- 'discard' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- array(
- 'expires=tomorrow; secure; path=/Space Out/; expires=Tue, 21-Nov-2006 08:33:44 GMT; domain=.example.com',
- array(
- 'cookies' => array(
- 'expires' => 'tomorrow'
- ),
- 'domain' => '.example.com',
- 'path' => '/Space Out/',
- 'expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
- 'data' => array(),
- 'discard' => null,
- 'port' => null,
- 'secure' => true,
- 'version' => null,
- 'max_age' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- array(
- 'domain=unittests; expires=Tue, 21-Nov-2006 08:33:44 GMT; domain=example.com; path=/some value/',
- array(
- 'cookies' => array(
- 'domain' => 'unittests'
- ),
- 'domain' => 'example.com',
- 'path' => '/some value/',
- 'expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
- 'secure' => false,
- 'data' => array(),
- 'discard' => null,
- 'max_age' => null,
- 'port' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- array(
- 'path=indexAction; path=/; domain=.foo.com; expires=Tue, 21-Nov-2006 08:33:44 GMT',
- array(
- 'cookies' => array(
- 'path' => 'indexAction'
- ),
- 'domain' => '.foo.com',
- 'path' => '/',
- 'expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
- 'secure' => false,
- 'data' => array(),
- 'discard' => null,
- 'max_age' => null,
- 'port' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- array(
- 'secure=sha1; secure; SECURE; domain=some.really.deep.domain.com; version=1; Max-Age=86400',
- array(
- 'cookies' => array(
- 'secure' => 'sha1'
- ),
- 'domain' => 'some.really.deep.domain.com',
- 'path' => '/',
- 'secure' => true,
- 'data' => array(),
- 'discard' => null,
- 'expires' => time() + 86400,
- 'max_age' => 86400,
- 'port' => null,
- 'version' => 1,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- array(
- 'PHPSESSID=123456789+abcd%2Cef; secure; discard; domain=.localdomain; path=/foo/baz; expires=Tue, 21-Nov-2006 08:33:44 GMT;',
- array(
- 'cookies' => array(
- 'PHPSESSID' => '123456789+abcd%2Cef'
- ),
- 'domain' => '.localdomain',
- 'path' => '/foo/baz',
- 'expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
- 'secure' => true,
- 'data' => array(),
- 'discard' => true,
- 'max_age' => null,
- 'port' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- )
- ),
- // rfc6265#section-5.1.4
- array(
- 'cookie=value',
- array(
- 'cookies' => array(
- 'cookie' => 'value'
- ),
- 'domain' => 'example.com',
- 'data' => array(),
- 'discard' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/some/path',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- ),
- 'http://example.com/some/path/test.html'
- ),
- array(
- 'empty=path',
- array(
- 'cookies' => array(
- 'empty' => 'path'
- ),
- 'domain' => 'example.com',
- 'data' => array(),
- 'discard' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- ),
- 'http://example.com/test.html'
- ),
- array(
- 'baz=qux',
- array(
- 'cookies' => array(
- 'baz' => 'qux'
- ),
- 'domain' => 'example.com',
- 'data' => array(),
- 'discard' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- ),
- 'http://example.com?query=here'
- ),
- array(
- 'test=noSlashPath; path=someString',
- array(
- 'cookies' => array(
- 'test' => 'noSlashPath'
- ),
- 'domain' => 'example.com',
- 'data' => array(),
- 'discard' => null,
- 'expires' => null,
- 'max_age' => null,
- 'path' => '/real/path',
- 'port' => null,
- 'secure' => null,
- 'version' => null,
- 'comment' => null,
- 'comment_url' => null,
- 'http_only' => false
- ),
- 'http://example.com/real/path/'
- ),
- );
- }
-
- /**
- * @dataProvider cookieParserDataProvider
- */
- public function testParseCookie($cookie, $parsed, $url = null)
- {
- $c = $this->cookieParserClass;
- $parser = new $c();
-
- $request = null;
- if ($url) {
- $url = Url::factory($url);
- $host = $url->getHost();
- $path = $url->getPath();
- } else {
- $host = '';
- $path = '';
- }
-
- foreach ((array) $cookie as $c) {
- $p = $parser->parseCookie($c, $host, $path);
-
- // Remove expires values from the assertion if they are relatively equal by allowing a 5 minute difference
- if ($p['expires'] != $parsed['expires']) {
- if (abs($p['expires'] - $parsed['expires']) < 300) {
- unset($p['expires']);
- unset($parsed['expires']);
- }
- }
-
- if (is_array($parsed)) {
- foreach ($parsed as $key => $value) {
- $this->assertEquals($parsed[$key], $p[$key], 'Comparing ' . $key . ' ' . var_export($value, true) . ' : ' . var_export($parsed, true) . ' | ' . var_export($p, true));
- }
-
- foreach ($p as $key => $value) {
- $this->assertEquals($p[$key], $parsed[$key], 'Comparing ' . $key . ' ' . var_export($value, true) . ' : ' . var_export($parsed, true) . ' | ' . var_export($p, true));
- }
- } else {
- $this->assertEquals($parsed, $p);
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserTest.php
deleted file mode 100644
index 75d336f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Cookie/CookieParserTest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parser\Cookie;
-
-use Guzzle\Parser\Cookie\CookieParser;
-
-/**
- * @covers Guzzle\Parser\Cookie\CookieParser
- */
-class CookieParserTest extends CookieParserProvider
-{
- protected $cookieParserClass = 'Guzzle\Parser\Cookie\CookieParser';
-
- public function testUrlDecodesCookies()
- {
- $parser = new CookieParser();
- $result = $parser->parseCookie('foo=baz+bar', null, null, true);
- $this->assertEquals(array(
- 'foo' => 'baz bar'
- ), $result['cookies']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserProvider.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserProvider.php
deleted file mode 100644
index da58bb4..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserProvider.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parser\Message;
-
-class MessageParserProvider extends \Guzzle\Tests\GuzzleTestCase
-{
- public function requestProvider()
- {
- $auth = base64_encode('michael:foo');
-
- return array(
-
- // Empty request
- array('', false),
-
- // Converts casing of request. Does not require host header.
- array("GET / HTTP/1.1\r\n\r\n", array(
- 'method' => 'GET',
- 'protocol' => 'HTTP',
- 'version' => '1.1',
- 'request_url' => array(
- 'scheme' => 'http',
- 'host' => '',
- 'port' => '',
- 'path' => '/',
- 'query' => ''
- ),
- 'headers' => array(),
- 'body' => ''
- )),
- // Path and query string, multiple header values per header and case sensitive storage
- array("HEAD /path?query=foo HTTP/1.0\r\nHost: example.com\r\nX-Foo: foo\r\nx-foo: Bar\r\nX-Foo: foo\r\nX-Foo: Baz\r\n\r\n", array(
- 'method' => 'HEAD',
- 'protocol' => 'HTTP',
- 'version' => '1.0',
- 'request_url' => array(
- 'scheme' => 'http',
- 'host' => 'example.com',
- 'port' => '',
- 'path' => '/path',
- 'query' => 'query=foo'
- ),
- 'headers' => array(
- 'Host' => 'example.com',
- 'X-Foo' => array('foo', 'foo', 'Baz'),
- 'x-foo' => 'Bar'
- ),
- 'body' => ''
- )),
- // Includes a body
- array("PUT / HTTP/1.0\r\nhost: example.com:443\r\nContent-Length: 4\r\n\r\ntest", array(
- 'method' => 'PUT',
- 'protocol' => 'HTTP',
- 'version' => '1.0',
- 'request_url' => array(
- 'scheme' => 'https',
- 'host' => 'example.com',
- 'port' => '443',
- 'path' => '/',
- 'query' => ''
- ),
- 'headers' => array(
- 'host' => 'example.com:443',
- 'Content-Length' => '4'
- ),
- 'body' => 'test'
- )),
- // Includes Authorization headers
- array("GET / HTTP/1.1\r\nHost: example.com:8080\r\nAuthorization: Basic {$auth}\r\n\r\n", array(
- 'method' => 'GET',
- 'protocol' => 'HTTP',
- 'version' => '1.1',
- 'request_url' => array(
- 'scheme' => 'http',
- 'host' => 'example.com',
- 'port' => '8080',
- 'path' => '/',
- 'query' => ''
- ),
- 'headers' => array(
- 'Host' => 'example.com:8080',
- 'Authorization' => "Basic {$auth}"
- ),
- 'body' => ''
- )),
- // Include authorization header
- array("GET / HTTP/1.1\r\nHost: example.com:8080\r\nauthorization: Basic {$auth}\r\n\r\n", array(
- 'method' => 'GET',
- 'protocol' => 'HTTP',
- 'version' => '1.1',
- 'request_url' => array(
- 'scheme' => 'http',
- 'host' => 'example.com',
- 'port' => '8080',
- 'path' => '/',
- 'query' => ''
- ),
- 'headers' => array(
- 'Host' => 'example.com:8080',
- 'authorization' => "Basic {$auth}"
- ),
- 'body' => ''
- )),
- );
- }
-
- public function responseProvider()
- {
- return array(
- // Empty request
- array('', false),
-
- array("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n", array(
- 'protocol' => 'HTTP',
- 'version' => '1.1',
- 'code' => '200',
- 'reason_phrase' => 'OK',
- 'headers' => array(
- 'Content-Length' => 0
- ),
- 'body' => ''
- )),
- array("HTTP/1.0 400 Bad Request\r\nContent-Length: 0\r\n\r\n", array(
- 'protocol' => 'HTTP',
- 'version' => '1.0',
- 'code' => '400',
- 'reason_phrase' => 'Bad Request',
- 'headers' => array(
- 'Content-Length' => 0
- ),
- 'body' => ''
- )),
- array("HTTP/1.0 100 Continue\r\n\r\n", array(
- 'protocol' => 'HTTP',
- 'version' => '1.0',
- 'code' => '100',
- 'reason_phrase' => 'Continue',
- 'headers' => array(),
- 'body' => ''
- )),
- array("HTTP/1.1 204 No Content\r\nX-Foo: foo\r\nx-foo: Bar\r\nX-Foo: foo\r\n\r\n", array(
- 'protocol' => 'HTTP',
- 'version' => '1.1',
- 'code' => '204',
- 'reason_phrase' => 'No Content',
- 'headers' => array(
- 'X-Foo' => array('foo', 'foo'),
- 'x-foo' => 'Bar'
- ),
- 'body' => ''
- )),
- array("HTTP/1.1 200 Ok that is great!\r\nContent-Length: 4\r\n\r\nTest", array(
- 'protocol' => 'HTTP',
- 'version' => '1.1',
- 'code' => '200',
- 'reason_phrase' => 'Ok that is great!',
- 'headers' => array(
- 'Content-Length' => 4
- ),
- 'body' => 'Test'
- )),
- );
- }
-
- public function compareRequestResults($result, $expected)
- {
- if (!$result) {
- $this->assertFalse($expected);
- return;
- }
-
- $this->assertEquals($result['method'], $expected['method']);
- $this->assertEquals($result['protocol'], $expected['protocol']);
- $this->assertEquals($result['version'], $expected['version']);
- $this->assertEquals($result['request_url'], $expected['request_url']);
- $this->assertEquals($result['body'], $expected['body']);
- $this->compareHttpHeaders($result['headers'], $expected['headers']);
- }
-
- public function compareResponseResults($result, $expected)
- {
- if (!$result) {
- $this->assertFalse($expected);
- return;
- }
-
- $this->assertEquals($result['protocol'], $expected['protocol']);
- $this->assertEquals($result['version'], $expected['version']);
- $this->assertEquals($result['code'], $expected['code']);
- $this->assertEquals($result['reason_phrase'], $expected['reason_phrase']);
- $this->assertEquals($result['body'], $expected['body']);
- $this->compareHttpHeaders($result['headers'], $expected['headers']);
- }
-
- protected function normalizeHeaders($headers)
- {
- $normalized = array();
- foreach ($headers as $key => $value) {
- $key = strtolower($key);
- if (!isset($normalized[$key])) {
- $normalized[$key] = $value;
- } elseif (!is_array($normalized[$key])) {
- $normalized[$key] = array($value);
- } else {
- $normalized[$key][] = $value;
- }
- }
-
- foreach ($normalized as $key => &$value) {
- if (is_array($value)) {
- sort($value);
- }
- }
-
- return $normalized;
- }
-
- public function compareHttpHeaders($result, $expected)
- {
- // Aggregate all headers case-insensitively
- $result = $this->normalizeHeaders($result);
- $expected = $this->normalizeHeaders($expected);
- $this->assertEquals($result, $expected);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserTest.php
deleted file mode 100644
index 2f52228..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/MessageParserTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parser\Message;
-
-use Guzzle\Parser\Message\MessageParser;
-
-/**
- * @covers Guzzle\Parser\Message\AbstractMessageParser
- * @covers Guzzle\Parser\Message\MessageParser
- */
-class MessageParserTest extends MessageParserProvider
-{
- /**
- * @dataProvider requestProvider
- */
- public function testParsesRequests($message, $parts)
- {
- $parser = new MessageParser();
- $this->compareRequestResults($parts, $parser->parseRequest($message));
- }
-
- /**
- * @dataProvider responseProvider
- */
- public function testParsesResponses($message, $parts)
- {
- $parser = new MessageParser();
- $this->compareResponseResults($parts, $parser->parseResponse($message));
- }
-
- public function testParsesRequestsWithMissingProtocol()
- {
- $parser = new MessageParser();
- $parts = $parser->parseRequest("GET /\r\nHost: Foo.com\r\n\r\n");
- $this->assertEquals('GET', $parts['method']);
- $this->assertEquals('HTTP', $parts['protocol']);
- $this->assertEquals('1.1', $parts['version']);
- }
-
- public function testParsesRequestsWithMissingVersion()
- {
- $parser = new MessageParser();
- $parts = $parser->parseRequest("GET / HTTP\r\nHost: Foo.com\r\n\r\n");
- $this->assertEquals('GET', $parts['method']);
- $this->assertEquals('HTTP', $parts['protocol']);
- $this->assertEquals('1.1', $parts['version']);
- }
-
- public function testParsesResponsesWithMissingReasonPhrase()
- {
- $parser = new MessageParser();
- $parts = $parser->parseResponse("HTTP/1.1 200\r\n\r\n");
- $this->assertEquals('200', $parts['code']);
- $this->assertEquals('', $parts['reason_phrase']);
- $this->assertEquals('HTTP', $parts['protocol']);
- $this->assertEquals('1.1', $parts['version']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/PeclHttpMessageParserTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/PeclHttpMessageParserTest.php
deleted file mode 100644
index 6706e20..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/Message/PeclHttpMessageParserTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parser\Message;
-
-use Guzzle\Parser\Message\PeclHttpMessageParser;
-
-/**
- * @covers Guzzle\Parser\Message\PeclHttpMessageParser
- */
-class PeclHttpMessageParserTest extends MessageParserProvider
-{
- protected function setUp()
- {
- if (!function_exists('http_parse_message')) {
- $this->markTestSkipped('pecl_http is not available.');
- }
- }
-
- /**
- * @dataProvider requestProvider
- */
- public function testParsesRequests($message, $parts)
- {
- $parser = new PeclHttpMessageParser();
- $this->compareRequestResults($parts, $parser->parseRequest($message));
- }
-
- /**
- * @dataProvider responseProvider
- */
- public function testParsesResponses($message, $parts)
- {
- $parser = new PeclHttpMessageParser();
- $this->compareResponseResults($parts, $parser->parseResponse($message));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/ParserRegistryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/ParserRegistryTest.php
deleted file mode 100644
index 7675efb..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/ParserRegistryTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parser;
-
-use Guzzle\Parser\ParserRegistry;
-
-/**
- * @covers Guzzle\Parser\ParserRegistry
- */
-class ParserRegistryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testStoresObjects()
- {
- $r = new ParserRegistry();
- $c = new \stdClass();
- $r->registerParser('foo', $c);
- $this->assertSame($c, $r->getParser('foo'));
- }
-
- public function testReturnsNullWhenNotFound()
- {
- $r = new ParserRegistry();
- $this->assertNull($r->getParser('FOO'));
- }
-
- public function testReturnsLazyLoadedDefault()
- {
- $r = new ParserRegistry();
- $c = $r->getParser('cookie');
- $this->assertInstanceOf('Guzzle\Parser\Cookie\CookieParser', $c);
- $this->assertSame($c, $r->getParser('cookie'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/AbstractUriTemplateTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/AbstractUriTemplateTest.php
deleted file mode 100644
index a05fc2e..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/AbstractUriTemplateTest.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parsers\UriTemplate;
-
-abstract class AbstractUriTemplateTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @return array
- */
- public function templateProvider()
- {
- $t = array();
- $params = array(
- 'var' => 'value',
- 'hello' => 'Hello World!',
- 'empty' => '',
- 'path' => '/foo/bar',
- 'x' => '1024',
- 'y' => '768',
- 'null' => null,
- 'list' => array('red', 'green', 'blue'),
- 'keys' => array(
- "semi" => ';',
- "dot" => '.',
- "comma" => ','
- ),
- 'empty_keys' => array(),
- );
-
- return array_map(function($t) use ($params) {
- $t[] = $params;
- return $t;
- }, array(
- array('foo', 'foo'),
- array('{var}', 'value'),
- array('{hello}', 'Hello%20World%21'),
- array('{+var}', 'value'),
- array('{+hello}', 'Hello%20World!'),
- array('{+path}/here', '/foo/bar/here'),
- array('here?ref={+path}', 'here?ref=/foo/bar'),
- array('X{#var}', 'X#value'),
- array('X{#hello}', 'X#Hello%20World!'),
- array('map?{x,y}', 'map?1024,768'),
- array('{x,hello,y}', '1024,Hello%20World%21,768'),
- array('{+x,hello,y}', '1024,Hello%20World!,768'),
- array('{+path,x}/here', '/foo/bar,1024/here'),
- array('{#x,hello,y}', '#1024,Hello%20World!,768'),
- array('{#path,x}/here', '#/foo/bar,1024/here'),
- array('X{.var}', 'X.value'),
- array('X{.x,y}', 'X.1024.768'),
- array('{/var}', '/value'),
- array('{/var,x}/here', '/value/1024/here'),
- array('{;x,y}', ';x=1024;y=768'),
- array('{;x,y,empty}', ';x=1024;y=768;empty'),
- array('{?x,y}', '?x=1024&y=768'),
- array('{?x,y,empty}', '?x=1024&y=768&empty='),
- array('?fixed=yes{&x}', '?fixed=yes&x=1024'),
- array('{&x,y,empty}', '&x=1024&y=768&empty='),
- array('{var:3}', 'val'),
- array('{var:30}', 'value'),
- array('{list}', 'red,green,blue'),
- array('{list*}', 'red,green,blue'),
- array('{keys}', 'semi,%3B,dot,.,comma,%2C'),
- array('{keys*}', 'semi=%3B,dot=.,comma=%2C'),
- array('{+path:6}/here', '/foo/b/here'),
- array('{+list}', 'red,green,blue'),
- array('{+list*}', 'red,green,blue'),
- array('{+keys}', 'semi,;,dot,.,comma,,'),
- array('{+keys*}', 'semi=;,dot=.,comma=,'),
- array('{#path:6}/here', '#/foo/b/here'),
- array('{#list}', '#red,green,blue'),
- array('{#list*}', '#red,green,blue'),
- array('{#keys}', '#semi,;,dot,.,comma,,'),
- array('{#keys*}', '#semi=;,dot=.,comma=,'),
- array('X{.var:3}', 'X.val'),
- array('X{.list}', 'X.red,green,blue'),
- array('X{.list*}', 'X.red.green.blue'),
- array('X{.keys}', 'X.semi,%3B,dot,.,comma,%2C'),
- array('X{.keys*}', 'X.semi=%3B.dot=..comma=%2C'),
- array('{/var:1,var}', '/v/value'),
- array('{/list}', '/red,green,blue'),
- array('{/list*}', '/red/green/blue'),
- array('{/list*,path:4}', '/red/green/blue/%2Ffoo'),
- array('{/keys}', '/semi,%3B,dot,.,comma,%2C'),
- array('{/keys*}', '/semi=%3B/dot=./comma=%2C'),
- array('{;hello:5}', ';hello=Hello'),
- array('{;list}', ';list=red,green,blue'),
- array('{;list*}', ';list=red;list=green;list=blue'),
- array('{;keys}', ';keys=semi,%3B,dot,.,comma,%2C'),
- array('{;keys*}', ';semi=%3B;dot=.;comma=%2C'),
- array('{?var:3}', '?var=val'),
- array('{?list}', '?list=red,green,blue'),
- array('{?list*}', '?list=red&list=green&list=blue'),
- array('{?keys}', '?keys=semi,%3B,dot,.,comma,%2C'),
- array('{?keys*}', '?semi=%3B&dot=.&comma=%2C'),
- array('{&var:3}', '&var=val'),
- array('{&list}', '&list=red,green,blue'),
- array('{&list*}', '&list=red&list=green&list=blue'),
- array('{&keys}', '&keys=semi,%3B,dot,.,comma,%2C'),
- array('{&keys*}', '&semi=%3B&dot=.&comma=%2C'),
- array('{.null}', ''),
- array('{.null,var}', '.value'),
- array('X{.empty_keys*}', 'X'),
- array('X{.empty_keys}', 'X'),
- // Test that missing expansions are skipped
- array('test{&missing*}', 'test'),
- // Test that multiple expansions can be set
- array('http://{var}/{var:2}{?keys*}', 'http://value/va?semi=%3B&dot=.&comma=%2C'),
- // Test more complex query string stuff
- array('http://www.test.com{+path}{?var,keys*}', 'http://www.test.com/foo/bar?var=value&semi=%3B&dot=.&comma=%2C')
- ));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/PeclUriTemplateTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/PeclUriTemplateTest.php
deleted file mode 100644
index 633c5d5..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/PeclUriTemplateTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parsers\UriTemplate;
-
-use Guzzle\Parser\UriTemplate\PeclUriTemplate;
-
-/**
- * @covers Guzzle\Parser\UriTemplate\PeclUriTemplate
- */
-class PeclUriTemplateTest extends AbstractUriTemplateTest
-{
- protected function setUp()
- {
- if (!extension_loaded('uri_template')) {
- $this->markTestSkipped('uri_template PECL extension must be installed to test PeclUriTemplate');
- }
- }
-
- /**
- * @dataProvider templateProvider
- */
- public function testExpandsUriTemplates($template, $expansion, $params)
- {
- $uri = new PeclUriTemplate($template);
- $this->assertEquals($expansion, $uri->expand($template, $params));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/UriTemplateTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/UriTemplateTest.php
deleted file mode 100644
index 5130d6f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Parser/UriTemplate/UriTemplateTest.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Parsers\UriTemplate;
-
-use Guzzle\Parser\UriTemplate\UriTemplate;
-
-/**
- * @covers Guzzle\Parser\UriTemplate\UriTemplate
- */
-class UriTemplateTest extends AbstractUriTemplateTest
-{
- /**
- * @dataProvider templateProvider
- */
- public function testExpandsUriTemplates($template, $expansion, $params)
- {
- $uri = new UriTemplate($template);
- $this->assertEquals($expansion, $uri->expand($template, $params));
- }
-
- public function expressionProvider()
- {
- return array(
- array(
- '{+var*}', array(
- 'operator' => '+',
- 'values' => array(
- array('value' => 'var', 'modifier' => '*')
- )
- ),
- ),
- array(
- '{?keys,var,val}', array(
- 'operator' => '?',
- 'values' => array(
- array('value' => 'keys', 'modifier' => ''),
- array('value' => 'var', 'modifier' => ''),
- array('value' => 'val', 'modifier' => '')
- )
- ),
- ),
- array(
- '{+x,hello,y}', array(
- 'operator' => '+',
- 'values' => array(
- array('value' => 'x', 'modifier' => ''),
- array('value' => 'hello', 'modifier' => ''),
- array('value' => 'y', 'modifier' => '')
- )
- )
- )
- );
- }
-
- /**
- * @dataProvider expressionProvider
- */
- public function testParsesExpressions($exp, $data)
- {
- $template = new UriTemplate($exp);
-
- // Access the config object
- $class = new \ReflectionClass($template);
- $method = $class->getMethod('parseExpression');
- $method->setAccessible(true);
-
- $exp = substr($exp, 1, -1);
- $this->assertEquals($data, $method->invokeArgs($template, array($exp)));
- }
-
- /**
- * @ticket https://github.com/guzzle/guzzle/issues/90
- */
- public function testAllowsNestedArrayExpansion()
- {
- $template = new UriTemplate();
-
- $result = $template->expand('http://example.com{+path}{/segments}{?query,data*,foo*}', array(
- 'path' => '/foo/bar',
- 'segments' => array('one', 'two'),
- 'query' => 'test',
- 'data' => array(
- 'more' => array('fun', 'ice cream')
- ),
- 'foo' => array(
- 'baz' => array(
- 'bar' => 'fizz',
- 'test' => 'buzz'
- ),
- 'bam' => 'boo'
- )
- ));
-
- $this->assertEquals('http://example.com/foo/bar/one,two?query=test&more%5B0%5D=fun&more%5B1%5D=ice%20cream&baz%5Bbar%5D=fizz&baz%5Btest%5D=buzz&bam=boo', $result);
- }
-
- /**
- * @ticket https://github.com/guzzle/guzzle/issues/426
- */
- public function testSetRegex()
- {
- $template = new UriTemplate();
- $template->setRegex('/\<\$(.+)\>/');
- $this->assertSame('/foo', $template->expand('/<$a>', array('a' => 'foo')));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Async/AsyncPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Async/AsyncPluginTest.php
deleted file mode 100644
index 16990a5..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Async/AsyncPluginTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Async;
-
-use Guzzle\Plugin\Async\AsyncPlugin;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Curl\CurlHandle;
-use Guzzle\Http\Exception\CurlException;
-use Guzzle\Common\Event;
-use Guzzle\Http\Client;
-
-/**
- * @covers Guzzle\Plugin\Async\AsyncPlugin
- */
-class AsyncPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testSubscribesToEvents()
- {
- $events = AsyncPlugin::getSubscribedEvents();
- $this->assertArrayHasKey('request.before_send', $events);
- $this->assertArrayHasKey('request.exception', $events);
- $this->assertArrayHasKey('curl.callback.progress', $events);
- }
-
- public function testEnablesProgressCallbacks()
- {
- $p = new AsyncPlugin();
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.example.com');
- $event = new Event(array(
- 'request' => $request
- ));
- $p->onBeforeSend($event);
- $this->assertEquals(true, $request->getCurlOptions()->get('progress'));
- }
-
- public function testAddsTimesOutAfterSending()
- {
- $p = new AsyncPlugin();
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.example.com');
- $handle = CurlHandle::factory($request);
- $event = new Event(array(
- 'request' => $request,
- 'handle' => $handle->getHandle(),
- 'uploaded' => 10,
- 'upload_size' => 10,
- 'downloaded' => 0
- ));
- $p->onCurlProgress($event);
- }
-
- public function testEnsuresRequestIsSet()
- {
- $p = new AsyncPlugin();
- $event = new Event(array(
- 'uploaded' => 10,
- 'upload_size' => 10,
- 'downloaded' => 0
- ));
- $p->onCurlProgress($event);
- }
-
- public function testMasksCurlExceptions()
- {
- $p = new AsyncPlugin();
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.example.com');
- $e = new CurlException('Error');
- $event = new Event(array(
- 'request' => $request,
- 'exception' => $e
- ));
- $p->onRequestTimeout($event);
- $this->assertEquals(RequestInterface::STATE_COMPLETE, $request->getState());
- $this->assertEquals(200, $request->getResponse()->getStatusCode());
- $this->assertTrue($request->getResponse()->hasHeader('X-Guzzle-Async'));
- }
-
- public function testEnsuresIntegration()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 204 FOO\r\nContent-Length: 4\r\n\r\ntest");
- $client = new Client($this->getServer()->getUrl());
- $request = $client->post('/', null, array(
- 'foo' => 'bar'
- ));
- $request->getEventDispatcher()->addSubscriber(new AsyncPlugin());
- $request->send();
- $this->assertEquals('', $request->getResponse()->getBody(true));
- $this->assertTrue($request->getResponse()->hasHeader('X-Guzzle-Async'));
- $received = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals('POST', $received[0]->getMethod());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/AbstractBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/AbstractBackoffStrategyTest.php
deleted file mode 100644
index 72af263..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/AbstractBackoffStrategyTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Http\Message\Request;
-use Guzzle\Plugin\Backoff\TruncatedBackoffStrategy;
-use Guzzle\Plugin\Backoff\CallbackBackoffStrategy;
-
-/**
- * @covers Guzzle\Plugin\Backoff\AbstractBackoffStrategy
- */
-class AbstractBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected function getMockStrategy()
- {
- return $this->getMockBuilder('Guzzle\Plugin\Backoff\AbstractBackoffStrategy')
- ->setMethods(array('getDelay', 'makesDecision'))
- ->getMockForAbstractClass();
- }
-
- public function testReturnsZeroWhenNoNextAndGotNull()
- {
- $request = new Request('GET', 'http://www.foo.com');
- $mock = $this->getMockStrategy();
- $mock->expects($this->atLeastOnce())->method('getDelay')->will($this->returnValue(null));
- $this->assertEquals(0, $mock->getBackoffPeriod(0, $request));
- }
-
- public function testReturnsFalse()
- {
- $request = new Request('GET', 'http://www.foo.com');
- $mock = $this->getMockStrategy();
- $mock->expects($this->atLeastOnce())->method('getDelay')->will($this->returnValue(false));
- $this->assertEquals(false, $mock->getBackoffPeriod(0, $request));
- }
-
- public function testReturnsNextValueWhenNullOrTrue()
- {
- $request = new Request('GET', 'http://www.foo.com');
- $mock = $this->getMockStrategy();
- $mock->expects($this->atLeastOnce())->method('getDelay')->will($this->returnValue(null));
- $mock->expects($this->any())->method('makesDecision')->will($this->returnValue(false));
-
- $mock2 = $this->getMockStrategy();
- $mock2->expects($this->atLeastOnce())->method('getDelay')->will($this->returnValue(10));
- $mock2->expects($this->atLeastOnce())->method('makesDecision')->will($this->returnValue(true));
- $mock->setNext($mock2);
-
- $this->assertEquals(10, $mock->getBackoffPeriod(0, $request));
- }
-
- public function testReturnsFalseWhenNullAndNoNext()
- {
- $request = new Request('GET', 'http://www.foo.com');
- $s = new TruncatedBackoffStrategy(2);
- $this->assertFalse($s->getBackoffPeriod(0, $request));
- }
-
- public function testHasNext()
- {
- $a = new TruncatedBackoffStrategy(2);
- $b = new TruncatedBackoffStrategy(2);
- $a->setNext($b);
- $this->assertSame($b, $a->getNext());
- }
-
- public function testSkipsOtherDecisionsInChainWhenOneReturnsTrue()
- {
- $a = new CallbackBackoffStrategy(function () { return null; }, true);
- $b = new CallbackBackoffStrategy(function () { return true; }, true);
- $c = new CallbackBackoffStrategy(function () { return null; }, true);
- $d = new CallbackBackoffStrategy(function () { return 10; }, false);
- $a->setNext($b);
- $b->setNext($c);
- $c->setNext($d);
- $this->assertEquals(10, $a->getBackoffPeriod(2, new Request('GET', 'http://www.foo.com')));
- }
-
- public function testReturnsZeroWhenDecisionMakerReturnsTrueButNoFurtherStrategiesAreInTheChain()
- {
- $a = new CallbackBackoffStrategy(function () { return null; }, true);
- $b = new CallbackBackoffStrategy(function () { return true; }, true);
- $a->setNext($b);
- $this->assertSame(0, $a->getBackoffPeriod(2, new Request('GET', 'http://www.foo.com')));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffLoggerTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffLoggerTest.php
deleted file mode 100644
index a64dd82..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffLoggerTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Common\Event;
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Http\Curl\CurlHandle;
-use Guzzle\Plugin\Backoff\BackoffLogger;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestFactory;
-
-/**
- * @covers Guzzle\Plugin\Backoff\BackoffLogger
- */
-class BackoffLoggerTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public $message;
-
- public function setUp()
- {
- $this->message = '';
- }
-
- public function testHasEventList()
- {
- $this->assertEquals(1, count(BackoffLogger::getSubscribedEvents()));
- }
-
- public function testLogsEvents()
- {
- list($logPlugin, $request, $response) = $this->getMocks();
-
- $response = $this->getMockBuilder('Guzzle\Http\Message\Response')
- ->setConstructorArgs(array(503))
- ->setMethods(array('getInfo'))
- ->getMock();
-
- $response->expects($this->any())
- ->method('getInfo')
- ->will($this->returnValue(2));
-
- $handle = $this->getMockHandle();
-
- $event = new Event(array(
- 'request' => $request,
- 'response' => $response,
- 'retries' => 1,
- 'delay' => 3,
- 'handle' => $handle
- ));
-
- $logPlugin->onRequestRetry($event);
- $this->assertContains(
- '] PUT http://www.example.com - 503 Service Unavailable - Retries: 1, Delay: 3, Time: 2, 2, cURL: 30 Foo',
- $this->message
- );
- }
-
- public function testCanSetTemplate()
- {
- $l = new BackoffLogger(new ClosureLogAdapter(function () {}));
- $l->setTemplate('foo');
- $t = $this->readAttribute($l, 'formatter');
- $this->assertEquals('foo', $this->readAttribute($t, 'template'));
- }
-
- /**
- * @return array
- */
- protected function getMocks()
- {
- $that = $this;
- $logger = new ClosureLogAdapter(function ($message) use ($that) {
- $that->message .= $message . "\n";
- });
- $logPlugin = new BackoffLogger($logger);
- $response = new Response(503);
- $request = RequestFactory::getInstance()->create('PUT', 'http://www.example.com', array(
- 'Content-Length' => 3,
- 'Foo' => 'Bar'
- ));
-
- return array($logPlugin, $request, $response);
- }
-
- /**
- * @return CurlHandle
- */
- protected function getMockHandle()
- {
- $handle = $this->getMockBuilder('Guzzle\Http\Curl\CurlHandle')
- ->disableOriginalConstructor()
- ->setMethods(array('getError', 'getErrorNo', 'getInfo'))
- ->getMock();
-
- $handle->expects($this->once())
- ->method('getError')
- ->will($this->returnValue('Foo'));
-
- $handle->expects($this->once())
- ->method('getErrorNo')
- ->will($this->returnValue(30));
-
- $handle->expects($this->any())
- ->method('getInfo')
- ->will($this->returnValue(2));
-
- return $handle;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffPluginTest.php
deleted file mode 100644
index 496e49e..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/BackoffPluginTest.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\Exception\CurlException;
-use Guzzle\Http\Client;
-use Guzzle\Plugin\Backoff\BackoffPlugin;
-use Guzzle\Http\Message\RequestInterface;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Curl\CurlMulti;
-use Guzzle\Http\Curl\CurlMultiInterface;
-use Guzzle\Plugin\Backoff\ConstantBackoffStrategy;
-use Guzzle\Plugin\Backoff\CurlBackoffStrategy;
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-use Guzzle\Plugin\Backoff\TruncatedBackoffStrategy;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * @group server
- * @covers Guzzle\Plugin\Backoff\BackoffPlugin
- */
-class BackoffPluginTest extends \Guzzle\Tests\GuzzleTestCase implements EventSubscriberInterface
-{
- protected $retried;
-
- public function setUp()
- {
- $this->retried = false;
- }
-
- public static function getSubscribedEvents()
- {
- return array(BackoffPlugin::RETRY_EVENT => 'onRequestRetry');
- }
-
- public function onRequestRetry(Event $event)
- {
- $this->retried = $event;
- }
-
- public function testHasEventList()
- {
- $this->assertEquals(1, count(BackoffPlugin::getAllEvents()));
- }
-
- public function testCreatesDefaultExponentialBackoffPlugin()
- {
- $plugin = BackoffPlugin::getExponentialBackoff(3, array(204), array(10));
- $this->assertInstanceOf('Guzzle\Plugin\Backoff\BackoffPlugin', $plugin);
- $strategy = $this->readAttribute($plugin, 'strategy');
- $this->assertInstanceOf('Guzzle\Plugin\Backoff\TruncatedBackoffStrategy', $strategy);
- $this->assertEquals(3, $this->readAttribute($strategy, 'max'));
- $strategy = $this->readAttribute($strategy, 'next');
- $this->assertInstanceOf('Guzzle\Plugin\Backoff\HttpBackoffStrategy', $strategy);
- $this->assertEquals(array(204 => true), $this->readAttribute($strategy, 'errorCodes'));
- $strategy = $this->readAttribute($strategy, 'next');
- $this->assertInstanceOf('Guzzle\Plugin\Backoff\CurlBackoffStrategy', $strategy);
- $this->assertEquals(array(10 => true), $this->readAttribute($strategy, 'errorCodes'));
- $strategy = $this->readAttribute($strategy, 'next');
- $this->assertInstanceOf('Guzzle\Plugin\Backoff\ExponentialBackoffStrategy', $strategy);
- }
-
- public function testDoesNotRetryUnlessStrategyReturnsNumber()
- {
- $request = new Request('GET', 'http://www.example.com');
- $request->setState('transfer');
-
- $mock = $this->getMockBuilder('Guzzle\Plugin\Backoff\BackoffStrategyInterface')
- ->setMethods(array('getBackoffPeriod'))
- ->getMockForAbstractClass();
-
- $mock->expects($this->once())
- ->method('getBackoffPeriod')
- ->will($this->returnValue(false));
-
- $plugin = new BackoffPlugin($mock);
- $plugin->addSubscriber($this);
- $plugin->onRequestSent(new Event(array('request' => $request)));
- $this->assertFalse($this->retried);
- }
-
- public function testUpdatesRequestForRetry()
- {
- $request = new Request('GET', 'http://www.example.com');
- $request->setState('transfer');
- $response = new Response(500);
- $handle = $this->getMockBuilder('Guzzle\Http\Curl\CurlHandle')->disableOriginalConstructor()->getMock();
- $e = new CurlException();
- $e->setCurlHandle($handle);
-
- $plugin = new BackoffPlugin(new ConstantBackoffStrategy(10));
- $plugin->addSubscriber($this);
-
- $event = new Event(array(
- 'request' => $request,
- 'response' => $response,
- 'exception' => $e
- ));
-
- $plugin->onRequestSent($event);
- $this->assertEquals(array(
- 'request' => $request,
- 'response' => $response,
- 'handle' => $handle,
- 'retries' => 1,
- 'delay' => 10
- ), $this->readAttribute($this->retried, 'context'));
-
- $plugin->onRequestSent($event);
- $this->assertEquals(array(
- 'request' => $request,
- 'response' => $response,
- 'handle' => $handle,
- 'retries' => 2,
- 'delay' => 10
- ), $this->readAttribute($this->retried, 'context'));
- }
-
- public function testDoesNothingWhenNotRetryingAndPollingRequest()
- {
- $request = new Request('GET', 'http://www.foo.com');
- $plugin = new BackoffPlugin(new ConstantBackoffStrategy(10));
- $plugin->onRequestPoll(new Event(array('request' => $request)));
- }
-
- public function testRetriesRequests()
- {
- // Create a script to return several 500 and 503 response codes
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata"
- ));
-
- $plugin = new BackoffPlugin(
- new TruncatedBackoffStrategy(3,
- new HttpBackoffStrategy(null,
- new CurlBackoffStrategy(null,
- new ConstantBackoffStrategy(0.05)
- )
- )
- )
- );
-
- $client = new Client($this->getServer()->getUrl());
- $client->getEventDispatcher()->addSubscriber($plugin);
- $request = $client->get();
- $request->send();
-
- // Make sure it eventually completed successfully
- $this->assertEquals(200, $request->getResponse()->getStatusCode());
- $this->assertEquals('data', $request->getResponse()->getBody(true));
-
- // Check that three requests were made to retry this request
- $this->assertEquals(3, count($this->getServer()->getReceivedRequests(false)));
- $this->assertEquals(2, $request->getParams()->get(BackoffPlugin::RETRY_PARAM));
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\ServerErrorResponseException
- */
- public function testFailsOnTruncation()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n"
- ));
-
- $plugin = new BackoffPlugin(
- new TruncatedBackoffStrategy(2,
- new HttpBackoffStrategy(null,
- new ConstantBackoffStrategy(0.05)
- )
- )
- );
-
- $client = new Client($this->getServer()->getUrl());
- $client->addSubscriber($plugin);
- $client->get()->send();
- }
-
- public function testRetriesRequestsWhenInParallel()
- {
- // Create a script to return several 500 and 503 response codes
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata"
- ));
-
- $plugin = new BackoffPlugin(
- new HttpBackoffStrategy(null,
- new TruncatedBackoffStrategy(3,
- new CurlBackoffStrategy(null,
- new ConstantBackoffStrategy(0.1)
- )
- )
- )
- );
- $client = new Client($this->getServer()->getUrl());
- $client->getEventDispatcher()->addSubscriber($plugin);
- $requests = array();
- for ($i = 0; $i < 5; $i++) {
- $requests[] = $client->get();
- }
- $client->send($requests);
-
- $this->assertEquals(15, count($this->getServer()->getReceivedRequests(false)));
- }
-
- /**
- * @covers Guzzle\Plugin\Backoff\BackoffPlugin
- * @covers Guzzle\Http\Curl\CurlMulti
- */
- public function testRetriesPooledRequestsUsingDelayAndPollingEvent()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata"
- ));
- // Need to sleep for some time ensure that the polling works correctly in the observer
- $plugin = new BackoffPlugin(new HttpBackoffStrategy(null,
- new TruncatedBackoffStrategy(1,
- new ConstantBackoffStrategy(0.5))));
-
- $client = new Client($this->getServer()->getUrl());
- $client->getEventDispatcher()->addSubscriber($plugin);
- $request = $client->get();
- $request->send();
- // Make sure it eventually completed successfully
- $this->assertEquals('data', $request->getResponse()->getBody(true));
- // Check that two requests were made to retry this request
- $this->assertEquals(2, count($this->getServer()->getReceivedRequests(false)));
- }
-
- public function testSeeksToBeginningOfRequestBodyWhenRetrying()
- {
- // Create a request with a body
- $request = new EntityEnclosingRequest('PUT', 'http://www.example.com');
- $request->setBody('abc');
- // Set the retry time to be something that will be retried always
- $request->getParams()->set(BackoffPlugin::DELAY_PARAM, 2);
- // Seek to the end of the stream
- $request->getBody()->seek(3);
- $this->assertEquals('', $request->getBody()->read(1));
- // Create a plugin that does not delay when retrying
- $plugin = new BackoffPlugin(new ConstantBackoffStrategy(0));
- $plugin->onRequestPoll($this->getMockEvent($request));
- // Ensure that the stream was seeked to 0
- $this->assertEquals('a', $request->getBody()->read(1));
- }
-
- public function testDoesNotSeekOnRequestsWithNoBodyWhenRetrying()
- {
- // Create a request with a body
- $request = new EntityEnclosingRequest('PUT', 'http://www.example.com');
- $request->getParams()->set(BackoffPlugin::DELAY_PARAM, 2);
- $plugin = new BackoffPlugin(new ConstantBackoffStrategy(0));
- $plugin->onRequestPoll($this->getMockEvent($request));
- }
-
- protected function getMockEvent(RequestInterface $request)
- {
- // Create a mock curl multi object
- $multi = $this->getMockBuilder('Guzzle\Http\Curl\CurlMulti')
- ->setMethods(array('remove', 'add'))
- ->getMock();
-
- // Create an event that is expected for the Poll event
- $event = new Event(array(
- 'request' => $request,
- 'curl_multi' => $multi
- ));
- $event->setName(CurlMultiInterface::POLLING_REQUEST);
-
- return $event;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CallbackBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CallbackBackoffStrategyTest.php
deleted file mode 100644
index c0ce10d..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CallbackBackoffStrategyTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Plugin\Backoff\CallbackBackoffStrategy;
-
-/**
- * @covers Guzzle\Plugin\Backoff\CallbackBackoffStrategy
- */
-class CallbackBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testEnsuresIsCallable()
- {
- $strategy = new CallbackBackoffStrategy(new \stdClass(), true);
- }
-
- public function testRetriesWithCallable()
- {
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $strategy = new CallbackBackoffStrategy(function () { return 10; }, true);
- $this->assertTrue($strategy->makesDecision());
- $this->assertEquals(10, $strategy->getBackoffPeriod(0, $request));
- // Ensure it chains correctly when null is returned
- $strategy = new CallbackBackoffStrategy(function () { return null; }, false);
- $this->assertFalse($strategy->makesDecision());
- $this->assertFalse($strategy->getBackoffPeriod(0, $request));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ConstantBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ConstantBackoffStrategyTest.php
deleted file mode 100644
index 703eb4a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ConstantBackoffStrategyTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Plugin\Backoff\ConstantBackoffStrategy;
-
-/**
- * @covers Guzzle\Plugin\Backoff\ConstantBackoffStrategy
- */
-class ConstantBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRetriesWithConstantDelay()
- {
- $strategy = new ConstantBackoffStrategy(3.5);
- $this->assertFalse($strategy->makesDecision());
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $this->assertEquals(3.5, $strategy->getBackoffPeriod(0, $request));
- $this->assertEquals(3.5, $strategy->getBackoffPeriod(1, $request));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CurlBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CurlBackoffStrategyTest.php
deleted file mode 100644
index 0a5c3e2..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/CurlBackoffStrategyTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Backoff\CurlBackoffStrategy;
-use Guzzle\Http\Exception\CurlException;
-
-/**
- * @covers Guzzle\Plugin\Backoff\CurlBackoffStrategy
- * @covers Guzzle\Plugin\Backoff\AbstractErrorCodeBackoffStrategy
- */
-class CurlBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRetriesWithExponentialDelay()
- {
- $this->assertNotEmpty(CurlBackoffStrategy::getDefaultFailureCodes());
- $strategy = new CurlBackoffStrategy();
- $this->assertTrue($strategy->makesDecision());
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $e = new CurlException();
- $e->setError('foo', CURLE_BAD_CALLING_ORDER);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request, null, $e));
-
- foreach (CurlBackoffStrategy::getDefaultFailureCodes() as $code) {
- $this->assertEquals(0, $strategy->getBackoffPeriod(0, $request, null, $e->setError('foo', $code)));
- }
- }
-
- public function testIgnoresNonErrors()
- {
- $strategy = new CurlBackoffStrategy();
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request, new Response(200)));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ExponentialBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ExponentialBackoffStrategyTest.php
deleted file mode 100644
index 09965bc..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ExponentialBackoffStrategyTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Plugin\Backoff\ExponentialBackoffStrategy;
-
-/**
- * @covers Guzzle\Plugin\Backoff\ExponentialBackoffStrategy
- */
-class ExponentialBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRetriesWithExponentialDelay()
- {
- $strategy = new ExponentialBackoffStrategy();
- $this->assertFalse($strategy->makesDecision());
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $this->assertEquals(1, $strategy->getBackoffPeriod(0, $request));
- $this->assertEquals(2, $strategy->getBackoffPeriod(1, $request));
- $this->assertEquals(4, $strategy->getBackoffPeriod(2, $request));
- $this->assertEquals(8, $strategy->getBackoffPeriod(3, $request));
- $this->assertEquals(16, $strategy->getBackoffPeriod(4, $request));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/HttpBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/HttpBackoffStrategyTest.php
deleted file mode 100644
index ae68a4e..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/HttpBackoffStrategyTest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-use Guzzle\Http\Message\Response;
-
-/**
- * @covers Guzzle\Plugin\Backoff\HttpBackoffStrategy
- * @covers Guzzle\Plugin\Backoff\AbstractErrorCodeBackoffStrategy
- */
-class HttpBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRetriesWhenCodeMatches()
- {
- $this->assertNotEmpty(HttpBackoffStrategy::getDefaultFailureCodes());
- $strategy = new HttpBackoffStrategy();
- $this->assertTrue($strategy->makesDecision());
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
-
- $response = new Response(200);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request, $response));
- $response->setStatus(400);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request, $response));
-
- foreach (HttpBackoffStrategy::getDefaultFailureCodes() as $code) {
- $this->assertEquals(0, $strategy->getBackoffPeriod(0, $request, $response->setStatus($code)));
- }
- }
-
- public function testAllowsCustomCodes()
- {
- $strategy = new HttpBackoffStrategy(array(204));
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $response = new Response(204);
- $this->assertEquals(0, $strategy->getBackoffPeriod(0, $request, $response));
- $response->setStatus(500);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request, $response));
- }
-
- public function testIgnoresNonErrors()
- {
- $strategy = new HttpBackoffStrategy();
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/LinearBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/LinearBackoffStrategyTest.php
deleted file mode 100644
index b4ce8e4..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/LinearBackoffStrategyTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Plugin\Backoff\LinearBackoffStrategy;
-
-/**
- * @covers Guzzle\Plugin\Backoff\LinearBackoffStrategy
- */
-class LinearBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRetriesWithLinearDelay()
- {
- $strategy = new LinearBackoffStrategy(5);
- $this->assertFalse($strategy->makesDecision());
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $this->assertEquals(0, $strategy->getBackoffPeriod(0, $request));
- $this->assertEquals(5, $strategy->getBackoffPeriod(1, $request));
- $this->assertEquals(10, $strategy->getBackoffPeriod(2, $request));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ReasonPhraseBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ReasonPhraseBackoffStrategyTest.php
deleted file mode 100644
index dea5a68..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/ReasonPhraseBackoffStrategyTest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Plugin\Backoff\ReasonPhraseBackoffStrategy;
-use Guzzle\Http\Message\Response;
-
-/**
- * @covers Guzzle\Plugin\Backoff\ReasonPhraseBackoffStrategy
- * @covers Guzzle\Plugin\Backoff\AbstractErrorCodeBackoffStrategy
- */
-class ReasonPhraseBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRetriesWhenCodeMatches()
- {
- $this->assertEmpty(ReasonPhraseBackoffStrategy::getDefaultFailureCodes());
- $strategy = new ReasonPhraseBackoffStrategy(array('Foo', 'Internal Server Error'));
- $this->assertTrue($strategy->makesDecision());
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $response = new Response(200);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request, $response));
- $response->setStatus(200, 'Foo');
- $this->assertEquals(0, $strategy->getBackoffPeriod(0, $request, $response));
- }
-
- public function testIgnoresNonErrors()
- {
- $strategy = new ReasonPhraseBackoffStrategy();
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $this->assertEquals(false, $strategy->getBackoffPeriod(0, $request));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/TruncatedBackoffStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/TruncatedBackoffStrategyTest.php
deleted file mode 100644
index 5590dfb..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Backoff/TruncatedBackoffStrategyTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Backoff;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Backoff\TruncatedBackoffStrategy;
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-use Guzzle\Plugin\Backoff\ConstantBackoffStrategy;
-
-/**
- * @covers Guzzle\Plugin\Backoff\TruncatedBackoffStrategy
- */
-class TruncatedBackoffStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testRetriesWhenLessThanMax()
- {
- $strategy = new TruncatedBackoffStrategy(2);
- $this->assertTrue($strategy->makesDecision());
- $request = $this->getMock('Guzzle\Http\Message\Request', array(), array(), '', false);
- $this->assertFalse($strategy->getBackoffPeriod(0, $request));
- $this->assertFalse($strategy->getBackoffPeriod(1, $request));
- $this->assertFalse($strategy->getBackoffPeriod(2, $request));
-
- $response = new Response(500);
- $strategy->setNext(new HttpBackoffStrategy(null, new ConstantBackoffStrategy(10)));
- $this->assertEquals(10, $strategy->getBackoffPeriod(0, $request, $response));
- $this->assertEquals(10, $strategy->getBackoffPeriod(1, $request, $response));
- $this->assertFalse($strategy->getBackoffPeriod(2, $request, $response));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CachePluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CachePluginTest.php
deleted file mode 100644
index 69da60a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CachePluginTest.php
+++ /dev/null
@@ -1,441 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cache;
-
-use Guzzle\Common\Event;
-use Guzzle\Common\Version;
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Cache\CachePlugin;
-use Guzzle\Plugin\Cache\DefaultCacheStorage;
-use Guzzle\Plugin\Cache\CallbackCanCacheStrategy;
-use Doctrine\Common\Cache\ArrayCache;
-
-/**
- * @group server
- * @covers Guzzle\Plugin\Cache\CachePlugin
- * @covers Guzzle\Plugin\Cache\DefaultRevalidation
- */
-class CachePluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testAddsDefaultStorage()
- {
- $plugin = new CachePlugin();
- $this->assertInstanceOf('Guzzle\Plugin\Cache\CacheStorageInterface', $this->readAttribute($plugin, 'storage'));
- }
-
- public function testAddsDefaultCollaborators()
- {
- $this->assertNotEmpty(CachePlugin::getSubscribedEvents());
- $plugin = new CachePlugin(array(
- 'storage' => $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')->getMockForAbstractClass()
- ));
- $this->assertInstanceOf('Guzzle\Plugin\Cache\CacheStorageInterface', $this->readAttribute($plugin, 'storage'));
- $this->assertInstanceOf(
- 'Guzzle\Plugin\Cache\CanCacheStrategyInterface',
- $this->readAttribute($plugin, 'canCache')
- );
- $this->assertInstanceOf(
- 'Guzzle\Plugin\Cache\RevalidationInterface',
- $this->readAttribute($plugin, 'revalidation')
- );
- }
-
- public function testAddsCallbackCollaborators()
- {
- $this->assertNotEmpty(CachePlugin::getSubscribedEvents());
- $plugin = new CachePlugin(array('can_cache' => function () {}));
- $this->assertInstanceOf(
- 'Guzzle\Plugin\Cache\CallbackCanCacheStrategy',
- $this->readAttribute($plugin, 'canCache')
- );
- }
-
- public function testCanPassCacheAsOnlyArgumentToConstructor()
- {
- $p = new CachePlugin(new DoctrineCacheAdapter(new ArrayCache()));
- $p = new CachePlugin(new DefaultCacheStorage(new DoctrineCacheAdapter(new ArrayCache())));
- }
-
- public function testUsesCreatedCacheStorage()
- {
- $plugin = new CachePlugin(array(
- 'adapter' => $this->getMockBuilder('Guzzle\Cache\CacheAdapterInterface')->getMockForAbstractClass()
- ));
- $this->assertInstanceOf('Guzzle\Plugin\Cache\CacheStorageInterface', $this->readAttribute($plugin, 'storage'));
- }
-
- public function testUsesProvidedOptions()
- {
- $can = $this->getMockBuilder('Guzzle\Plugin\Cache\CanCacheStrategyInterface')->getMockForAbstractClass();
- $revalidate = $this->getMockBuilder('Guzzle\Plugin\Cache\RevalidationInterface')->getMockForAbstractClass();
- $plugin = new CachePlugin(array(
- 'storage' => $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')->getMockForAbstractClass(),
- 'can_cache' => $can,
- 'revalidation' => $revalidate
- ));
- $this->assertSame($can, $this->readAttribute($plugin, 'canCache'));
- $this->assertSame($revalidate, $this->readAttribute($plugin, 'revalidation'));
- }
-
- public function satisfyProvider()
- {
- $req1 = new Request('GET', 'http://foo.com', array('Cache-Control' => 'no-cache'));
-
- return array(
- // The response is too old to satisfy the request
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'max-age=20')), new Response(200, array('Age' => 100)), false, false),
- // The response cannot satisfy the request because it is stale
- array(new Request('GET', 'http://foo.com'), new Response(200, array('Cache-Control' => 'max-age=10', 'Age' => 100)), false, false),
- // Allows the expired response to satisfy the request because of the max-stale
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'max-stale=15')), new Response(200, array('Cache-Control' => 'max-age=90', 'Age' => 100)), true, false),
- // Max stale is > than the allowed staleness
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'max-stale=5')), new Response(200, array('Cache-Control' => 'max-age=90', 'Age' => 100)), false, false),
- // Performs cache revalidation
- array($req1, new Response(200), true, true),
- // Performs revalidation due to ETag on the response and no cache-control on the request
- array(new Request('GET', 'http://foo.com'), new Response(200, array(
- 'ETag' => 'ABC',
- 'Expires' => date('c', strtotime('+1 year'))
- )), true, true),
- );
- }
-
- /**
- * @dataProvider satisfyProvider
- */
- public function testChecksIfResponseCanSatisfyRequest($request, $response, $can, $revalidates)
- {
- $didRevalidate = false;
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')->getMockForAbstractClass();
- $revalidate = $this->getMockBuilder('Guzzle\Plugin\Cache\DefaultRevalidation')
- ->setMethods(array('revalidate'))
- ->setConstructorArgs(array($storage))
- ->getMockForAbstractClass();
-
- $revalidate->expects($this->any())
- ->method('revalidate')
- ->will($this->returnCallback(function () use (&$didRevalidate) {
- $didRevalidate = true;
- return true;
- }));
-
- $plugin = new CachePlugin(array(
- 'storage' => $storage,
- 'revalidation' => $revalidate
- ));
-
- $this->assertEquals($can, $plugin->canResponseSatisfyRequest($request, $response));
- $this->assertEquals($didRevalidate, $revalidates);
- }
-
- public function satisfyFailedProvider()
- {
- return array(
- // Neither has stale-if-error
- array(new Request('GET', 'http://foo.com', array()), new Response(200, array('Age' => 100)), false),
- // Request has stale-if-error
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'stale-if-error')), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50')), true),
- // Request has valid stale-if-error
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'stale-if-error=50')), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50')), true),
- // Request has expired stale-if-error
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'stale-if-error=20')), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50')), false),
- // Response has permanent stale-if-error
- array(new Request('GET', 'http://foo.com', array()), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50, stale-if-error', )), true),
- // Response has valid stale-if-error
- array(new Request('GET', 'http://foo.com', array()), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50, stale-if-error=50')), true),
- // Response has expired stale-if-error
- array(new Request('GET', 'http://foo.com', array()), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50, stale-if-error=20')), false),
- // Request has valid stale-if-error but response does not
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'stale-if-error=50')), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50, stale-if-error=20')), false),
- // Response has valid stale-if-error but request does not
- array(new Request('GET', 'http://foo.com', array('Cache-Control' => 'stale-if-error=20')), new Response(200, array('Age' => 100, 'Cache-Control' => 'max-age=50, stale-if-error=50')), false),
- );
- }
-
- /**
- * @dataProvider satisfyFailedProvider
- */
- public function testChecksIfResponseCanSatisfyFailedRequest($request, $response, $can)
- {
- $plugin = new CachePlugin();
-
- $this->assertEquals($can, $plugin->canResponseSatisfyFailedRequest($request, $response));
- }
-
- public function testDoesNothingWhenRequestIsNotCacheable()
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('fetch'))
- ->getMockForAbstractClass();
- $storage->expects($this->never())->method('fetch');
-
- $plugin = new CachePlugin(array(
- 'storage' => $storage,
- 'can_cache' => new CallbackCanCacheStrategy(function () { return false; })
- ));
-
- $plugin->onRequestBeforeSend(new Event(array(
- 'request' => new Request('GET', 'http://foo.com')
- )));
- }
-
- public function satisfiableProvider()
- {
- $date = new \DateTime('-10 seconds');
-
- return array(
- // Fresh response
- array(new Response(200, array(), 'foo')),
- // Stale response
- array(new Response(200, array('Date' => $date->format('c'), 'Cache-Control' => 'max-age=5'), 'foo'))
- );
- }
-
- /**
- * @dataProvider satisfiableProvider
- */
- public function testInjectsSatisfiableResponses($response)
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('fetch'))
- ->getMockForAbstractClass();
-
- $storage->expects($this->once())->method('fetch')->will($this->returnValue($response));
- $plugin = new CachePlugin(array('storage' => $storage));
- $request = new Request('GET', 'http://foo.com', array('Cache-Control' => 'max-stale'));
- $plugin->onRequestBeforeSend(new Event(array('request' => $request)));
- $plugin->onRequestSent(new Event(array('request' => $request, 'response' => $request->getResponse())));
- $this->assertEquals($response->getStatusCode(), $request->getResponse()->getStatusCode());
- $this->assertEquals((string) $response->getBody(), (string) $request->getResponse()->getBody());
- $this->assertTrue($request->getResponse()->hasHeader('Age'));
- if ($request->getResponse()->isFresh() === false) {
- $this->assertContains('110', (string) $request->getResponse()->getHeader('Warning'));
- }
- $this->assertSame(
- sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION),
- (string) $request->getHeader('Via')
- );
- $this->assertSame(
- sprintf('%s GuzzleCache/%s',$request->getProtocolVersion(), Version::VERSION),
- (string) $request->getResponse()->getHeader('Via')
- );
- $this->assertTrue($request->getParams()->get('cache.lookup'));
- $this->assertTrue($request->getParams()->get('cache.hit'));
- $this->assertTrue($request->getResponse()->hasHeader('X-Cache-Lookup'));
- $this->assertTrue($request->getResponse()->hasHeader('X-Cache'));
- $this->assertEquals('HIT from GuzzleCache', (string) $request->getResponse()->getHeader('X-Cache'));
- $this->assertEquals('HIT from GuzzleCache', (string) $request->getResponse()->getHeader('X-Cache-Lookup'));
- }
-
- public function satisfiableOnErrorProvider()
- {
- $date = new \DateTime('-10 seconds');
- return array(
- array(
- new Response(200, array(
- 'Date' => $date->format('c'),
- 'Cache-Control' => 'max-age=5, stale-if-error'
- ), 'foo'),
- )
- );
- }
-
- /**
- * @dataProvider satisfiableOnErrorProvider
- */
- public function testInjectsSatisfiableResponsesOnError($cacheResponse)
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('fetch'))
- ->getMockForAbstractClass();
- $storage->expects($this->exactly(2))->method('fetch')->will($this->returnValue($cacheResponse));
- $plugin = new CachePlugin(array('storage' => $storage));
- $request = new Request('GET', 'http://foo.com', array('Cache-Control' => 'max-stale'));
- $plugin->onRequestBeforeSend(new Event(array('request' => $request)));
- $plugin->onRequestError(
- $event = new Event(array(
- 'request' => $request,
- 'response' => $request->getResponse(),
- ))
- );
- $response = $event['response'];
- $this->assertEquals($cacheResponse->getStatusCode(), $response->getStatusCode());
- $this->assertEquals((string) $cacheResponse->getBody(), (string) $response->getBody());
- $this->assertTrue($response->hasHeader('Age'));
- if ($response->isFresh() === false) {
- $this->assertContains('110', (string) $response->getHeader('Warning'));
- }
- $this->assertSame(sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION), (string) $request->getHeader('Via'));
- $this->assertSame(sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION), (string) $response->getHeader('Via'));
- $this->assertTrue($request->getParams()->get('cache.lookup'));
- $this->assertSame('error', $request->getParams()->get('cache.hit'));
- $this->assertTrue($response->hasHeader('X-Cache-Lookup'));
- $this->assertTrue($response->hasHeader('X-Cache'));
- $this->assertEquals('HIT from GuzzleCache', (string) $response->getHeader('X-Cache-Lookup'));
- $this->assertEquals('HIT_ERROR from GuzzleCache', (string) $response->getHeader('X-Cache'));
- }
-
- /**
- * @dataProvider satisfiableOnErrorProvider
- */
- public function testInjectsSatisfiableResponsesOnException($cacheResponse)
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('fetch'))
- ->getMockForAbstractClass();
- $storage->expects($this->exactly(2))->method('fetch')->will($this->returnValue($cacheResponse));
- $plugin = new CachePlugin(array('storage' => $storage));
- $request = new Request('GET', 'http://foo.com', array('Cache-Control' => 'max-stale'));
- $plugin->onRequestBeforeSend(new Event(array(
- 'request' => $request
- )));
- $plugin->onRequestException(
- new Event(array(
- 'request' => $request,
- 'response' => $request->getResponse(),
- 'exception' => $this->getMock('Guzzle\Http\Exception\CurlException'),
- ))
- );
- $plugin->onRequestSent(
- new Event(array(
- 'request' => $request,
- 'response' => $response = $request->getResponse(),
- ))
- );
- $this->assertEquals($cacheResponse->getStatusCode(), $response->getStatusCode());
- $this->assertEquals((string) $cacheResponse->getBody(), (string) $response->getBody());
- $this->assertTrue($response->hasHeader('Age'));
- if ($response->isFresh() === false) {
- $this->assertContains('110', (string) $response->getHeader('Warning'));
- }
- $this->assertSame(sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION), (string) $request->getHeader('Via'));
- $this->assertSame(sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION), (string) $response->getHeader('Via'));
- $this->assertTrue($request->getParams()->get('cache.lookup'));
- $this->assertSame('error', $request->getParams()->get('cache.hit'));
- $this->assertTrue($response->hasHeader('X-Cache-Lookup'));
- $this->assertTrue($response->hasHeader('X-Cache'));
- $this->assertEquals('HIT from GuzzleCache', (string) $response->getHeader('X-Cache-Lookup'));
- $this->assertEquals('HIT_ERROR from GuzzleCache', (string) $response->getHeader('X-Cache'));
- }
-
- public function unsatisfiableOnErrorProvider()
- {
- $date = new \DateTime('-10 seconds');
-
- return array(
- // no-store on request
- array(
- false,
- array('Cache-Control' => 'no-store'),
- new Response(200, array('Date' => $date->format('D, d M Y H:i:s T'), 'Cache-Control' => 'max-age=5, stale-if-error'), 'foo'),
- ),
- // request expired
- array(
- true,
- array('Cache-Control' => 'stale-if-error=4'),
- new Response(200, array('Date' => $date->format('D, d M Y H:i:s T'), 'Cache-Control' => 'max-age=5, stale-if-error'), 'foo'),
- ),
- // response expired
- array(
- true,
- array('Cache-Control' => 'stale-if-error'),
- new Response(200, array('Date' => $date->format('D, d M Y H:i:s T'), 'Cache-Control' => 'max-age=5, stale-if-error=4'), 'foo'),
- ),
- );
- }
-
- /**
- * @dataProvider unsatisfiableOnErrorProvider
- */
- public function testDoesNotInjectUnsatisfiableResponsesOnError($requestCanCache, $requestHeaders, $cacheResponse)
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('fetch'))
- ->getMockForAbstractClass();
- $storage->expects($this->exactly($requestCanCache ? 2 : 0))->method('fetch')->will($this->returnValue($cacheResponse));
- $plugin = new CachePlugin(array('storage' => $storage));
- $request = new Request('GET', 'http://foo.com', $requestHeaders);
- $plugin->onRequestBeforeSend(new Event(array(
- 'request' => $request
- )));
- $plugin->onRequestError(
- $event = new Event(array(
- 'request' => $request,
- 'response' => $response = $request->getResponse(),
- ))
- );
-
- $this->assertSame($response, $event['response']);
- }
-
- /**
- * @dataProvider unsatisfiableOnErrorProvider
- */
- public function testDoesNotInjectUnsatisfiableResponsesOnException($requestCanCache, $requestHeaders, $responseParts)
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('fetch'))
- ->getMockForAbstractClass();
- $storage->expects($this->exactly($requestCanCache ? 2 : 0))->method('fetch')->will($this->returnValue($responseParts));
- $plugin = new CachePlugin(array('storage' => $storage));
- $request = new Request('GET', 'http://foo.com', $requestHeaders);
- $plugin->onRequestBeforeSend(new Event(array(
- 'request' => $request
- )));
- $plugin->onRequestException(
- $event = new Event(array(
- 'request' => $request,
- 'response' => $response = $request->getResponse(),
- 'exception' => $this->getMock('Guzzle\Http\Exception\CurlException'),
- ))
- );
-
- $this->assertSame($response, $request->getResponse());
- }
-
- public function testCachesResponsesWhenCacheable()
- {
- $cache = new ArrayCache();
- $plugin = new CachePlugin($cache);
-
- $request = new Request('GET', 'http://foo.com');
- $response = new Response(200, array(), 'Foo');
- $plugin->onRequestBeforeSend(new Event(array(
- 'request' => $request
- )));
- $plugin->onRequestSent(new Event(array(
- 'request' => $request,
- 'response' => $response
- )));
- $data = $this->readAttribute($cache, 'data');
- $this->assertNotEmpty($data);
- }
-
- public function testPurgesRequests()
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('purge'))
- ->getMockForAbstractClass();
- $storage->expects($this->atLeastOnce())->method('purge');
- $plugin = new CachePlugin(array('storage' => $storage));
- $request = new Request('GET', 'http://foo.com', array('X-Foo' => 'Bar'));
- $plugin->purge($request);
- }
-
- public function testAutoPurgesRequests()
- {
- $storage = $this->getMockBuilder('Guzzle\Plugin\Cache\CacheStorageInterface')
- ->setMethods(array('purge'))
- ->getMockForAbstractClass();
- $storage->expects($this->atLeastOnce())->method('purge');
- $plugin = new CachePlugin(array('storage' => $storage, 'auto_purge' => true));
- $client = new Client();
- $request = $client->put('http://foo.com', array('X-Foo' => 'Bar'));
- $request->addSubscriber($plugin);
- $request->setResponse(new Response(200), true);
- $request->send();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CallbackCanCacheStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CallbackCanCacheStrategyTest.php
deleted file mode 100644
index f3d9baf..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CallbackCanCacheStrategyTest.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cache;
-
-use Doctrine\Common\Cache\ArrayCache;
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Guzzle\Common\Event;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Cache\CachePlugin;
-use Guzzle\Plugin\Cache\CallbackCanCacheStrategy;
-
-/**
- * @covers Guzzle\Plugin\Cache\CallbackCanCacheStrategy
- */
-class CallbackCanCacheStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testConstructorEnsuresCallbackIsCallable()
- {
- $p = new CallbackCanCacheStrategy(new \stdClass());
- }
-
- public function testUsesCallback()
- {
- $c = new CallbackCanCacheStrategy(function ($request) { return true; });
- $this->assertTrue($c->canCacheRequest(new Request('DELETE', 'http://www.foo.com')));
- }
-
- /**
- * The following is a bit of an integration test to ensure that the CachePlugin honors a
- * custom can cache strategy.
- */
- public function testIntegrationWithCachePlugin()
- {
- $c = new CallbackCanCacheStrategy(
- function ($request) { return true; },
- function ($response) { return true; }
- );
-
- // Make a request and response that have no business being cached
- $request = new Request('DELETE', 'http://www.foo.com');
- $response = Response::fromMessage(
- "HTTP/1.1 200 OK\r\n"
- . "Expires: Mon, 26 Jul 1997 05:00:00 GMT\r\n"
- . "Last-Modified: Wed, 09 Jan 2013 08:48:53 GMT\r\n"
- . "Content-Length: 2\r\n"
- . "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n\r\n"
- . "hi"
- );
-
- $this->assertTrue($c->canCacheRequest($request));
- $this->assertTrue($c->canCacheResponse($response));
-
- $s = $this->getMockBuilder('Guzzle\Plugin\Cache\DefaultCacheStorage')
- ->setConstructorArgs(array(new DoctrineCacheAdapter(new ArrayCache())))
- ->setMethods(array('fetch'))
- ->getMockForAbstractClass();
-
- $s->expects($this->once())
- ->method('fetch')
- ->will($this->returnValue($response));
-
- $plugin = new CachePlugin(array('can_cache' => $c, 'storage' => $s));
- $plugin->onRequestBeforeSend(new Event(array('request' => $request)));
-
- $this->assertEquals(200, $request->getResponse()->getStatusCode());
- $this->assertEquals('hi', $request->getResponse()->getBody(true));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCacheStorageTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCacheStorageTest.php
deleted file mode 100644
index 701a015..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCacheStorageTest.php
+++ /dev/null
@@ -1,193 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cache;
-
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Cache\DefaultCacheStorage;
-use Doctrine\Common\Cache\ArrayCache;
-
-/**
- * @covers Guzzle\Plugin\Cache\DefaultCacheStorage
- */
-class DefaultCacheStorageTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected function getCache()
- {
- $a = new ArrayCache();
- $c = new DoctrineCacheAdapter($a);
- $s = new DefaultCacheStorage($c);
- $request = new Request('GET', 'http://foo.com', array('Accept' => 'application/json'));
- $response = new Response(200, array(
- 'Content-Type' => 'application/json',
- 'Connection' => 'close',
- 'X-Foo' => 'Bar',
- 'Vary' => 'Accept'
- ), 'test');
- $s->cache($request, $response);
- $data = $this->readAttribute($a, 'data');
-
- return array(
- 'cache' => $a,
- 'adapter' => $c,
- 'storage' => $s,
- 'request' => $request,
- 'response' => $response,
- 'serialized' => end($data)
- );
- }
-
- public function testReturnsNullForCacheMiss()
- {
- $cache = $this->getCache();
- $this->assertNull($cache['storage']->fetch(new Request('GET', 'http://test.com')));
- }
-
- public function testCachesRequests()
- {
- $cache = $this->getCache();
- $foundRequest = $foundBody = $bodyKey = false;
- foreach ($this->readAttribute($cache['cache'], 'data') as $key => $v) {
- if (strpos($v, 'foo.com')) {
- $foundRequest = true;
- $data = unserialize($v);
- $bodyKey = $data[0][3];
- $this->assertInternalType('integer', $data[0][4]);
- $this->assertFalse(isset($data[0][0]['connection']));
- $this->assertEquals('foo.com', $data[0][0]['host']);
- } elseif ($v == 'test') {
- $foundBody = $key;
- }
- }
- $this->assertContains($bodyKey, $foundBody);
- $this->assertTrue($foundRequest);
- }
-
- public function testFetchesResponse()
- {
- $cache = $this->getCache();
- $response = $cache['storage']->fetch($cache['request']);
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertFalse($response->hasHeader('Connection'));
- $this->assertEquals('Bar', (string) $response->getHeader('X-Foo'));
- $this->assertEquals('test', (string) $response->getBody());
- $this->assertTrue(in_array($cache['serialized'], $this->readAttribute($cache['cache'], 'data')));
- }
-
- public function testDeletesRequestItemsAndBody()
- {
- $cache = $this->getCache();
- $cache['storage']->delete($cache['request']);
- $this->assertFalse(in_array('test', $this->readAttribute($cache['cache'], 'data')));
- $this->assertFalse(in_array($cache['serialized'], $this->readAttribute($cache['cache'], 'data')));
- }
-
- public function testCachesMultipleRequestsWithVary()
- {
- $cache = $this->getCache();
- $cache['request']->setHeader('Accept', 'application/xml');
- $response = $cache['response']->setHeader('Content-Type', 'application/xml');
- $response->setBody('123');
- $cache['storage']->cache($cache['request'], $response);
- $data = $this->readAttribute($cache['cache'], 'data');
- foreach ($data as $v) {
- if (strpos($v, 'foo.com')) {
- $u = unserialize($v);
- $this->assertEquals(2, count($u));
- $this->assertEquals($u[0][0]['accept'], 'application/xml');
- $this->assertEquals($u[0][1]['content-type'], 'application/xml');
- $this->assertEquals($u[1][0]['accept'], 'application/json');
- $this->assertEquals($u[1][1]['content-type'], 'application/json');
- $this->assertNotSame($u[0][3], $u[1][3]);
- break;
- }
- }
- }
-
- public function testPurgeRemovesAllMethodCaches()
- {
- $cache = $this->getCache();
- foreach (array('HEAD', 'POST', 'PUT', 'DELETE') as $method) {
- $request = RequestFactory::getInstance()->cloneRequestWithMethod($cache['request'], $method);
- $cache['storage']->cache($request, $cache['response']);
- }
- $cache['storage']->purge('http://foo.com');
- $this->assertFalse(in_array('test', $this->readAttribute($cache['cache'], 'data')));
- $this->assertFalse(in_array($cache['serialized'], $this->readAttribute($cache['cache'], 'data')));
- $this->assertEquals(
- array('DoctrineNamespaceCacheKey[]'),
- array_keys($this->readAttribute($cache['cache'], 'data'))
- );
- }
-
- public function testRemovesExpiredResponses()
- {
- $cache = $this->getCache();
- $request = new Request('GET', 'http://xyz.com');
- $response = new Response(200, array('Age' => 1000, 'Cache-Control' => 'max-age=-10000'));
- $cache['storage']->cache($request, $response);
- $this->assertNull($cache['storage']->fetch($request));
- $data = $this->readAttribute($cache['cache'], 'data');
- $this->assertFalse(in_array('xyz.com', $data));
- $this->assertTrue(in_array($cache['serialized'], $data));
- }
-
- public function testUsesVaryToDetermineResult()
- {
- $cache = $this->getCache();
- $this->assertInstanceOf('Guzzle\Http\Message\Response', $cache['storage']->fetch($cache['request']));
- $request = new Request('GET', 'http://foo.com', array('Accept' => 'application/xml'));
- $this->assertNull($cache['storage']->fetch($request));
- }
-
- public function testEnsuresResponseIsStillPresent()
- {
- $cache = $this->getCache();
- $data = $this->readAttribute($cache['cache'], 'data');
- $key = array_search('test', $data);
- $cache['cache']->delete(substr($key, 1, -4));
- $this->assertNull($cache['storage']->fetch($cache['request']));
- }
-
- public function staleProvider()
- {
- return array(
- array(
- new Request('GET', 'http://foo.com', array('Accept' => 'foo')),
- new Response(200, array('Cache-Control' => 'stale-if-error=100', 'Vary' => 'Accept'))
- ),
- array(
- new Request('GET', 'http://foo.com', array('Accept' => 'foo')),
- new Response(200, array('Cache-Control' => 'stale-if-error', 'Vary' => 'Accept'))
- )
- );
- }
-
- /**
- * @dataProvider staleProvider
- */
- public function testUsesStaleTimeDirectiveForTtd($request, $response)
- {
- $cache = $this->getCache();
- $cache['storage']->cache($request, $response);
- $data = $this->readAttribute($cache['cache'], 'data');
- foreach ($data as $v) {
- if (strpos($v, 'foo.com')) {
- $u = unserialize($v);
- $this->assertGreaterThan($u[1][4], $u[0][4]);
- break;
- }
- }
- }
-
- public function testCanFilterCacheKeys()
- {
- $cache = $this->getCache();
- $cache['request']->getQuery()->set('auth', 'foo');
- $this->assertNull($cache['storage']->fetch($cache['request']));
- $cache['request']->getParams()->set('cache.key_filter', 'auth');
- $this->assertNotNull($cache['storage']->fetch($cache['request']));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCanCacheStrategyTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCanCacheStrategyTest.php
deleted file mode 100644
index de4d182..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultCanCacheStrategyTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cache;
-
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Cache\DefaultCanCacheStrategy;
-
-/**
- * @covers Guzzle\Plugin\Cache\DefaultCanCacheStrategy
- */
-class DefaultCanCacheStrategyTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testReturnsRequestcanCacheRequest()
- {
- $strategy = new DefaultCanCacheStrategy();
- $request = new Request('GET', 'http://foo.com');
- $this->assertTrue($strategy->canCacheRequest($request));
- }
-
- public function testDoesNotCacheNoStore()
- {
- $strategy = new DefaultCanCacheStrategy();
- $request = new Request('GET', 'http://foo.com', array('cache-control' => 'no-store'));
- $this->assertFalse($strategy->canCacheRequest($request));
- }
-
- public function testCanCacheResponse()
- {
- $response = $this->getMockBuilder('Guzzle\Http\Message\Response')
- ->setMethods(array('canCache'))
- ->setConstructorArgs(array(200))
- ->getMock();
- $response->expects($this->once())
- ->method('canCache')
- ->will($this->returnValue(true));
- $strategy = new DefaultCanCacheStrategy();
- $this->assertTrue($strategy->canCacheResponse($response));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php
deleted file mode 100644
index 0699cb2..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DefaultRevalidationTest.php
+++ /dev/null
@@ -1,248 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cache;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\ClientInterface;
-use Guzzle\Http\Exception\BadResponseException;
-use Guzzle\Http\Exception\CurlException;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Plugin\Cache\CachePlugin;
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Doctrine\Common\Cache\ArrayCache;
-use Guzzle\Plugin\Cache\DefaultCacheStorage;
-use Guzzle\Plugin\Mock\MockPlugin;
-use Guzzle\Tests\Http\Server;
-
-/**
- * @covers Guzzle\Plugin\Cache\DefaultRevalidation
- * @group server
- */
-class DefaultRevalidationTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected function getHttpDate($time)
- {
- return gmdate(ClientInterface::HTTP_DATE, strtotime($time));
- }
-
- /**
- * Data provider to test cache revalidation
- *
- * @return array
- */
- public function cacheRevalidationDataProvider()
- {
- return array(
- // Forces revalidation that passes
- array(
- true,
- "Pragma: no-cache\r\n\r\n",
- "HTTP/1.1 200 OK\r\nDate: " . $this->getHttpDate('-100 hours') . "\r\nContent-Length: 4\r\n\r\nData",
- "HTTP/1.1 304 NOT MODIFIED\r\nCache-Control: max-age=2000000\r\nContent-Length: 0\r\n\r\n",
- ),
- // Forces revalidation that overwrites what is in cache
- array(
- false,
- "\r\n",
- "HTTP/1.1 200 OK\r\nCache-Control: must-revalidate, no-cache\r\nDate: " . $this->getHttpDate('-10 hours') . "\r\nContent-Length: 4\r\n\r\nData",
- "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nDatas",
- "HTTP/1.1 200 OK\r\nContent-Length: 5\r\nDate: " . $this->getHttpDate('now') . "\r\n\r\nDatas"
- ),
- // Throws an exception during revalidation
- array(
- false,
- "\r\n",
- "HTTP/1.1 200 OK\r\nCache-Control: no-cache\r\nDate: " . $this->getHttpDate('-3 hours') . "\r\n\r\nData",
- "HTTP/1.1 500 INTERNAL SERVER ERROR\r\nContent-Length: 0\r\n\r\n"
- ),
- // ETag mismatch
- array(
- false,
- "\r\n",
- "HTTP/1.1 200 OK\r\nCache-Control: no-cache\r\nETag: \"123\"\r\nDate: " . $this->getHttpDate('-10 hours') . "\r\n\r\nData",
- "HTTP/1.1 304 NOT MODIFIED\r\nETag: \"123456\"\r\n\r\n",
- ),
- );
- }
-
- /**
- * @dataProvider cacheRevalidationDataProvider
- */
- public function testRevalidatesResponsesAgainstOriginServer($can, $request, $response, $validate = null, $result = null)
- {
- // Send some responses to the test server for cache validation
- $server = $this->getServer();
- $server->flush();
-
- if ($validate) {
- $server->enqueue($validate);
- }
-
- $request = RequestFactory::getInstance()->fromMessage("GET / HTTP/1.1\r\nHost: 127.0.0.1:" . $server->getPort() . "\r\n" . $request);
- $response = Response::fromMessage($response);
- $request->setClient(new Client());
-
- $plugin = new CachePlugin(new DoctrineCacheAdapter(new ArrayCache()));
- $this->assertEquals(
- $can,
- $plugin->canResponseSatisfyRequest($request, $response),
- '-> ' . $request . "\n" . $response
- );
-
- if ($result) {
- $result = Response::fromMessage($result);
- $result->removeHeader('Date');
- $request->getResponse()->removeHeader('Date');
- $request->getResponse()->removeHeader('Connection');
- // Get rid of dates
- $this->assertEquals((string) $result, (string) $request->getResponse());
- }
-
- if ($validate) {
- $this->assertEquals(1, count($server->getReceivedRequests()));
- }
- }
-
- public function testHandles404RevalidationResponses()
- {
- $request = new Request('GET', 'http://foo.com');
- $request->setClient(new Client());
- $badResponse = new Response(404, array(), 'Oh no!');
- $badRequest = clone $request;
- $badRequest->setResponse($badResponse, true);
- $response = new Response(200, array(), 'foo');
-
- // Seed the cache
- $s = new DefaultCacheStorage(new DoctrineCacheAdapter(new ArrayCache()));
- $s->cache($request, $response);
- $this->assertNotNull($s->fetch($request));
-
- $rev = $this->getMockBuilder('Guzzle\Plugin\Cache\DefaultRevalidation')
- ->setConstructorArgs(array($s))
- ->setMethods(array('createRevalidationRequest'))
- ->getMock();
-
- $rev->expects($this->once())
- ->method('createRevalidationRequest')
- ->will($this->returnValue($badRequest));
-
- try {
- $rev->revalidate($request, $response);
- $this->fail('Should have thrown an exception');
- } catch (BadResponseException $e) {
- $this->assertSame($badResponse, $e->getResponse());
- $this->assertNull($s->fetch($request));
- }
- }
-
- public function testCanRevalidateWithPlugin()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\n" .
- "Date: Mon, 12 Nov 2012 03:06:37 GMT\r\n" .
- "Cache-Control: private, s-maxage=0, max-age=0, must-revalidate\r\n" .
- "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
- "Content-Length: 2\r\n\r\nhi",
- "HTTP/1.0 304 Not Modified\r\n" .
- "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
- "Content-Type: text/html; charset=UTF-8\r\n" .
- "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
- "Age: 6302\r\n\r\n",
- "HTTP/1.0 304 Not Modified\r\n" .
- "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
- "Content-Type: text/html; charset=UTF-8\r\n" .
- "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
- "Age: 6302\r\n\r\n",
- ));
- $client = new Client($this->getServer()->getUrl());
- $client->addSubscriber(new CachePlugin());
- $this->assertEquals(200, $client->get()->send()->getStatusCode());
- $this->assertEquals(200, $client->get()->send()->getStatusCode());
- $this->assertEquals(200, $client->get()->send()->getStatusCode());
- $this->assertEquals(3, count($this->getServer()->getReceivedRequests()));
- }
-
- public function testCanHandleRevalidationFailures()
- {
- $client = new Client($this->getServer()->getUrl());
- $lm = gmdate('c', time() - 60);
- $mock = new MockPlugin(array(
- new Response(200, array(
- 'Date' => $lm,
- 'Cache-Control' => 'max-age=100, must-revalidate, stale-if-error=9999',
- 'Last-Modified' => $lm,
- 'Content-Length' => 2
- ), 'hi'),
- new CurlException('Bleh'),
- new CurlException('Bleh')
- ));
- $client->addSubscriber(new CachePlugin());
- $client->addSubscriber($mock);
- $client->get()->send();
- $response = $client->get()->send();
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertEquals('hi', $response->getBody(true));
- $this->assertEquals(3, count($mock->getReceivedRequests()));
- $this->assertEquals(0, count($mock->getQueue()));
- }
-
- public function testCanHandleStaleIfErrorWhenRevalidating()
- {
- $lm = gmdate('c', time() - 60);
- $mock = new MockPlugin(array(
- new Response(200, array(
- 'Date' => $lm,
- 'Cache-Control' => 'must-revalidate, max-age=0, stale-if-error=1200',
- 'Last-Modified' => $lm,
- 'Content-Length' => 2
- ), 'hi'),
- new CurlException('Oh no!'),
- new CurlException('Oh no!')
- ));
- $cache = new CachePlugin();
- $client = new Client('http://www.example.com');
- $client->addSubscriber($cache);
- $client->addSubscriber($mock);
- $this->assertEquals(200, $client->get()->send()->getStatusCode());
- $response = $client->get()->send();
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertCount(0, $mock);
- $this->assertEquals('HIT from GuzzleCache', (string) $response->getHeader('X-Cache-Lookup'));
- $this->assertEquals('HIT_ERROR from GuzzleCache', (string) $response->getHeader('X-Cache'));
- }
-
- /**
- * @group issue-437
- */
- public function testDoesNotTouchClosureListeners()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\n" .
- "Date: Mon, 12 Nov 2012 03:06:37 GMT\r\n" .
- "Cache-Control: private, s-maxage=0, max-age=0, must-revalidate\r\n" .
- "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
- "Content-Length: 2\r\n\r\nhi",
- "HTTP/1.0 304 Not Modified\r\n" .
- "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
- "Content-Type: text/html; charset=UTF-8\r\n" .
- "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
- "Age: 6302\r\n\r\n",
- "HTTP/1.0 304 Not Modified\r\n" .
- "Date: Mon, 12 Nov 2012 03:06:38 GMT\r\n" .
- "Content-Type: text/html; charset=UTF-8\r\n" .
- "Last-Modified: Mon, 12 Nov 2012 02:53:38 GMT\r\n" .
- "Age: 6302\r\n\r\n",
- ));
- $client = new Client($this->getServer()->getUrl());
- $client->addSubscriber(new CachePlugin());
- $client->getEventDispatcher()->addListener('command.after_send', function(){});
- $this->assertEquals(200, $client->get()->send()->getStatusCode());
- $this->assertEquals(200, $client->get()->send()->getStatusCode());
- $this->assertEquals(200, $client->get()->send()->getStatusCode());
- }
-
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DenyRevalidationTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DenyRevalidationTest.php
deleted file mode 100644
index 9af80f2..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/DenyRevalidationTest.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cache;
-
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Cache\DenyRevalidation;
-
-/**
- * @covers Guzzle\Plugin\Cache\DenyRevalidation
- */
-class DenyRevalidationTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testDeniesRequestRevalidation()
- {
- $deny = new DenyRevalidation();
- $this->assertFalse($deny->revalidate(new Request('GET', 'http://foo.com'), new Response(200)));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/SkipRevalidationTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/SkipRevalidationTest.php
deleted file mode 100644
index 4bcc04b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/SkipRevalidationTest.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cache;
-
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Cache\SkipRevalidation;
-
-/**
- * @covers Guzzle\Plugin\Cache\SkipRevalidation
- */
-class SkipRevalidationTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testSkipsRequestRevalidation()
- {
- $skip = new SkipRevalidation();
- $this->assertTrue($skip->revalidate(new Request('GET', 'http://foo.com'), new Response(200)));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/ArrayCookieJarTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/ArrayCookieJarTest.php
deleted file mode 100644
index 5d0f668..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/ArrayCookieJarTest.php
+++ /dev/null
@@ -1,385 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cookie\CookieJar;
-
-use Guzzle\Plugin\Cookie\Cookie;
-use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
-use Guzzle\Http\Message\Response;
-use Guzzle\Http\Message\Request;
-
-/**
- * @covers Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar
- */
-class ArrayCookieJarTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @var ArrayCookieJar
- */
- private $jar;
-
- public function setUp()
- {
- $this->jar = new ArrayCookieJar();
- }
-
- protected function getTestCookies()
- {
- return array(
- new Cookie(array('name' => 'foo', 'value' => 'bar', 'domain' => 'foo.com', 'path' => '/', 'discard' => true)),
- new Cookie(array('name' => 'test', 'value' => '123', 'domain' => 'baz.com', 'path' => '/foo', 'expires' => 2)),
- new Cookie(array('name' => 'you', 'value' => '123', 'domain' => 'bar.com', 'path' => '/boo', 'expires' => time() + 1000))
- );
- }
-
- /**
- * Provides test data for cookie cookieJar retrieval
- */
- public function getCookiesDataProvider()
- {
- return array(
- array(array('foo', 'baz', 'test', 'muppet', 'googoo'), '', '', '', false),
- array(array('foo', 'baz', 'muppet', 'googoo'), '', '', '', true),
- array(array('googoo'), 'www.example.com', '', '', false),
- array(array('muppet', 'googoo'), 'test.y.example.com', '', '', false),
- array(array('foo', 'baz'), 'example.com', '', '', false),
- array(array('muppet'), 'x.y.example.com', '/acme/', '', false),
- array(array('muppet'), 'x.y.example.com', '/acme/test/', '', false),
- array(array('googoo'), 'x.y.example.com', '/test/acme/test/', '', false),
- array(array('foo', 'baz'), 'example.com', '', '', false),
- array(array('baz'), 'example.com', '', 'baz', false),
- );
- }
-
- public function testStoresAndRetrievesCookies()
- {
- $cookies = $this->getTestCookies();
- foreach ($cookies as $cookie) {
- $this->assertTrue($this->jar->add($cookie));
- }
-
- $this->assertEquals(3, count($this->jar));
- $this->assertEquals(3, count($this->jar->getIterator()));
- $this->assertEquals($cookies, $this->jar->all(null, null, null, false, false));
- }
-
- public function testRemovesExpiredCookies()
- {
- $cookies = $this->getTestCookies();
- foreach ($this->getTestCookies() as $cookie) {
- $this->jar->add($cookie);
- }
- $this->jar->removeExpired();
- $this->assertEquals(array($cookies[0], $cookies[2]), $this->jar->all());
- }
-
- public function testRemovesTemporaryCookies()
- {
- $cookies = $this->getTestCookies();
- foreach ($this->getTestCookies() as $cookie) {
- $this->jar->add($cookie);
- }
- $this->jar->removeTemporary();
- $this->assertEquals(array($cookies[2]), $this->jar->all());
- }
-
- public function testIsSerializable()
- {
- $this->assertEquals('[]', $this->jar->serialize());
- $this->jar->unserialize('[]');
- $this->assertEquals(array(), $this->jar->all());
-
- $cookies = $this->getTestCookies();
- foreach ($this->getTestCookies() as $cookie) {
- $this->jar->add($cookie);
- }
-
- // Remove discard and expired cookies
- $serialized = $this->jar->serialize();
- $data = json_decode($serialized, true);
- $this->assertEquals(1, count($data));
-
- $a = new ArrayCookieJar();
- $a->unserialize($serialized);
- $this->assertEquals(1, count($a));
- }
-
- public function testRemovesSelectively()
- {
- $cookies = $this->getTestCookies();
- foreach ($this->getTestCookies() as $cookie) {
- $this->jar->add($cookie);
- }
-
- // Remove foo.com cookies
- $this->jar->remove('foo.com');
- $this->assertEquals(2, count($this->jar));
- // Try again, removing no further cookies
- $this->jar->remove('foo.com');
- $this->assertEquals(2, count($this->jar));
-
- // Remove bar.com cookies with path of /boo
- $this->jar->remove('bar.com', '/boo');
- $this->assertEquals(1, count($this->jar));
-
- // Remove cookie by name
- $this->jar->remove(null, null, 'test');
- $this->assertEquals(0, count($this->jar));
- }
-
- public function testDoesNotAddIncompleteCookies()
- {
- $this->assertEquals(false, $this->jar->add(new Cookie()));
- $this->assertFalse($this->jar->add(new Cookie(array(
- 'name' => 'foo'
- ))));
- $this->assertFalse($this->jar->add(new Cookie(array(
- 'name' => false
- ))));
- $this->assertFalse($this->jar->add(new Cookie(array(
- 'name' => true
- ))));
- $this->assertFalse($this->jar->add(new Cookie(array(
- 'name' => 'foo',
- 'domain' => 'foo.com'
- ))));
- }
-
- public function testDoesAddValidCookies()
- {
- $this->assertTrue($this->jar->add(new Cookie(array(
- 'name' => 'foo',
- 'domain' => 'foo.com',
- 'value' => 0
- ))));
- $this->assertTrue($this->jar->add(new Cookie(array(
- 'name' => 'foo',
- 'domain' => 'foo.com',
- 'value' => 0.0
- ))));
- $this->assertTrue($this->jar->add(new Cookie(array(
- 'name' => 'foo',
- 'domain' => 'foo.com',
- 'value' => '0'
- ))));
- }
-
- public function testOverwritesCookiesThatAreOlderOrDiscardable()
- {
- $t = time() + 1000;
- $data = array(
- 'name' => 'foo',
- 'value' => 'bar',
- 'domain' => '.example.com',
- 'path' => '/',
- 'max_age' => '86400',
- 'port' => array(80, 8080),
- 'version' => '1',
- 'secure' => true,
- 'discard' => true,
- 'expires' => $t
- );
-
- // Make sure that the discard cookie is overridden with the non-discard
- $this->assertTrue($this->jar->add(new Cookie($data)));
-
- unset($data['discard']);
- $this->assertTrue($this->jar->add(new Cookie($data)));
- $this->assertEquals(1, count($this->jar));
-
- $c = $this->jar->all();
- $this->assertEquals(false, $c[0]->getDiscard());
-
- // Make sure it doesn't duplicate the cookie
- $this->jar->add(new Cookie($data));
- $this->assertEquals(1, count($this->jar));
-
- // Make sure the more future-ful expiration date supersede the other
- $data['expires'] = time() + 2000;
- $this->assertTrue($this->jar->add(new Cookie($data)));
- $this->assertEquals(1, count($this->jar));
- $c = $this->jar->all();
- $this->assertNotEquals($t, $c[0]->getExpires());
- }
-
- public function testOverwritesCookiesThatHaveChanged()
- {
- $t = time() + 1000;
- $data = array(
- 'name' => 'foo',
- 'value' => 'bar',
- 'domain' => '.example.com',
- 'path' => '/',
- 'max_age' => '86400',
- 'port' => array(80, 8080),
- 'version' => '1',
- 'secure' => true,
- 'discard' => true,
- 'expires' => $t
- );
-
- // Make sure that the discard cookie is overridden with the non-discard
- $this->assertTrue($this->jar->add(new Cookie($data)));
-
- $data['value'] = 'boo';
- $this->assertTrue($this->jar->add(new Cookie($data)));
- $this->assertEquals(1, count($this->jar));
-
- // Changing the value plus a parameter also must overwrite the existing one
- $data['value'] = 'zoo';
- $data['secure'] = false;
- $this->assertTrue($this->jar->add(new Cookie($data)));
- $this->assertEquals(1, count($this->jar));
-
- $c = $this->jar->all();
- $this->assertEquals('zoo', $c[0]->getValue());
- }
-
- public function testAddsCookiesFromResponseWithNoRequest()
- {
- $response = new Response(200, array(
- 'Set-Cookie' => array(
- "fpc=d=.Hm.yh4.1XmJWjJfs4orLQzKzPImxklQoxXSHOZATHUSEFciRueW_7704iYUtsXNEXq0M92Px2glMdWypmJ7HIQl6XIUvrZimWjQ3vIdeuRbI.FNQMAfcxu_XN1zSx7l.AcPdKL6guHc2V7hIQFhnjRW0rxm2oHY1P4bGQxFNz7f.tHm12ZD3DbdMDiDy7TBXsuP4DM-&v=2; expires=Fri, 02-Mar-2019 02:17:40 GMT; path=/; domain=127.0.0.1",
- "FPCK3=AgBNbvoQAGpGEABZLRAAbFsQAF1tEABkDhAAeO0=; expires=Sat, 02-Apr-2019 02:17:40 GMT; path=/; domain=127.0.0.1",
- "CH=deleted; expires=Wed, 03-Mar-2010 02:17:39 GMT; path=/; domain=127.0.0.1",
- "CH=AgBNbvoQAAEcEAApuhAAMJcQADQvEAAvGxAALe0QAD6uEAATwhAAC1AQAC8t; expires=Sat, 02-Apr-2019 02:17:40 GMT; path=/; domain=127.0.0.1"
- )
- ));
-
- $this->jar->addCookiesFromResponse($response);
- $this->assertEquals(3, count($this->jar));
- $this->assertEquals(1, count($this->jar->all(null, null, 'fpc')));
- $this->assertEquals(1, count($this->jar->all(null, null, 'FPCK3')));
- $this->assertEquals(1, count($this->jar->all(null, null, 'CH')));
- }
-
- public function testAddsCookiesFromResponseWithRequest()
- {
- $response = new Response(200, array(
- 'Set-Cookie' => "fpc=d=.Hm.yh4.1XmJWjJfs4orLQzKzPImxklQoxXSHOZATHUSEFciRueW_7704iYUtsXNEXq0M92Px2glMdWypmJ7HIQl6XIUvrZimWjQ3vIdeuRbI.FNQMAfcxu_XN1zSx7l.AcPdKL6guHc2V7hIQFhnjRW0rxm2oHY1P4bGQxFNz7f.tHm12ZD3DbdMDiDy7TBXsuP4DM-&v=2; expires=Fri, 02-Mar-2019 02:17:40 GMT;"
- ));
- $request = new Request('GET', 'http://www.example.com');
- $this->jar->addCookiesFromResponse($response, $request);
- $this->assertEquals(1, count($this->jar));
- }
-
- public function getMatchingCookiesDataProvider()
- {
- return array(
- array('https://example.com', array(0)),
- array('http://example.com', array()),
- array('https://example.com:8912', array()),
- array('https://foo.example.com', array(0)),
- array('http://foo.example.com/test/acme/', array(4))
- );
- }
-
- /**
- * @dataProvider getMatchingCookiesDataProvider
- */
- public function testReturnsCookiesMatchingRequests($url, $cookies)
- {
- $bag = array(
- new Cookie(array(
- 'name' => 'foo',
- 'value' => 'bar',
- 'domain' => 'example.com',
- 'path' => '/',
- 'max_age' => '86400',
- 'port' => array(443, 8080),
- 'version' => '1',
- 'secure' => true
- )),
- new Cookie(array(
- 'name' => 'baz',
- 'value' => 'foobar',
- 'domain' => 'example.com',
- 'path' => '/',
- 'max_age' => '86400',
- 'port' => array(80, 8080),
- 'version' => '1',
- 'secure' => true
- )),
- new Cookie(array(
- 'name' => 'test',
- 'value' => '123',
- 'domain' => 'www.foobar.com',
- 'path' => '/path/',
- 'discard' => true
- )),
- new Cookie(array(
- 'name' => 'muppet',
- 'value' => 'cookie_monster',
- 'domain' => '.y.example.com',
- 'path' => '/acme/',
- 'comment' => 'Comment goes here...',
- 'expires' => time() + 86400
- )),
- new Cookie(array(
- 'name' => 'googoo',
- 'value' => 'gaga',
- 'domain' => '.example.com',
- 'path' => '/test/acme/',
- 'max_age' => 1500,
- 'version' => 2
- ))
- );
-
- foreach ($bag as $cookie) {
- $this->jar->add($cookie);
- }
-
- $request = new Request('GET', $url);
- $results = $this->jar->getMatchingCookies($request);
- $this->assertEquals(count($cookies), count($results));
- foreach ($cookies as $i) {
- $this->assertContains($bag[$i], $results);
- }
- }
-
- /**
- * @expectedException \Guzzle\Plugin\Cookie\Exception\InvalidCookieException
- * @expectedExceptionMessage The cookie name must not contain invalid characters: abc:@123
- */
- public function testThrowsExceptionWithStrictMode()
- {
- $a = new ArrayCookieJar();
- $a->setStrictMode(true);
- $a->add(new Cookie(array(
- 'name' => 'abc:@123',
- 'value' => 'foo',
- 'domain' => 'bar'
- )));
- }
-
- public function testRemoveExistingCookieIfEmpty()
- {
- // Add a cookie that should not be affected
- $a = new Cookie(array(
- 'name' => 'foo',
- 'value' => 'nope',
- 'domain' => 'foo.com',
- 'path' => '/abc'
- ));
- $this->jar->add($a);
-
- $data = array(
- 'name' => 'foo',
- 'value' => 'bar',
- 'domain' => 'foo.com',
- 'path' => '/'
- );
-
- $b = new Cookie($data);
- $this->assertTrue($this->jar->add($b));
- $this->assertEquals(2, count($this->jar));
-
- // Try to re-set the same cookie with no value: assert that cookie is not added
- $data['value'] = null;
- $this->assertFalse($this->jar->add(new Cookie($data)));
- // assert that original cookie has been deleted
- $cookies = $this->jar->all('foo.com');
- $this->assertTrue(in_array($a, $cookies, true));
- $this->assertFalse(in_array($b, $cookies, true));
- $this->assertEquals(1, count($this->jar));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/FileCookieJarTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/FileCookieJarTest.php
deleted file mode 100644
index ac9471f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieJar/FileCookieJarTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cookie\CookieJar;
-
-use Guzzle\Plugin\Cookie\Cookie;
-use Guzzle\Plugin\Cookie\CookieJar\FileCookieJar;
-
-/**
- * @covers Guzzle\Plugin\Cookie\CookieJar\FileCookieJar
- */
-class FileCookieJarTest extends \Guzzle\Tests\GuzzleTestCase
-{
- private $file;
-
- public function setUp()
- {
- $this->file = tempnam('/tmp', 'file-cookies');
- }
-
- public function testLoadsFromFileFile()
- {
- $jar = new FileCookieJar($this->file);
- $this->assertEquals(array(), $jar->all());
- unlink($this->file);
- }
-
- public function testPersistsToFileFile()
- {
- $jar = new FileCookieJar($this->file);
- $jar->add(new Cookie(array(
- 'name' => 'foo',
- 'value' => 'bar',
- 'domain' => 'foo.com',
- 'expires' => time() + 1000
- )));
- $jar->add(new Cookie(array(
- 'name' => 'baz',
- 'value' => 'bar',
- 'domain' => 'foo.com',
- 'expires' => time() + 1000
- )));
- $jar->add(new Cookie(array(
- 'name' => 'boo',
- 'value' => 'bar',
- 'domain' => 'foo.com',
- )));
-
- $this->assertEquals(3, count($jar));
- unset($jar);
-
- // Make sure it wrote to the file
- $contents = file_get_contents($this->file);
- $this->assertNotEmpty($contents);
-
- // Load the cookieJar from the file
- $jar = new FileCookieJar($this->file);
-
- // Weeds out temporary and session cookies
- $this->assertEquals(2, count($jar));
- unset($jar);
- unlink($this->file);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookiePluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookiePluginTest.php
deleted file mode 100644
index f8c175c..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookiePluginTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cookie;
-
-use Guzzle\Common\Event;
-use Guzzle\Plugin\Cookie\Cookie;
-use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Cookie\CookiePlugin;
-
-/**
- * @group server
- * @covers Guzzle\Plugin\Cookie\CookiePlugin
- */
-class CookiePluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testExtractsAndStoresCookies()
- {
- $response = new Response(200);
- $mock = $this->getMockBuilder('Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar')
- ->setMethods(array('addCookiesFromResponse'))
- ->getMock();
-
- $mock->expects($this->exactly(1))
- ->method('addCookiesFromResponse')
- ->with($response);
-
- $plugin = new CookiePlugin($mock);
- $plugin->onRequestSent(new Event(array(
- 'response' => $response
- )));
- }
-
- public function testAddsCookiesToRequests()
- {
- $cookie = new Cookie(array(
- 'name' => 'foo',
- 'value' => 'bar'
- ));
-
- $mock = $this->getMockBuilder('Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar')
- ->setMethods(array('getMatchingCookies'))
- ->getMock();
-
- $mock->expects($this->once())
- ->method('getMatchingCookies')
- ->will($this->returnValue(array($cookie)));
-
- $plugin = new CookiePlugin($mock);
-
- $client = new Client();
- $client->getEventDispatcher()->addSubscriber($plugin);
-
- $request = $client->get('http://www.example.com');
- $plugin->onRequestBeforeSend(new Event(array(
- 'request' => $request
- )));
-
- $this->assertEquals('bar', $request->getCookie('foo'));
- }
-
- public function testCookiesAreExtractedFromRedirectResponses()
- {
- $plugin = new CookiePlugin(new ArrayCookieJar());
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 302 Moved Temporarily\r\n" .
- "Set-Cookie: test=583551; expires=Wednesday, 23-Mar-2050 19:49:45 GMT; path=/\r\n" .
- "Location: /redirect\r\n\r\n",
- "HTTP/1.1 200 OK\r\n" .
- "Content-Length: 0\r\n\r\n",
- "HTTP/1.1 200 OK\r\n" .
- "Content-Length: 0\r\n\r\n"
- ));
-
- $client = new Client($this->getServer()->getUrl());
- $client->getEventDispatcher()->addSubscriber($plugin);
-
- $client->get()->send();
- $request = $client->get();
- $request->send();
- $this->assertEquals('test=583551', $request->getHeader('Cookie'));
-
- $requests = $this->getServer()->getReceivedRequests(true);
- // Confirm subsequent requests have the cookie.
- $this->assertEquals('test=583551', $requests[2]->getHeader('Cookie'));
- // Confirm the redirected request has the cookie.
- $this->assertEquals('test=583551', $requests[1]->getHeader('Cookie'));
- }
-
- public function testCookiesAreNotAddedWhenParamIsSet()
- {
- $jar = new ArrayCookieJar();
- $plugin = new CookiePlugin($jar);
-
- $jar->add(new Cookie(array(
- 'domain' => 'example.com',
- 'path' => '/',
- 'name' => 'test',
- 'value' => 'hi',
- 'expires' => time() + 3600
- )));
-
- $client = new Client('http://example.com');
- $client->getEventDispatcher()->addSubscriber($plugin);
-
- // Ensure that it is normally added
- $request = $client->get();
- $request->setResponse(new Response(200), true);
- $request->send();
- $this->assertEquals('hi', $request->getCookie('test'));
-
- // Now ensure that it is not added
- $request = $client->get();
- $request->getParams()->set('cookies.disable', true);
- $request->setResponse(new Response(200), true);
- $request->send();
- $this->assertNull($request->getCookie('test'));
- }
-
- public function testProvidesCookieJar()
- {
- $jar = new ArrayCookieJar();
- $plugin = new CookiePlugin($jar);
- $this->assertSame($jar, $plugin->getCookieJar());
- }
-
- public function testEscapesCookieDomains()
- {
- $cookie = new Cookie(array('domain' => '/foo/^$[A-Z]+/'));
- $this->assertFalse($cookie->matchesDomain('foo'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieTest.php
deleted file mode 100644
index 9fb0b43..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cookie/CookieTest.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Cookie;
-
-use Guzzle\Plugin\Cookie\Cookie;
-
-/**
- * @covers Guzzle\Plugin\Cookie\Cookie
- */
-class CookieTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testInitializesDefaultValues()
- {
- $cookie = new Cookie();
- $this->assertEquals('/', $cookie->getPath());
- $this->assertEquals(array(), $cookie->getPorts());
- }
-
- public function testConvertsDateTimeMaxAgeToUnixTimestamp()
- {
- $cookie = new Cookie(array(
- 'expires' => 'November 20, 1984'
- ));
- $this->assertTrue(is_numeric($cookie->getExpires()));
- }
-
- public function testAddsExpiresBasedOnMaxAge()
- {
- $t = time();
- $cookie = new Cookie(array(
- 'max_age' => 100
- ));
- $this->assertEquals($t + 100, $cookie->getExpires());
- }
-
- public function testHoldsValues()
- {
- $t = time();
- $data = array(
- 'name' => 'foo',
- 'value' => 'baz',
- 'path' => '/bar',
- 'domain' => 'baz.com',
- 'expires' => $t,
- 'max_age' => 100,
- 'comment' => 'Hi',
- 'comment_url' => 'foo.com',
- 'port' => array(1, 2),
- 'version' => 2,
- 'secure' => true,
- 'discard' => true,
- 'http_only' => true,
- 'data' => array(
- 'foo' => 'baz',
- 'bar' => 'bam'
- )
- );
-
- $cookie = new Cookie($data);
- $this->assertEquals($data, $cookie->toArray());
-
- $this->assertEquals('foo', $cookie->getName());
- $this->assertEquals('baz', $cookie->getValue());
- $this->assertEquals('baz.com', $cookie->getDomain());
- $this->assertEquals('/bar', $cookie->getPath());
- $this->assertEquals($t, $cookie->getExpires());
- $this->assertEquals(100, $cookie->getMaxAge());
- $this->assertEquals('Hi', $cookie->getComment());
- $this->assertEquals('foo.com', $cookie->getCommentUrl());
- $this->assertEquals(array(1, 2), $cookie->getPorts());
- $this->assertEquals(2, $cookie->getVersion());
- $this->assertTrue($cookie->getSecure());
- $this->assertTrue($cookie->getDiscard());
- $this->assertTrue($cookie->getHttpOnly());
- $this->assertEquals('baz', $cookie->getAttribute('foo'));
- $this->assertEquals('bam', $cookie->getAttribute('bar'));
- $this->assertEquals(array(
- 'foo' => 'baz',
- 'bar' => 'bam'
- ), $cookie->getAttributes());
-
- $cookie->setName('a')
- ->setValue('b')
- ->setPath('c')
- ->setDomain('bar.com')
- ->setExpires(10)
- ->setMaxAge(200)
- ->setComment('e')
- ->setCommentUrl('f')
- ->setPorts(array(80))
- ->setVersion(3)
- ->setSecure(false)
- ->setHttpOnly(false)
- ->setDiscard(false)
- ->setAttribute('snoop', 'dog');
-
- $this->assertEquals('a', $cookie->getName());
- $this->assertEquals('b', $cookie->getValue());
- $this->assertEquals('c', $cookie->getPath());
- $this->assertEquals('bar.com', $cookie->getDomain());
- $this->assertEquals(10, $cookie->getExpires());
- $this->assertEquals(200, $cookie->getMaxAge());
- $this->assertEquals('e', $cookie->getComment());
- $this->assertEquals('f', $cookie->getCommentUrl());
- $this->assertEquals(array(80), $cookie->getPorts());
- $this->assertEquals(3, $cookie->getVersion());
- $this->assertFalse($cookie->getSecure());
- $this->assertFalse($cookie->getDiscard());
- $this->assertFalse($cookie->getHttpOnly());
- $this->assertEquals('dog', $cookie->getAttribute('snoop'));
- }
-
- public function testDeterminesIfExpired()
- {
- $c = new Cookie();
- $c->setExpires(10);
- $this->assertTrue($c->isExpired());
- $c->setExpires(time() + 10000);
- $this->assertFalse($c->isExpired());
- }
-
- public function testMatchesPorts()
- {
- $cookie = new Cookie();
- // Always matches when nothing is set
- $this->assertTrue($cookie->matchesPort(2));
-
- $cookie->setPorts(array(1, 2));
- $this->assertTrue($cookie->matchesPort(2));
- $this->assertFalse($cookie->matchesPort(100));
- }
-
- public function testMatchesDomain()
- {
- $cookie = new Cookie();
- $this->assertTrue($cookie->matchesDomain('baz.com'));
-
- $cookie->setDomain('baz.com');
- $this->assertTrue($cookie->matchesDomain('baz.com'));
- $this->assertFalse($cookie->matchesDomain('bar.com'));
-
- $cookie->setDomain('.baz.com');
- $this->assertTrue($cookie->matchesDomain('.baz.com'));
- $this->assertTrue($cookie->matchesDomain('foo.baz.com'));
- $this->assertFalse($cookie->matchesDomain('baz.bar.com'));
- $this->assertTrue($cookie->matchesDomain('baz.com'));
-
- $cookie->setDomain('.127.0.0.1');
- $this->assertTrue($cookie->matchesDomain('127.0.0.1'));
-
- $cookie->setDomain('127.0.0.1');
- $this->assertTrue($cookie->matchesDomain('127.0.0.1'));
-
- $cookie->setDomain('.com.');
- $this->assertFalse($cookie->matchesDomain('baz.com'));
-
- $cookie->setDomain('.local');
- $this->assertTrue($cookie->matchesDomain('example.local'));
- }
-
- public function testMatchesPath()
- {
- $cookie = new Cookie();
- $this->assertTrue($cookie->matchesPath('/foo'));
-
- $cookie->setPath('/foo');
-
- // o The cookie-path and the request-path are identical.
- $this->assertTrue($cookie->matchesPath('/foo'));
- $this->assertFalse($cookie->matchesPath('/bar'));
-
- // o The cookie-path is a prefix of the request-path, and the first
- // character of the request-path that is not included in the cookie-
- // path is a %x2F ("/") character.
- $this->assertTrue($cookie->matchesPath('/foo/bar'));
- $this->assertFalse($cookie->matchesPath('/fooBar'));
-
- // o The cookie-path is a prefix of the request-path, and the last
- // character of the cookie-path is %x2F ("/").
- $cookie->setPath('/foo/');
- $this->assertTrue($cookie->matchesPath('/foo/bar'));
- $this->assertFalse($cookie->matchesPath('/fooBaz'));
- $this->assertFalse($cookie->matchesPath('/foo'));
-
- }
-
- public function cookieValidateProvider()
- {
- return array(
- array('foo', 'baz', 'bar', true),
- array('0', '0', '0', true),
- array('', 'baz', 'bar', 'The cookie name must not be empty'),
- array('foo', '', 'bar', 'The cookie value must not be empty'),
- array('foo', 'baz', '', 'The cookie domain must not be empty'),
- array('foo\\', 'baz', '0', 'The cookie name must not contain invalid characters: foo\\'),
- );
- }
-
- /**
- * @dataProvider cookieValidateProvider
- */
- public function testValidatesCookies($name, $value, $domain, $result)
- {
- $cookie = new Cookie(array(
- 'name' => $name,
- 'value' => $value,
- 'domain' => $domain
- ));
- $this->assertSame($result, $cookie->validate());
- }
-
- public function testCreatesInvalidCharacterString()
- {
- $m = new \ReflectionMethod('Guzzle\Plugin\Cookie\Cookie', 'getInvalidCharacters');
- $m->setAccessible(true);
- $p = new \ReflectionProperty('Guzzle\Plugin\Cookie\Cookie', 'invalidCharString');
- $p->setAccessible(true);
- $p->setValue('');
- // Expects a string containing 51 invalid characters
- $this->assertEquals(51, strlen($m->invoke($m)));
- $this->assertContains('@', $m->invoke($m));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/CurlAuth/CurlAuthPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/CurlAuth/CurlAuthPluginTest.php
deleted file mode 100644
index 2a4b49e..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/CurlAuth/CurlAuthPluginTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\CurlAuth;
-
-use Guzzle\Common\Version;
-use Guzzle\Plugin\CurlAuth\CurlAuthPlugin;
-use Guzzle\Http\Client;
-
-/**
- * @covers Guzzle\Plugin\CurlAuth\CurlAuthPlugin
- */
-class CurlAuthPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testAddsBasicAuthentication()
- {
- Version::$emitWarnings = false;
- $plugin = new CurlAuthPlugin('michael', 'test');
- $client = new Client('http://www.test.com/');
- $client->getEventDispatcher()->addSubscriber($plugin);
- $request = $client->get('/');
- $this->assertEquals('michael', $request->getUsername());
- $this->assertEquals('test', $request->getPassword());
- Version::$emitWarnings = true;
- }
-
- public function testAddsDigestAuthentication()
- {
- Version::$emitWarnings = false;
- $plugin = new CurlAuthPlugin('julian', 'test', CURLAUTH_DIGEST);
- $client = new Client('http://www.test.com/');
- $client->getEventDispatcher()->addSubscriber($plugin);
- $request = $client->get('/');
- $this->assertEquals('julian', $request->getUsername());
- $this->assertEquals('test', $request->getPassword());
- $this->assertEquals('julian:test', $request->getCurlOptions()->get(CURLOPT_USERPWD));
- $this->assertEquals(CURLAUTH_DIGEST, $request->getCurlOptions()->get(CURLOPT_HTTPAUTH));
- Version::$emitWarnings = true;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/ErrorResponse/ErrorResponsePluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/ErrorResponse/ErrorResponsePluginTest.php
deleted file mode 100644
index 6f94186..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/ErrorResponse/ErrorResponsePluginTest.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\ErrorResponse;
-
-use Guzzle\Service\Client;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\ErrorResponse\ErrorResponsePlugin;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Tests\Mock\ErrorResponseMock;
-
-/**
- * @covers \Guzzle\Plugin\ErrorResponse\ErrorResponsePlugin
- */
-class ErrorResponsePluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $client;
-
- public static function tearDownAfterClass()
- {
- self::getServer()->flush();
- }
-
- public function setUp()
- {
- $mockError = 'Guzzle\Tests\Mock\ErrorResponseMock';
- $description = ServiceDescription::factory(array(
- 'operations' => array(
- 'works' => array(
- 'httpMethod' => 'GET',
- 'errorResponses' => array(
- array('code' => 500, 'class' => $mockError),
- array('code' => 503, 'reason' => 'foo', 'class' => $mockError),
- array('code' => 200, 'reason' => 'Error!', 'class' => $mockError)
- )
- ),
- 'bad_class' => array(
- 'httpMethod' => 'GET',
- 'errorResponses' => array(
- array('code' => 500, 'class' => 'Does\\Not\\Exist')
- )
- ),
- 'does_not_implement' => array(
- 'httpMethod' => 'GET',
- 'errorResponses' => array(
- array('code' => 500, 'class' => __CLASS__)
- )
- ),
- 'no_errors' => array('httpMethod' => 'GET'),
- 'no_class' => array(
- 'httpMethod' => 'GET',
- 'errorResponses' => array(
- array('code' => 500)
- )
- ),
- )
- ));
- $this->client = new Client($this->getServer()->getUrl());
- $this->client->setDescription($description);
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\ServerErrorResponseException
- */
- public function testSkipsWhenErrorResponsesIsNotSet()
- {
- $this->getServer()->enqueue("HTTP/1.1 500 Foo\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $this->client->getCommand('no_errors')->execute();
- }
-
- public function testSkipsWhenErrorResponsesIsNotSetAndAllowsSuccess()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $this->client->getCommand('no_errors')->execute();
- }
-
- /**
- * @expectedException \Guzzle\Plugin\ErrorResponse\Exception\ErrorResponseException
- * @expectedExceptionMessage Does\Not\Exist does not exist
- */
- public function testEnsuresErrorResponseExists()
- {
- $this->getServer()->enqueue("HTTP/1.1 500 Foo\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $this->client->getCommand('bad_class')->execute();
- }
-
- /**
- * @expectedException \Guzzle\Plugin\ErrorResponse\Exception\ErrorResponseException
- * @expectedExceptionMessage must implement Guzzle\Plugin\ErrorResponse\ErrorResponseExceptionInterface
- */
- public function testEnsuresErrorResponseImplementsInterface()
- {
- $this->getServer()->enqueue("HTTP/1.1 500 Foo\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $this->client->getCommand('does_not_implement')->execute();
- }
-
- public function testThrowsSpecificErrorResponseOnMatch()
- {
- try {
- $this->getServer()->enqueue("HTTP/1.1 500 Foo\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $command = $this->client->getCommand('works');
- $command->execute();
- $this->fail('Exception not thrown');
- } catch (ErrorResponseMock $e) {
- $this->assertSame($command, $e->command);
- $this->assertEquals(500, $e->response->getStatusCode());
- }
- }
-
- /**
- * @expectedException \Guzzle\Tests\Mock\ErrorResponseMock
- */
- public function testThrowsWhenCodeAndPhraseMatch()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 Error!\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $this->client->getCommand('works')->execute();
- }
-
- public function testSkipsWhenReasonDoesNotMatch()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $this->client->getCommand('works')->execute();
- }
-
- public function testSkipsWhenNoClassIsSet()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $this->client->addSubscriber(new ErrorResponsePlugin());
- $this->client->getCommand('no_class')->execute();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/History/HistoryPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/History/HistoryPluginTest.php
deleted file mode 100644
index 41aa673..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/History/HistoryPluginTest.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\History;
-
-use Guzzle\Http\Client;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\History\HistoryPlugin;
-use Guzzle\Plugin\Mock\MockPlugin;
-
-/**
- * @covers Guzzle\Plugin\History\HistoryPlugin
- */
-class HistoryPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * Adds multiple requests to a plugin
- *
- * @param HistoryPlugin $h Plugin
- * @param int $num Number of requests to add
- *
- * @return array
- */
- protected function addRequests(HistoryPlugin $h, $num)
- {
- $requests = array();
- $client = new Client('http://127.0.0.1/');
- for ($i = 0; $i < $num; $i++) {
- $requests[$i] = $client->get();
- $requests[$i]->setResponse(new Response(200), true);
- $requests[$i]->send();
- $h->add($requests[$i]);
- }
-
- return $requests;
- }
-
- public function testDescribesSubscribedEvents()
- {
- $this->assertInternalType('array', HistoryPlugin::getSubscribedEvents());
- }
-
- public function testMaintainsLimitValue()
- {
- $h = new HistoryPlugin();
- $this->assertSame($h, $h->setLimit(10));
- $this->assertEquals(10, $h->getLimit());
- }
-
- public function testAddsRequests()
- {
- $h = new HistoryPlugin();
- $requests = $this->addRequests($h, 1);
- $this->assertEquals(1, count($h));
- $i = $h->getIterator();
- $this->assertEquals(1, count($i));
- $this->assertEquals($requests[0], $i[0]);
- }
-
- /**
- * @depends testAddsRequests
- */
- public function testMaintainsLimit()
- {
- $h = new HistoryPlugin();
- $h->setLimit(2);
- $requests = $this->addRequests($h, 3);
- $this->assertEquals(2, count($h));
- $i = 0;
- foreach ($h as $request) {
- if ($i > 0) {
- $this->assertSame($requests[$i], $request);
- }
- }
- }
-
- public function testReturnsLastRequest()
- {
- $h = new HistoryPlugin();
- $requests = $this->addRequests($h, 5);
- $this->assertSame(end($requests), $h->getLastRequest());
- }
-
- public function testReturnsLastResponse()
- {
- $h = new HistoryPlugin();
- $requests = $this->addRequests($h, 5);
- $this->assertSame(end($requests)->getResponse(), $h->getLastResponse());
- }
-
- public function testClearsHistory()
- {
- $h = new HistoryPlugin();
- $requests = $this->addRequests($h, 5);
- $this->assertEquals(5, count($h));
- $h->clear();
- $this->assertEquals(0, count($h));
- }
-
- /**
- * @depends testAddsRequests
- */
- public function testUpdatesAddRequests()
- {
- $h = new HistoryPlugin();
- $client = new Client('http://127.0.0.1/');
- $client->getEventDispatcher()->addSubscriber($h);
-
- $request = $client->get();
- $request->setResponse(new Response(200), true);
- $request->send();
-
- $this->assertSame($request, $h->getLastRequest());
- }
-
- public function testCanCastToString()
- {
- $client = new Client('http://127.0.0.1/');
- $h = new HistoryPlugin();
- $client->getEventDispatcher()->addSubscriber($h);
-
- $mock = new MockPlugin(array(
- new Response(301, array('Location' => '/redirect1', 'Content-Length' => 0)),
- new Response(307, array('Location' => '/redirect2', 'Content-Length' => 0)),
- new Response(200, array('Content-Length' => '2'), 'HI')
- ));
-
- $client->getEventDispatcher()->addSubscriber($mock);
- $request = $client->get();
- $request->send();
- $this->assertEquals(3, count($h));
- $this->assertEquals(3, count($mock->getReceivedRequests()));
-
- $h = str_replace("\r", '', $h);
- $this->assertContains("> GET / HTTP/1.1\nHost: 127.0.0.1\nUser-Agent:", $h);
- $this->assertContains("< HTTP/1.1 301 Moved Permanently\nLocation: /redirect1", $h);
- $this->assertContains("< HTTP/1.1 307 Temporary Redirect\nLocation: /redirect2", $h);
- $this->assertContains("< HTTP/1.1 200 OK\nContent-Length: 2\n\nHI", $h);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Log/LogPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Log/LogPluginTest.php
deleted file mode 100644
index ad663a5..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Log/LogPluginTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Log;
-
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Http\Client;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\Request;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Log\LogPlugin;
-use Guzzle\Common\Event;
-
-/**
- * @group server
- * @covers Guzzle\Plugin\Log\LogPlugin
- */
-class LogPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $adapter;
-
- public function setUp()
- {
- $this->adapter = new ClosureLogAdapter(function ($message) {
- echo $message;
- });
- }
-
- public function testIgnoresCurlEventsWhenNotWiringBodies()
- {
- $p = new LogPlugin($this->adapter);
- $this->assertNotEmpty($p->getSubscribedEvents());
- $event = new Event(array('request' => new Request('GET', 'http://foo.com')));
- $p->onCurlRead($event);
- $p->onCurlWrite($event);
- $p->onRequestBeforeSend($event);
- }
-
- public function testLogsWhenComplete()
- {
- $output = '';
- $p = new LogPlugin(new ClosureLogAdapter(function ($message) use (&$output) {
- $output = $message;
- }), '{method} {resource} | {code} {res_body}');
-
- $p->onRequestSent(new Event(array(
- 'request' => new Request('GET', 'http://foo.com'),
- 'response' => new Response(200, array(), 'Foo')
- )));
-
- $this->assertEquals('GET / | 200 Foo', $output);
- }
-
- public function testWiresBodiesWhenNeeded()
- {
- $client = new Client($this->getServer()->getUrl());
- $plugin = new LogPlugin($this->adapter, '{req_body} | {res_body}', true);
- $client->getEventDispatcher()->addSubscriber($plugin);
- $request = $client->put();
-
- // Send the response from the dummy server as the request body
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nsend");
- $stream = fopen($this->getServer()->getUrl(), 'r');
- $request->setBody(EntityBody::factory($stream, 4));
-
- $tmpFile = tempnam(sys_get_temp_dir(), 'non_repeatable');
- $request->setResponseBody(EntityBody::factory(fopen($tmpFile, 'w')));
-
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 8\r\n\r\nresponse");
-
- ob_start();
- $request->send();
- $message = ob_get_clean();
-
- unlink($tmpFile);
- $this->assertContains("send", $message);
- $this->assertContains("response", $message);
- }
-
- public function testHasHelpfulStaticFactoryMethod()
- {
- $s = fopen('php://temp', 'r+');
- $client = new Client();
- $client->addSubscriber(LogPlugin::getDebugPlugin(true, $s));
- $request = $client->put('http://foo.com', array('Content-Type' => 'Foo'), 'Bar');
- $request->setresponse(new Response(200), true);
- $request->send();
- rewind($s);
- $contents = stream_get_contents($s);
- $this->assertContains('# Request:', $contents);
- $this->assertContainsIns('PUT / HTTP/1.1', $contents);
- $this->assertContains('# Response:', $contents);
- $this->assertContainsIns('HTTP/1.1 200 OK', $contents);
- $this->assertContains('# Errors:', $contents);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/CommandContentMd5PluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/CommandContentMd5PluginTest.php
deleted file mode 100644
index 4bd4111..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/CommandContentMd5PluginTest.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Md5;
-
-use Guzzle\Common\Event;
-use Guzzle\Plugin\Md5\CommandContentMd5Plugin;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Service\Client;
-
-/**
- * @covers Guzzle\Plugin\Md5\CommandContentMd5Plugin
- */
-class CommandContentMd5PluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected function getClient()
- {
- $description = new ServiceDescription(array(
- 'operations' => array(
- 'test' => array(
- 'httpMethod' => 'PUT',
- 'parameters' => array(
- 'ContentMD5' => array(),
- 'Body' => array(
- 'location' => 'body'
- )
- )
- )
- )
- ));
-
- $client = new Client();
- $client->setDescription($description);
-
- return $client;
- }
-
- public function testHasEvents()
- {
- $this->assertNotEmpty(CommandContentMd5Plugin::getSubscribedEvents());
- }
-
- public function testValidatesMd5WhenParamExists()
- {
- $client = $this->getClient();
- $command = $client->getCommand('test', array(
- 'Body' => 'Foo',
- 'ContentMD5' => true
- ));
- $event = new Event(array('command' => $command));
- $request = $command->prepare();
- $plugin = new CommandContentMd5Plugin();
- $plugin->onCommandBeforeSend($event);
- $this->assertEquals('E1bGfXrRY42Ba/uCLdLCXQ==', (string) $request->getHeader('Content-MD5'));
- }
-
- public function testDoesNothingWhenNoPayloadExists()
- {
- $client = $this->getClient();
- $client->getDescription()->getOperation('test')->setHttpMethod('GET');
- $command = $client->getCommand('test');
- $event = new Event(array('command' => $command));
- $request = $command->prepare();
- $plugin = new CommandContentMd5Plugin();
- $plugin->onCommandBeforeSend($event);
- $this->assertNull($request->getHeader('Content-MD5'));
- }
-
- public function testAddsValidationToResponsesOfContentMd5()
- {
- $client = $this->getClient();
- $client->getDescription()->getOperation('test')->setHttpMethod('GET');
- $command = $client->getCommand('test', array(
- 'ValidateMD5' => true
- ));
- $event = new Event(array('command' => $command));
- $request = $command->prepare();
- $plugin = new CommandContentMd5Plugin();
- $plugin->onCommandBeforeSend($event);
- $listeners = $request->getEventDispatcher()->getListeners('request.complete');
- $this->assertNotEmpty($listeners);
- }
-
- public function testIgnoresValidationWhenDisabled()
- {
- $client = $this->getClient();
- $client->getDescription()->getOperation('test')->setHttpMethod('GET');
- $command = $client->getCommand('test', array(
- 'ValidateMD5' => false
- ));
- $event = new Event(array('command' => $command));
- $request = $command->prepare();
- $plugin = new CommandContentMd5Plugin();
- $plugin->onCommandBeforeSend($event);
- $listeners = $request->getEventDispatcher()->getListeners('request.complete');
- $this->assertEmpty($listeners);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/Md5ValidatorPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/Md5ValidatorPluginTest.php
deleted file mode 100644
index 482e92b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Md5/Md5ValidatorPluginTest.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Md5;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Md5\Md5ValidatorPlugin;
-
-/**
- * @covers Guzzle\Plugin\Md5\Md5ValidatorPlugin
- */
-class Md5ValidatorPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testValidatesMd5()
- {
- $plugin = new Md5ValidatorPlugin();
- $request = RequestFactory::getInstance()->create('GET', 'http://www.test.com/');
- $request->getEventDispatcher()->addSubscriber($plugin);
-
- $body = 'abc';
- $hash = md5($body);
- $response = new Response(200, array(
- 'Content-MD5' => $hash,
- 'Content-Length' => 3
- ), 'abc');
-
- $request->dispatch('request.complete', array(
- 'response' => $response
- ));
-
- // Try again with no Content-MD5
- $response->removeHeader('Content-MD5');
- $request->dispatch('request.complete', array(
- 'response' => $response
- ));
- }
-
- /**
- * @expectedException UnexpectedValueException
- */
- public function testThrowsExceptionOnInvalidMd5()
- {
- $plugin = new Md5ValidatorPlugin();
- $request = RequestFactory::getInstance()->create('GET', 'http://www.test.com/');
- $request->getEventDispatcher()->addSubscriber($plugin);
-
- $request->dispatch('request.complete', array(
- 'response' => new Response(200, array(
- 'Content-MD5' => 'foobar',
- 'Content-Length' => 3
- ), 'abc')
- ));
- }
-
- public function testSkipsWhenContentLengthIsTooLarge()
- {
- $plugin = new Md5ValidatorPlugin(false, 1);
- $request = RequestFactory::getInstance()->create('GET', 'http://www.test.com/');
- $request->getEventDispatcher()->addSubscriber($plugin);
-
- $request->dispatch('request.complete', array(
- 'response' => new Response(200, array(
- 'Content-MD5' => 'foobar',
- 'Content-Length' => 3
- ), 'abc')
- ));
- }
-
- public function testProperlyValidatesWhenUsingContentEncoding()
- {
- $plugin = new Md5ValidatorPlugin(true);
- $request = RequestFactory::getInstance()->create('GET', 'http://www.test.com/');
- $request->getEventDispatcher()->addSubscriber($plugin);
-
- // Content-MD5 is the MD5 hash of the canonical content after all
- // content-encoding has been applied. Because cURL will automatically
- // decompress entity bodies, we need to re-compress it to calculate.
- $body = EntityBody::factory('abc');
- $body->compress();
- $hash = $body->getContentMd5();
- $body->uncompress();
-
- $response = new Response(200, array(
- 'Content-MD5' => $hash,
- 'Content-Encoding' => 'gzip'
- ), 'abc');
- $request->dispatch('request.complete', array(
- 'response' => $response
- ));
- $this->assertEquals('abc', $response->getBody(true));
-
- // Try again with an unknown encoding
- $response = new Response(200, array(
- 'Content-MD5' => $hash,
- 'Content-Encoding' => 'foobar'
- ), 'abc');
- $request->dispatch('request.complete', array(
- 'response' => $response
- ));
-
- // Try again with compress
- $body->compress('bzip2.compress');
- $response = new Response(200, array(
- 'Content-MD5' => $body->getContentMd5(),
- 'Content-Encoding' => 'compress'
- ), 'abc');
- $request->dispatch('request.complete', array(
- 'response' => $response
- ));
-
- // Try again with encoding and disabled content-encoding checks
- $request->getEventDispatcher()->removeSubscriber($plugin);
- $plugin = new Md5ValidatorPlugin(false);
- $request->getEventDispatcher()->addSubscriber($plugin);
- $request->dispatch('request.complete', array(
- 'response' => $response
- ));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php
deleted file mode 100644
index 3af8fef..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Mock/MockPluginTest.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Mock;
-
-use Guzzle\Common\Event;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Mock\MockPlugin;
-use Guzzle\Http\Client;
-use Guzzle\Http\Exception\CurlException;
-
-/**
- * @covers Guzzle\Plugin\Mock\MockPlugin
- */
-class MockPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testDescribesSubscribedEvents()
- {
- $this->assertInternalType('array', MockPlugin::getSubscribedEvents());
- }
-
- public function testDescribesEvents()
- {
- $this->assertInternalType('array', MockPlugin::getAllEvents());
- }
-
- public function testCanBeTemporary()
- {
- $plugin = new MockPlugin();
- $this->assertFalse($plugin->isTemporary());
- $plugin = new MockPlugin(null, true);
- $this->assertTrue($plugin->isTemporary());
- }
-
- public function testIsCountable()
- {
- $plugin = new MockPlugin();
- $plugin->addResponse(Response::fromMessage("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"));
- $this->assertEquals(1, count($plugin));
- }
-
- /**
- * @depends testIsCountable
- */
- public function testCanClearQueue()
- {
- $plugin = new MockPlugin();
- $plugin->addResponse(Response::fromMessage("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"));
- $plugin->clearQueue();
- $this->assertEquals(0, count($plugin));
- }
-
- public function testCanInspectQueue()
- {
- $plugin = new MockPlugin();
- $this->assertInternalType('array', $plugin->getQueue());
- $plugin->addResponse(Response::fromMessage("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"));
- $queue = $plugin->getQueue();
- $this->assertInternalType('array', $queue);
- $this->assertEquals(1, count($queue));
- }
-
- public function testRetrievesResponsesFromFiles()
- {
- $response = MockPlugin::getMockFile(__DIR__ . '/../../TestData/mock_response');
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $response);
- $this->assertEquals(200, $response->getStatusCode());
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- public function testThrowsExceptionWhenResponseFileIsNotFound()
- {
- MockPlugin::getMockFile('missing/filename');
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- public function testInvalidResponsesThrowAnException()
- {
- $p = new MockPlugin();
- $p->addResponse($this);
- }
-
- public function testAddsResponseObjectsToQueue()
- {
- $p = new MockPlugin();
- $response = Response::fromMessage("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $p->addResponse($response);
- $this->assertEquals(array($response), $p->getQueue());
- }
-
- public function testAddsResponseFilesToQueue()
- {
- $p = new MockPlugin();
- $p->addResponse(__DIR__ . '/../../TestData/mock_response');
- $this->assertEquals(1, count($p));
- }
-
- /**
- * @depends testAddsResponseFilesToQueue
- */
- public function testAddsMockResponseToRequestFromClient()
- {
- $p = new MockPlugin();
- $response = MockPlugin::getMockFile(__DIR__ . '/../../TestData/mock_response');
- $p->addResponse($response);
-
- $client = new Client('http://127.0.0.1:123/');
- $client->getEventDispatcher()->addSubscriber($p, 9999);
- $request = $client->get();
- $request->send();
-
- $this->assertSame($response, $request->getResponse());
- $this->assertEquals(0, count($p));
- }
-
- /**
- * @depends testAddsResponseFilesToQueue
- * @expectedException \OutOfBoundsException
- */
- public function testUpdateThrowsExceptionWhenEmpty()
- {
- $p = new MockPlugin();
- $p->onRequestBeforeSend(new Event());
- }
-
- /**
- * @depends testAddsMockResponseToRequestFromClient
- */
- public function testDetachesTemporaryWhenEmpty()
- {
- $p = new MockPlugin(null, true);
- $p->addResponse(MockPlugin::getMockFile(__DIR__ . '/../../TestData/mock_response'));
- $client = new Client('http://127.0.0.1:123/');
- $client->getEventDispatcher()->addSubscriber($p, 9999);
- $request = $client->get();
- $request->send();
-
- $this->assertFalse($this->hasSubscriber($client, $p));
- }
-
- public function testLoadsResponsesFromConstructor()
- {
- $p = new MockPlugin(array(new Response(200)));
- $this->assertEquals(1, $p->count());
- }
-
- public function testStoresMockedRequests()
- {
- $p = new MockPlugin(array(new Response(200), new Response(200)));
- $client = new Client('http://127.0.0.1:123/');
- $client->getEventDispatcher()->addSubscriber($p, 9999);
-
- $request1 = $client->get();
- $request1->send();
- $this->assertEquals(array($request1), $p->getReceivedRequests());
-
- $request2 = $client->get();
- $request2->send();
- $this->assertEquals(array($request1, $request2), $p->getReceivedRequests());
-
- $p->flush();
- $this->assertEquals(array(), $p->getReceivedRequests());
- }
-
- public function testReadsBodiesFromMockedRequests()
- {
- $p = new MockPlugin(array(new Response(200)));
- $p->readBodies(true);
- $client = new Client('http://127.0.0.1:123/');
- $client->getEventDispatcher()->addSubscriber($p, 9999);
-
- $body = EntityBody::factory('foo');
- $request = $client->put();
- $request->setBody($body);
- $request->send();
- $this->assertEquals(3, $body->ftell());
- }
-
- public function testCanMockBadRequestExceptions()
- {
- $client = new Client('http://127.0.0.1:123/');
- $ex = new CurlException('Foo');
- $mock = new MockPlugin(array($ex));
- $client->addSubscriber($mock);
- $request = $client->get('foo');
-
- try {
- $request->send();
- $this->fail('Did not dequeue an exception');
- } catch (CurlException $e) {
- $this->assertSame($e, $ex);
- $this->assertSame($request, $ex->getRequest());
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Oauth/OauthPluginTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Oauth/OauthPluginTest.php
deleted file mode 100644
index 3892fb6..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Oauth/OauthPluginTest.php
+++ /dev/null
@@ -1,345 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Plugin\Oauth;
-
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Http\QueryAggregator\CommaAggregator;
-use Guzzle\Plugin\Oauth\OauthPlugin;
-use Guzzle\Common\Event;
-
-/**
- * @covers Guzzle\Plugin\Oauth\OauthPlugin
- */
-class OauthPluginTest extends \Guzzle\Tests\GuzzleTestCase
-{
- const TIMESTAMP = '1327274290';
- const NONCE = 'e7aa11195ca58349bec8b5ebe351d3497eb9e603';
-
- protected $config = array(
- 'consumer_key' => 'foo',
- 'consumer_secret' => 'bar',
- 'token' => 'count',
- 'token_secret' => 'dracula'
- );
-
- protected function getRequest()
- {
- return RequestFactory::getInstance()->create('POST', 'http://www.test.com/path?a=b&c=d', null, array(
- 'e' => 'f'
- ));
- }
-
- public function testSubscribesToEvents()
- {
- $events = OauthPlugin::getSubscribedEvents();
- $this->assertArrayHasKey('request.before_send', $events);
- }
-
- public function testAcceptsConfigurationData()
- {
- $p = new OauthPlugin($this->config);
-
- // Access the config object
- $class = new \ReflectionClass($p);
- $property = $class->getProperty('config');
- $property->setAccessible(true);
- $config = $property->getValue($p);
-
- $this->assertEquals('foo', $config['consumer_key']);
- $this->assertEquals('bar', $config['consumer_secret']);
- $this->assertEquals('count', $config['token']);
- $this->assertEquals('dracula', $config['token_secret']);
- $this->assertEquals('1.0', $config['version']);
- $this->assertEquals('HMAC-SHA1', $config['signature_method']);
- $this->assertEquals('header', $config['request_method']);
- }
-
- public function testCreatesStringToSignFromPostRequest()
- {
- $p = new OauthPlugin($this->config);
- $request = $this->getRequest();
- $signString = $p->getStringToSign($request, self::TIMESTAMP, self::NONCE);
-
- $this->assertContains('&e=f', rawurldecode($signString));
-
- $expectedSignString =
- // Method and URL
- 'POST&http%3A%2F%2Fwww.test.com%2Fpath' .
- // Sorted parameters from query string and body
- '&a%3Db%26c%3Dd%26e%3Df%26oauth_consumer_key%3Dfoo' .
- '%26oauth_nonce%3De7aa11195ca58349bec8b5ebe351d3497eb9e603%26' .
- 'oauth_signature_method%3DHMAC-SHA1' .
- '%26oauth_timestamp%3D' . self::TIMESTAMP . '%26oauth_token%3Dcount%26oauth_version%3D1.0';
-
- $this->assertEquals($expectedSignString, $signString);
- }
-
- public function testCreatesStringToSignIgnoringPostFields()
- {
- $config = $this->config;
- $config['disable_post_params'] = true;
- $p = new OauthPlugin($config);
- $request = $this->getRequest();
- $sts = rawurldecode($p->getStringToSign($request, self::TIMESTAMP, self::NONCE));
- $this->assertNotContains('&e=f', $sts);
- }
-
- public function testCreatesStringToSignFromPostRequestWithCustomContentType()
- {
- $p = new OauthPlugin($this->config);
- $request = $this->getRequest();
- $request->setHeader('Content-Type', 'Foo');
- $this->assertEquals(
- // Method and URL
- 'POST&http%3A%2F%2Fwww.test.com%2Fpath' .
- // Sorted parameters from query string and body
- '&a%3Db%26c%3Dd%26oauth_consumer_key%3Dfoo' .
- '%26oauth_nonce%3D'. self::NONCE .'%26' .
- 'oauth_signature_method%3DHMAC-SHA1' .
- '%26oauth_timestamp%3D' . self::TIMESTAMP . '%26oauth_token%3Dcount%26oauth_version%3D1.0',
- $p->getStringToSign($request, self::TIMESTAMP, self::NONCE)
- );
- }
-
- /**
- * @depends testCreatesStringToSignFromPostRequest
- */
- public function testConvertsBooleansToStrings()
- {
- $p = new OauthPlugin($this->config);
- $request = $this->getRequest();
- $request->getQuery()->set('a', true);
- $request->getQuery()->set('c', false);
- $this->assertContains('&a%3Dtrue%26c%3Dfalse', $p->getStringToSign($request, self::TIMESTAMP, self::NONCE));
- }
-
- public function testCreatesStringToSignFromPostRequestWithNullValues()
- {
- $config = array(
- 'consumer_key' => 'foo',
- 'consumer_secret' => 'bar',
- 'token' => null,
- 'token_secret' => 'dracula'
- );
-
- $p = new OauthPlugin($config);
- $request = $this->getRequest();
- $signString = $p->getStringToSign($request, self::TIMESTAMP, self::NONCE);
-
- $this->assertContains('&e=f', rawurldecode($signString));
-
- $expectedSignString = // Method and URL
- 'POST&http%3A%2F%2Fwww.test.com%2Fpath' .
- // Sorted parameters from query string and body
- '&a%3Db%26c%3Dd%26e%3Df%26oauth_consumer_key%3Dfoo' .
- '%26oauth_nonce%3De7aa11195ca58349bec8b5ebe351d3497eb9e603%26' .
- 'oauth_signature_method%3DHMAC-SHA1' .
- '%26oauth_timestamp%3D' . self::TIMESTAMP . '%26oauth_version%3D1.0';
-
- $this->assertEquals($expectedSignString, $signString);
- }
-
- /**
- * @depends testCreatesStringToSignFromPostRequest
- */
- public function testMultiDimensionalArray()
- {
- $p = new OauthPlugin($this->config);
- $request = $this->getRequest();
- $request->getQuery()->set('a', array('b' => array('e' => 'f', 'c' => 'd')));
- $this->assertContains('a%255Bb%255D%255Bc%255D%3Dd%26a%255Bb%255D%255Be%255D%3Df%26c%3Dd%26e%3Df%26', $p->getStringToSign($request, self::TIMESTAMP, self::NONCE));
- }
-
- /**
- * @depends testMultiDimensionalArray
- */
- public function testMultiDimensionalArrayWithNonDefaultQueryAggregator()
- {
- $p = new OauthPlugin($this->config);
- $request = $this->getRequest();
- $aggregator = new CommaAggregator();
- $query = $request->getQuery()->setAggregator($aggregator)
- ->set('g', array('h', 'i', 'j'))
- ->set('k', array('l'))
- ->set('m', array('n', 'o'));
- $this->assertContains('a%3Db%26c%3Dd%26e%3Df%26g%3Dh%2Ci%2Cj%26k%3Dl%26m%3Dn%2Co', $p->getStringToSign($request, self::TIMESTAMP, self::NONCE));
- }
-
- /**
- * @depends testCreatesStringToSignFromPostRequest
- */
- public function testSignsStrings()
- {
- $p = new OauthPlugin(array_merge($this->config, array(
- 'signature_callback' => function($string, $key) {
- return "_{$string}|{$key}_";
- }
- )));
- $request = $this->getRequest();
- $sig = $p->getSignature($request, self::TIMESTAMP, self::NONCE);
- $this->assertEquals(
- '_POST&http%3A%2F%2Fwww.test.com%2Fpath&a%3Db%26c%3Dd%26e%3Df%26oauth_consumer_key%3Dfoo' .
- '%26oauth_nonce%3D'. self::NONCE .'%26oauth_signature_method%3DHMAC-SHA1' .
- '%26oauth_timestamp%3D' . self::TIMESTAMP . '%26oauth_token%3Dcount%26oauth_version%3D1.0|' .
- 'bar&dracula_',
- base64_decode($sig)
- );
- }
-
- /**
- * Test that the Oauth is signed correctly and that extra strings haven't been added
- * to the authorization header.
- */
- public function testSignsOauthRequests()
- {
- $p = new OauthPlugin($this->config);
- $event = new Event(array(
- 'request' => $this->getRequest(),
- 'timestamp' => self::TIMESTAMP
- ));
- $params = $p->onRequestBeforeSend($event);
-
- $this->assertTrue($event['request']->hasHeader('Authorization'));
-
- $authorizationHeader = (string)$event['request']->getHeader('Authorization');
-
- $this->assertStringStartsWith('OAuth ', $authorizationHeader);
-
- $stringsToCheck = array(
- 'oauth_consumer_key="foo"',
- 'oauth_nonce="'.urlencode($params['oauth_nonce']).'"',
- 'oauth_signature="'.urlencode($params['oauth_signature']).'"',
- 'oauth_signature_method="HMAC-SHA1"',
- 'oauth_timestamp="' . self::TIMESTAMP . '"',
- 'oauth_token="count"',
- 'oauth_version="1.0"',
- );
-
- $totalLength = strlen('OAuth ');
-
- //Separator is not used before first parameter.
- $separator = '';
-
- foreach ($stringsToCheck as $stringToCheck) {
- $this->assertContains($stringToCheck, $authorizationHeader);
- $totalLength += strlen($separator);
- $totalLength += strlen($stringToCheck);
- $separator = ', ';
- }
-
- // Technically this test is not universally valid. It would be allowable to have extra \n characters
- // in the Authorization header. However Guzzle does not do this, so we just perform a simple check
- // on length to validate the Authorization header is composed of only the strings above.
- $this->assertEquals($totalLength, strlen($authorizationHeader), 'Authorization has extra characters i.e. contains extra elements compared to stringsToCheck.');
- }
-
- public function testSignsOauthQueryStringRequest()
- {
- $config = array_merge(
- $this->config,
- array('request_method' => OauthPlugin::REQUEST_METHOD_QUERY)
- );
-
- $p = new OauthPlugin($config);
- $event = new Event(array(
- 'request' => $this->getRequest(),
- 'timestamp' => self::TIMESTAMP
- ));
- $params = $p->onRequestBeforeSend($event);
-
- $this->assertFalse($event['request']->hasHeader('Authorization'));
-
- $stringsToCheck = array(
- 'a=b',
- 'c=d',
- 'oauth_consumer_key=foo',
- 'oauth_nonce='.urlencode($params['oauth_nonce']),
- 'oauth_signature='.urlencode($params['oauth_signature']),
- 'oauth_signature_method=HMAC-SHA1',
- 'oauth_timestamp='.self::TIMESTAMP,
- 'oauth_token=count',
- 'oauth_version=1.0',
- );
-
- $queryString = (string) $event['request']->getQuery();
-
- $totalLength = strlen('?');
-
- //Separator is not used before first parameter.
- $separator = '';
-
- foreach ($stringsToCheck as $stringToCheck) {
- $this->assertContains($stringToCheck, $queryString);
- $totalLength += strlen($separator);
- $totalLength += strlen($stringToCheck);
- $separator = '&';
- }
-
- // Removes the last query string separator '&'
- $totalLength -= 1;
-
- $this->assertEquals($totalLength, strlen($queryString), 'Query string has extra characters i.e. contains extra elements compared to stringsToCheck.');
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testInvalidArgumentExceptionOnMethodError()
- {
- $config = array_merge(
- $this->config,
- array('request_method' => 'FakeMethod')
- );
-
- $p = new OauthPlugin($config);
- $event = new Event(array(
- 'request' => $this->getRequest(),
- 'timestamp' => self::TIMESTAMP
- ));
-
- $p->onRequestBeforeSend($event);
- }
-
- public function testDoesNotAddFalseyValuesToAuthorization()
- {
- unset($this->config['token']);
- $p = new OauthPlugin($this->config);
- $event = new Event(array('request' => $this->getRequest(), 'timestamp' => self::TIMESTAMP));
- $p->onRequestBeforeSend($event);
- $this->assertTrue($event['request']->hasHeader('Authorization'));
- $this->assertNotContains('oauth_token=', (string) $event['request']->getHeader('Authorization'));
- }
-
- public function testOptionalOauthParametersAreNotAutomaticallyAdded()
- {
- // The only required Oauth parameters are the consumer key and secret. That is enough credentials
- // for signing oauth requests.
- $config = array(
- 'consumer_key' => 'foo',
- 'consumer_secret' => 'bar',
- );
-
- $plugin = new OauthPlugin($config);
- $event = new Event(array(
- 'request' => $this->getRequest(),
- 'timestamp' => self::TIMESTAMP
- ));
-
- $timestamp = $plugin->getTimestamp($event);
- $request = $event['request'];
- $nonce = $plugin->generateNonce($request);
-
- $paramsToSign = $plugin->getParamsToSign($request, $timestamp, $nonce);
-
- $optionalParams = array(
- 'callback' => 'oauth_callback',
- 'token' => 'oauth_token',
- 'verifier' => 'oauth_verifier',
- 'token_secret' => 'token_secret'
- );
-
- foreach ($optionalParams as $optionName => $oauthName) {
- $this->assertArrayNotHasKey($oauthName, $paramsToSign, "Optional Oauth param '$oauthName' was not set via config variable '$optionName', but it is listed in getParamsToSign().");
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/AbstractConfigLoaderTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/AbstractConfigLoaderTest.php
deleted file mode 100644
index 8b42fb8..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/AbstractConfigLoaderTest.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service;
-
-/**
- * @covers Guzzle\Service\AbstractConfigLoader
- */
-class AbstractConfigLoaderTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var \Guzzle\Service\AbstractConfigLoader */
- protected $loader;
-
- /** @var array Any files that need to be deleted on tear down */
- protected $cleanup = array();
-
- public function setUp()
- {
- $this->loader = $this->getMockBuilder('Guzzle\Service\AbstractConfigLoader')
- ->setMethods(array('build'))
- ->getMockForAbstractClass();
- }
-
- public function tearDown()
- {
- foreach ($this->cleanup as $file) {
- unlink($file);
- }
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testOnlyLoadsSupportedTypes()
- {
- $this->loader->load(new \stdClass());
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- * @expectedExceptionMessage Unable to open fooooooo.json
- */
- public function testFileMustBeReadable()
- {
- $this->loader->load('fooooooo.json');
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- * @expectedExceptionMessage Unknown file extension
- */
- public function testMustBeSupportedExtension()
- {
- $this->loader->load(dirname(__DIR__) . '/TestData/FileBody.txt');
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- * @expectedExceptionMessage Error loading JSON data from
- */
- public function testJsonMustBeValue()
- {
- $filename = tempnam(sys_get_temp_dir(), 'json') . '.json';
- file_put_contents($filename, '{/{./{}foo');
- $this->cleanup[] = $filename;
- $this->loader->load($filename);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- * @expectedExceptionMessage PHP files must return an array
- */
- public function testPhpFilesMustReturnAnArray()
- {
- $filename = tempnam(sys_get_temp_dir(), 'php') . '.php';
- file_put_contents($filename, '<?php $fdr = false;');
- $this->cleanup[] = $filename;
- $this->loader->load($filename);
- }
-
- public function testLoadsPhpFileIncludes()
- {
- $filename = tempnam(sys_get_temp_dir(), 'php') . '.php';
- file_put_contents($filename, '<?php return array("foo" => "bar");');
- $this->cleanup[] = $filename;
- $this->loader->expects($this->exactly(1))->method('build')->will($this->returnArgument(0));
- $config = $this->loader->load($filename);
- $this->assertEquals(array('foo' => 'bar'), $config);
- }
-
- public function testCanCreateFromJson()
- {
- $file = dirname(__DIR__) . '/TestData/services/json1.json';
- // The build method will just return the config data
- $this->loader->expects($this->exactly(1))->method('build')->will($this->returnArgument(0));
- $data = $this->loader->load($file);
- // Ensure that the config files were merged using the includes directives
- $this->assertArrayHasKey('includes', $data);
- $this->assertArrayHasKey('services', $data);
- $this->assertInternalType('array', $data['services']['foo']);
- $this->assertInternalType('array', $data['services']['abstract']);
- $this->assertInternalType('array', $data['services']['mock']);
- $this->assertEquals('bar', $data['services']['foo']['params']['baz']);
- }
-
- public function testUsesAliases()
- {
- $file = dirname(__DIR__) . '/TestData/services/json1.json';
- $this->loader->addAlias('foo', $file);
- // The build method will just return the config data
- $this->loader->expects($this->exactly(1))->method('build')->will($this->returnArgument(0));
- $data = $this->loader->load('foo');
- $this->assertEquals('bar', $data['services']['foo']['params']['baz']);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- * @expectedExceptionMessage Unable to open foo.json
- */
- public function testCanRemoveAliases()
- {
- $file = dirname(__DIR__) . '/TestData/services/json1.json';
- $this->loader->addAlias('foo.json', $file);
- $this->loader->removeAlias('foo.json');
- $this->loader->load('foo.json');
- }
-
- public function testCanLoadArraysWithIncludes()
- {
- $file = dirname(__DIR__) . '/TestData/services/json1.json';
- $config = array('includes' => array($file));
- // The build method will just return the config data
- $this->loader->expects($this->exactly(1))->method('build')->will($this->returnArgument(0));
- $data = $this->loader->load($config);
- $this->assertEquals('bar', $data['services']['foo']['params']['baz']);
- }
-
- public function testDoesNotEnterInfiniteLoop()
- {
- $prefix = $file = dirname(__DIR__) . '/TestData/description';
- $this->loader->load("{$prefix}/baz.json");
- $this->assertCount(4, $this->readAttribute($this->loader, 'loadedFiles'));
- // Ensure that the internal list of loaded files is reset
- $this->loader->load("{$prefix}/../test_service2.json");
- $this->assertCount(1, $this->readAttribute($this->loader, 'loadedFiles'));
- // Ensure that previously loaded files will be reloaded when starting fresh
- $this->loader->load("{$prefix}/baz.json");
- $this->assertCount(4, $this->readAttribute($this->loader, 'loadedFiles'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderLoaderTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderLoaderTest.php
deleted file mode 100644
index f63070e..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderLoaderTest.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Builder;
-
-use Guzzle\Service\Builder\ServiceBuilderLoader;
-
-/**
- * @covers Guzzle\Service\Builder\ServiceBuilderLoader
- */
-class ServiceBuilderLoaderTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testBuildsServiceBuilders()
- {
- $arrayFactory = new ServiceBuilderLoader();
-
- $data = array(
- 'services' => array(
- 'abstract' => array(
- 'params' => array(
- 'access_key' => 'xyz',
- 'secret' => 'abc',
- ),
- ),
- 'foo' => array(
- 'extends' => 'abstract',
- 'params' => array(
- 'baz' => 'bar',
- ),
- ),
- 'mock' => array(
- 'extends' => 'abstract',
- 'params' => array(
- 'username' => 'foo',
- 'password' => 'baz',
- 'subdomain' => 'bar',
- )
- )
- )
- );
-
- $builder = $arrayFactory->load($data);
-
- // Ensure that services were parsed
- $this->assertTrue(isset($builder['mock']));
- $this->assertTrue(isset($builder['abstract']));
- $this->assertTrue(isset($builder['foo']));
- $this->assertFalse(isset($builder['jimmy']));
- }
-
- /**
- * @expectedException Guzzle\Service\Exception\ServiceNotFoundException
- * @expectedExceptionMessage foo is trying to extend a non-existent service: abstract
- */
- public function testThrowsExceptionWhenExtendingNonExistentService()
- {
- $arrayFactory = new ServiceBuilderLoader();
-
- $data = array(
- 'services' => array(
- 'foo' => array(
- 'extends' => 'abstract'
- )
- )
- );
-
- $builder = $arrayFactory->load($data);
- }
-
- public function testAllowsGlobalParameterOverrides()
- {
- $arrayFactory = new ServiceBuilderLoader();
-
- $data = array(
- 'services' => array(
- 'foo' => array(
- 'params' => array(
- 'foo' => 'baz',
- 'bar' => 'boo'
- )
- )
- )
- );
-
- $builder = $arrayFactory->load($data, array(
- 'bar' => 'jar',
- 'far' => 'car'
- ));
-
- $compiled = json_decode($builder->serialize(), true);
- $this->assertEquals(array(
- 'foo' => 'baz',
- 'bar' => 'jar',
- 'far' => 'car'
- ), $compiled['foo']['params']);
- }
-
- public function tstDoesNotErrorOnCircularReferences()
- {
- $arrayFactory = new ServiceBuilderLoader();
- $arrayFactory->load(array(
- 'services' => array(
- 'too' => array('extends' => 'ball'),
- 'ball' => array('extends' => 'too'),
- )
- ));
- }
-
- public function configProvider()
- {
- $foo = array(
- 'extends' => 'bar',
- 'class' => 'stdClass',
- 'params' => array('a' => 'test', 'b' => '456')
- );
-
- return array(
- array(
- // Does not extend the existing `foo` service but overwrites it
- array(
- 'services' => array(
- 'foo' => $foo,
- 'bar' => array('params' => array('baz' => '123'))
- )
- ),
- array(
- 'services' => array(
- 'foo' => array('class' => 'Baz')
- )
- ),
- array(
- 'services' => array(
- 'foo' => array('class' => 'Baz'),
- 'bar' => array('params' => array('baz' => '123'))
- )
- )
- ),
- array(
- // Extends the existing `foo` service
- array(
- 'services' => array(
- 'foo' => $foo,
- 'bar' => array('params' => array('baz' => '123'))
- )
- ),
- array(
- 'services' => array(
- 'foo' => array(
- 'extends' => 'foo',
- 'params' => array('b' => '123', 'c' => 'def')
- )
- )
- ),
- array(
- 'services' => array(
- 'foo' => array(
- 'extends' => 'bar',
- 'class' => 'stdClass',
- 'params' => array('a' => 'test', 'b' => '123', 'c' => 'def')
- ),
- 'bar' => array('params' => array('baz' => '123'))
- )
- )
- )
- );
- }
-
- /**
- * @dataProvider configProvider
- */
- public function testCombinesConfigs($a, $b, $c)
- {
- $l = new ServiceBuilderLoader();
- $m = new \ReflectionMethod($l, 'mergeData');
- $m->setAccessible(true);
- $this->assertEquals($c, $m->invoke($l, $a, $b));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php
deleted file mode 100644
index e1b3a1d..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php
+++ /dev/null
@@ -1,317 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service;
-
-use Guzzle\Plugin\History\HistoryPlugin;
-use Guzzle\Service\Builder\ServiceBuilder;
-use Guzzle\Service\Client;
-
-/**
- * @covers Guzzle\Service\Builder\ServiceBuilder
- */
-class ServiceBuilderTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $arrayData = array(
- 'michael.mock' => array(
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'username' => 'michael',
- 'password' => 'testing123',
- 'subdomain' => 'michael',
- ),
- ),
- 'billy.mock' => array(
- 'alias' => 'Hello!',
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'username' => 'billy',
- 'password' => 'passw0rd',
- 'subdomain' => 'billy',
- ),
- ),
- 'billy.testing' => array(
- 'extends' => 'billy.mock',
- 'params' => array(
- 'subdomain' => 'test.billy',
- ),
- ),
- 'missing_params' => array(
- 'extends' => 'billy.mock'
- )
- );
-
- public function testAllowsSerialization()
- {
- $builder = ServiceBuilder::factory($this->arrayData);
- $cached = unserialize(serialize($builder));
- $this->assertEquals($cached, $builder);
- }
-
- public function testDelegatesFactoryMethodToAbstractFactory()
- {
- $builder = ServiceBuilder::factory($this->arrayData);
- $c = $builder->get('michael.mock');
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\MockClient', $c);
- }
-
- /**
- * @expectedException Guzzle\Service\Exception\ServiceNotFoundException
- * @expectedExceptionMessage No service is registered as foobar
- */
- public function testThrowsExceptionWhenGettingInvalidClient()
- {
- ServiceBuilder::factory($this->arrayData)->get('foobar');
- }
-
- public function testStoresClientCopy()
- {
- $builder = ServiceBuilder::factory($this->arrayData);
- $client = $builder->get('michael.mock');
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\MockClient', $client);
- $this->assertEquals('http://127.0.0.1:8124/v1/michael', $client->getBaseUrl());
- $this->assertEquals($client, $builder->get('michael.mock'));
-
- // Get another client but throw this one away
- $client2 = $builder->get('billy.mock', true);
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\MockClient', $client2);
- $this->assertEquals('http://127.0.0.1:8124/v1/billy', $client2->getBaseUrl());
-
- // Make sure the original client is still there and set
- $this->assertTrue($client === $builder->get('michael.mock'));
-
- // Create a new billy.mock client that is stored
- $client3 = $builder->get('billy.mock');
-
- // Make sure that the stored billy.mock client is equal to the other stored client
- $this->assertTrue($client3 === $builder->get('billy.mock'));
-
- // Make sure that this client is not equal to the previous throwaway client
- $this->assertFalse($client2 === $builder->get('billy.mock'));
- }
-
- public function testBuildersPassOptionsThroughToClients()
- {
- $s = new ServiceBuilder(array(
- 'michael.mock' => array(
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'base_url' => 'http://www.test.com/',
- 'subdomain' => 'michael',
- 'password' => 'test',
- 'username' => 'michael',
- 'curl.curlopt_proxyport' => 8080
- )
- )
- ));
-
- $c = $s->get('michael.mock');
- $this->assertEquals(8080, $c->getConfig('curl.curlopt_proxyport'));
- }
-
- public function testUsesTheDefaultBuilderWhenNoBuilderIsSpecified()
- {
- $s = new ServiceBuilder(array(
- 'michael.mock' => array(
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'base_url' => 'http://www.test.com/',
- 'subdomain' => 'michael',
- 'password' => 'test',
- 'username' => 'michael',
- 'curl.curlopt_proxyport' => 8080
- )
- )
- ));
-
- $c = $s->get('michael.mock');
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\MockClient', $c);
- }
-
- public function testUsedAsArray()
- {
- $b = ServiceBuilder::factory($this->arrayData);
- $this->assertTrue($b->offsetExists('michael.mock'));
- $this->assertFalse($b->offsetExists('not_there'));
- $this->assertInstanceOf('Guzzle\Service\Client', $b['michael.mock']);
-
- unset($b['michael.mock']);
- $this->assertFalse($b->offsetExists('michael.mock'));
-
- $b['michael.mock'] = new Client('http://www.test.com/');
- $this->assertInstanceOf('Guzzle\Service\Client', $b['michael.mock']);
- }
-
- public function testFactoryCanCreateFromJson()
- {
- $tmp = sys_get_temp_dir() . '/test.js';
- file_put_contents($tmp, json_encode($this->arrayData));
- $b = ServiceBuilder::factory($tmp);
- unlink($tmp);
- $s = $b->get('billy.testing');
- $this->assertEquals('test.billy', $s->getConfig('subdomain'));
- $this->assertEquals('billy', $s->getConfig('username'));
- }
-
- public function testFactoryCanCreateFromArray()
- {
- $b = ServiceBuilder::factory($this->arrayData);
- $s = $b->get('billy.testing');
- $this->assertEquals('test.billy', $s->getConfig('subdomain'));
- $this->assertEquals('billy', $s->getConfig('username'));
- }
-
- public function testFactoryDoesNotRequireParams()
- {
- $b = ServiceBuilder::factory($this->arrayData);
- $s = $b->get('missing_params');
- $this->assertEquals('billy', $s->getConfig('username'));
- }
-
- public function testBuilderAllowsReferencesBetweenClients()
- {
- $builder = ServiceBuilder::factory(array(
- 'a' => array(
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'other_client' => '{b}',
- 'username' => 'x',
- 'password' => 'y',
- 'subdomain' => 'z'
- )
- ),
- 'b' => array(
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'username' => '1',
- 'password' => '2',
- 'subdomain' => '3'
- )
- )
- ));
-
- $client = $builder['a'];
- $this->assertEquals('x', $client->getConfig('username'));
- $this->assertSame($builder['b'], $client->getConfig('other_client'));
- $this->assertEquals('1', $builder['b']->getConfig('username'));
- }
-
- public function testEmitsEventsWhenClientsAreCreated()
- {
- // Ensure that the client signals that it emits an event
- $this->assertEquals(array('service_builder.create_client'), ServiceBuilder::getAllEvents());
-
- // Create a test service builder
- $builder = ServiceBuilder::factory(array(
- 'a' => array(
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'username' => 'test',
- 'password' => '123',
- 'subdomain' => 'z'
- )
- )
- ));
-
- // Add an event listener to pick up client creation events
- $emits = 0;
- $builder->getEventDispatcher()->addListener('service_builder.create_client', function($event) use (&$emits) {
- $emits++;
- });
-
- // Get the 'a' client by name
- $client = $builder->get('a');
-
- // Ensure that the event was emitted once, and that the client was present
- $this->assertEquals(1, $emits);
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\MockClient', $client);
- }
-
- public function testCanAddGlobalParametersToServicesOnLoad()
- {
- $builder = ServiceBuilder::factory($this->arrayData, array(
- 'username' => 'fred',
- 'new_value' => 'test'
- ));
-
- $data = json_decode($builder->serialize(), true);
-
- foreach ($data as $service) {
- $this->assertEquals('fred', $service['params']['username']);
- $this->assertEquals('test', $service['params']['new_value']);
- }
- }
-
- public function testAddsGlobalPlugins()
- {
- $b = new ServiceBuilder($this->arrayData);
- $b->addGlobalPlugin(new HistoryPlugin());
- $s = $b->get('michael.mock');
- $this->assertTrue($s->getEventDispatcher()->hasListeners('request.sent'));
- }
-
- public function testCanGetData()
- {
- $b = new ServiceBuilder($this->arrayData);
- $this->assertEquals($this->arrayData['michael.mock'], $b->getData('michael.mock'));
- $this->assertNull($b->getData('ewofweoweofe'));
- }
-
- public function testCanGetByAlias()
- {
- $b = new ServiceBuilder($this->arrayData);
- $this->assertSame($b->get('billy.mock'), $b->get('Hello!'));
- }
-
- public function testCanOverwriteParametersForThrowawayClients()
- {
- $b = new ServiceBuilder($this->arrayData);
-
- $c1 = $b->get('michael.mock');
- $this->assertEquals('michael', $c1->getConfig('username'));
-
- $c2 = $b->get('michael.mock', array('username' => 'jeremy'));
- $this->assertEquals('jeremy', $c2->getConfig('username'));
- }
-
- public function testGettingAThrowawayClientWithParametersDoesNotAffectGettingOtherClients()
- {
- $b = new ServiceBuilder($this->arrayData);
-
- $c1 = $b->get('michael.mock', array('username' => 'jeremy'));
- $this->assertEquals('jeremy', $c1->getConfig('username'));
-
- $c2 = $b->get('michael.mock');
- $this->assertEquals('michael', $c2->getConfig('username'));
- }
-
- public function testCanUseArbitraryData()
- {
- $b = new ServiceBuilder();
- $b['a'] = 'foo';
- $this->assertTrue(isset($b['a']));
- $this->assertEquals('foo', $b['a']);
- unset($b['a']);
- $this->assertFalse(isset($b['a']));
- }
-
- public function testCanRegisterServiceData()
- {
- $b = new ServiceBuilder();
- $b['a'] = array(
- 'class' => 'Guzzle\Tests\Service\Mock\MockClient',
- 'params' => array(
- 'username' => 'billy',
- 'password' => 'passw0rd',
- 'subdomain' => 'billy',
- )
- );
- $this->assertTrue(isset($b['a']));
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\MockClient', $b['a']);
- $client = $b['a'];
- unset($b['a']);
- $this->assertFalse(isset($b['a']));
- // Ensure that instantiated clients can be registered
- $b['mock'] = $client;
- $this->assertSame($client, $b['mock']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/CachingConfigLoaderTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/CachingConfigLoaderTest.php
deleted file mode 100644
index b8245ad..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/CachingConfigLoaderTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service;
-
-use Guzzle\Cache\DoctrineCacheAdapter;
-use Guzzle\Service\CachingConfigLoader;
-use Doctrine\Common\Cache\ArrayCache;
-
-/**
- * @covers Guzzle\Service\CachingConfigLoader
- */
-class CachingConfigLoaderTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testLoadsPhpFileIncludes()
- {
- $cache = new DoctrineCacheAdapter(new ArrayCache());
- $loader = $this->getMockBuilder('Guzzle\Service\ConfigLoaderInterface')
- ->setMethods(array('load'))
- ->getMockForAbstractClass();
- $data = array('foo' => 'bar');
- $loader->expects($this->once())
- ->method('load')
- ->will($this->returnValue($data));
- $cache = new CachingConfigLoader($loader, $cache);
- $this->assertEquals($data, $cache->load('foo'));
- $this->assertEquals($data, $cache->load('foo'));
- }
-
- public function testDoesNotCacheArrays()
- {
- $cache = new DoctrineCacheAdapter(new ArrayCache());
- $loader = $this->getMockBuilder('Guzzle\Service\ConfigLoaderInterface')
- ->setMethods(array('load'))
- ->getMockForAbstractClass();
- $data = array('foo' => 'bar');
- $loader->expects($this->exactly(2))
- ->method('load')
- ->will($this->returnValue($data));
- $cache = new CachingConfigLoader($loader, $cache);
- $this->assertEquals($data, $cache->load(array()));
- $this->assertEquals($data, $cache->load(array()));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/ClientTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/ClientTest.php
deleted file mode 100644
index aee29ed..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/ClientTest.php
+++ /dev/null
@@ -1,320 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service;
-
-use Guzzle\Inflection\Inflector;
-use Guzzle\Http\Message\Response;
-use Guzzle\Plugin\Mock\MockPlugin;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Client;
-use Guzzle\Service\Exception\CommandTransferException;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-use Guzzle\Service\Resource\ResourceIteratorClassFactory;
-use Guzzle\Service\Command\AbstractCommand;
-
-/**
- * @group server
- * @covers Guzzle\Service\Client
- */
-class ClientTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $service;
- protected $serviceTest;
-
- public function setUp()
- {
- $this->serviceTest = new ServiceDescription(array(
- 'test_command' => new Operation(array(
- 'doc' => 'documentationForCommand',
- 'method' => 'DELETE',
- 'class' => 'Guzzle\\Tests\\Service\\Mock\\Command\\MockCommand',
- 'args' => array(
- 'bucket' => array(
- 'required' => true
- ),
- 'key' => array(
- 'required' => true
- )
- )
- ))
- ));
-
- $this->service = ServiceDescription::factory(__DIR__ . '/../TestData/test_service.json');
- }
-
- public function testAllowsCustomClientParameters()
- {
- $client = new Mock\MockClient(null, array(
- Client::COMMAND_PARAMS => array(AbstractCommand::RESPONSE_PROCESSING => 'foo')
- ));
- $command = $client->getCommand('mock_command');
- $this->assertEquals('foo', $command->get(AbstractCommand::RESPONSE_PROCESSING));
- }
-
- public function testFactoryCreatesClient()
- {
- $client = Client::factory(array(
- 'base_url' => 'http://www.test.com/',
- 'test' => '123'
- ));
-
- $this->assertEquals('http://www.test.com/', $client->getBaseUrl());
- $this->assertEquals('123', $client->getConfig('test'));
- }
-
- public function testFactoryDoesNotRequireBaseUrl()
- {
- $client = Client::factory();
- }
-
- public function testDescribesEvents()
- {
- $this->assertInternalType('array', Client::getAllEvents());
- }
-
- public function testExecutesCommands()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
-
- $client = new Client($this->getServer()->getUrl());
- $cmd = new MockCommand();
- $client->execute($cmd);
-
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $cmd->getResponse());
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Response', $cmd->getResult());
- $this->assertEquals(1, count($this->getServer()->getReceivedRequests(false)));
- }
-
- public function testExecutesCommandsWithArray()
- {
- $client = new Client('http://www.test.com/');
- $client->getEventDispatcher()->addSubscriber(new MockPlugin(array(
- new Response(200),
- new Response(200)
- )));
-
- // Create a command set and a command
- $set = array(new MockCommand(), new MockCommand());
- $client->execute($set);
-
- // Make sure it sent
- $this->assertTrue($set[0]->isExecuted());
- $this->assertTrue($set[1]->isExecuted());
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testThrowsExceptionWhenInvalidCommandIsExecuted()
- {
- $client = new Client();
- $client->execute(new \stdClass());
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- public function testThrowsExceptionWhenMissingCommand()
- {
- $client = new Client();
-
- $mock = $this->getMock('Guzzle\\Service\\Command\\Factory\\FactoryInterface');
- $mock->expects($this->any())
- ->method('factory')
- ->with($this->equalTo('test'))
- ->will($this->returnValue(null));
-
- $client->setCommandFactory($mock);
- $client->getCommand('test');
- }
-
- public function testCreatesCommandsUsingCommandFactory()
- {
- $mockCommand = new MockCommand();
-
- $client = new Mock\MockClient();
- $mock = $this->getMock('Guzzle\\Service\\Command\\Factory\\FactoryInterface');
- $mock->expects($this->any())
- ->method('factory')
- ->with($this->equalTo('foo'))
- ->will($this->returnValue($mockCommand));
-
- $client->setCommandFactory($mock);
-
- $command = $client->getCommand('foo', array('acl' => '123'));
- $this->assertSame($mockCommand, $command);
- $command = $client->getCommand('foo', array('acl' => '123'));
- $this->assertSame($mockCommand, $command);
- $this->assertSame($client, $command->getClient());
- }
-
- public function testOwnsServiceDescription()
- {
- $client = new Mock\MockClient();
- $this->assertNull($client->getDescription());
-
- $description = $this->getMock('Guzzle\\Service\\Description\\ServiceDescription');
- $this->assertSame($client, $client->setDescription($description));
- $this->assertSame($description, $client->getDescription());
- }
-
- public function testOwnsResourceIteratorFactory()
- {
- $client = new Mock\MockClient();
-
- $method = new \ReflectionMethod($client, 'getResourceIteratorFactory');
- $method->setAccessible(TRUE);
- $rf1 = $method->invoke($client);
-
- $rf = $this->readAttribute($client, 'resourceIteratorFactory');
- $this->assertInstanceOf('Guzzle\\Service\\Resource\\ResourceIteratorClassFactory', $rf);
- $this->assertSame($rf1, $rf);
-
- $rf = new ResourceIteratorClassFactory('Guzzle\Tests\Service\Mock');
- $client->setResourceIteratorFactory($rf);
- $this->assertNotSame($rf1, $rf);
- }
-
- public function testClientResetsRequestsBeforeExecutingCommands()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nHi",
- "HTTP/1.1 200 OK\r\nContent-Length: 1\r\n\r\nI"
- ));
-
- $client = new Mock\MockClient($this->getServer()->getUrl());
-
- $command = $client->getCommand('mock_command');
- $client->execute($command);
- $client->execute($command);
- $this->assertEquals('I', $command->getResponse()->getBody(true));
- }
-
- public function testClientCreatesIterators()
- {
- $client = new Mock\MockClient();
-
- $iterator = $client->getIterator('mock_command', array(
- 'foo' => 'bar'
- ), array(
- 'limit' => 10
- ));
-
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\Model\MockCommandIterator', $iterator);
- $this->assertEquals(10, $this->readAttribute($iterator, 'limit'));
-
- $command = $this->readAttribute($iterator, 'originalCommand');
- $this->assertEquals('bar', $command->get('foo'));
- }
-
- public function testClientCreatesIteratorsWithNoOptions()
- {
- $client = new Mock\MockClient();
- $iterator = $client->getIterator('mock_command');
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\Model\MockCommandIterator', $iterator);
- }
-
- public function testClientCreatesIteratorsWithCommands()
- {
- $client = new Mock\MockClient();
- $command = new MockCommand();
- $iterator = $client->getIterator($command);
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\Model\MockCommandIterator', $iterator);
- $iteratorCommand = $this->readAttribute($iterator, 'originalCommand');
- $this->assertSame($command, $iteratorCommand);
- }
-
- public function testClientHoldsInflector()
- {
- $client = new Mock\MockClient();
- $this->assertInstanceOf('Guzzle\Inflection\MemoizingInflector', $client->getInflector());
-
- $inflector = new Inflector();
- $client->setInflector($inflector);
- $this->assertSame($inflector, $client->getInflector());
- }
-
- public function testClientAddsGlobalCommandOptions()
- {
- $client = new Mock\MockClient('http://www.foo.com', array(
- Client::COMMAND_PARAMS => array(
- 'mesa' => 'bar'
- )
- ));
- $command = $client->getCommand('mock_command');
- $this->assertEquals('bar', $command->get('mesa'));
- }
-
- public function testSupportsServiceDescriptionBaseUrls()
- {
- $description = new ServiceDescription(array('baseUrl' => 'http://foo.com'));
- $client = new Client();
- $client->setDescription($description);
- $this->assertEquals('http://foo.com', $client->getBaseUrl());
- }
-
- public function testMergesDefaultCommandParamsCorrectly()
- {
- $client = new Mock\MockClient('http://www.foo.com', array(
- Client::COMMAND_PARAMS => array(
- 'mesa' => 'bar',
- 'jar' => 'jar'
- )
- ));
- $command = $client->getCommand('mock_command', array('jar' => 'test'));
- $this->assertEquals('bar', $command->get('mesa'));
- $this->assertEquals('test', $command->get('jar'));
- }
-
- /**
- * @expectedException \Guzzle\Http\Exception\BadResponseException
- */
- public function testWrapsSingleCommandExceptions()
- {
- $client = new Mock\MockClient('http://foobaz.com');
- $mock = new MockPlugin(array(new Response(401)));
- $client->addSubscriber($mock);
- $client->execute(new MockCommand());
- }
-
- public function testWrapsMultipleCommandExceptions()
- {
- $client = new Mock\MockClient('http://foobaz.com');
- $mock = new MockPlugin(array(new Response(200), new Response(200), new Response(404), new Response(500)));
- $client->addSubscriber($mock);
-
- $cmds = array(new MockCommand(), new MockCommand(), new MockCommand(), new MockCommand());
- try {
- $client->execute($cmds);
- } catch (CommandTransferException $e) {
- $this->assertEquals(2, count($e->getFailedRequests()));
- $this->assertEquals(2, count($e->getSuccessfulRequests()));
- $this->assertEquals(2, count($e->getFailedCommands()));
- $this->assertEquals(2, count($e->getSuccessfulCommands()));
-
- foreach ($e->getSuccessfulCommands() as $c) {
- $this->assertTrue($c->getResponse()->isSuccessful());
- }
-
- foreach ($e->getFailedCommands() as $c) {
- $this->assertFalse($c->getRequest()->getResponse()->isSuccessful());
- }
- }
- }
-
- public function testGetCommandAfterTwoSetDescriptions()
- {
- $service1 = ServiceDescription::factory(__DIR__ . '/../TestData/test_service.json');
- $service2 = ServiceDescription::factory(__DIR__ . '/../TestData/test_service_3.json');
-
- $client = new Mock\MockClient();
-
- $client->setDescription($service1);
- $client->getCommand('foo_bar');
- $client->setDescription($service2);
- $client->getCommand('baz_qux');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/AbstractCommandTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/AbstractCommandTest.php
deleted file mode 100644
index 1004fae..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/AbstractCommandTest.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Service\Client;
-use Guzzle\Service\Description\ServiceDescription;
-
-abstract class AbstractCommandTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected function getClient()
- {
- $client = new Client('http://www.google.com/');
-
- return $client->setDescription(ServiceDescription::factory(__DIR__ . '/../../TestData/test_service.json'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/ClosureCommandTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/ClosureCommandTest.php
deleted file mode 100644
index d762246..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/ClosureCommandTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Http\Message\RequestFactory;
-use Guzzle\Service\Command\ClosureCommand;
-use Guzzle\Service\Client;
-
-/**
- * @covers Guzzle\Service\Command\ClosureCommand
- */
-class ClosureCommandTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException InvalidArgumentException
- * @expectedExceptionMessage A closure must be passed in the parameters array
- */
- public function testConstructorValidatesClosure()
- {
- $c = new ClosureCommand();
- }
-
- public function testExecutesClosure()
- {
- $c = new ClosureCommand(array(
- 'closure' => function($command, $api) {
- $command->set('testing', '123');
- $request = RequestFactory::getInstance()->create('GET', 'http://www.test.com/');
- return $request;
- }
- ));
-
- $client = $this->getServiceBuilder()->get('mock');
- $c->setClient($client)->prepare();
- $this->assertEquals('123', $c->get('testing'));
- $this->assertEquals('http://www.test.com/', $c->getRequest()->getUrl());
- }
-
- /**
- * @expectedException UnexpectedValueException
- * @expectedExceptionMessage Closure command did not return a RequestInterface object
- */
- public function testMustReturnRequest()
- {
- $c = new ClosureCommand(array(
- 'closure' => function($command, $api) {
- return false;
- }
- ));
-
- $client = $this->getServiceBuilder()->get('mock');
- $c->setClient($client)->prepare();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/CommandTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/CommandTest.php
deleted file mode 100644
index b7173d4..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/CommandTest.php
+++ /dev/null
@@ -1,445 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Plugin\Mock\MockPlugin;
-use Guzzle\Http\EntityBody;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Client;
-use Guzzle\Service\Command\AbstractCommand;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Description\SchemaValidator;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-use Guzzle\Tests\Service\Mock\Command\Sub\Sub;
-
-/**
- * @covers Guzzle\Service\Command\AbstractCommand
- */
-class CommandTest extends AbstractCommandTest
-{
- public function testConstructorAddsDefaultParams()
- {
- $command = new MockCommand();
- $this->assertEquals('123', $command->get('test'));
- $this->assertFalse($command->isPrepared());
- $this->assertFalse($command->isExecuted());
- }
-
- public function testDeterminesShortName()
- {
- $api = new Operation(array('name' => 'foobar'));
- $command = new MockCommand(array(), $api);
- $this->assertEquals('foobar', $command->getName());
-
- $command = new MockCommand();
- $this->assertEquals('mock_command', $command->getName());
-
- $command = new Sub();
- $this->assertEquals('sub.sub', $command->getName());
- }
-
- /**
- * @expectedException RuntimeException
- */
- public function testGetRequestThrowsExceptionBeforePreparation()
- {
- $command = new MockCommand();
- $command->getRequest();
- }
-
- public function testGetResponseExecutesCommandsWhenNeeded()
- {
- $response = new Response(200);
- $client = $this->getClient();
- $this->setMockResponse($client, array($response));
- $command = new MockCommand();
- $command->setClient($client);
- $this->assertSame($response, $command->getResponse());
- $this->assertSame($response, $command->getResponse());
- }
-
- public function testGetResultExecutesCommandsWhenNeeded()
- {
- $response = new Response(200);
- $client = $this->getClient();
- $this->setMockResponse($client, array($response));
- $command = new MockCommand();
- $command->setClient($client);
- $this->assertSame($response, $command->getResult());
- $this->assertSame($response, $command->getResult());
- }
-
- public function testSetClient()
- {
- $command = new MockCommand();
- $client = $this->getClient();
-
- $command->setClient($client);
- $this->assertEquals($client, $command->getClient());
-
- unset($client);
- unset($command);
-
- $command = new MockCommand();
- $client = $this->getClient();
-
- $command->setClient($client)->prepare();
- $this->assertEquals($client, $command->getClient());
- $this->assertTrue($command->isPrepared());
- }
-
- public function testExecute()
- {
- $client = $this->getClient();
- $response = new Response(200, array(
- 'Content-Type' => 'application/xml'
- ), '<xml><data>123</data></xml>');
- $this->setMockResponse($client, array($response));
- $command = new MockCommand();
- $this->assertSame($command, $command->setClient($client));
-
- // Returns the result of the command
- $this->assertInstanceOf('SimpleXMLElement', $command->execute());
-
- $this->assertTrue($command->isPrepared());
- $this->assertTrue($command->isExecuted());
- $this->assertSame($response, $command->getResponse());
- $this->assertInstanceOf('Guzzle\\Http\\Message\\Request', $command->getRequest());
- // Make sure that the result was automatically set to a SimpleXMLElement
- $this->assertInstanceOf('SimpleXMLElement', $command->getResult());
- $this->assertEquals('123', (string) $command->getResult()->data);
- }
-
- public function testConvertsJsonResponsesToArray()
- {
- $client = $this->getClient();
- $this->setMockResponse($client, array(
- new \Guzzle\Http\Message\Response(200, array(
- 'Content-Type' => 'application/json'
- ), '{ "key": "Hi!" }'
- )
- ));
- $command = new MockCommand();
- $command->setClient($client);
- $command->execute();
- $this->assertEquals(array(
- 'key' => 'Hi!'
- ), $command->getResult());
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- */
- public function testConvertsInvalidJsonResponsesToArray()
- {
- $json = '{ "key": "Hi!" }invalid';
- // Some implementations of php-json extension are not strict enough
- // and allow to parse invalid json ignoring invalid parts
- // See https://github.com/remicollet/pecl-json-c/issues/5
- if (json_decode($json) && JSON_ERROR_NONE === json_last_error()) {
- $this->markTestSkipped('php-pecl-json library regression issues');
- }
-
- $client = $this->getClient();
- $this->setMockResponse($client, array(
- new \Guzzle\Http\Message\Response(200, array(
- 'Content-Type' => 'application/json'
- ), $json
- )
- ));
- $command = new MockCommand();
- $command->setClient($client);
- $command->execute();
- }
-
- public function testProcessResponseIsNotXml()
- {
- $client = $this->getClient();
- $this->setMockResponse($client, array(
- new Response(200, array(
- 'Content-Type' => 'application/octet-stream'
- ), 'abc,def,ghi')
- ));
- $command = new MockCommand();
- $client->execute($command);
-
- // Make sure that the result was not converted to XML
- $this->assertFalse($command->getResult() instanceof \SimpleXMLElement);
- }
-
- /**
- * @expectedException RuntimeException
- */
- public function testExecuteThrowsExceptionWhenNoClientIsSet()
- {
- $command = new MockCommand();
- $command->execute();
- }
-
- /**
- * @expectedException RuntimeException
- */
- public function testPrepareThrowsExceptionWhenNoClientIsSet()
- {
- $command = new MockCommand();
- $command->prepare();
- }
-
- public function testCommandsAllowsCustomRequestHeaders()
- {
- $command = new MockCommand();
- $command->getRequestHeaders()->set('test', '123');
- $this->assertInstanceOf('Guzzle\Common\Collection', $command->getRequestHeaders());
- $this->assertEquals('123', $command->getRequestHeaders()->get('test'));
-
- $command->setClient($this->getClient())->prepare();
- $this->assertEquals('123', (string) $command->getRequest()->getHeader('test'));
- }
-
- public function testCommandsAllowsCustomRequestHeadersAsArray()
- {
- $command = new MockCommand(array(AbstractCommand::HEADERS_OPTION => array('Foo' => 'Bar')));
- $this->assertInstanceOf('Guzzle\Common\Collection', $command->getRequestHeaders());
- $this->assertEquals('Bar', $command->getRequestHeaders()->get('Foo'));
- }
-
- private function getOperation()
- {
- return new Operation(array(
- 'name' => 'foobar',
- 'httpMethod' => 'POST',
- 'class' => 'Guzzle\\Tests\\Service\\Mock\\Command\\MockCommand',
- 'parameters' => array(
- 'test' => array(
- 'default' => '123',
- 'type' => 'string'
- )
- )));
- }
-
- public function testCommandsUsesOperation()
- {
- $api = $this->getOperation();
- $command = new MockCommand(array(), $api);
- $this->assertSame($api, $command->getOperation());
- $command->setClient($this->getClient())->prepare();
- $this->assertEquals('123', $command->get('test'));
- $this->assertSame($api, $command->getOperation($api));
- }
-
- public function testCloneMakesNewRequest()
- {
- $client = $this->getClient();
- $command = new MockCommand(array(), $this->getOperation());
- $command->setClient($client);
-
- $command->prepare();
- $this->assertTrue($command->isPrepared());
-
- $command2 = clone $command;
- $this->assertFalse($command2->isPrepared());
- }
-
- public function testHasOnCompleteMethod()
- {
- $that = $this;
- $called = 0;
-
- $testFunction = function($command) use (&$called, $that) {
- $called++;
- $that->assertInstanceOf('Guzzle\Service\Command\CommandInterface', $command);
- };
-
- $client = $this->getClient();
- $command = new MockCommand(array(
- 'command.on_complete' => $testFunction
- ), $this->getOperation());
- $command->setClient($client);
-
- $command->prepare()->setResponse(new Response(200), true);
- $command->execute();
- $this->assertEquals(1, $called);
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testOnCompleteMustBeCallable()
- {
- $client = $this->getClient();
- $command = new MockCommand();
- $command->setOnComplete('foo');
- }
-
- public function testCanSetResultManually()
- {
- $client = $this->getClient();
- $client->getEventDispatcher()->addSubscriber(new MockPlugin(array(
- new Response(200)
- )));
- $command = new MockCommand();
- $client->execute($command);
- $command->setResult('foo!');
- $this->assertEquals('foo!', $command->getResult());
- }
-
- public function testCanInitConfig()
- {
- $command = $this->getMockBuilder('Guzzle\\Service\\Command\\AbstractCommand')
- ->setConstructorArgs(array(array(
- 'foo' => 'bar'
- ), new Operation(array(
- 'parameters' => array(
- 'baz' => new Parameter(array(
- 'default' => 'baaar'
- ))
- )
- ))))
- ->getMockForAbstractClass();
-
- $this->assertEquals('bar', $command['foo']);
- $this->assertEquals('baaar', $command['baz']);
- }
-
- public function testAddsCurlOptionsToRequestsWhenPreparing()
- {
- $command = new MockCommand(array(
- 'foo' => 'bar',
- 'curl.options' => array('CURLOPT_PROXYPORT' => 8080)
- ));
- $client = new Client();
- $command->setClient($client);
- $request = $command->prepare();
- $this->assertEquals(8080, $request->getCurlOptions()->get(CURLOPT_PROXYPORT));
- }
-
- public function testIsInvokable()
- {
- $client = $this->getClient();
- $response = new Response(200);
- $this->setMockResponse($client, array($response));
- $command = new MockCommand();
- $command->setClient($client);
- // Returns the result of the command
- $this->assertSame($response, $command());
- }
-
- public function testCreatesDefaultOperation()
- {
- $command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')->getMockForAbstractClass();
- $this->assertInstanceOf('Guzzle\Service\Description\Operation', $command->getOperation());
- }
-
- public function testAllowsValidatorToBeInjected()
- {
- $command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')->getMockForAbstractClass();
- $v = new SchemaValidator();
- $command->setValidator($v);
- $this->assertSame($v, $this->readAttribute($command, 'validator'));
- }
-
- public function testCanDisableValidation()
- {
- $command = new MockCommand();
- $command->setClient(new \Guzzle\Service\Client());
- $v = $this->getMockBuilder('Guzzle\Service\Description\SchemaValidator')
- ->setMethods(array('validate'))
- ->getMock();
- $v->expects($this->never())->method('validate');
- $command->setValidator($v);
- $command->set(AbstractCommand::DISABLE_VALIDATION, true);
- $command->prepare();
- }
-
- public function testValidatorDoesNotUpdateNonDefaultValues()
- {
- $command = new MockCommand(array('test' => 123, 'foo' => 'bar'));
- $command->setClient(new \Guzzle\Service\Client());
- $command->prepare();
- $this->assertEquals(123, $command->get('test'));
- $this->assertEquals('bar', $command->get('foo'));
- }
-
- public function testValidatorUpdatesDefaultValues()
- {
- $command = new MockCommand();
- $command->setClient(new \Guzzle\Service\Client());
- $command->prepare();
- $this->assertEquals(123, $command->get('test'));
- $this->assertEquals('abc', $command->get('_internal'));
- }
-
- /**
- * @expectedException \Guzzle\Service\Exception\ValidationException
- * @expectedExceptionMessage [Foo] Baz
- */
- public function testValidatesCommandBeforeSending()
- {
- $command = new MockCommand();
- $command->setClient(new \Guzzle\Service\Client());
- $v = $this->getMockBuilder('Guzzle\Service\Description\SchemaValidator')
- ->setMethods(array('validate', 'getErrors'))
- ->getMock();
- $v->expects($this->any())->method('validate')->will($this->returnValue(false));
- $v->expects($this->any())->method('getErrors')->will($this->returnValue(array('[Foo] Baz', '[Bar] Boo')));
- $command->setValidator($v);
- $command->prepare();
- }
-
- /**
- * @expectedException \Guzzle\Service\Exception\ValidationException
- * @expectedExceptionMessage Validation errors: [abc] must be of type string
- */
- public function testValidatesAdditionalParameters()
- {
- $description = ServiceDescription::factory(array(
- 'operations' => array(
- 'foo' => array(
- 'parameters' => array(
- 'baz' => array('type' => 'integer')
- ),
- 'additionalParameters' => array(
- 'type' => 'string'
- )
- )
- )
- ));
-
- $client = new Client();
- $client->setDescription($description);
- $command = $client->getCommand('foo', array(
- 'abc' => false,
- 'command.headers' => array('foo' => 'bar')
- ));
- $command->prepare();
- }
-
- public function testCanAccessValidationErrorsFromCommand()
- {
- $validationErrors = array('[Foo] Baz', '[Bar] Boo');
- $command = new MockCommand();
- $command->setClient(new \Guzzle\Service\Client());
-
- $this->assertFalse($command->getValidationErrors());
-
- $v = $this->getMockBuilder('Guzzle\Service\Description\SchemaValidator')
- ->setMethods(array('validate', 'getErrors'))
- ->getMock();
- $v->expects($this->any())->method('getErrors')->will($this->returnValue($validationErrors));
- $command->setValidator($v);
-
- $this->assertEquals($validationErrors, $command->getValidationErrors());
- }
-
- public function testCanChangeResponseBody()
- {
- $body = EntityBody::factory();
- $command = new MockCommand();
- $command->setClient(new \Guzzle\Service\Client());
- $command->set(AbstractCommand::RESPONSE_BODY, $body);
- $request = $command->prepare();
- $this->assertSame($body, $this->readAttribute($request, 'responseBody'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultRequestSerializerTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultRequestSerializerTest.php
deleted file mode 100644
index b7a4682..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultRequestSerializerTest.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Service\Command\DefaultRequestSerializer;
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Service\Client;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\LocationVisitor\Request\HeaderVisitor;
-use Guzzle\Service\Command\LocationVisitor\VisitorFlyweight;
-
-/**
- * @covers Guzzle\Service\Command\DefaultRequestSerializer
- */
-class DefaultRequestSerializerTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var EntityEnclosingRequest */
- protected $request;
-
- /** @var \Guzzle\Service\Command\AbstractCommand */
- protected $command;
-
- /** @var Client */
- protected $client;
-
- /** @var DefaultRequestSerializer */
- protected $serializer;
-
- /** @var Operation */
- protected $operation;
-
- public function setUp()
- {
- $this->serializer = DefaultRequestSerializer::getInstance();
- $this->client = new Client('http://foo.com/baz');
- $this->operation = new Operation(array('httpMethod' => 'POST'));
- $this->command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')
- ->setConstructorArgs(array(array(), $this->operation))
- ->getMockForAbstractClass();
- $this->command->setClient($this->client);
- }
-
- public function testAllowsCustomVisitor()
- {
- $this->serializer->addVisitor('custom', new HeaderVisitor());
- $this->command['test'] = '123';
- $this->operation->addParam(new Parameter(array('name' => 'test', 'location' => 'custom')));
- $request = $this->serializer->prepare($this->command);
- $this->assertEquals('123', (string) $request->getHeader('test'));
- }
-
- public function testUsesRelativePath()
- {
- $this->operation->setUri('bar');
- $request = $this->serializer->prepare($this->command);
- $this->assertEquals('http://foo.com/baz/bar', (string) $request->getUrl());
- }
-
- public function testUsesRelativePathWithUriLocations()
- {
- $this->command['test'] = '123';
- $this->operation->setUri('bar/{test}');
- $this->operation->addParam(new Parameter(array('name' => 'test', 'location' => 'uri')));
- $request = $this->serializer->prepare($this->command);
- $this->assertEquals('http://foo.com/baz/bar/123', (string) $request->getUrl());
- }
-
- public function testAllowsCustomFactory()
- {
- $f = new VisitorFlyweight();
- $serializer = new DefaultRequestSerializer($f);
- $this->assertSame($f, $this->readAttribute($serializer, 'factory'));
- }
-
- public function testMixedParams()
- {
- $this->operation->setUri('bar{?limit,fields}');
- $this->operation->addParam(new Parameter(array(
- 'name' => 'limit',
- 'location' => 'uri',
- 'required' => false,
- )));
- $this->operation->addParam(new Parameter(array(
- 'name' => 'fields',
- 'location' => 'uri',
- 'required' => true,
- )));
-
- $this->command['fields'] = array('id', 'name');
-
- $request = $this->serializer->prepare($this->command);
- $this->assertEquals('http://foo.com/baz/bar?fields='.urlencode('id,name'), (string) $request->getUrl());
- }
-
- public function testValidatesAdditionalParameters()
- {
- $description = ServiceDescription::factory(array(
- 'operations' => array(
- 'foo' => array(
- 'httpMethod' => 'PUT',
- 'parameters' => array(
- 'bar' => array('location' => 'header')
- ),
- 'additionalParameters' => array(
- 'location' => 'json'
- )
- )
- )
- ));
-
- $client = new Client();
- $client->setDescription($description);
- $command = $client->getCommand('foo');
- $command['bar'] = 'test';
- $command['hello'] = 'abc';
- $request = $command->prepare();
- $this->assertEquals('test', (string) $request->getHeader('bar'));
- $this->assertEquals('{"hello":"abc"}', (string) $request->getBody());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultResponseParserTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultResponseParserTest.php
deleted file mode 100644
index a6a02f9..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/DefaultResponseParserTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Client;
-use Guzzle\Service\Command\DefaultResponseParser;
-use Guzzle\Service\Command\OperationCommand;
-use Guzzle\Service\Description\Operation;
-
-/**
- * @covers Guzzle\Service\Command\DefaultResponseParser
- */
-class DefaultResponseParserTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testParsesXmlResponses()
- {
- $op = new OperationCommand(array(), new Operation());
- $op->setClient(new Client());
- $request = $op->prepare();
- $request->setResponse(new Response(200, array(
- 'Content-Type' => 'application/xml'
- ), '<Foo><Baz>Bar</Baz></Foo>'), true);
- $this->assertInstanceOf('SimpleXMLElement', $op->execute());
- }
-
- public function testParsesJsonResponses()
- {
- $op = new OperationCommand(array(), new Operation());
- $op->setClient(new Client());
- $request = $op->prepare();
- $request->setResponse(new Response(200, array(
- 'Content-Type' => 'application/json'
- ), '{"Baz":"Bar"}'), true);
- $this->assertEquals(array('Baz' => 'Bar'), $op->execute());
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\RuntimeException
- */
- public function testThrowsExceptionWhenParsingJsonFails()
- {
- $op = new OperationCommand(array(), new Operation());
- $op->setClient(new Client());
- $request = $op->prepare();
- $request->setResponse(new Response(200, array('Content-Type' => 'application/json'), '{"Baz":ddw}'), true);
- $op->execute();
- }
-
- public function testAddsContentTypeWhenExpectsIsSetOnCommand()
- {
- $op = new OperationCommand(array(), new Operation());
- $op['command.expects'] = 'application/json';
- $op->setClient(new Client());
- $request = $op->prepare();
- $request->setResponse(new Response(200, null, '{"Baz":"Bar"}'), true);
- $this->assertEquals(array('Baz' => 'Bar'), $op->execute());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/AliasFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/AliasFactoryTest.php
deleted file mode 100644
index ab1041a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/AliasFactoryTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Service\Client;
-use Guzzle\Service\Command\Factory\AliasFactory;
-use Guzzle\Service\Command\Factory\MapFactory;
-use Guzzle\Service\Command\Factory\CompositeFactory;
-
-/**
- * @covers Guzzle\Service\Command\Factory\AliasFactory
- */
-class AliasFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- private $factory;
- private $client;
-
- public function setup()
- {
- $this->client = new Client();
-
- $map = new MapFactory(array(
- 'test' => 'Guzzle\Tests\Service\Mock\Command\MockCommand',
- 'test1' => 'Guzzle\Tests\Service\Mock\Command\OtherCommand'
- ));
-
- $this->factory = new AliasFactory($this->client, array(
- 'foo' => 'test',
- 'bar' => 'sub',
- 'sub' => 'test1',
- 'krull' => 'test3',
- 'krull_2' => 'krull',
- 'sub_2' => 'bar',
- 'bad_link' => 'jarjar'
- ));
-
- $map2 = new MapFactory(array(
- 'test3' => 'Guzzle\Tests\Service\Mock\Command\Sub\Sub'
- ));
-
- $this->client->setCommandFactory(new CompositeFactory(array($map, $this->factory, $map2)));
- }
-
- public function aliasProvider()
- {
- return array(
- array('foo', 'Guzzle\Tests\Service\Mock\Command\MockCommand', false),
- array('bar', 'Guzzle\Tests\Service\Mock\Command\OtherCommand', false),
- array('sub', 'Guzzle\Tests\Service\Mock\Command\OtherCommand', false),
- array('sub_2', 'Guzzle\Tests\Service\Mock\Command\OtherCommand', false),
- array('krull', 'Guzzle\Tests\Service\Mock\Command\Sub\Sub', false),
- array('krull_2', 'Guzzle\Tests\Service\Mock\Command\Sub\Sub', false),
- array('missing', null, true),
- array('bad_link', null, true)
- );
- }
-
- /**
- * @dataProvider aliasProvider
- */
- public function testAliasesCommands($key, $result, $exception)
- {
- try {
- $command = $this->client->getCommand($key);
- if (is_null($result)) {
- $this->assertNull($command);
- } else {
- $this->assertInstanceof($result, $command);
- }
- } catch (\Exception $e) {
- if (!$exception) {
- $this->fail('Got exception when it was not expected');
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/CompositeFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/CompositeFactoryTest.php
deleted file mode 100644
index b896dcf..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/CompositeFactoryTest.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Service\Command\Factory\CompositeFactory;
-
-/**
- * @covers Guzzle\Service\Command\Factory\CompositeFactory
- */
-class CompositeFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- private function getFactory($class = 'Guzzle\\Service\\Command\\Factory\\MapFactory')
- {
- return $mock = $this->getMockBuilder($class)
- ->disableOriginalConstructor()
- ->getMock();
- }
-
- public function testIsIterable()
- {
- $factory = new CompositeFactory(array($this->getFactory(), $this->getFactory()));
- $this->assertEquals(2, count($factory));
- $this->assertEquals(2, count(iterator_to_array($factory->getIterator())));
- }
-
- public function testFindsFactories()
- {
- $f1 = $this->getFactory();
- $f2 = $this->getFactory('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
- $factory = new CompositeFactory(array($f1, $f2));
- $this->assertNull($factory->find('foo'));
- $this->assertNull($factory->find($this->getFactory()));
- $this->assertSame($f1, $factory->find('Guzzle\\Service\\Command\\Factory\\MapFactory'));
- $this->assertSame($f2, $factory->find('Guzzle\\Service\\Command\\Factory\\CompositeFactory'));
- $this->assertSame($f1, $factory->find($f1));
- $this->assertSame($f2, $factory->find($f2));
-
- $this->assertFalse($factory->has('foo'));
- $this->assertTrue($factory->has('Guzzle\\Service\\Command\\Factory\\MapFactory'));
- $this->assertTrue($factory->has('Guzzle\\Service\\Command\\Factory\\CompositeFactory'));
- }
-
- public function testCreatesCommands()
- {
- $factory = new CompositeFactory();
- $this->assertNull($factory->factory('foo'));
-
- $f1 = $this->getFactory();
- $mockCommand1 = $this->getMockForAbstractClass('Guzzle\\Service\\Command\\AbstractCommand');
-
- $f1->expects($this->once())
- ->method('factory')
- ->with($this->equalTo('foo'))
- ->will($this->returnValue($mockCommand1));
-
- $factory = new CompositeFactory(array($f1));
- $this->assertSame($mockCommand1, $factory->factory('foo'));
- }
-
- public function testAllowsRemovalOfFactories()
- {
- $f1 = $this->getFactory();
- $f2 = $this->getFactory();
- $f3 = $this->getFactory('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
- $factories = array($f1, $f2, $f3);
- $factory = new CompositeFactory($factories);
-
- $factory->remove('foo');
- $this->assertEquals($factories, $factory->getIterator()->getArrayCopy());
-
- $factory->remove($f1);
- $this->assertEquals(array($f2, $f3), $factory->getIterator()->getArrayCopy());
-
- $factory->remove('Guzzle\\Service\\Command\\Factory\\MapFactory');
- $this->assertEquals(array($f3), $factory->getIterator()->getArrayCopy());
-
- $factory->remove('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
- $this->assertEquals(array(), $factory->getIterator()->getArrayCopy());
-
- $factory->remove('foo');
- $this->assertEquals(array(), $factory->getIterator()->getArrayCopy());
- }
-
- public function testAddsFactoriesBeforeAndAtEnd()
- {
- $f1 = $this->getFactory();
- $f2 = $this->getFactory();
- $f3 = $this->getFactory('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
- $f4 = $this->getFactory();
-
- $factory = new CompositeFactory();
-
- $factory->add($f1);
- $this->assertEquals(array($f1), $factory->getIterator()->getArrayCopy());
-
- $factory->add($f2);
- $this->assertEquals(array($f1, $f2), $factory->getIterator()->getArrayCopy());
-
- $factory->add($f3, $f2);
- $this->assertEquals(array($f1, $f3, $f2), $factory->getIterator()->getArrayCopy());
-
- $factory->add($f4, 'Guzzle\\Service\\Command\\Factory\\CompositeFactory');
- $this->assertEquals(array($f1, $f4, $f3, $f2), $factory->getIterator()->getArrayCopy());
- }
-
- public function testProvidesDefaultChainForClients()
- {
- $client = $this->getMock('Guzzle\\Service\\Client');
- $chain = CompositeFactory::getDefaultChain($client);
- $a = $chain->getIterator()->getArrayCopy();
- $this->assertEquals(1, count($a));
- $this->assertInstanceOf('Guzzle\\Service\\Command\\Factory\\ConcreteClassFactory', $a[0]);
-
- $description = $this->getMock('Guzzle\\Service\\Description\\ServiceDescription');
- $client->expects($this->once())
- ->method('getDescription')
- ->will($this->returnValue($description));
- $chain = CompositeFactory::getDefaultChain($client);
- $a = $chain->getIterator()->getArrayCopy();
- $this->assertEquals(2, count($a));
- $this->assertInstanceOf('Guzzle\\Service\\Command\\Factory\\ServiceDescriptionFactory', $a[0]);
- $this->assertInstanceOf('Guzzle\\Service\\Command\\Factory\\ConcreteClassFactory', $a[1]);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ConcreteClassFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ConcreteClassFactoryTest.php
deleted file mode 100644
index 7664718..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ConcreteClassFactoryTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Tests\Service\Mock\MockClient;
-use Guzzle\Service\Command\Factory\ConcreteClassFactory;
-
-/**
- * @covers Guzzle\Service\Command\Factory\ConcreteClassFactory
- */
-class ConcreteClassFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testProvider()
- {
- return array(
- array('foo', null, 'Guzzle\\Tests\\Service\\Mock\\Command\\'),
- array('mock_command', 'Guzzle\Tests\Service\Mock\Command\MockCommand', 'Guzzle\\Tests\\Service\\Mock\\Command\\'),
- array('other_command', 'Guzzle\Tests\Service\Mock\Command\OtherCommand', 'Guzzle\\Tests\\Service\\Mock\\Command\\'),
- array('sub.sub', 'Guzzle\Tests\Service\Mock\Command\Sub\Sub', 'Guzzle\\Tests\\Service\\Mock\\Command\\'),
- array('sub.sub', null, 'Guzzle\\Foo\\'),
- array('foo', null, null),
- array('mock_command', 'Guzzle\Tests\Service\Mock\Command\MockCommand', null),
- array('other_command', 'Guzzle\Tests\Service\Mock\Command\OtherCommand', null),
- array('sub.sub', 'Guzzle\Tests\Service\Mock\Command\Sub\Sub', null)
- );
- }
-
- /**
- * @dataProvider testProvider
- */
- public function testCreatesConcreteCommands($key, $result, $prefix)
- {
- if (!$prefix) {
- $client = new MockClient();
- } else {
- $client = new MockClient('', array(
- 'command.prefix' => $prefix
- ));
- }
-
- $factory = new ConcreteClassFactory($client);
-
- if (is_null($result)) {
- $this->assertNull($factory->factory($key));
- } else {
- $this->assertInstanceof($result, $factory->factory($key));
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/MapFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/MapFactoryTest.php
deleted file mode 100644
index ee720d1..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/MapFactoryTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Service\Command\Factory\MapFactory;
-
-/**
- * @covers Guzzle\Service\Command\Factory\MapFactory
- */
-class MapFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function mapProvider()
- {
- return array(
- array('foo', null),
- array('test', 'Guzzle\Tests\Service\Mock\Command\MockCommand'),
- array('test1', 'Guzzle\Tests\Service\Mock\Command\OtherCommand')
- );
- }
-
- /**
- * @dataProvider mapProvider
- */
- public function testCreatesCommandsUsingMappings($key, $result)
- {
- $factory = new MapFactory(array(
- 'test' => 'Guzzle\Tests\Service\Mock\Command\MockCommand',
- 'test1' => 'Guzzle\Tests\Service\Mock\Command\OtherCommand'
- ));
-
- if (is_null($result)) {
- $this->assertNull($factory->factory($key));
- } else {
- $this->assertInstanceof($result, $factory->factory($key));
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ServiceDescriptionFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ServiceDescriptionFactoryTest.php
deleted file mode 100644
index 3372634..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/Factory/ServiceDescriptionFactoryTest.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Service\Command\Factory\ServiceDescriptionFactory;
-use Guzzle\Inflection\Inflector;
-
-/**
- * @covers Guzzle\Service\Command\Factory\ServiceDescriptionFactory
- */
-class ServiceDescriptionFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testProvider()
- {
- return array(
- array('foo', null),
- array('jar_jar', 'Guzzle\Tests\Service\Mock\Command\MockCommand'),
- array('binks', 'Guzzle\Tests\Service\Mock\Command\OtherCommand')
- );
- }
-
- /**
- * @dataProvider testProvider
- */
- public function testCreatesCommandsUsingServiceDescriptions($key, $result)
- {
- $d = $this->getDescription();
-
- $factory = new ServiceDescriptionFactory($d);
- $this->assertSame($d, $factory->getServiceDescription());
-
- if (is_null($result)) {
- $this->assertNull($factory->factory($key));
- } else {
- $this->assertInstanceof($result, $factory->factory($key));
- }
- }
-
- public function testUsesUcFirstIfNoExactMatch()
- {
- $d = $this->getDescription();
- $factory = new ServiceDescriptionFactory($d, new Inflector());
- $this->assertInstanceof('Guzzle\Tests\Service\Mock\Command\OtherCommand', $factory->factory('Test'));
- $this->assertInstanceof('Guzzle\Tests\Service\Mock\Command\OtherCommand', $factory->factory('test'));
- }
-
- public function testUsesInflectionIfNoExactMatch()
- {
- $d = $this->getDescription();
- $factory = new ServiceDescriptionFactory($d, new Inflector());
- $this->assertInstanceof('Guzzle\Tests\Service\Mock\Command\OtherCommand', $factory->factory('Binks'));
- $this->assertInstanceof('Guzzle\Tests\Service\Mock\Command\OtherCommand', $factory->factory('binks'));
- $this->assertInstanceof('Guzzle\Tests\Service\Mock\Command\MockCommand', $factory->factory('JarJar'));
- $this->assertInstanceof('Guzzle\Tests\Service\Mock\Command\MockCommand', $factory->factory('jar_jar'));
- }
-
- protected function getDescription()
- {
- return ServiceDescription::factory(array(
- 'operations' => array(
- 'jar_jar' => array('class' => 'Guzzle\Tests\Service\Mock\Command\MockCommand'),
- 'binks' => array('class' => 'Guzzle\Tests\Service\Mock\Command\OtherCommand'),
- 'Test' => array('class' => 'Guzzle\Tests\Service\Mock\Command\OtherCommand')
- )
- ));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/AbstractVisitorTestCase.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/AbstractVisitorTestCase.php
deleted file mode 100644
index 46b472e..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/AbstractVisitorTestCase.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Description\SchemaValidator;
-use Guzzle\Service\Command\OperationCommand;
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-use Guzzle\Tests\Service\Mock\MockClient;
-
-abstract class AbstractVisitorTestCase extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $command;
- protected $request;
- protected $param;
- protected $validator;
-
- public function setUp()
- {
- $this->command = new MockCommand();
- $this->request = new EntityEnclosingRequest('POST', 'http://www.test.com/some/path.php');
- $this->validator = new SchemaValidator();
- }
-
- protected function getCommand($location)
- {
- $command = new OperationCommand(array(), $this->getNestedCommand($location));
- $command->setClient(new MockClient());
-
- return $command;
- }
-
- protected function getNestedCommand($location)
- {
- return new Operation(array(
- 'httpMethod' => 'POST',
- 'parameters' => array(
- 'foo' => new Parameter(array(
- 'type' => 'object',
- 'location' => $location,
- 'sentAs' => 'Foo',
- 'required' => true,
- 'properties' => array(
- 'test' => array(
- 'type' => 'object',
- 'required' => true,
- 'properties' => array(
- 'baz' => array(
- 'type' => 'boolean',
- 'default' => true
- ),
- 'jenga' => array(
- 'type' => 'string',
- 'default' => 'hello',
- 'sentAs' => 'Jenga_Yall!',
- 'filters' => array('strtoupper')
- )
- )
- ),
- 'bar' => array('default' => 123)
- ),
- 'additionalProperties' => array(
- 'type' => 'string',
- 'filters' => array('strtoupper'),
- 'location' => $location
- )
- )),
- 'arr' => new Parameter(array(
- 'type' => 'array',
- 'location' => $location,
- 'items' => array(
- 'type' => 'string',
- 'filters' => array('strtoupper')
- )
- )),
- )
- ));
- }
-
- protected function getCommandWithArrayParamAndFilters()
- {
- $operation = new Operation(array(
- 'httpMethod' => 'POST',
- 'parameters' => array(
- 'foo' => new Parameter(array(
- 'type' => 'string',
- 'location' => 'query',
- 'sentAs' => 'Foo',
- 'required' => true,
- 'default' => 'bar',
- 'filters' => array('strtoupper')
- )),
- 'arr' => new Parameter(array(
- 'type' => 'array',
- 'location' => 'query',
- 'sentAs' => 'Arr',
- 'required' => true,
- 'default' => array(123, 456, 789),
- 'filters' => array(array('method' => 'implode', 'args' => array(',', '@value')))
- ))
- )
- ));
- $command = new OperationCommand(array(), $operation);
- $command->setClient(new MockClient());
-
- return $command;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/BodyVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/BodyVisitorTest.php
deleted file mode 100644
index 2a95c45..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/BodyVisitorTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Http\EntityBody;
-use Guzzle\Service\Command\LocationVisitor\Request\BodyVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\BodyVisitor
- */
-class BodyVisitorTest extends AbstractVisitorTestCase
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('body')->getParam('foo')->setSentAs('Foo');
- $visitor->visit($this->command, $this->request, $param, '123');
- $this->assertEquals('123', (string) $this->request->getBody());
- $this->assertNull($this->request->getHeader('Expect'));
- }
-
- public function testAddsExpectHeaderWhenSetToTrue()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('body')->getParam('foo')->setSentAs('Foo');
- $param->setData('expect_header', true);
- $visitor->visit($this->command, $this->request, $param, '123');
- $this->assertEquals('123', (string) $this->request->getBody());
- }
-
- public function testCanDisableExpectHeader()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('body')->getParam('foo')->setSentAs('Foo');
- $param->setData('expect_header', false);
- $visitor->visit($this->command, $this->request, $param, '123');
- $this->assertNull($this->request->getHeader('Expect'));
- }
-
- public function testCanSetExpectHeaderBasedOnSize()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('body')->getParam('foo')->setSentAs('Foo');
- // The body is less than the cutoff
- $param->setData('expect_header', 5);
- $visitor->visit($this->command, $this->request, $param, '123');
- $this->assertNull($this->request->getHeader('Expect'));
- // Now check when the body is greater than the cutoff
- $param->setData('expect_header', 2);
- $visitor->visit($this->command, $this->request, $param, '123');
- $this->assertEquals('100-Continue', (string) $this->request->getHeader('Expect'));
- }
-
- public function testAddsContentEncodingWhenSetOnBody()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('body')->getParam('foo')->setSentAs('Foo');
- $body = EntityBody::factory('foo');
- $body->compress();
- $visitor->visit($this->command, $this->request, $param, $body);
- $this->assertEquals('gzip', (string) $this->request->getHeader('Content-Encoding'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/HeaderVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/HeaderVisitorTest.php
deleted file mode 100644
index 7ea1ae9..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/HeaderVisitorTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Command\LocationVisitor\Request\HeaderVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\HeaderVisitor
- */
-class HeaderVisitorTest extends AbstractVisitorTestCase
-{
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testValidatesHeaderMapsAreArrays()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('header')->getParam('foo')->setSentAs('test');
- $param->setAdditionalProperties(new Parameter(array()));
- $visitor->visit($this->command, $this->request, $param, 'test');
- }
-
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('header')->getParam('foo')->setSentAs('test');
- $param->setAdditionalProperties(false);
- $visitor->visit($this->command, $this->request, $param, '123');
- $this->assertEquals('123', (string) $this->request->getHeader('test'));
- }
-
- public function testVisitsMappedPrefixHeaders()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('header')->getParam('foo')->setSentAs('test');
- $param->setSentAs('x-foo-');
- $param->setAdditionalProperties(new Parameter(array(
- 'type' => 'string'
- )));
- $visitor->visit($this->command, $this->request, $param, array(
- 'bar' => 'test',
- 'baz' => '123'
- ));
- $this->assertEquals('test', (string) $this->request->getHeader('x-foo-bar'));
- $this->assertEquals('123', (string) $this->request->getHeader('x-foo-baz'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/JsonVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/JsonVisitorTest.php
deleted file mode 100644
index ea6782f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/JsonVisitorTest.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Command\LocationVisitor\Request\JsonVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\JsonVisitor
- * @covers Guzzle\Service\Command\LocationVisitor\Request\AbstractRequestVisitor::resolveRecursively
- */
-class JsonVisitorTest extends AbstractVisitorTestCase
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- // Test after when no body query values were found
- $visitor->after($this->command, $this->request);
-
- $param = $this->getNestedCommand('json')->getParam('foo');
- $visitor->visit($this->command, $this->request, $param->setSentAs('test'), '123');
- $visitor->visit($this->command, $this->request, $param->setSentAs('test2'), 'abc');
- $visitor->after($this->command, $this->request);
- $this->assertEquals('{"test":"123","test2":"abc"}', (string) $this->request->getBody());
- }
-
- public function testAddsJsonHeader()
- {
- $visitor = new Visitor();
- $visitor->setContentTypeHeader('application/json-foo');
- $param = $this->getNestedCommand('json')->getParam('foo');
- $visitor->visit($this->command, $this->request, $param->setSentAs('test'), '123');
- $visitor->after($this->command, $this->request);
- $this->assertEquals('application/json-foo', (string) $this->request->getHeader('Content-Type'));
- }
-
- public function testRecursivelyBuildsJsonBodies()
- {
- $command = $this->getCommand('json');
- $request = $command->prepare();
- $this->assertEquals('{"Foo":{"test":{"baz":true,"Jenga_Yall!":"HELLO"},"bar":123}}', (string) $request->getBody());
- }
-
- public function testAppliesFiltersToAdditionalProperties()
- {
- $command = $this->getCommand('json');
- $command->set('foo', array('not_set' => 'abc'));
- $request = $command->prepare();
- $result = json_decode($request->getBody(), true);
- $this->assertEquals('ABC', $result['Foo']['not_set']);
- }
-
- public function testAppliesFiltersToArrayItemValues()
- {
- $command = $this->getCommand('json');
- $command->set('arr', array('a', 'b'));
- $request = $command->prepare();
- $result = json_decode($request->getBody(), true);
- $this->assertEquals(array('A', 'B'), $result['arr']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFieldVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFieldVisitorTest.php
deleted file mode 100644
index 540b410..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFieldVisitorTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Command\LocationVisitor\Request\PostFieldVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\PostFieldVisitor
- */
-class PostFieldVisitorTest extends AbstractVisitorTestCase
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('postField')->getParam('foo');
- $visitor->visit($this->command, $this->request, $param->setSentAs('test'), '123');
- $this->assertEquals('123', (string) $this->request->getPostField('test'));
- }
-
- public function testRecursivelyBuildsPostFields()
- {
- $command = $this->getCommand('postField');
- $request = $command->prepare();
- $visitor = new Visitor();
- $param = $command->getOperation()->getParam('foo');
- $visitor->visit($command, $request, $param, $command['foo']);
- $visitor->after($command, $request);
- $this->assertEquals(
- 'Foo[test][baz]=1&Foo[test][Jenga_Yall!]=HELLO&Foo[bar]=123',
- rawurldecode((string) $request->getPostFields())
- );
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFileVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFileVisitorTest.php
deleted file mode 100644
index 21e3cec..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/PostFileVisitorTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Client;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Http\Message\PostFile;
-use Guzzle\Service\Command\LocationVisitor\Request\PostFileVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\PostFileVisitor
- */
-class PostFileVisitorTest extends AbstractVisitorTestCase
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('postFile')->getParam('foo');
-
- // Test using a path to a file
- $visitor->visit($this->command, $this->request, $param->setSentAs('test_3'), __FILE__);
- $this->assertInternalType('array', $this->request->getPostFile('test_3'));
-
- // Test with a PostFile
- $visitor->visit($this->command, $this->request, $param->setSentAs(null), new PostFile('baz', __FILE__));
- $this->assertInternalType('array', $this->request->getPostFile('baz'));
- }
-
- public function testVisitsLocationWithMultipleFiles()
- {
- $description = ServiceDescription::factory(array(
- 'operations' => array(
- 'DoPost' => array(
- 'httpMethod' => 'POST',
- 'parameters' => array(
- 'foo' => array(
- 'location' => 'postFile',
- 'type' => array('string', 'array')
- )
- )
- )
- )
- ));
- $this->getServer()->flush();
- $this->getServer()->enqueue(array("HTTP/1.1 200 OK\r\nContent-Length:0\r\n\r\n"));
- $client = new Client($this->getServer()->getUrl());
- $client->setDescription($description);
- $command = $client->getCommand('DoPost', array('foo' => array(__FILE__, __FILE__)));
- $command->execute();
- $received = $this->getServer()->getReceivedRequests();
- $this->assertContains('name="foo[0]";', $received[0]);
- $this->assertContains('name="foo[1]";', $received[0]);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/QueryVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/QueryVisitorTest.php
deleted file mode 100644
index 607af76..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/QueryVisitorTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Command\LocationVisitor\Request\QueryVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\QueryVisitor
- */
-class QueryVisitorTest extends AbstractVisitorTestCase
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('query')->getParam('foo')->setSentAs('test');
- $visitor->visit($this->command, $this->request, $param, '123');
- $this->assertEquals('123', $this->request->getQuery()->get('test'));
- }
-
- /**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\QueryVisitor
- * @covers Guzzle\Service\Command\LocationVisitor\Request\AbstractRequestVisitor::resolveRecursively
- */
- public function testRecursivelyBuildsQueryStrings()
- {
- $command = $this->getCommand('query');
- $command->getOperation()->getParam('foo')->setSentAs('Foo');
- $request = $command->prepare();
- $this->assertEquals(
- 'Foo[test][baz]=1&Foo[test][Jenga_Yall!]=HELLO&Foo[bar]=123',
- rawurldecode($request->getQuery())
- );
- }
-
- /**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\AbstractRequestVisitor::resolveRecursively
- */
- public function testFiltersAreAppliedToArrayParamType()
- {
- $command = $this->getCommandWithArrayParamAndFilters();
- $request = $command->prepare();
- $query = $request->getQuery();
- // param type 'string'
- $this->assertEquals('BAR', $query->get('Foo'));
- // param type 'array'
- $this->assertEquals('123,456,789', $query->get('Arr'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/ResponseBodyVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/ResponseBodyVisitorTest.php
deleted file mode 100644
index ff8cec5..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/ResponseBodyVisitorTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Command\LocationVisitor\Request\ResponseBodyVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\ResponseBodyVisitor
- */
-class ResponseBodyVisitorTest extends AbstractVisitorTestCase
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = $this->getNestedCommand('response_body')->getParam('foo');
- $visitor->visit($this->command, $this->request, $param, sys_get_temp_dir() . '/foo.txt');
- $body = $this->readAttribute($this->request, 'responseBody');
- $this->assertContains('/foo.txt', $body->getUri());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/XmlVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/XmlVisitorTest.php
deleted file mode 100644
index beb58b0..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Request/XmlVisitorTest.php
+++ /dev/null
@@ -1,558 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Request;
-
-use Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor;
-use Guzzle\Service\Client;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Http\Message\EntityEnclosingRequest;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor
- */
-class XmlVisitorTest extends AbstractVisitorTestCase
-{
- public function xmlProvider()
- {
- return array(
- array(
- array(
- 'data' => array(
- 'xmlRoot' => array(
- 'name' => 'test',
- 'namespaces' => 'http://foo.com'
- )
- ),
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string'),
- 'Baz' => array('location' => 'xml', 'type' => 'string')
- )
- ),
- array('Foo' => 'test', 'Baz' => 'bar'),
- '<test xmlns="http://foo.com"><Foo>test</Foo><Baz>bar</Baz></test>'
- ),
- // Ensure that the content-type is not added
- array(array('parameters' => array('Foo' => array('location' => 'xml', 'type' => 'string'))), array(), ''),
- // Test with adding attributes and no namespace
- array(
- array(
- 'data' => array(
- 'xmlRoot' => array(
- 'name' => 'test'
- )
- ),
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string', 'data' => array('xmlAttribute' => true))
- )
- ),
- array('Foo' => 'test', 'Baz' => 'bar'),
- '<test Foo="test"/>'
- ),
- // Test adding with an array
- array(
- array(
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string'),
- 'Baz' => array(
- 'type' => 'array',
- 'location' => 'xml',
- 'items' => array(
- 'type' => 'numeric',
- 'sentAs' => 'Bar'
- )
- )
- )
- ),
- array('Foo' => 'test', 'Baz' => array(1, 2)),
- '<Request><Foo>test</Foo><Baz><Bar>1</Bar><Bar>2</Bar></Baz></Request>'
- ),
- // Test adding an object
- array(
- array(
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string'),
- 'Baz' => array(
- 'type' => 'object',
- 'location' => 'xml',
- 'properties' => array(
- 'Bar' => array('type' => 'string'),
- 'Bam' => array()
- )
- )
- )
- ),
- array('Foo' => 'test', 'Baz' => array('Bar' => 'abc', 'Bam' => 'foo')),
- '<Request><Foo>test</Foo><Baz><Bar>abc</Bar><Bam>foo</Bam></Baz></Request>'
- ),
- // Add an array that contains an object
- array(
- array(
- 'parameters' => array(
- 'Baz' => array(
- 'type' => 'array',
- 'location' => 'xml',
- 'items' => array(
- 'type' => 'object',
- 'sentAs' => 'Bar',
- 'properties' => array('A' => array(), 'B' => array())
- )
- )
- )
- ),
- array('Baz' => array(
- array('A' => '1', 'B' => '2'),
- array('A' => '3', 'B' => '4')
- )),
- '<Request><Baz><Bar><A>1</A><B>2</B></Bar><Bar><A>3</A><B>4</B></Bar></Baz></Request>'
- ),
- // Add an object of attributes
- array(
- array(
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string'),
- 'Baz' => array(
- 'type' => 'object',
- 'location' => 'xml',
- 'properties' => array(
- 'Bar' => array('type' => 'string', 'data' => array('xmlAttribute' => true)),
- 'Bam' => array()
- )
- )
- )
- ),
- array('Foo' => 'test', 'Baz' => array('Bar' => 'abc', 'Bam' => 'foo')),
- '<Request><Foo>test</Foo><Baz Bar="abc"><Bam>foo</Bam></Baz></Request>'
- ),
- // Check order doesn't matter
- array(
- array(
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string'),
- 'Baz' => array(
- 'type' => 'object',
- 'location' => 'xml',
- 'properties' => array(
- 'Bar' => array('type' => 'string', 'data' => array('xmlAttribute' => true)),
- 'Bam' => array()
- )
- )
- )
- ),
- array('Foo' => 'test', 'Baz' => array('Bam' => 'foo', 'Bar' => 'abc')),
- '<Request><Foo>test</Foo><Baz Bar="abc"><Bam>foo</Bam></Baz></Request>'
- ),
- // Add values with custom namespaces
- array(
- array(
- 'parameters' => array(
- 'Foo' => array(
- 'location' => 'xml',
- 'type' => 'string',
- 'data' => array(
- 'xmlNamespace' => 'http://foo.com'
- )
- )
- )
- ),
- array('Foo' => 'test'),
- '<Request><Foo xmlns="http://foo.com">test</Foo></Request>'
- ),
- // Add attributes with custom namespace prefix
- array(
- array(
- 'parameters' => array(
- 'Wrap' => array(
- 'type' => 'object',
- 'location' => 'xml',
- 'properties' => array(
- 'Foo' => array(
- 'type' => 'string',
- 'sentAs' => 'xsi:baz',
- 'data' => array(
- 'xmlNamespace' => 'http://foo.com',
- 'xmlAttribute' => true
- )
- )
- )
- ),
- )
- ),
- array('Wrap' => array(
- 'Foo' => 'test'
- )),
- '<Request><Wrap xsi:baz="test" xmlns:xsi="http://foo.com"/></Request>'
- ),
- // Add nodes with custom namespace prefix
- array(
- array(
- 'parameters' => array(
- 'Wrap' => array(
- 'type' => 'object',
- 'location' => 'xml',
- 'properties' => array(
- 'Foo' => array(
- 'type' => 'string',
- 'sentAs' => 'xsi:Foo',
- 'data' => array(
- 'xmlNamespace' => 'http://foobar.com'
- )
- )
- )
- ),
- )
- ),
- array('Wrap' => array(
- 'Foo' => 'test'
- )),
- '<Request><Wrap><xsi:Foo xmlns:xsi="http://foobar.com">test</xsi:Foo></Wrap></Request>'
- ),
- array(
- array(
- 'parameters' => array(
- 'Foo' => array(
- 'location' => 'xml',
- 'type' => 'string',
- 'data' => array(
- 'xmlNamespace' => 'http://foo.com'
- )
- )
- )
- ),
- array('Foo' => '<h1>This is a title</h1>'),
- '<Request><Foo xmlns="http://foo.com"><![CDATA[<h1>This is a title</h1>]]></Foo></Request>'
- ),
- // Flat array at top level
- array(
- array(
- 'parameters' => array(
- 'Bars' => array(
- 'type' => 'array',
- 'data' => array('xmlFlattened' => true),
- 'location' => 'xml',
- 'items' => array(
- 'type' => 'object',
- 'sentAs' => 'Bar',
- 'properties' => array(
- 'A' => array(),
- 'B' => array()
- )
- )
- ),
- 'Boos' => array(
- 'type' => 'array',
- 'data' => array('xmlFlattened' => true),
- 'location' => 'xml',
- 'items' => array(
- 'sentAs' => 'Boo',
- 'type' => 'string'
- )
- )
- )
- ),
- array(
- 'Bars' => array(
- array('A' => '1', 'B' => '2'),
- array('A' => '3', 'B' => '4')
- ),
- 'Boos' => array('test', '123')
- ),
- '<Request><Bar><A>1</A><B>2</B></Bar><Bar><A>3</A><B>4</B></Bar><Boo>test</Boo><Boo>123</Boo></Request>'
- ),
- // Nested flat arrays
- array(
- array(
- 'parameters' => array(
- 'Delete' => array(
- 'type' => 'object',
- 'location' => 'xml',
- 'properties' => array(
- 'Items' => array(
- 'type' => 'array',
- 'data' => array('xmlFlattened' => true),
- 'items' => array(
- 'type' => 'object',
- 'sentAs' => 'Item',
- 'properties' => array(
- 'A' => array(),
- 'B' => array()
- )
- )
- )
- )
- )
- )
- ),
- array(
- 'Delete' => array(
- 'Items' => array(
- array('A' => '1', 'B' => '2'),
- array('A' => '3', 'B' => '4')
- )
- )
- ),
- '<Request><Delete><Item><A>1</A><B>2</B></Item><Item><A>3</A><B>4</B></Item></Delete></Request>'
- )
- );
- }
-
- /**
- * @dataProvider xmlProvider
- */
- public function testSerializesXml(array $operation, array $input, $xml)
- {
- $operation = new Operation($operation);
- $command = $this->getMockBuilder('Guzzle\Service\Command\OperationCommand')
- ->setConstructorArgs(array($input, $operation))
- ->getMockForAbstractClass();
- $command->setClient(new Client('http://www.test.com/some/path.php'));
- $request = $command->prepare();
- if (!empty($input)) {
- $this->assertEquals('application/xml', (string) $request->getHeader('Content-Type'));
- } else {
- $this->assertNull($request->getHeader('Content-Type'));
- }
- $body = str_replace(array("\n", "<?xml version=\"1.0\"?>"), '', (string) $request->getBody());
- $this->assertEquals($xml, $body);
- }
-
- public function testAddsContentTypeAndTopLevelValues()
- {
- $operation = new Operation(array(
- 'data' => array(
- 'xmlRoot' => array(
- 'name' => 'test',
- 'namespaces' => array(
- 'xsi' => 'http://foo.com'
- )
- )
- ),
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string'),
- 'Baz' => array('location' => 'xml', 'type' => 'string')
- )
- ));
-
- $command = $this->getMockBuilder('Guzzle\Service\Command\OperationCommand')
- ->setConstructorArgs(array(array(
- 'Foo' => 'test',
- 'Baz' => 'bar'
- ), $operation))
- ->getMockForAbstractClass();
-
- $command->setClient(new Client());
- $request = $command->prepare();
- $this->assertEquals('application/xml', (string) $request->getHeader('Content-Type'));
- $this->assertEquals(
- '<?xml version="1.0"?>' . "\n"
- . '<test xmlns:xsi="http://foo.com"><Foo>test</Foo><Baz>bar</Baz></test>' . "\n",
- (string) $request->getBody()
- );
- }
-
- public function testCanChangeContentType()
- {
- $visitor = new XmlVisitor();
- $visitor->setContentTypeHeader('application/foo');
- $this->assertEquals('application/foo', $this->readAttribute($visitor, 'contentType'));
- }
-
- public function testCanAddArrayOfSimpleTypes()
- {
- $request = new EntityEnclosingRequest('POST', 'http://foo.com');
- $visitor = new XmlVisitor();
- $param = new Parameter(array(
- 'type' => 'object',
- 'location' => 'xml',
- 'name' => 'Out',
- 'properties' => array(
- 'Nodes' => array(
- 'required' => true,
- 'type' => 'array',
- 'min' => 1,
- 'items' => array('type' => 'string', 'sentAs' => 'Node')
- )
- )
- ));
-
- $param->setParent(new Operation(array(
- 'data' => array(
- 'xmlRoot' => array(
- 'name' => 'Test',
- 'namespaces' => array(
- 'https://foo/'
- )
- )
- )
- )));
-
- $value = array('Nodes' => array('foo', 'baz'));
- $this->assertTrue($this->validator->validate($param, $value));
- $visitor->visit($this->command, $request, $param, $value);
- $visitor->after($this->command, $request);
-
- $this->assertEquals(
- "<?xml version=\"1.0\"?>\n"
- . "<Test xmlns=\"https://foo/\"><Out><Nodes><Node>foo</Node><Node>baz</Node></Nodes></Out></Test>\n",
- (string) $request->getBody()
- );
- }
-
- public function testCanAddMultipleNamespacesToRoot()
- {
- $operation = new Operation(array(
- 'data' => array(
- 'xmlRoot' => array(
- 'name' => 'Hi',
- 'namespaces' => array(
- 'xsi' => 'http://foo.com',
- 'foo' => 'http://foobar.com'
- )
- )
- ),
- 'parameters' => array(
- 'Foo' => array('location' => 'xml', 'type' => 'string')
- )
- ));
-
- $command = $this->getMockBuilder('Guzzle\Service\Command\OperationCommand')
- ->setConstructorArgs(array(array(
- 'Foo' => 'test'
- ), $operation))
- ->getMockForAbstractClass();
-
- $command->setClient(new Client());
- $request = $command->prepare();
- $this->assertEquals('application/xml', (string) $request->getHeader('Content-Type'));
- $this->assertEquals(
- '<?xml version="1.0"?>' . "\n"
- . '<Hi xmlns:xsi="http://foo.com" xmlns:foo="http://foobar.com"><Foo>test</Foo></Hi>' . "\n",
- (string) $request->getBody()
- );
- }
-
- public function testValuesAreFiltered()
- {
- $operation = new Operation(array(
- 'parameters' => array(
- 'Foo' => array(
- 'location' => 'xml',
- 'type' => 'string',
- 'filters' => array('strtoupper')
- ),
- 'Bar' => array(
- 'location' => 'xml',
- 'type' => 'object',
- 'properties' => array(
- 'Baz' => array(
- 'filters' => array('strtoupper')
- )
- )
- )
- )
- ));
-
- $command = $this->getMockBuilder('Guzzle\Service\Command\OperationCommand')
- ->setConstructorArgs(array(array(
- 'Foo' => 'test',
- 'Bar' => array(
- 'Baz' => 'abc'
- )
- ), $operation))
- ->getMockForAbstractClass();
-
- $command->setClient(new Client());
- $request = $command->prepare();
- $this->assertEquals(
- '<?xml version="1.0"?>' . "\n"
- . '<Request><Foo>TEST</Foo><Bar><Baz>ABC</Baz></Bar></Request>' . "\n",
- (string) $request->getBody()
- );
- }
-
- public function testSkipsNullValues()
- {
- $operation = new Operation(array(
- 'parameters' => array(
- 'Foo' => array(
- 'location' => 'xml',
- 'type' => 'string'
- ),
- 'Bar' => array(
- 'location' => 'xml',
- 'type' => 'object',
- 'properties' => array(
- 'Baz' => array(),
- 'Bam' => array(),
- )
- ),
- 'Arr' => array(
- 'type' => 'array',
- 'items' => array(
- 'type' => 'string'
- )
- )
- )
- ));
-
- $command = $this->getMockBuilder('Guzzle\Service\Command\OperationCommand')
- ->setConstructorArgs(array(array(
- 'Foo' => null,
- 'Bar' => array(
- 'Bar' => null,
- 'Bam' => 'test'
- ),
- 'Arr' => array(null)
- ), $operation))
- ->getMockForAbstractClass();
-
- $command->setClient(new Client());
- $request = $command->prepare();
- $this->assertEquals(
- '<?xml version="1.0"?>' . "\n"
- . '<Request><Bar><Bam>test</Bam></Bar></Request>' . "\n",
- (string) $request->getBody()
- );
- }
-
- public function testAllowsXmlEncoding()
- {
- $operation = new Operation(array(
- 'data' => array(
- 'xmlEncoding' => 'UTF-8'
- ),
- 'parameters' => array(
- 'Foo' => array('location' => 'xml')
- )
- ));
- $command = $this->getMockBuilder('Guzzle\Service\Command\OperationCommand')
- ->setConstructorArgs(array(array('Foo' => 'test'), $operation))
- ->getMockForAbstractClass();
- $command->setClient(new Client());
- $request = $command->prepare();
- $this->assertEquals(
- '<?xml version="1.0" encoding="UTF-8"?>' . "\n"
- . '<Request><Foo>test</Foo></Request>' . "\n",
- (string) $request->getBody()
- );
- }
-
- public function testAllowsSendingXmlPayloadIfNoXmlParamsWereSet()
- {
- $operation = new Operation(array(
- 'httpMethod' => 'POST',
- 'data' => array('xmlAllowEmpty' => true),
- 'parameters' => array('Foo' => array('location' => 'xml'))
- ));
- $command = $this->getMockBuilder('Guzzle\Service\Command\OperationCommand')
- ->setConstructorArgs(array(array(), $operation))
- ->getMockForAbstractClass();
- $command->setClient(new Client('http://foo.com'));
- $request = $command->prepare();
- $this->assertEquals(
- '<?xml version="1.0"?>' . "\n"
- . '<Request/>' . "\n",
- (string) $request->getBody()
- );
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/AbstractResponseVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/AbstractResponseVisitorTest.php
deleted file mode 100644
index 7b86003..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/AbstractResponseVisitorTest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-use Guzzle\Http\Message\Response;
-
-abstract class AbstractResponseVisitorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var Response */
- protected $response;
-
- /** @var MockCommand */
- protected $command;
-
- /** @var array */
- protected $value;
-
- public function setUp()
- {
- $this->value = array();
- $this->command = new MockCommand();
- $this->response = new Response(200, array(
- 'X-Foo' => 'bar',
- 'Content-Length' => 3,
- 'Content-Type' => 'text/plain'
- ), 'Foo');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/BodyVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/BodyVisitorTest.php
deleted file mode 100644
index 932e39b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/BodyVisitorTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Command\LocationVisitor\Response\BodyVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Response\BodyVisitor
- */
-class BodyVisitorTest extends AbstractResponseVisitorTest
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = new Parameter(array('location' => 'body', 'name' => 'foo'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals('Foo', (string) $this->value['foo']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/HeaderVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/HeaderVisitorTest.php
deleted file mode 100644
index db54b1a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/HeaderVisitorTest.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Command\LocationVisitor\Response\HeaderVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Response\HeaderVisitor
- */
-class HeaderVisitorTest extends AbstractResponseVisitorTest
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'header',
- 'name' => 'ContentType',
- 'sentAs' => 'Content-Type'
- ));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals('text/plain', $this->value['ContentType']);
- }
-
- public function testVisitsLocationWithFilters()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'header',
- 'name' => 'Content-Type',
- 'filters' => array('strtoupper')
- ));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals('TEXT/PLAIN', $this->value['Content-Type']);
- }
-
- public function testVisitsMappedPrefixHeaders()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'header',
- 'name' => 'Metadata',
- 'sentAs' => 'X-Baz-',
- 'type' => 'object',
- 'additionalProperties' => array(
- 'type' => 'string'
- )
- ));
- $response = new Response(200, array(
- 'X-Baz-Test' => 'ABC',
- 'X-Baz-Bar' => array('123', '456'),
- 'Content-Length' => 3
- ), 'Foo');
- $visitor->visit($this->command, $response, $param, $this->value);
- $this->assertEquals(array(
- 'Metadata' => array(
- 'Test' => 'ABC',
- 'Bar' => array('123', '456')
- )
- ), $this->value);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/399
- */
- public function testDiscardingUnknownHeaders()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'header',
- 'name' => 'Content-Type',
- 'additionalParameters' => false
- ));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals('text/plain', $this->value['Content-Type']);
- $this->assertArrayNotHasKey('X-Foo', $this->value);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/399
- */
- public function testDiscardingUnknownPropertiesWithAliasing()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'header',
- 'name' => 'ContentType',
- 'sentAs' => 'Content-Type',
- 'additionalParameters' => false
- ));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals('text/plain', $this->value['ContentType']);
- $this->assertArrayNotHasKey('X-Foo', $this->value);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/JsonVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/JsonVisitorTest.php
deleted file mode 100644
index 4f8d30b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/JsonVisitorTest.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Command\LocationVisitor\Response\JsonVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Response\JsonVisitor
- */
-class JsonVisitorTest extends AbstractResponseVisitorTest
-{
- public function testBeforeMethodParsesXml()
- {
- $visitor = new Visitor();
- $command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')
- ->setMethods(array('getResponse'))
- ->getMockForAbstractClass();
- $command->expects($this->once())
- ->method('getResponse')
- ->will($this->returnValue(new Response(200, null, '{"foo":"bar"}')));
- $result = array();
- $visitor->before($command, $result);
- $this->assertEquals(array('foo' => 'bar'), $result);
- }
-
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'array',
- 'items' => array(
- 'filters' => 'strtoupper',
- 'type' => 'string'
- )
- ));
- $this->value = array('foo' => array('a', 'b', 'c'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('A', 'B', 'C'), $this->value['foo']);
- }
-
- public function testRenamesTopLevelValues()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'sentAs' => 'Baz',
- 'type' => 'string',
- ));
- $this->value = array('Baz' => 'test');
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('foo' => 'test'), $this->value);
- }
-
- public function testRenamesDoesNotFailForNonExistentKey()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'properties' => array(
- 'bar' => array(
- 'name' => 'bar',
- 'sentAs' => 'baz',
- ),
- ),
- ));
- $this->value = array('foo' => array('unknown' => 'Unknown'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('foo' => array('unknown' => 'Unknown')), $this->value);
- }
-
- public function testTraversesObjectsAndAppliesFilters()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'properties' => array(
- 'foo' => array('filters' => 'strtoupper'),
- 'bar' => array('filters' => 'strtolower')
- )
- ));
- $this->value = array('foo' => array('foo' => 'hello', 'bar' => 'THERE'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('foo' => 'HELLO', 'bar' => 'there'), $this->value['foo']);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/399
- */
- public function testDiscardingUnknownProperties()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'additionalProperties' => false,
- 'properties' => array(
- 'bar' => array(
- 'type' => 'string',
- 'name' => 'bar',
- ),
- ),
- ));
- $this->value = array('foo' => array('bar' => 15, 'unknown' => 'Unknown'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('foo' => array('bar' => 15)), $this->value);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/399
- */
- public function testDiscardingUnknownPropertiesWithAliasing()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'additionalProperties' => false,
- 'properties' => array(
- 'bar' => array(
- 'name' => 'bar',
- 'sentAs' => 'baz',
- ),
- ),
- ));
- $this->value = array('foo' => array('baz' => 15, 'unknown' => 'Unknown'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('foo' => array('bar' => 15)), $this->value);
- }
-
- public function testWalksAdditionalProperties()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'additionalProperties' => array(
- 'type' => 'object',
- 'properties' => array(
- 'bar' => array(
- 'type' => 'string',
- 'filters' => array('base64_decode')
- )
- ),
- ),
- ));
- $this->value = array('foo' => array('baz' => array('bar' => 'Zm9v')));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals('foo', $this->value['foo']['baz']['bar']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/ReasonPhraseVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/ReasonPhraseVisitorTest.php
deleted file mode 100644
index 23cd40f..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/ReasonPhraseVisitorTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Command\LocationVisitor\Response\ReasonPhraseVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Response\ReasonPhraseVisitor
- */
-class ReasonPhraseVisitorTest extends AbstractResponseVisitorTest
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = new Parameter(array('location' => 'reasonPhrase', 'name' => 'phrase'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals('OK', $this->value['phrase']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/StatusCodeVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/StatusCodeVisitorTest.php
deleted file mode 100644
index 7211a58..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/StatusCodeVisitorTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Command\LocationVisitor\Response\StatusCodeVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Response\StatusCodeVisitor
- */
-class StatusCodeVisitorTest extends AbstractResponseVisitorTest
-{
- public function testVisitsLocation()
- {
- $visitor = new Visitor();
- $param = new Parameter(array('location' => 'statusCode', 'name' => 'code'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(200, $this->value['code']);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/XmlVisitorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/XmlVisitorTest.php
deleted file mode 100644
index f87cec7..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/Response/XmlVisitorTest.php
+++ /dev/null
@@ -1,431 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command\LocationVisitor\Response;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Command\LocationVisitor\Response\XmlVisitor as Visitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\Response\XmlVisitor
- */
-class XmlVisitorTest extends AbstractResponseVisitorTest
-{
- public function testBeforeMethodParsesXml()
- {
- $visitor = new Visitor();
- $command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')
- ->setMethods(array('getResponse'))
- ->getMockForAbstractClass();
- $command->expects($this->once())
- ->method('getResponse')
- ->will($this->returnValue(new Response(200, null, '<foo><Bar>test</Bar></foo>')));
- $result = array();
- $visitor->before($command, $result);
- $this->assertEquals(array('Bar' => 'test'), $result);
- }
-
- public function testBeforeMethodParsesXmlWithNamespace()
- {
- $this->markTestSkipped("Response/XmlVisitor cannot accept 'xmlns' in response, see #368 (http://git.io/USa1mA).");
-
- $visitor = new Visitor();
- $command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')
- ->setMethods(array('getResponse'))
- ->getMockForAbstractClass();
- $command->expects($this->once())
- ->method('getResponse')
- ->will($this->returnValue(new Response(200, null, '<foo xmlns="urn:foo"><bar:Bar xmlns:bar="urn:bar">test</bar:Bar></foo>')));
- $result = array();
- $visitor->before($command, $result);
- $this->assertEquals(array('Bar' => 'test'), $result);
- }
-
- public function testBeforeMethodParsesNestedXml()
- {
- $visitor = new Visitor();
- $command = $this->getMockBuilder('Guzzle\Service\Command\AbstractCommand')
- ->setMethods(array('getResponse'))
- ->getMockForAbstractClass();
- $command->expects($this->once())
- ->method('getResponse')
- ->will($this->returnValue(new Response(200, null, '<foo><Items><Bar>test</Bar></Items></foo>')));
- $result = array();
- $visitor->before($command, $result);
- $this->assertEquals(array('Items' => array('Bar' => 'test')), $result);
- }
-
- public function testCanExtractAndRenameTopLevelXmlValues()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'xml',
- 'name' => 'foo',
- 'sentAs' => 'Bar'
- ));
- $value = array('Bar' => 'test');
- $visitor->visit($this->command, $this->response, $param, $value);
- $this->assertArrayHasKey('foo', $value);
- $this->assertEquals('test', $value['foo']);
- }
-
- public function testEnsuresRepeatedArraysAreInCorrectLocations()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'xml',
- 'name' => 'foo',
- 'sentAs' => 'Foo',
- 'type' => 'array',
- 'items' => array(
- 'type' => 'object',
- 'properties' => array(
- 'Bar' => array('type' => 'string'),
- 'Baz' => array('type' => 'string'),
- 'Bam' => array('type' => 'string')
- )
- )
- ));
-
- $xml = new \SimpleXMLElement('<Test><Foo><Bar>1</Bar><Baz>2</Baz></Foo></Test>');
- $value = json_decode(json_encode($xml), true);
- $visitor->visit($this->command, $this->response, $param, $value);
- $this->assertEquals(array(
- 'foo' => array(
- array (
- 'Bar' => '1',
- 'Baz' => '2'
- )
- )
- ), $value);
- }
-
- public function testEnsuresFlatArraysAreFlat()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'location' => 'xml',
- 'name' => 'foo',
- 'type' => 'array',
- 'items' => array('type' => 'string')
- ));
-
- $value = array('foo' => array('bar', 'baz'));
- $visitor->visit($this->command, $this->response, $param, $value);
- $this->assertEquals(array('foo' => array('bar', 'baz')), $value);
-
- $value = array('foo' => 'bar');
- $visitor->visit($this->command, $this->response, $param, $value);
- $this->assertEquals(array('foo' => array('bar')), $value);
- }
-
- public function xmlDataProvider()
- {
- $param = new Parameter(array(
- 'location' => 'xml',
- 'name' => 'Items',
- 'type' => 'array',
- 'items' => array(
- 'type' => 'object',
- 'name' => 'Item',
- 'properties' => array(
- 'Bar' => array('type' => 'string'),
- 'Baz' => array('type' => 'string')
- )
- )
- ));
-
- return array(
- array($param, '<Test><Items><Item><Bar>1</Bar></Item><Item><Bar>2</Bar></Item></Items></Test>', array(
- 'Items' => array(
- array('Bar' => 1),
- array('Bar' => 2)
- )
- )),
- array($param, '<Test><Items><Item><Bar>1</Bar></Item></Items></Test>', array(
- 'Items' => array(
- array('Bar' => 1)
- )
- )),
- array($param, '<Test><Items /></Test>', array(
- 'Items' => array()
- ))
- );
- }
-
- /**
- * @dataProvider xmlDataProvider
- */
- public function testEnsuresWrappedArraysAreInCorrectLocations($param, $xml, $result)
- {
- $visitor = new Visitor();
- $xml = new \SimpleXMLElement($xml);
- $value = json_decode(json_encode($xml), true);
- $visitor->visit($this->command, $this->response, $param, $value);
- $this->assertEquals($result, $value);
- }
-
- public function testCanRenameValues()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'TerminatingInstances',
- 'type' => 'array',
- 'location' => 'xml',
- 'sentAs' => 'instancesSet',
- 'items' => array(
- 'name' => 'item',
- 'type' => 'object',
- 'sentAs' => 'item',
- 'properties' => array(
- 'InstanceId' => array(
- 'type' => 'string',
- 'sentAs' => 'instanceId',
- ),
- 'CurrentState' => array(
- 'type' => 'object',
- 'sentAs' => 'currentState',
- 'properties' => array(
- 'Code' => array(
- 'type' => 'numeric',
- 'sentAs' => 'code',
- ),
- 'Name' => array(
- 'type' => 'string',
- 'sentAs' => 'name',
- ),
- ),
- ),
- 'PreviousState' => array(
- 'type' => 'object',
- 'sentAs' => 'previousState',
- 'properties' => array(
- 'Code' => array(
- 'type' => 'numeric',
- 'sentAs' => 'code',
- ),
- 'Name' => array(
- 'type' => 'string',
- 'sentAs' => 'name',
- ),
- ),
- ),
- ),
- )
- ));
-
- $value = array(
- 'instancesSet' => array (
- 'item' => array (
- 'instanceId' => 'i-3ea74257',
- 'currentState' => array(
- 'code' => '32',
- 'name' => 'shutting-down',
- ),
- 'previousState' => array(
- 'code' => '16',
- 'name' => 'running',
- ),
- ),
- )
- );
-
- $visitor->visit($this->command, $this->response, $param, $value);
-
- $this->assertEquals(array(
- 'TerminatingInstances' => array(
- array(
- 'InstanceId' => 'i-3ea74257',
- 'CurrentState' => array(
- 'Code' => '32',
- 'Name' => 'shutting-down',
- ),
- 'PreviousState' => array(
- 'Code' => '16',
- 'Name' => 'running',
- )
- )
- )
- ), $value);
- }
-
- public function testCanRenameAttributes()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'RunningQueues',
- 'type' => 'array',
- 'location' => 'xml',
- 'items' => array(
- 'type' => 'object',
- 'sentAs' => 'item',
- 'properties' => array(
- 'QueueId' => array(
- 'type' => 'string',
- 'sentAs' => 'queue_id',
- 'data' => array(
- 'xmlAttribute' => true,
- ),
- ),
- 'CurrentState' => array(
- 'type' => 'object',
- 'properties' => array(
- 'Code' => array(
- 'type' => 'numeric',
- 'sentAs' => 'code',
- 'data' => array(
- 'xmlAttribute' => true,
- ),
- ),
- 'Name' => array(
- 'sentAs' => 'name',
- 'data' => array(
- 'xmlAttribute' => true,
- ),
- ),
- ),
- ),
- 'PreviousState' => array(
- 'type' => 'object',
- 'properties' => array(
- 'Code' => array(
- 'type' => 'numeric',
- 'sentAs' => 'code',
- 'data' => array(
- 'xmlAttribute' => true,
- ),
- ),
- 'Name' => array(
- 'sentAs' => 'name',
- 'data' => array(
- 'xmlAttribute' => true,
- ),
- ),
- ),
- ),
- ),
- )
- ));
-
- $xml = '<wrap><RunningQueues><item queue_id="q-3ea74257"><CurrentState code="32" name="processing" /><PreviousState code="16" name="wait" /></item></RunningQueues></wrap>';
- $value = json_decode(json_encode(new \SimpleXMLElement($xml)), true);
- $visitor->visit($this->command, $this->response, $param, $value);
-
- $this->assertEquals(array(
- 'RunningQueues' => array(
- array(
- 'QueueId' => 'q-3ea74257',
- 'CurrentState' => array(
- 'Code' => '32',
- 'Name' => 'processing',
- ),
- 'PreviousState' => array(
- 'Code' => '16',
- 'Name' => 'wait',
- ),
- ),
- )
- ), $value);
- }
-
- public function testAddsEmptyArraysWhenValueIsMissing()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'Foo',
- 'type' => 'array',
- 'location' => 'xml',
- 'items' => array(
- 'type' => 'object',
- 'properties' => array(
- 'Baz' => array('type' => 'array'),
- 'Bar' => array(
- 'type' => 'object',
- 'properties' => array(
- 'Baz' => array('type' => 'array'),
- )
- )
- )
- )
- ));
-
- $value = array();
- $visitor->visit($this->command, $this->response, $param, $value);
-
- $value = array(
- 'Foo' => array(
- 'Bar' => array()
- )
- );
- $visitor->visit($this->command, $this->response, $param, $value);
- $this->assertEquals(array(
- 'Foo' => array(
- array(
- 'Bar' => array()
- )
- )
- ), $value);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/399
- */
- public function testDiscardingUnknownProperties()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'additionalProperties' => false,
- 'properties' => array(
- 'bar' => array(
- 'type' => 'string',
- 'name' => 'bar',
- ),
- ),
- ));
- $this->value = array('foo' => array('bar' => 15, 'unknown' => 'Unknown'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('foo' => array('bar' => 15)), $this->value);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/399
- */
- public function testDiscardingUnknownPropertiesWithAliasing()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'additionalProperties' => false,
- 'properties' => array(
- 'bar' => array(
- 'name' => 'bar',
- 'sentAs' => 'baz',
- ),
- ),
- ));
- $this->value = array('foo' => array('baz' => 15, 'unknown' => 'Unknown'));
- $visitor->visit($this->command, $this->response, $param, $this->value);
- $this->assertEquals(array('foo' => array('bar' => 15)), $this->value);
- }
-
- public function testProperlyHandlesEmptyStringValues()
- {
- $visitor = new Visitor();
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'properties' => array(
- 'bar' => array('type' => 'string')
- ),
- ));
- $xml = '<wrapper><foo><bar /></foo></wrapper>';
- $value = json_decode(json_encode(new \SimpleXMLElement($xml)), true);
- $visitor->visit($this->command, $this->response, $param, $value);
- $this->assertEquals(array('foo' => array('bar' => '')), $value);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/VisitorFlyweightTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/VisitorFlyweightTest.php
deleted file mode 100644
index a252ffe..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/LocationVisitor/VisitorFlyweightTest.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Service\Command\LocationVisitor\VisitorFlyweight;
-use Guzzle\Service\Command\LocationVisitor\Request\JsonVisitor as JsonRequestVisitor;
-use Guzzle\Service\Command\LocationVisitor\Response\JsonVisitor as JsonResponseVisitor;
-
-/**
- * @covers Guzzle\Service\Command\LocationVisitor\VisitorFlyweight
- */
-class VisitorFlyweightTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testUsesDefaultMappingsWithGetInstance()
- {
- $f = VisitorFlyweight::getInstance();
- $this->assertInstanceOf('Guzzle\Service\Command\LocationVisitor\Request\JsonVisitor', $f->getRequestVisitor('json'));
- $this->assertInstanceOf('Guzzle\Service\Command\LocationVisitor\Response\JsonVisitor', $f->getResponseVisitor('json'));
- }
-
- public function testCanUseCustomMappings()
- {
- $f = new VisitorFlyweight(array());
- $this->assertEquals(array(), $this->readAttribute($f, 'mappings'));
- }
-
- /**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage No request visitor has been mapped for foo
- */
- public function testThrowsExceptionWhenRetrievingUnknownVisitor()
- {
- VisitorFlyweight::getInstance()->getRequestVisitor('foo');
- }
-
- public function testCachesVisitors()
- {
- $f = new VisitorFlyweight();
- $v1 = $f->getRequestVisitor('json');
- $this->assertSame($v1, $f->getRequestVisitor('json'));
- }
-
- public function testAllowsAddingVisitors()
- {
- $f = new VisitorFlyweight();
- $j1 = new JsonRequestVisitor();
- $j2 = new JsonResponseVisitor();
- $f->addRequestVisitor('json', $j1);
- $f->addResponseVisitor('json', $j2);
- $this->assertSame($j1, $f->getRequestVisitor('json'));
- $this->assertSame($j2, $f->getResponseVisitor('json'));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationCommandTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationCommandTest.php
deleted file mode 100644
index 95fb533..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationCommandTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Http\Message\EntityEnclosingRequest;
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Client;
-use Guzzle\Service\Command\OperationCommand;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Service\Command\DefaultRequestSerializer;
-use Guzzle\Service\Resource\Model;
-use Guzzle\Service\Command\LocationVisitor\VisitorFlyweight;
-
-/**
- * @covers Guzzle\Service\Command\OperationCommand
- */
-class OperationCommandTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testHasRequestSerializer()
- {
- $operation = new OperationCommand();
- $a = $operation->getRequestSerializer();
- $b = new DefaultRequestSerializer(VisitorFlyweight::getInstance());
- $operation->setRequestSerializer($b);
- $this->assertNotSame($a, $operation->getRequestSerializer());
- }
-
- public function testPreparesRequestUsingSerializer()
- {
- $op = new OperationCommand(array(), new Operation());
- $op->setClient(new Client());
- $s = $this->getMockBuilder('Guzzle\Service\Command\RequestSerializerInterface')
- ->setMethods(array('prepare'))
- ->getMockForAbstractClass();
- $s->expects($this->once())
- ->method('prepare')
- ->will($this->returnValue(new EntityEnclosingRequest('POST', 'http://foo.com')));
- $op->setRequestSerializer($s);
- $op->prepare();
- }
-
- public function testParsesResponsesWithResponseParser()
- {
- $op = new OperationCommand(array(), new Operation());
- $p = $this->getMockBuilder('Guzzle\Service\Command\ResponseParserInterface')
- ->setMethods(array('parse'))
- ->getMockForAbstractClass();
- $p->expects($this->once())
- ->method('parse')
- ->will($this->returnValue(array('foo' => 'bar')));
- $op->setResponseParser($p);
- $op->setClient(new Client());
- $request = $op->prepare();
- $request->setResponse(new Response(200), true);
- $this->assertEquals(array('foo' => 'bar'), $op->execute());
- }
-
- public function testParsesResponsesUsingModelParserWhenMatchingModelIsFound()
- {
- $description = ServiceDescription::factory(array(
- 'operations' => array(
- 'foo' => array('responseClass' => 'bar', 'responseType' => 'model')
- ),
- 'models' => array(
- 'bar' => array(
- 'type' => 'object',
- 'properties' => array(
- 'Baz' => array('type' => 'string', 'location' => 'xml')
- )
- )
- )
- ));
-
- $op = new OperationCommand(array(), $description->getOperation('foo'));
- $op->setClient(new Client());
- $request = $op->prepare();
- $request->setResponse(new Response(200, array(
- 'Content-Type' => 'application/xml'
- ), '<Foo><Baz>Bar</Baz></Foo>'), true);
- $result = $op->execute();
- $this->assertEquals(new Model(array('Baz' => 'Bar')), $result);
- }
-
- public function testAllowsRawResponses()
- {
- $description = new ServiceDescription(array(
- 'operations' => array('foo' => array('responseClass' => 'bar', 'responseType' => 'model')),
- 'models' => array('bar' => array())
- ));
- $op = new OperationCommand(array(
- OperationCommand::RESPONSE_PROCESSING => OperationCommand::TYPE_RAW
- ), $description->getOperation('foo'));
- $op->setClient(new Client());
- $request = $op->prepare();
- $response = new Response(200, array(
- 'Content-Type' => 'application/xml'
- ), '<Foo><Baz>Bar</Baz></Foo>');
- $request->setResponse($response, true);
- $this->assertSame($response, $op->execute());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationResponseParserTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationResponseParserTest.php
deleted file mode 100644
index 69ba1fc..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Command/OperationResponseParserTest.php
+++ /dev/null
@@ -1,335 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Command;
-
-use Guzzle\Http\Message\Response;
-use Guzzle\Service\Client;
-use Guzzle\Service\Command\OperationResponseParser;
-use Guzzle\Service\Command\OperationCommand;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Service\Command\LocationVisitor\Response\StatusCodeVisitor;
-use Guzzle\Service\Command\LocationVisitor\Response\ReasonPhraseVisitor;
-use Guzzle\Service\Command\LocationVisitor\Response\JsonVisitor;
-use Guzzle\Service\Command\LocationVisitor\Response\BodyVisitor;
-use Guzzle\Service\Command\LocationVisitor\VisitorFlyweight;
-
-/**
- * @covers Guzzle\Service\Command\OperationResponseParser
- * @covers Guzzle\Service\Command\CreateResponseClassEvent
- */
-class OperationResponseParserTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testHasVisitors()
- {
- $p = new OperationResponseParser(new VisitorFlyweight(array()));
- $visitor = new BodyVisitor();
- $p->addVisitor('foo', $visitor);
- $this->assertSame($visitor, $this->readAttribute($p, 'factory')->getResponseVisitor('foo'));
- }
-
- public function testUsesParentParser()
- {
- $p = new OperationResponseParser(new VisitorFlyweight());
- $operation = new Operation();
- $operation->setServiceDescription(new ServiceDescription());
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($p)->setClient(new Client());
- $op->prepare()->setResponse(new Response(200, array('Content-Type' => 'application/xml'), '<F><B>C</B></F>'), true);
- $this->assertInstanceOf('SimpleXMLElement', $op->execute());
- }
-
- public function testVisitsLocations()
- {
- $parser = new OperationResponseParser(new VisitorFlyweight(array()));
- $parser->addVisitor('statusCode', new StatusCodeVisitor());
- $parser->addVisitor('reasonPhrase', new ReasonPhraseVisitor());
- $parser->addVisitor('json', new JsonVisitor());
- $op = new OperationCommand(array(), $this->getDescription()->getOperation('test'));
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(201), true);
- $result = $op->execute();
- $this->assertEquals(201, $result['code']);
- $this->assertEquals('Created', $result['phrase']);
- }
-
- public function testVisitsLocationsForJsonResponse()
- {
- $parser = OperationResponseParser::getInstance();
- $operation = $this->getDescription()->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(200, array(
- 'Content-Type' => 'application/json'
- ), '{"baz":"bar","enigma":"123"}'), true);
- $result = $op->execute();
- $this->assertEquals(array(
- 'baz' => 'bar',
- 'enigma' => '123',
- 'code' => 200,
- 'phrase' => 'OK'
- ), $result->toArray());
- }
-
- public function testSkipsUnkownModels()
- {
- $parser = OperationResponseParser::getInstance();
- $operation = $this->getDescription()->getOperation('test');
- $operation->setResponseClass('Baz')->setResponseType('model');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(201), true);
- $this->assertInstanceOf('Guzzle\Http\Message\Response', $op->execute());
- }
-
- public function testAllowsModelProcessingToBeDisabled()
- {
- $parser = OperationResponseParser::getInstance();
- $operation = $this->getDescription()->getOperation('test');
- $op = new OperationCommand(array('command.response_processing' => 'native'), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(200, array(
- 'Content-Type' => 'application/json'
- ), '{"baz":"bar","enigma":"123"}'), true);
- $result = $op->execute();
- $this->assertInstanceOf('Guzzle\Service\Resource\Model', $result);
- $this->assertEquals(array(
- 'baz' => 'bar',
- 'enigma' => '123'
- ), $result->toArray());
- }
-
- public function testCanInjectModelSchemaIntoModels()
- {
- $parser = new OperationResponseParser(VisitorFlyweight::getInstance(), true);
- $desc = $this->getDescription();
- $operation = $desc->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(200, array(
- 'Content-Type' => 'application/json'
- ), '{"baz":"bar","enigma":"123"}'), true);
- $result = $op->execute();
- $this->assertSame($result->getStructure(), $desc->getModel('Foo'));
- }
-
- public function testDoesNotParseXmlWhenNotUsingXmlVisitor()
- {
- $parser = OperationResponseParser::getInstance();
- $description = ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'Foo')),
- 'models' => array(
- 'Foo' => array(
- 'type' => 'object',
- 'properties' => array('baz' => array('location' => 'body'))
- )
- )
- ));
- $operation = $description->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $brokenXml = '<broken><><><<xml>>>>>';
- $op->prepare()->setResponse(new Response(200, array(
- 'Content-Type' => 'application/xml'
- ), $brokenXml), true);
- $result = $op->execute();
- $this->assertEquals(array('baz'), $result->getKeys());
- $this->assertEquals($brokenXml, (string) $result['baz']);
- }
-
- public function testVisitsAdditionalProperties()
- {
- $parser = OperationResponseParser::getInstance();
- $description = ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'Foo')),
- 'models' => array(
- 'Foo' => array(
- 'type' => 'object',
- 'properties' => array(
- 'code' => array('location' => 'statusCode')
- ),
- 'additionalProperties' => array(
- 'location' => 'json',
- 'type' => 'object',
- 'properties' => array(
- 'a' => array(
- 'type' => 'string',
- 'filters' => 'strtoupper'
- )
- )
- )
- )
- )
- ));
-
- $operation = $description->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $json = '[{"a":"test"},{"a":"baz"}]';
- $op->prepare()->setResponse(new Response(200, array('Content-Type' => 'application/json'), $json), true);
- $result = $op->execute()->toArray();
- $this->assertEquals(array(
- 'code' => 200,
- array('a' => 'TEST'),
- array('a' => 'BAZ')
- ), $result);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/399
- */
- public function testAdditionalPropertiesDisabledDiscardsData()
- {
- $parser = OperationResponseParser::getInstance();
- $description = ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'Foo')),
- 'models' => array(
- 'Foo' => array(
- 'type' => 'object',
- 'additionalProperties' => false,
- 'properties' => array(
- 'name' => array(
- 'location' => 'json',
- 'type' => 'string',
- ),
- 'nested' => array(
- 'location' => 'json',
- 'type' => 'object',
- 'additionalProperties' => false,
- 'properties' => array(
- 'width' => array(
- 'type' => 'integer'
- )
- ),
- ),
- 'code' => array('location' => 'statusCode')
- ),
-
- )
- )
- ));
-
- $operation = $description->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $json = '{"name":"test", "volume":2.0, "nested":{"width":10,"bogus":1}}';
- $op->prepare()->setResponse(new Response(200, array('Content-Type' => 'application/json'), $json), true);
- $result = $op->execute()->toArray();
- $this->assertEquals(array(
- 'name' => 'test',
- 'nested' => array(
- 'width' => 10,
- ),
- 'code' => 200
- ), $result);
- }
-
- public function testCreatesCustomResponseClassInterface()
- {
- $parser = OperationResponseParser::getInstance();
- $description = ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'Guzzle\Tests\Mock\CustomResponseModel'))
- ));
- $operation = $description->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(200, array('Content-Type' => 'application/json'), 'hi!'), true);
- $result = $op->execute();
- $this->assertInstanceOf('Guzzle\Tests\Mock\CustomResponseModel', $result);
- $this->assertSame($op, $result->command);
- }
-
- /**
- * @expectedException \Guzzle\Service\Exception\ResponseClassException
- * @expectedExceptionMessage must exist
- */
- public function testEnsuresResponseClassExists()
- {
- $parser = OperationResponseParser::getInstance();
- $description = ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'Foo\Baz\Bar'))
- ));
- $operation = $description->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(200, array('Content-Type' => 'application/json'), 'hi!'), true);
- $op->execute();
- }
-
- /**
- * @expectedException \Guzzle\Service\Exception\ResponseClassException
- * @expectedExceptionMessage and implement
- */
- public function testEnsuresResponseClassImplementsResponseClassInterface()
- {
- $parser = OperationResponseParser::getInstance();
- $description = ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => __CLASS__))
- ));
- $operation = $description->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $op->prepare()->setResponse(new Response(200, array('Content-Type' => 'application/json'), 'hi!'), true);
- $op->execute();
- }
-
- protected function getDescription()
- {
- return ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'Foo')),
- 'models' => array(
- 'Foo' => array(
- 'type' => 'object',
- 'properties' => array(
- 'baz' => array('type' => 'string', 'location' => 'json'),
- 'code' => array('location' => 'statusCode'),
- 'phrase' => array('location' => 'reasonPhrase'),
- )
- )
- )
- ));
- }
-
- public function testCanAddListenerToParseDomainObjects()
- {
- $client = new Client();
- $client->setDescription(ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'FooBazBar'))
- )));
- $foo = new \stdClass();
- $client->getEventDispatcher()->addListener('command.parse_response', function ($e) use ($foo) {
- $e['result'] = $foo;
- });
- $command = $client->getCommand('test');
- $command->prepare()->setResponse(new Response(200), true);
- $result = $command->execute();
- $this->assertSame($result, $foo);
- }
-
- /**
- * @group issue-399
- * @link https://github.com/guzzle/guzzle/issues/501
- */
- public function testAdditionalPropertiesWithRefAreResolved()
- {
- $parser = OperationResponseParser::getInstance();
- $description = ServiceDescription::factory(array(
- 'operations' => array('test' => array('responseClass' => 'Foo')),
- 'models' => array(
- 'Baz' => array('type' => 'string'),
- 'Foo' => array(
- 'type' => 'object',
- 'additionalProperties' => array('$ref' => 'Baz', 'location' => 'json')
- )
- )
- ));
- $operation = $description->getOperation('test');
- $op = new OperationCommand(array(), $operation);
- $op->setResponseParser($parser)->setClient(new Client());
- $json = '{"a":"a","b":"b","c":"c"}';
- $op->prepare()->setResponse(new Response(200, array('Content-Type' => 'application/json'), $json), true);
- $result = $op->execute()->toArray();
- $this->assertEquals(array('a' => 'a', 'b' => 'b', 'c' => 'c'), $result);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/OperationTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/OperationTest.php
deleted file mode 100644
index ae33b69..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/OperationTest.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Description;
-
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Description\ServiceDescription;
-
-/**
- * @covers Guzzle\Service\Description\Operation
- */
-class OperationTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public static function strtoupper($string)
- {
- return strtoupper($string);
- }
-
- public function testOperationIsDataObject()
- {
- $c = new Operation(array(
- 'name' => 'test',
- 'summary' => 'doc',
- 'notes' => 'notes',
- 'documentationUrl' => 'http://www.example.com',
- 'httpMethod' => 'POST',
- 'uri' => '/api/v1',
- 'responseClass' => 'array',
- 'responseNotes' => 'returns the json_decoded response',
- 'deprecated' => true,
- 'parameters' => array(
- 'key' => array(
- 'required' => true,
- 'type' => 'string',
- 'maxLength' => 10
- ),
- 'key_2' => array(
- 'required' => true,
- 'type' => 'integer',
- 'default' => 10
- )
- )
- ));
-
- $this->assertEquals('test', $c->getName());
- $this->assertEquals('doc', $c->getSummary());
- $this->assertEquals('http://www.example.com', $c->getDocumentationUrl());
- $this->assertEquals('POST', $c->getHttpMethod());
- $this->assertEquals('/api/v1', $c->getUri());
- $this->assertEquals('array', $c->getResponseClass());
- $this->assertEquals('returns the json_decoded response', $c->getResponseNotes());
- $this->assertTrue($c->getDeprecated());
- $this->assertEquals('Guzzle\\Service\\Command\\OperationCommand', $c->getClass());
- $this->assertEquals(array(
- 'key' => new Parameter(array(
- 'name' => 'key',
- 'required' => true,
- 'type' => 'string',
- 'maxLength' => 10,
- 'parent' => $c
- )),
- 'key_2' => new Parameter(array(
- 'name' => 'key_2',
- 'required' => true,
- 'type' => 'integer',
- 'default' => 10,
- 'parent' => $c
- ))
- ), $c->getParams());
-
- $this->assertEquals(new Parameter(array(
- 'name' => 'key_2',
- 'required' => true,
- 'type' => 'integer',
- 'default' => 10,
- 'parent' => $c
- )), $c->getParam('key_2'));
-
- $this->assertNull($c->getParam('afefwef'));
- $this->assertArrayNotHasKey('parent', $c->getParam('key_2')->toArray());
- }
-
- public function testAllowsConcreteCommands()
- {
- $c = new Operation(array(
- 'name' => 'test',
- 'class' => 'Guzzle\\Service\\Command\ClosureCommand',
- 'parameters' => array(
- 'p' => new Parameter(array(
- 'name' => 'foo'
- ))
- )
- ));
- $this->assertEquals('Guzzle\\Service\\Command\ClosureCommand', $c->getClass());
- }
-
- public function testConvertsToArray()
- {
- $data = array(
- 'name' => 'test',
- 'class' => 'Guzzle\\Service\\Command\ClosureCommand',
- 'summary' => 'test',
- 'documentationUrl' => 'http://www.example.com',
- 'httpMethod' => 'PUT',
- 'uri' => '/',
- 'parameters' => array('p' => array('name' => 'foo'))
- );
- $c = new Operation($data);
- $toArray = $c->toArray();
- unset($data['name']);
- $this->assertArrayHasKey('parameters', $toArray);
- $this->assertInternalType('array', $toArray['parameters']);
-
- // Normalize the array
- unset($data['parameters']);
- unset($toArray['parameters']);
-
- $data['responseType'] = 'primitive';
- $data['responseClass'] = 'array';
- $this->assertEquals($data, $toArray);
- }
-
- public function testDeterminesIfHasParam()
- {
- $command = $this->getTestCommand();
- $this->assertTrue($command->hasParam('data'));
- $this->assertFalse($command->hasParam('baz'));
- }
-
- public function testReturnsParamNames()
- {
- $command = $this->getTestCommand();
- $this->assertEquals(array('data'), $command->getParamNames());
- }
-
- protected function getTestCommand()
- {
- return new Operation(array(
- 'parameters' => array(
- 'data' => new Parameter(array(
- 'type' => 'string'
- ))
- )
- ));
- }
-
- public function testCanBuildUpCommands()
- {
- $c = new Operation(array());
- $c->setName('foo')
- ->setClass('Baz')
- ->setDeprecated(false)
- ->setSummary('summary')
- ->setDocumentationUrl('http://www.foo.com')
- ->setHttpMethod('PUT')
- ->setResponseNotes('oh')
- ->setResponseClass('string')
- ->setUri('/foo/bar')
- ->addParam(new Parameter(array(
- 'name' => 'test'
- )));
-
- $this->assertEquals('foo', $c->getName());
- $this->assertEquals('Baz', $c->getClass());
- $this->assertEquals(false, $c->getDeprecated());
- $this->assertEquals('summary', $c->getSummary());
- $this->assertEquals('http://www.foo.com', $c->getDocumentationUrl());
- $this->assertEquals('PUT', $c->getHttpMethod());
- $this->assertEquals('oh', $c->getResponseNotes());
- $this->assertEquals('string', $c->getResponseClass());
- $this->assertEquals('/foo/bar', $c->getUri());
- $this->assertEquals(array('test'), $c->getParamNames());
- }
-
- public function testCanRemoveParams()
- {
- $c = new Operation(array());
- $c->addParam(new Parameter(array('name' => 'foo')));
- $this->assertTrue($c->hasParam('foo'));
- $c->removeParam('foo');
- $this->assertFalse($c->hasParam('foo'));
- }
-
- public function testAddsNameToParametersIfNeeded()
- {
- $command = new Operation(array('parameters' => array('foo' => new Parameter(array()))));
- $this->assertEquals('foo', $command->getParam('foo')->getName());
- }
-
- public function testContainsApiErrorInformation()
- {
- $command = $this->getOperation();
- $this->assertEquals(1, count($command->getErrorResponses()));
- $arr = $command->toArray();
- $this->assertEquals(1, count($arr['errorResponses']));
- $command->addErrorResponse(400, 'Foo', 'Baz\\Bar');
- $this->assertEquals(2, count($command->getErrorResponses()));
- $command->setErrorResponses(array());
- $this->assertEquals(0, count($command->getErrorResponses()));
- }
-
- public function testHasNotes()
- {
- $o = new Operation(array('notes' => 'foo'));
- $this->assertEquals('foo', $o->getNotes());
- $o->setNotes('bar');
- $this->assertEquals('bar', $o->getNotes());
- }
-
- public function testHasData()
- {
- $o = new Operation(array('data' => array('foo' => 'baz', 'bar' => 123)));
- $o->setData('test', false);
- $this->assertEquals('baz', $o->getData('foo'));
- $this->assertEquals(123, $o->getData('bar'));
- $this->assertNull($o->getData('wfefwe'));
- $this->assertEquals(array(
- 'parameters' => array(),
- 'class' => 'Guzzle\Service\Command\OperationCommand',
- 'data' => array('foo' => 'baz', 'bar' => 123, 'test' => false),
- 'responseClass' => 'array',
- 'responseType' => 'primitive'
- ), $o->toArray());
- }
-
- public function testHasServiceDescription()
- {
- $s = new ServiceDescription();
- $o = new Operation(array(), $s);
- $this->assertSame($s, $o->getServiceDescription());
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testValidatesResponseType()
- {
- $o = new Operation(array('responseClass' => 'array', 'responseType' => 'foo'));
- }
-
- public function testInfersResponseType()
- {
- $o = $this->getOperation();
- $o->setServiceDescription(new ServiceDescription(array('models' => array('Foo' => array()))));
- $this->assertEquals('primitive', $o->getResponseType());
- $this->assertEquals('primitive', $o->setResponseClass('boolean')->getResponseType());
- $this->assertEquals('primitive', $o->setResponseClass('array')->getResponseType());
- $this->assertEquals('primitive', $o->setResponseClass('integer')->getResponseType());
- $this->assertEquals('primitive', $o->setResponseClass('string')->getResponseType());
- $this->assertEquals('class', $o->setResponseClass('foo')->getResponseType());
- $this->assertEquals('class', $o->setResponseClass(__CLASS__)->getResponseType());
- $this->assertEquals('model', $o->setResponseClass('Foo')->getResponseType());
- }
-
- public function testHasResponseType()
- {
- // infers in the constructor
- $o = new Operation(array('responseClass' => 'array'));
- $this->assertEquals('primitive', $o->getResponseType());
- // Infers when set
- $o = new Operation();
- $this->assertEquals('primitive', $o->getResponseType());
- $this->assertEquals('model', $o->setResponseType('model')->getResponseType());
- }
-
- public function testHasAdditionalParameters()
- {
- $o = new Operation(array(
- 'additionalParameters' => array(
- 'type' => 'string', 'name' => 'binks'
- ),
- 'parameters' => array(
- 'foo' => array('type' => 'integer')
- )
- ));
- $this->assertEquals('string', $o->getAdditionalParameters()->getType());
- $arr = $o->toArray();
- $this->assertEquals(array(
- 'type' => 'string'
- ), $arr['additionalParameters']);
- }
-
- /**
- * @return Operation
- */
- protected function getOperation()
- {
- return new Operation(array(
- 'name' => 'OperationTest',
- 'class' => get_class($this),
- 'parameters' => array(
- 'test' => array('type' => 'object'),
- 'bool_1' => array('default' => true, 'type' => 'boolean'),
- 'bool_2' => array('default' => false),
- 'float' => array('type' => 'numeric'),
- 'int' => array('type' => 'integer'),
- 'date' => array('type' => 'string'),
- 'timestamp' => array('type' => 'string'),
- 'string' => array('type' => 'string'),
- 'username' => array('type' => 'string', 'required' => true, 'filters' => 'strtolower'),
- 'test_function' => array('type' => 'string', 'filters' => __CLASS__ . '::strtoupper')
- ),
- 'errorResponses' => array(
- array('code' => 503, 'reason' => 'InsufficientCapacity', 'class' => 'Guzzle\\Exception\\RuntimeException')
- )
- ));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ParameterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ParameterTest.php
deleted file mode 100644
index b9c162a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ParameterTest.php
+++ /dev/null
@@ -1,411 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Description;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Description\ServiceDescription;
-
-/**
- * @covers Guzzle\Service\Description\Parameter
- */
-class ParameterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $data = array(
- 'name' => 'foo',
- 'type' => 'bar',
- 'required' => true,
- 'default' => '123',
- 'description' => '456',
- 'minLength' => 2,
- 'maxLength' => 5,
- 'location' => 'body',
- 'static' => 'static!',
- 'filters' => array('trim', 'json_encode')
- );
-
- public function testCreatesParamFromArray()
- {
- $p = new Parameter($this->data);
- $this->assertEquals('foo', $p->getName());
- $this->assertEquals('bar', $p->getType());
- $this->assertEquals(true, $p->getRequired());
- $this->assertEquals('123', $p->getDefault());
- $this->assertEquals('456', $p->getDescription());
- $this->assertEquals(2, $p->getMinLength());
- $this->assertEquals(5, $p->getMaxLength());
- $this->assertEquals('body', $p->getLocation());
- $this->assertEquals('static!', $p->getStatic());
- $this->assertEquals(array('trim', 'json_encode'), $p->getFilters());
- }
-
- public function testCanConvertToArray()
- {
- $p = new Parameter($this->data);
- unset($this->data['name']);
- $this->assertEquals($this->data, $p->toArray());
- }
-
- public function testUsesStatic()
- {
- $d = $this->data;
- $d['default'] = 'booboo';
- $d['static'] = true;
- $p = new Parameter($d);
- $this->assertEquals('booboo', $p->getValue('bar'));
- }
-
- public function testUsesDefault()
- {
- $d = $this->data;
- $d['default'] = 'foo';
- $d['static'] = null;
- $p = new Parameter($d);
- $this->assertEquals('foo', $p->getValue(null));
- }
-
- public function testReturnsYourValue()
- {
- $d = $this->data;
- $d['static'] = null;
- $p = new Parameter($d);
- $this->assertEquals('foo', $p->getValue('foo'));
- }
-
- public function testZeroValueDoesNotCauseDefaultToBeReturned()
- {
- $d = $this->data;
- $d['default'] = '1';
- $d['static'] = null;
- $p = new Parameter($d);
- $this->assertEquals('0', $p->getValue('0'));
- }
-
- public function testFiltersValues()
- {
- $d = $this->data;
- $d['static'] = null;
- $d['filters'] = 'strtoupper';
- $p = new Parameter($d);
- $this->assertEquals('FOO', $p->filter('foo'));
- }
-
- public function testConvertsBooleans()
- {
- $p = new Parameter(array('type' => 'boolean'));
- $this->assertEquals(true, $p->filter('true'));
- $this->assertEquals(false, $p->filter('false'));
- }
-
- public function testUsesArrayByDefaultForFilters()
- {
- $d = $this->data;
- $d['filters'] = null;
- $p = new Parameter($d);
- $this->assertEquals(array(), $p->getFilters());
- }
-
- public function testAllowsSimpleLocationValue()
- {
- $p = new Parameter(array('name' => 'myname', 'location' => 'foo', 'sentAs' => 'Hello'));
- $this->assertEquals('foo', $p->getLocation());
- $this->assertEquals('Hello', $p->getSentAs());
- }
-
- public function testParsesTypeValues()
- {
- $p = new Parameter(array('type' => 'foo'));
- $this->assertEquals('foo', $p->getType());
- }
-
- /**
- * @expectedException InvalidArgumentException
- * @expectedExceptionMessage A [method] value must be specified for each complex filter
- */
- public function testValidatesComplexFilters()
- {
- $p = new Parameter(array('filters' => array(array('args' => 'foo'))));
- }
-
- public function testCanBuildUpParams()
- {
- $p = new Parameter(array());
- $p->setName('foo')
- ->setDescription('c')
- ->setFilters(array('d'))
- ->setLocation('e')
- ->setSentAs('f')
- ->setMaxLength(1)
- ->setMinLength(1)
- ->setMinimum(2)
- ->setMaximum(2)
- ->setMinItems(3)
- ->setMaxItems(3)
- ->setRequired(true)
- ->setStatic(true)
- ->setDefault('h')
- ->setType('i');
-
- $p->addFilter('foo');
-
- $this->assertEquals('foo', $p->getName());
- $this->assertEquals('h', $p->getDefault());
- $this->assertEquals('c', $p->getDescription());
- $this->assertEquals(array('d', 'foo'), $p->getFilters());
- $this->assertEquals('e', $p->getLocation());
- $this->assertEquals('f', $p->getSentAs());
- $this->assertEquals(1, $p->getMaxLength());
- $this->assertEquals(1, $p->getMinLength());
- $this->assertEquals(2, $p->getMaximum());
- $this->assertEquals(2, $p->getMinimum());
- $this->assertEquals(3, $p->getMaxItems());
- $this->assertEquals(3, $p->getMinItems());
- $this->assertEquals(true, $p->getRequired());
- $this->assertEquals(true, $p->getStatic());
- $this->assertEquals('i', $p->getType());
- }
-
- public function testAllowsNestedShape()
- {
- $command = $this->getServiceBuilder()->get('mock')->getCommand('mock_command')->getOperation();
- $param = new Parameter(array(
- 'parent' => $command,
- 'name' => 'foo',
- 'type' => 'object',
- 'location' => 'query',
- 'properties' => array(
- 'foo' => array(
- 'type' => 'object',
- 'required' => true,
- 'properties' => array(
- 'baz' => array(
- 'name' => 'baz',
- 'type' => 'bool',
- )
- )
- ),
- 'bar' => array(
- 'name' => 'bar',
- 'default' => '123'
- )
- )
- ));
-
- $this->assertSame($command, $param->getParent());
- $this->assertNotEmpty($param->getProperties());
- $this->assertInstanceOf('Guzzle\Service\Description\Parameter', $param->getProperty('foo'));
- $this->assertSame($param, $param->getProperty('foo')->getParent());
- $this->assertSame($param->getProperty('foo'), $param->getProperty('foo')->getProperty('baz')->getParent());
- $this->assertInstanceOf('Guzzle\Service\Description\Parameter', $param->getProperty('bar'));
- $this->assertSame($param, $param->getProperty('bar')->getParent());
-
- $array = $param->toArray();
- $this->assertInternalType('array', $array['properties']);
- $this->assertArrayHasKey('foo', $array['properties']);
- $this->assertArrayHasKey('bar', $array['properties']);
- }
-
- public function testAllowsComplexFilters()
- {
- $that = $this;
- $param = new Parameter(array());
- $param->setFilters(array(array('method' => function ($a, $b, $c, $d) use ($that, $param) {
- $that->assertEquals('test', $a);
- $that->assertEquals('my_value!', $b);
- $that->assertEquals('bar', $c);
- $that->assertSame($param, $d);
- return 'abc' . $b;
- }, 'args' => array('test', '@value', 'bar', '@api'))));
- $this->assertEquals('abcmy_value!', $param->filter('my_value!'));
- }
-
- public function testCanChangeParentOfNestedParameter()
- {
- $param1 = new Parameter(array('name' => 'parent'));
- $param2 = new Parameter(array('name' => 'child'));
- $param2->setParent($param1);
- $this->assertSame($param1, $param2->getParent());
- }
-
- public function testCanRemoveFromNestedStructure()
- {
- $param1 = new Parameter(array('name' => 'parent'));
- $param2 = new Parameter(array('name' => 'child'));
- $param1->addProperty($param2);
- $this->assertSame($param1, $param2->getParent());
- $this->assertSame($param2, $param1->getProperty('child'));
-
- // Remove a single child from the structure
- $param1->removeProperty('child');
- $this->assertNull($param1->getProperty('child'));
- // Remove the entire structure
- $param1->addProperty($param2);
- $param1->removeProperty('child');
- $this->assertNull($param1->getProperty('child'));
- }
-
- public function testAddsAdditionalProperties()
- {
- $p = new Parameter(array(
- 'type' => 'object',
- 'additionalProperties' => array('type' => 'string')
- ));
- $this->assertInstanceOf('Guzzle\Service\Description\Parameter', $p->getAdditionalProperties());
- $this->assertNull($p->getAdditionalProperties()->getAdditionalProperties());
- $p = new Parameter(array('type' => 'object'));
- $this->assertTrue($p->getAdditionalProperties());
- }
-
- public function testAddsItems()
- {
- $p = new Parameter(array(
- 'type' => 'array',
- 'items' => array('type' => 'string')
- ));
- $this->assertInstanceOf('Guzzle\Service\Description\Parameter', $p->getItems());
- $out = $p->toArray();
- $this->assertEquals('array', $out['type']);
- $this->assertInternalType('array', $out['items']);
- }
-
- public function testHasExtraProperties()
- {
- $p = new Parameter();
- $this->assertEquals(array(), $p->getData());
- $p->setData(array('foo' => 'bar'));
- $this->assertEquals('bar', $p->getData('foo'));
- $p->setData('baz', 'boo');
- $this->assertEquals(array('foo' => 'bar', 'baz' => 'boo'), $p->getData());
- }
-
- public function testCanRetrieveKnownPropertiesUsingDataMethod()
- {
- $p = new Parameter();
- $this->assertEquals(null, $p->getData('foo'));
- $p->setName('test');
- $this->assertEquals('test', $p->getData('name'));
- }
-
- public function testHasInstanceOf()
- {
- $p = new Parameter();
- $this->assertNull($p->getInstanceOf());
- $p->setInstanceOf('Foo');
- $this->assertEquals('Foo', $p->getInstanceOf());
- }
-
- public function testHasPattern()
- {
- $p = new Parameter();
- $this->assertNull($p->getPattern());
- $p->setPattern('/[0-9]+/');
- $this->assertEquals('/[0-9]+/', $p->getPattern());
- }
-
- public function testHasEnum()
- {
- $p = new Parameter();
- $this->assertNull($p->getEnum());
- $p->setEnum(array('foo', 'bar'));
- $this->assertEquals(array('foo', 'bar'), $p->getEnum());
- }
-
- public function testSerializesItems()
- {
- $p = new Parameter(array(
- 'type' => 'object',
- 'additionalProperties' => array('type' => 'string')
- ));
- $this->assertEquals(array(
- 'type' => 'object',
- 'additionalProperties' => array('type' => 'string')
- ), $p->toArray());
- }
-
- public function testResolvesRefKeysRecursively()
- {
- $description = new ServiceDescription(array(
- 'models' => array(
- 'JarJar' => array('type' => 'string', 'default' => 'Mesa address tha senate!'),
- 'Anakin' => array('type' => 'array', 'items' => array('$ref' => 'JarJar'))
- )
- ));
- $p = new Parameter(array('$ref' => 'Anakin', 'description' => 'added'), $description);
- $this->assertEquals(array(
- 'type' => 'array',
- 'items' => array('type' => 'string', 'default' => 'Mesa address tha senate!'),
- 'description' => 'added'
- ), $p->toArray());
- }
-
- public function testResolvesExtendsRecursively()
- {
- $jarJar = array('type' => 'string', 'default' => 'Mesa address tha senate!', 'description' => 'a');
- $anakin = array('type' => 'array', 'items' => array('extends' => 'JarJar', 'description' => 'b'));
- $description = new ServiceDescription(array(
- 'models' => array('JarJar' => $jarJar, 'Anakin' => $anakin)
- ));
- // Description attribute will be updated, and format added
- $p = new Parameter(array('extends' => 'Anakin', 'format' => 'date'), $description);
- $this->assertEquals(array(
- 'type' => 'array',
- 'format' => 'date',
- 'items' => array(
- 'type' => 'string',
- 'default' => 'Mesa address tha senate!',
- 'description' => 'b'
- )
- ), $p->toArray());
- }
-
- public function testHasKeyMethod()
- {
- $p = new Parameter(array('name' => 'foo', 'sentAs' => 'bar'));
- $this->assertEquals('bar', $p->getWireName());
- $p->setSentAs(null);
- $this->assertEquals('foo', $p->getWireName());
- }
-
- public function testIncludesNameInToArrayWhenItemsAttributeHasName()
- {
- $p = new Parameter(array(
- 'type' => 'array',
- 'name' => 'Abc',
- 'items' => array(
- 'name' => 'Foo',
- 'type' => 'object'
- )
- ));
- $result = $p->toArray();
- $this->assertEquals(array(
- 'type' => 'array',
- 'items' => array(
- 'name' => 'Foo',
- 'type' => 'object',
- 'additionalProperties' => true
- )
- ), $result);
- }
-
- public function dateTimeProvider()
- {
- $d = 'October 13, 2012 16:15:46 UTC';
-
- return array(
- array($d, 'date-time', '2012-10-13T16:15:46Z'),
- array($d, 'date', '2012-10-13'),
- array($d, 'timestamp', strtotime($d)),
- array(new \DateTime($d), 'timestamp', strtotime($d))
- );
- }
-
- /**
- * @dataProvider dateTimeProvider
- */
- public function testAppliesFormat($d, $format, $result)
- {
- $p = new Parameter();
- $p->setFormat($format);
- $this->assertEquals($format, $p->getFormat());
- $this->assertEquals($result, $p->filter($d));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaFormatterTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaFormatterTest.php
deleted file mode 100644
index eb3619b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaFormatterTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Description;
-
-use Guzzle\Service\Description\SchemaFormatter;
-
-/**
- * @covers Guzzle\Service\Description\SchemaFormatter
- */
-class SchemaFormatterTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function dateTimeProvider()
- {
- $dateUtc = 'October 13, 2012 16:15:46 UTC';
- $dateOffset = 'October 13, 2012 10:15:46 -06:00';
- $expectedDateTime = '2012-10-13T16:15:46Z';
-
- return array(
- array('foo', 'does-not-exist', 'foo'),
- array($dateUtc, 'date-time', $expectedDateTime),
- array($dateUtc, 'date-time-http', 'Sat, 13 Oct 2012 16:15:46 GMT'),
- array($dateUtc, 'date', '2012-10-13'),
- array($dateUtc, 'timestamp', strtotime($dateUtc)),
- array(new \DateTime($dateUtc), 'timestamp', strtotime($dateUtc)),
- array($dateUtc, 'time', '16:15:46'),
- array(strtotime($dateUtc), 'time', '16:15:46'),
- array(strtotime($dateUtc), 'timestamp', strtotime($dateUtc)),
- array('true', 'boolean-string', 'true'),
- array(true, 'boolean-string', 'true'),
- array('false', 'boolean-string', 'false'),
- array(false, 'boolean-string', 'false'),
- array('1350144946', 'date-time', $expectedDateTime),
- array(1350144946, 'date-time', $expectedDateTime),
- array($dateOffset, 'date-time', $expectedDateTime)
- );
- }
-
- /**
- * @dataProvider dateTimeProvider
- */
- public function testFilters($value, $format, $result)
- {
- $this->assertEquals($result, SchemaFormatter::format($format, $value));
- }
-
- /**
- * @expectedException \Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testValidatesDateTimeInput()
- {
- SchemaFormatter::format('date-time', false);
- }
-
- public function testEnsuresTimestampsAreIntegers()
- {
- $t = time();
- $result = SchemaFormatter::format('timestamp', $t);
- $this->assertSame($t, $result);
- $this->assertInternalType('int', $result);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaValidatorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaValidatorTest.php
deleted file mode 100644
index 4d6cc87..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/SchemaValidatorTest.php
+++ /dev/null
@@ -1,326 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Description;
-
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Description\SchemaValidator;
-
-/**
- * @covers Guzzle\Service\Description\SchemaValidator
- */
-class SchemaValidatorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var SchemaValidator */
- protected $validator;
-
- public function setUp()
- {
- $this->validator = new SchemaValidator();
- }
-
- public function testValidatesArrayListsAreNumericallyIndexed()
- {
- $value = array(array(1));
- $this->assertFalse($this->validator->validate($this->getComplexParam(), $value));
- $this->assertEquals(
- array('[Foo][0] must be an array of properties. Got a numerically indexed array.'),
- $this->validator->getErrors()
- );
- }
-
- public function testValidatesArrayListsContainProperItems()
- {
- $value = array(true);
- $this->assertFalse($this->validator->validate($this->getComplexParam(), $value));
- $this->assertEquals(
- array('[Foo][0] must be of type object'),
- $this->validator->getErrors()
- );
- }
-
- public function testAddsDefaultValuesInLists()
- {
- $value = array(array());
- $this->assertTrue($this->validator->validate($this->getComplexParam(), $value));
- $this->assertEquals(array(array('Bar' => true)), $value);
- }
-
- public function testMergesDefaultValuesInLists()
- {
- $value = array(
- array('Baz' => 'hello!'),
- array('Bar' => false)
- );
- $this->assertTrue($this->validator->validate($this->getComplexParam(), $value));
- $this->assertEquals(array(
- array(
- 'Baz' => 'hello!',
- 'Bar' => true
- ),
- array('Bar' => false)
- ), $value);
- }
-
- public function testCorrectlyConvertsParametersToArrayWhenArraysArePresent()
- {
- $param = $this->getComplexParam();
- $result = $param->toArray();
- $this->assertInternalType('array', $result['items']);
- $this->assertEquals('array', $result['type']);
- $this->assertInstanceOf('Guzzle\Service\Description\Parameter', $param->getItems());
- }
-
- public function testAllowsInstanceOf()
- {
- $p = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'instanceOf' => get_class($this)
- ));
- $this->assertTrue($this->validator->validate($p, $this));
- $this->assertFalse($this->validator->validate($p, $p));
- $this->assertEquals(array('[foo] must be an instance of ' . __CLASS__), $this->validator->getErrors());
- }
-
- public function testEnforcesInstanceOfOnlyWhenObject()
- {
- $p = new Parameter(array(
- 'name' => 'foo',
- 'type' => array('object', 'string'),
- 'instanceOf' => get_class($this)
- ));
- $this->assertTrue($this->validator->validate($p, $this));
- $s = 'test';
- $this->assertTrue($this->validator->validate($p, $s));
- }
-
- public function testConvertsObjectsToArraysWhenToArrayInterface()
- {
- $o = $this->getMockBuilder('Guzzle\Common\ToArrayInterface')
- ->setMethods(array('toArray'))
- ->getMockForAbstractClass();
- $o->expects($this->once())
- ->method('toArray')
- ->will($this->returnValue(array(
- 'foo' => 'bar'
- )));
- $p = new Parameter(array(
- 'name' => 'test',
- 'type' => 'object',
- 'properties' => array(
- 'foo' => array('required' => 'true')
- )
- ));
- $this->assertTrue($this->validator->validate($p, $o));
- }
-
- public function testMergesValidationErrorsInPropertiesWithParent()
- {
- $p = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'properties' => array(
- 'bar' => array('type' => 'string', 'required' => true, 'description' => 'This is what it does'),
- 'test' => array('type' => 'string', 'minLength' => 2, 'maxLength' => 5),
- 'test2' => array('type' => 'string', 'minLength' => 2, 'maxLength' => 2),
- 'test3' => array('type' => 'integer', 'minimum' => 100),
- 'test4' => array('type' => 'integer', 'maximum' => 10),
- 'test5' => array('type' => 'array', 'maxItems' => 2),
- 'test6' => array('type' => 'string', 'enum' => array('a', 'bc')),
- 'test7' => array('type' => 'string', 'pattern' => '/[0-9]+/'),
- 'test8' => array('type' => 'number'),
- 'baz' => array(
- 'type' => 'array',
- 'minItems' => 2,
- 'required' => true,
- "items" => array("type" => "string")
- )
- )
- ));
-
- $value = array(
- 'test' => 'a',
- 'test2' => 'abc',
- 'baz' => array(false),
- 'test3' => 10,
- 'test4' => 100,
- 'test5' => array(1, 3, 4),
- 'test6' => 'Foo',
- 'test7' => 'abc',
- 'test8' => 'abc'
- );
-
- $this->assertFalse($this->validator->validate($p, $value));
- $this->assertEquals(array (
- '[foo][bar] is a required string: This is what it does',
- '[foo][baz] must contain 2 or more elements',
- '[foo][baz][0] must be of type string',
- '[foo][test2] length must be less than or equal to 2',
- '[foo][test3] must be greater than or equal to 100',
- '[foo][test4] must be less than or equal to 10',
- '[foo][test5] must contain 2 or fewer elements',
- '[foo][test6] must be one of "a" or "bc"',
- '[foo][test7] must match the following regular expression: /[0-9]+/',
- '[foo][test8] must be of type number',
- '[foo][test] length must be greater than or equal to 2',
- ), $this->validator->getErrors());
- }
-
- public function testHandlesNullValuesInArraysWithDefaults()
- {
- $p = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'required' => true,
- 'properties' => array(
- 'bar' => array(
- 'type' => 'object',
- 'required' => true,
- 'properties' => array(
- 'foo' => array('default' => 'hi')
- )
- )
- )
- ));
- $value = array();
- $this->assertTrue($this->validator->validate($p, $value));
- $this->assertEquals(array('bar' => array('foo' => 'hi')), $value);
- }
-
- public function testFailsWhenNullValuesInArraysWithNoDefaults()
- {
- $p = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'required' => true,
- 'properties' => array(
- 'bar' => array(
- 'type' => 'object',
- 'required' => true,
- 'properties' => array('foo' => array('type' => 'string'))
- )
- )
- ));
- $value = array();
- $this->assertFalse($this->validator->validate($p, $value));
- $this->assertEquals(array('[foo][bar] is a required object'), $this->validator->getErrors());
- }
-
- public function testChecksTypes()
- {
- $p = new SchemaValidator();
- $r = new \ReflectionMethod($p, 'determineType');
- $r->setAccessible(true);
- $this->assertEquals('any', $r->invoke($p, 'any', 'hello'));
- $this->assertEquals(false, $r->invoke($p, 'foo', 'foo'));
- $this->assertEquals('string', $r->invoke($p, 'string', 'hello'));
- $this->assertEquals(false, $r->invoke($p, 'string', false));
- $this->assertEquals('integer', $r->invoke($p, 'integer', 1));
- $this->assertEquals(false, $r->invoke($p, 'integer', 'abc'));
- $this->assertEquals('numeric', $r->invoke($p, 'numeric', 1));
- $this->assertEquals('numeric', $r->invoke($p, 'numeric', '1'));
- $this->assertEquals('number', $r->invoke($p, 'number', 1));
- $this->assertEquals('number', $r->invoke($p, 'number', '1'));
- $this->assertEquals(false, $r->invoke($p, 'numeric', 'a'));
- $this->assertEquals('boolean', $r->invoke($p, 'boolean', true));
- $this->assertEquals('boolean', $r->invoke($p, 'boolean', false));
- $this->assertEquals(false, $r->invoke($p, 'boolean', 'false'));
- $this->assertEquals('null', $r->invoke($p, 'null', null));
- $this->assertEquals(false, $r->invoke($p, 'null', 'abc'));
- $this->assertEquals('array', $r->invoke($p, 'array', array()));
- $this->assertEquals(false, $r->invoke($p, 'array', 'foo'));
- }
-
- public function testValidatesFalseAdditionalProperties()
- {
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'properties' => array('bar' => array('type' => 'string')),
- 'additionalProperties' => false
- ));
- $value = array('test' => '123');
- $this->assertFalse($this->validator->validate($param, $value));
- $this->assertEquals(array('[foo][test] is not an allowed property'), $this->validator->getErrors());
- $value = array('bar' => '123');
- $this->assertTrue($this->validator->validate($param, $value));
- }
-
- public function testAllowsUndefinedAdditionalProperties()
- {
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'properties' => array('bar' => array('type' => 'string'))
- ));
- $value = array('test' => '123');
- $this->assertTrue($this->validator->validate($param, $value));
- }
-
- public function testValidatesAdditionalProperties()
- {
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'properties' => array('bar' => array('type' => 'string')),
- 'additionalProperties' => array('type' => 'integer')
- ));
- $value = array('test' => 'foo');
- $this->assertFalse($this->validator->validate($param, $value));
- $this->assertEquals(array('[foo][test] must be of type integer'), $this->validator->getErrors());
- }
-
- public function testValidatesAdditionalPropertiesThatArrayArrays()
- {
- $param = new Parameter(array(
- 'name' => 'foo',
- 'type' => 'object',
- 'additionalProperties' => array(
- 'type' => 'array',
- 'items' => array('type' => 'string')
- )
- ));
- $value = array('test' => array(true));
- $this->assertFalse($this->validator->validate($param, $value));
- $this->assertEquals(array('[foo][test][0] must be of type string'), $this->validator->getErrors());
- }
-
- public function testIntegersCastToStringWhenTypeMismatch()
- {
- $param = new Parameter(array('name' => 'test', 'type' => 'string'));
- $value = 12;
- $this->assertTrue($this->validator->validate($param, $value));
- $this->assertEquals('12', $value);
- }
-
- public function testRequiredMessageIncludesType()
- {
- $param = new Parameter(array('name' => 'test', 'type' => array('string', 'boolean'), 'required' => true));
- $value = null;
- $this->assertFalse($this->validator->validate($param, $value));
- $this->assertEquals(array('[test] is a required string or boolean'), $this->validator->getErrors());
- }
-
- protected function getComplexParam()
- {
- return new Parameter(array(
- 'name' => 'Foo',
- 'type' => 'array',
- 'required' => true,
- 'min' => 1,
- 'items' => array(
- 'type' => 'object',
- 'properties' => array(
- 'Baz' => array(
- 'type' => 'string',
- ),
- 'Bar' => array(
- 'required' => true,
- 'type' => 'boolean',
- 'default' => true
- )
- )
- )
- ));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionLoaderTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionLoaderTest.php
deleted file mode 100644
index bbfd1d6..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionLoaderTest.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Description;
-
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Service\Description\ServiceDescriptionLoader;
-
-/**
- * @covers Guzzle\Service\Description\ServiceDescriptionLoader
- */
-class ServiceDescriptionLoaderTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testAllowsExtraData()
- {
- $d = ServiceDescription::factory(array(
- 'foo' => true,
- 'baz' => array('bar'),
- 'apiVersion' => '123',
- 'operations' => array()
- ));
-
- $this->assertEquals(true, $d->getData('foo'));
- $this->assertEquals(array('bar'), $d->getData('baz'));
- $this->assertEquals('123', $d->getApiVersion());
- }
-
- public function testAllowsDeepNestedInheritance()
- {
- $d = ServiceDescription::factory(array(
- 'operations' => array(
- 'abstract' => array(
- 'httpMethod' => 'HEAD',
- 'parameters' => array(
- 'test' => array('type' => 'string', 'required' => true)
- )
- ),
- 'abstract2' => array('uri' => '/test', 'extends' => 'abstract'),
- 'concrete' => array('extends' => 'abstract2'),
- 'override' => array('extends' => 'abstract', 'httpMethod' => 'PUT'),
- 'override2' => array('extends' => 'override', 'httpMethod' => 'POST', 'uri' => '/')
- )
- ));
-
- $c = $d->getOperation('concrete');
- $this->assertEquals('/test', $c->getUri());
- $this->assertEquals('HEAD', $c->getHttpMethod());
- $params = $c->getParams();
- $param = $params['test'];
- $this->assertEquals('string', $param->getType());
- $this->assertTrue($param->getRequired());
-
- // Ensure that merging HTTP method does not make an array
- $this->assertEquals('PUT', $d->getOperation('override')->getHttpMethod());
- $this->assertEquals('POST', $d->getOperation('override2')->getHttpMethod());
- $this->assertEquals('/', $d->getOperation('override2')->getUri());
- }
-
- /**
- * @expectedException RuntimeException
- */
- public function testThrowsExceptionWhenExtendingMissingCommand()
- {
- ServiceDescription::factory(array(
- 'operations' => array(
- 'concrete' => array(
- 'extends' => 'missing'
- )
- )
- ));
- }
-
- public function testAllowsMultipleInheritance()
- {
- $description = ServiceDescription::factory(array(
- 'operations' => array(
- 'a' => array(
- 'httpMethod' => 'GET',
- 'parameters' => array(
- 'a1' => array(
- 'default' => 'foo',
- 'required' => true,
- 'prepend' => 'hi'
- )
- )
- ),
- 'b' => array(
- 'extends' => 'a',
- 'parameters' => array(
- 'b2' => array()
- )
- ),
- 'c' => array(
- 'parameters' => array(
- 'a1' => array(
- 'default' => 'bar',
- 'required' => true,
- 'description' => 'test'
- ),
- 'c3' => array()
- )
- ),
- 'd' => array(
- 'httpMethod' => 'DELETE',
- 'extends' => array('b', 'c'),
- 'parameters' => array(
- 'test' => array()
- )
- )
- )
- ));
-
- $command = $description->getOperation('d');
- $this->assertEquals('DELETE', $command->getHttpMethod());
- $this->assertContains('a1', $command->getParamNames());
- $this->assertContains('b2', $command->getParamNames());
- $this->assertContains('c3', $command->getParamNames());
- $this->assertContains('test', $command->getParamNames());
-
- $this->assertTrue($command->getParam('a1')->getRequired());
- $this->assertEquals('bar', $command->getParam('a1')->getDefault());
- $this->assertEquals('test', $command->getParam('a1')->getDescription());
- }
-
- public function testAddsOtherFields()
- {
- $description = ServiceDescription::factory(array(
- 'operations' => array(),
- 'description' => 'Foo',
- 'apiVersion' => 'bar'
- ));
- $this->assertEquals('Foo', $description->getDescription());
- $this->assertEquals('bar', $description->getApiVersion());
- }
-
- public function testCanLoadNestedExtends()
- {
- $description = ServiceDescription::factory(array(
- 'operations' => array(
- 'root' => array(
- 'class' => 'foo'
- ),
- 'foo' => array(
- 'extends' => 'root',
- 'parameters' => array(
- 'baz' => array('type' => 'string')
- )
- ),
- 'foo_2' => array(
- 'extends' => 'foo',
- 'parameters' => array(
- 'bar' => array('type' => 'string')
- )
- ),
- 'foo_3' => array(
- 'class' => 'bar',
- 'parameters' => array(
- 'bar2' => array('type' => 'string')
- )
- ),
- 'foo_4' => array(
- 'extends' => array('foo_2', 'foo_3'),
- 'parameters' => array(
- 'bar3' => array('type' => 'string')
- )
- )
- )
- ));
-
- $this->assertTrue($description->hasOperation('foo_4'));
- $foo4 = $description->getOperation('foo_4');
- $this->assertTrue($foo4->hasParam('baz'));
- $this->assertTrue($foo4->hasParam('bar'));
- $this->assertTrue($foo4->hasParam('bar2'));
- $this->assertTrue($foo4->hasParam('bar3'));
- $this->assertEquals('bar', $foo4->getClass());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionTest.php
deleted file mode 100644
index ff25452..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Description/ServiceDescriptionTest.php
+++ /dev/null
@@ -1,240 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Description;
-
-use Guzzle\Service\Description\ServiceDescription;
-use Guzzle\Service\Description\Operation;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Service\Client;
-
-/**
- * @covers Guzzle\Service\Description\ServiceDescription
- */
-class ServiceDescriptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- protected $serviceData;
-
- public function setup()
- {
- $this->serviceData = array(
- 'test_command' => new Operation(array(
- 'name' => 'test_command',
- 'description' => 'documentationForCommand',
- 'httpMethod' => 'DELETE',
- 'class' => 'Guzzle\\Tests\\Service\\Mock\\Command\\MockCommand',
- 'parameters' => array(
- 'bucket' => array('required' => true),
- 'key' => array('required' => true)
- )
- ))
- );
- }
-
- /**
- * @covers Guzzle\Service\Description\ServiceDescription::factory
- * @covers Guzzle\Service\Description\ServiceDescriptionLoader::build
- */
- public function testFactoryDelegatesToConcreteFactories()
- {
- $jsonFile = __DIR__ . '/../../TestData/test_service.json';
- $this->assertInstanceOf('Guzzle\Service\Description\ServiceDescription', ServiceDescription::factory($jsonFile));
- }
-
- public function testConstructor()
- {
- $service = new ServiceDescription(array('operations' => $this->serviceData));
- $this->assertEquals(1, count($service->getOperations()));
- $this->assertFalse($service->hasOperation('foobar'));
- $this->assertTrue($service->hasOperation('test_command'));
- }
-
- public function testIsSerializable()
- {
- $service = new ServiceDescription(array('operations' => $this->serviceData));
- $data = serialize($service);
- $d2 = unserialize($data);
- $this->assertEquals(serialize($service), serialize($d2));
- }
-
- public function testSerializesParameters()
- {
- $service = new ServiceDescription(array(
- 'operations' => array(
- 'foo' => new Operation(array('parameters' => array('foo' => array('type' => 'string'))))
- )
- ));
- $serialized = serialize($service);
- $this->assertContains('"parameters":{"foo":', $serialized);
- $service = unserialize($serialized);
- $this->assertTrue($service->getOperation('foo')->hasParam('foo'));
- }
-
- public function testAllowsForJsonBasedArrayParamsFunctionalTest()
- {
- $description = new ServiceDescription(array(
- 'operations' => array(
- 'test' => new Operation(array(
- 'httpMethod' => 'PUT',
- 'parameters' => array(
- 'data' => array(
- 'required' => true,
- 'filters' => 'json_encode',
- 'location' => 'body'
- )
- )
- ))
- )
- ));
- $client = new Client();
- $client->setDescription($description);
- $command = $client->getCommand('test', array(
- 'data' => array(
- 'foo' => 'bar'
- )
- ));
-
- $request = $command->prepare();
- $this->assertEquals('{"foo":"bar"}', (string) $request->getBody());
- }
-
- public function testContainsModels()
- {
- $d = new ServiceDescription(array(
- 'operations' => array('foo' => array()),
- 'models' => array(
- 'Tag' => array('type' => 'object'),
- 'Person' => array('type' => 'object')
- )
- ));
- $this->assertTrue($d->hasModel('Tag'));
- $this->assertTrue($d->hasModel('Person'));
- $this->assertFalse($d->hasModel('Foo'));
- $this->assertInstanceOf('Guzzle\Service\Description\Parameter', $d->getModel('Tag'));
- $this->assertNull($d->getModel('Foo'));
- $this->assertContains('"models":{', serialize($d));
- $this->assertEquals(array('Tag', 'Person'), array_keys($d->getModels()));
- }
-
- public function testCanAddModels()
- {
- $d = new ServiceDescription(array());
- $this->assertFalse($d->hasModel('Foo'));
- $d->addModel(new Parameter(array('name' => 'Foo')));
- $this->assertTrue($d->hasModel('Foo'));
- }
-
- public function testHasAttributes()
- {
- $d = new ServiceDescription(array(
- 'operations' => array(),
- 'name' => 'Name',
- 'description' => 'Description',
- 'apiVersion' => '1.24'
- ));
-
- $this->assertEquals('Name', $d->getName());
- $this->assertEquals('Description', $d->getDescription());
- $this->assertEquals('1.24', $d->getApiVersion());
-
- $s = serialize($d);
- $this->assertContains('"name":"Name"', $s);
- $this->assertContains('"description":"Description"', $s);
- $this->assertContains('"apiVersion":"1.24"', $s);
-
- $d = unserialize($s);
- $this->assertEquals('Name', $d->getName());
- $this->assertEquals('Description', $d->getDescription());
- $this->assertEquals('1.24', $d->getApiVersion());
- }
-
- public function testPersistsCustomAttributes()
- {
- $data = array(
- 'operations' => array('foo' => array('class' => 'foo', 'parameters' => array())),
- 'name' => 'Name',
- 'description' => 'Test',
- 'apiVersion' => '1.24',
- 'auth' => 'foo',
- 'keyParam' => 'bar'
- );
- $d = new ServiceDescription($data);
- $d->setData('hello', 'baz');
- $this->assertEquals('foo', $d->getData('auth'));
- $this->assertEquals('baz', $d->getData('hello'));
- $this->assertEquals('bar', $d->getData('keyParam'));
- // responseClass and responseType are added by default
- $data['operations']['foo']['responseClass'] = 'array';
- $data['operations']['foo']['responseType'] = 'primitive';
- $this->assertEquals($data + array('hello' => 'baz'), json_decode($d->serialize(), true));
- }
-
- public function testHasToArray()
- {
- $data = array(
- 'operations' => array(),
- 'name' => 'Name',
- 'description' => 'Test'
- );
- $d = new ServiceDescription($data);
- $arr = $d->toArray();
- $this->assertEquals('Name', $arr['name']);
- $this->assertEquals('Test', $arr['description']);
- }
-
- public function testReturnsNullWhenRetrievingMissingOperation()
- {
- $s = new ServiceDescription(array());
- $this->assertNull($s->getOperation('foo'));
- }
-
- public function testCanAddOperations()
- {
- $s = new ServiceDescription(array());
- $this->assertFalse($s->hasOperation('Foo'));
- $s->addOperation(new Operation(array('name' => 'Foo')));
- $this->assertTrue($s->hasOperation('Foo'));
- }
-
- /**
- * @expectedException Guzzle\Common\Exception\InvalidArgumentException
- */
- public function testValidatesOperationTypes()
- {
- $s = new ServiceDescription(array(
- 'operations' => array('foo' => new \stdClass())
- ));
- }
-
- public function testHasBaseUrl()
- {
- $description = new ServiceDescription(array('baseUrl' => 'http://foo.com'));
- $this->assertEquals('http://foo.com', $description->getBaseUrl());
- $description->setBaseUrl('http://foobar.com');
- $this->assertEquals('http://foobar.com', $description->getBaseUrl());
- }
-
- public function testCanUseBasePath()
- {
- $description = new ServiceDescription(array('basePath' => 'http://foo.com'));
- $this->assertEquals('http://foo.com', $description->getBaseUrl());
- }
-
- public function testModelsHaveNames()
- {
- $desc = array(
- 'models' => array(
- 'date' => array('type' => 'string'),
- 'user'=> array(
- 'type' => 'object',
- 'properties' => array(
- 'dob' => array('$ref' => 'date')
- )
- )
- )
- );
-
- $s = ServiceDescription::factory($desc);
- $this->assertEquals('date', $s->getModel('date')->getName());
- $this->assertEquals('dob', $s->getModel('user')->getProperty('dob')->getName());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/CommandTransferExceptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/CommandTransferExceptionTest.php
deleted file mode 100644
index be0d4ac..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/CommandTransferExceptionTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Exception;
-
-use Guzzle\Http\Exception\MultiTransferException;
-use Guzzle\Http\Message\Request;
-use Guzzle\Service\Exception\CommandTransferException;
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-
-/**
- * @covers Guzzle\Service\Exception\CommandTransferException
- */
-class CommandTransferExceptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testStoresCommands()
- {
- $c1 = new MockCommand();
- $c2 = new MockCommand();
- $e = new CommandTransferException('Test');
- $e->addSuccessfulCommand($c1)->addFailedCommand($c2);
- $this->assertSame(array($c1), $e->getSuccessfulCommands());
- $this->assertSame(array($c2), $e->getFailedCommands());
- $this->assertSame(array($c1, $c2), $e->getAllCommands());
- }
-
- public function testConvertsMultiExceptionIntoCommandTransfer()
- {
- $r1 = new Request('GET', 'http://foo.com');
- $r2 = new Request('GET', 'http://foobaz.com');
- $e = new MultiTransferException('Test', 123);
- $e->addSuccessfulRequest($r1)->addFailedRequest($r2);
- $ce = CommandTransferException::fromMultiTransferException($e);
-
- $this->assertInstanceOf('Guzzle\Service\Exception\CommandTransferException', $ce);
- $this->assertEquals('Test', $ce->getMessage());
- $this->assertEquals(123, $ce->getCode());
- $this->assertSame(array($r1), $ce->getSuccessfulRequests());
- $this->assertSame(array($r2), $ce->getFailedRequests());
- }
-
- public function testCanRetrieveExceptionForCommand()
- {
- $r1 = new Request('GET', 'http://foo.com');
- $e1 = new \Exception('foo');
- $c1 = $this->getMockBuilder('Guzzle\Tests\Service\Mock\Command\MockCommand')
- ->setMethods(array('getRequest'))
- ->getMock();
- $c1->expects($this->once())->method('getRequest')->will($this->returnValue($r1));
-
- $e = new MultiTransferException('Test', 123);
- $e->addFailedRequestWithException($r1, $e1);
- $ce = CommandTransferException::fromMultiTransferException($e);
- $ce->addFailedCommand($c1);
-
- $this->assertSame($e1, $ce->getExceptionForFailedCommand($c1));
- }
-
- public function testAddsNonRequestExceptions()
- {
- $e = new MultiTransferException();
- $e->add(new \Exception('bar'));
- $e->addFailedRequestWithException(new Request('GET', 'http://www.foo.com'), new \Exception('foo'));
- $ce = CommandTransferException::fromMultiTransferException($e);
- $this->assertEquals(2, count($ce));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/InconsistentClientTransferExceptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/InconsistentClientTransferExceptionTest.php
deleted file mode 100644
index 6455295..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/InconsistentClientTransferExceptionTest.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Exception;
-
-use Guzzle\Service\Exception\InconsistentClientTransferException;
-
-class InconsistentClientTransferExceptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testStoresCommands()
- {
- $items = array('foo', 'bar');
- $e = new InconsistentClientTransferException($items);
- $this->assertEquals($items, $e->getCommands());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/ValidationExceptionTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/ValidationExceptionTest.php
deleted file mode 100644
index ef789d8..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Exception/ValidationExceptionTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Exception;
-
-use Guzzle\Service\Exception\ValidationException;
-
-class ValidationExceptionTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testCanSetAndRetrieveErrors()
- {
- $errors = array('foo', 'bar');
-
- $e = new ValidationException('Foo');
- $e->setErrors($errors);
- $this->assertEquals($errors, $e->getErrors());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/IterableCommand.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/IterableCommand.php
deleted file mode 100644
index 4ab423e..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/IterableCommand.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Mock\Command;
-
-use Guzzle\Service\Description\Operation;
-
-class IterableCommand extends MockCommand
-{
- protected function createOperation()
- {
- return new Operation(array(
- 'name' => 'iterable_command',
- 'parameters' => array(
- 'page_size' => array('type' => 'integer'),
- 'next_token' => array('type' => 'string')
- )
- ));
- }
-
- protected function build()
- {
- $this->request = $this->client->createRequest('GET');
-
- // Add the next token and page size query string values
- $this->request->getQuery()->set('next_token', $this->get('next_token'));
-
- if ($this->get('page_size')) {
- $this->request->getQuery()->set('page_size', $this->get('page_size'));
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/MockCommand.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/MockCommand.php
deleted file mode 100644
index 831a7e7..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/MockCommand.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Mock\Command;
-
-use Guzzle\Service\Description\Operation;
-
-class MockCommand extends \Guzzle\Service\Command\AbstractCommand
-{
- protected function createOperation()
- {
- return new Operation(array(
- 'name' => get_called_class() == __CLASS__ ? 'mock_command' : 'sub.sub',
- 'httpMethod' => 'POST',
- 'parameters' => array(
- 'test' => array(
- 'default' => 123,
- 'required' => true,
- 'doc' => 'Test argument'
- ),
- '_internal' => array(
- 'default' => 'abc'
- ),
- 'foo' => array('filters' => array('strtoupper'))
- )
- ));
- }
-
- protected function build()
- {
- $this->request = $this->client->createRequest();
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/OtherCommand.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/OtherCommand.php
deleted file mode 100644
index 72ae1f6..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/OtherCommand.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Mock\Command;
-
-use Guzzle\Service\Description\Operation;
-
-class OtherCommand extends MockCommand
-{
- protected function createOperation()
- {
- return new Operation(array(
- 'name' => 'other_command',
- 'parameters' => array(
- 'test' => array(
- 'default' => '123',
- 'required' => true,
- 'doc' => 'Test argument'
- ),
- 'other' => array(),
- 'arg' => array('type' => 'string'),
- 'static' => array('static' => true, 'default' => 'this is static')
- )
- ));
- }
-
- protected function build()
- {
- $this->request = $this->client->getRequest('HEAD');
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/Sub/Sub.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/Sub/Sub.php
deleted file mode 100644
index d348480..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Command/Sub/Sub.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Mock\Command\Sub;
-
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-
-class Sub extends MockCommand {}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/MockClient.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/MockClient.php
deleted file mode 100644
index 6b9f55a..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/MockClient.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Mock;
-
-use Guzzle\Common\Collection;
-use Guzzle\Service\Client;
-
-/**
- * Mock Guzzle Service
- */
-class MockClient extends Client
-{
- /**
- * Factory method to create a new mock client
- *
- * @param array|Collection $config Configuration data. Array keys:
- * base_url - Base URL of web service
- * api_version - API version
- * scheme - URI scheme: http or https
- * * username - API username
- * * password - API password
- * * subdomain - Unfuddle account subdomain
- *
- * @return MockClient
- */
- public static function factory($config = array())
- {
- $config = Collection::fromConfig($config, array(
- 'base_url' => '{scheme}://127.0.0.1:8124/{api_version}/{subdomain}',
- 'scheme' => 'http',
- 'api_version' => 'v1'
- ), array('username', 'password', 'subdomain'));
-
- return new self($config->get('base_url'), $config);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Model/MockCommandIterator.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Model/MockCommandIterator.php
deleted file mode 100644
index 8faf412..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Mock/Model/MockCommandIterator.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Mock\Model;
-
-use Guzzle\Service\Resource\ResourceIterator;
-
-class MockCommandIterator extends ResourceIterator
-{
- public $calledNext = 0;
-
- protected function sendRequest()
- {
- if ($this->nextToken) {
- $this->command->set('next_token', $this->nextToken);
- }
-
- $this->command->set('page_size', (int) $this->calculatePageSize());
- $this->command->execute();
-
- $data = json_decode($this->command->getResponse()->getBody(true), true);
-
- $this->nextToken = $data['next_token'];
-
- return $data['resources'];
- }
-
- public function next()
- {
- $this->calledNext++;
- parent::next();
- }
-
- public function getResources()
- {
- return $this->resources;
- }
-
- public function getIteratedCount()
- {
- return $this->iteratedCount;
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/CompositeResourceIteratorFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/CompositeResourceIteratorFactoryTest.php
deleted file mode 100644
index 41c2073..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/CompositeResourceIteratorFactoryTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Resource;
-
-use Guzzle\Service\Resource\CompositeResourceIteratorFactory;
-use Guzzle\Service\Resource\ResourceIteratorClassFactory;
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-
-/**
- * @covers Guzzle\Service\Resource\CompositeResourceIteratorFactory
- */
-class CompositeResourceIteratorFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Iterator was not found for mock_command
- */
- public function testEnsuresIteratorClassExists()
- {
- $factory = new CompositeResourceIteratorFactory(array(
- new ResourceIteratorClassFactory(array('Foo', 'Bar'))
- ));
- $cmd = new MockCommand();
- $this->assertFalse($factory->canBuild($cmd));
- $factory->build($cmd);
- }
-
- public function testBuildsResourceIterators()
- {
- $f1 = new ResourceIteratorClassFactory('Guzzle\Tests\Service\Mock\Model');
- $factory = new CompositeResourceIteratorFactory(array());
- $factory->addFactory($f1);
- $command = new MockCommand();
- $iterator = $factory->build($command, array('client.namespace' => 'Guzzle\Tests\Service\Mock'));
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\Model\MockCommandIterator', $iterator);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/MapResourceIteratorFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/MapResourceIteratorFactoryTest.php
deleted file mode 100644
index d166e92..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/MapResourceIteratorFactoryTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Resource;
-
-use Guzzle\Service\Resource\MapResourceIteratorFactory;
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-
-/**
- * @covers Guzzle\Service\Resource\MapResourceIteratorFactory
- */
-class MapResourceIteratorFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException InvalidArgumentException
- * @expectedExceptionMessage Iterator was not found for mock_command
- */
- public function testEnsuresIteratorClassExists()
- {
- $factory = new MapResourceIteratorFactory(array('Foo', 'Bar'));
- $factory->build(new MockCommand());
- }
-
- public function testBuildsResourceIterators()
- {
- $factory = new MapResourceIteratorFactory(array(
- 'mock_command' => 'Guzzle\Tests\Service\Mock\Model\MockCommandIterator'
- ));
- $iterator = $factory->build(new MockCommand());
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\Model\MockCommandIterator', $iterator);
- }
-
- public function testUsesWildcardMappings()
- {
- $factory = new MapResourceIteratorFactory(array(
- '*' => 'Guzzle\Tests\Service\Mock\Model\MockCommandIterator'
- ));
- $iterator = $factory->build(new MockCommand());
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\Model\MockCommandIterator', $iterator);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ModelTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ModelTest.php
deleted file mode 100644
index 7214133..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ModelTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Resource;
-
-use Guzzle\Service\Resource\Model;
-use Guzzle\Service\Description\Parameter;
-use Guzzle\Common\Collection;
-
-/**
- * @covers Guzzle\Service\Resource\Model
- */
-class ModelTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testOwnsStructure()
- {
- $param = new Parameter(array('type' => 'object'));
- $model = new Model(array('foo' => 'bar'), $param);
- $this->assertSame($param, $model->getStructure());
- $this->assertEquals('bar', $model->get('foo'));
- $this->assertEquals('bar', $model['foo']);
- }
-
- public function testCanBeUsedWithoutStructure()
- {
- $model = new Model(array(
- 'Foo' => 'baz',
- 'Bar' => array(
- 'Boo' => 'Bam'
- )
- ));
- $transform = function ($key, $value) {
- return ($value && is_array($value)) ? new Collection($value) : $value;
- };
- $model = $model->map($transform);
- $this->assertInstanceOf('Guzzle\Common\Collection', $model->getPath('Bar'));
- }
-
- public function testAllowsFiltering()
- {
- $model = new Model(array(
- 'Foo' => 'baz',
- 'Bar' => 'a'
- ));
- $model = $model->filter(function ($i, $v) {
- return $v[0] == 'a';
- });
- $this->assertEquals(array('Bar' => 'a'), $model->toArray());
- }
-
- public function testDoesNotIncludeEmptyStructureInString()
- {
- $model = new Model(array('Foo' => 'baz'));
- $str = (string) $model;
- $this->assertContains('Debug output of model', $str);
- $this->assertNotContains('Model structure', $str);
- }
-
- public function testDoesIncludeModelStructureInString()
- {
- $model = new Model(array('Foo' => 'baz'), new Parameter(array('name' => 'Foo')));
- $str = (string) $model;
- $this->assertContains('Debug output of Foo model', $str);
- $this->assertContains('Model structure', $str);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorClassFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorClassFactoryTest.php
deleted file mode 100644
index 7b061b5..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorClassFactoryTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Resource;
-
-use Guzzle\Service\Resource\ResourceIteratorClassFactory;
-use Guzzle\Tests\Service\Mock\Command\MockCommand;
-
-/**
- * @covers Guzzle\Service\Resource\ResourceIteratorClassFactory
- * @covers Guzzle\Service\Resource\AbstractResourceIteratorFactory
- */
-class ResourceIteratorClassFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Iterator was not found for mock_command
- */
- public function testEnsuresIteratorClassExists()
- {
- $factory = new ResourceIteratorClassFactory(array('Foo', 'Bar'));
- $factory->registerNamespace('Baz');
- $command = new MockCommand();
- $factory->build($command);
- }
-
- public function testBuildsResourceIterators()
- {
- $factory = new ResourceIteratorClassFactory('Guzzle\Tests\Service\Mock\Model');
- $command = new MockCommand();
- $iterator = $factory->build($command, array('client.namespace' => 'Guzzle\Tests\Service\Mock'));
- $this->assertInstanceOf('Guzzle\Tests\Service\Mock\Model\MockCommandIterator', $iterator);
- }
-
- public function testChecksIfCanBuild()
- {
- $factory = new ResourceIteratorClassFactory('Guzzle\Tests\Service');
- $this->assertFalse($factory->canBuild(new MockCommand()));
- $factory = new ResourceIteratorClassFactory('Guzzle\Tests\Service\Mock\Model');
- $this->assertTrue($factory->canBuild(new MockCommand()));
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorTest.php
deleted file mode 100644
index 573fb6d..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Service/Resource/ResourceIteratorTest.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Service\Resource;
-
-use Guzzle\Service\Resource\ResourceIterator;
-use Guzzle\Tests\Service\Mock\Model\MockCommandIterator;
-
-/**
- * @group server
- * @covers Guzzle\Service\Resource\ResourceIterator
- */
-class ResourceIteratorTest extends \Guzzle\Tests\GuzzleTestCase
-{
- public function testDescribesEvents()
- {
- $this->assertInternalType('array', ResourceIterator::getAllEvents());
- }
-
- public function testConstructorConfiguresDefaults()
- {
- $ri = $this->getMockForAbstractClass('Guzzle\\Service\\Resource\\ResourceIterator', array(
- $this->getServiceBuilder()->get('mock')->getCommand('iterable_command'),
- array(
- 'limit' => 10,
- 'page_size' => 3
- )
- ), 'MockIterator');
-
- $this->assertEquals(false, $ri->getNextToken());
- $this->assertEquals(false, $ri->current());
- }
-
- public function testSendsRequestsForNextSetOfResources()
- {
- // Queue up an array of responses for iterating
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"g\", \"resources\": [\"d\", \"e\", \"f\"] }",
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"j\", \"resources\": [\"g\", \"h\", \"i\"] }",
- "HTTP/1.1 200 OK\r\nContent-Length: 41\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"j\"] }"
- ));
-
- // Create a new resource iterator using the IterableCommand mock
- $ri = new MockCommandIterator($this->getServiceBuilder()->get('mock')->getCommand('iterable_command'), array(
- 'page_size' => 3
- ));
-
- // Ensure that no requests have been sent yet
- $this->assertEquals(0, count($this->getServer()->getReceivedRequests(false)));
-
- //$this->assertEquals(array('d', 'e', 'f', 'g', 'h', 'i', 'j'), $ri->toArray());
- $ri->toArray();
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals(3, count($requests));
-
- $this->assertEquals(3, $requests[0]->getQuery()->get('page_size'));
- $this->assertEquals(3, $requests[1]->getQuery()->get('page_size'));
- $this->assertEquals(3, $requests[2]->getQuery()->get('page_size'));
-
- // Reset and resend
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"g\", \"resources\": [\"d\", \"e\", \"f\"] }",
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"j\", \"resources\": [\"g\", \"h\", \"i\"] }",
- "HTTP/1.1 200 OK\r\nContent-Length: 41\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"j\"] }",
- ));
-
- $d = array();
- foreach ($ri as $data) {
- $d[] = $data;
- }
- $this->assertEquals(array('d', 'e', 'f', 'g', 'h', 'i', 'j'), $d);
- }
-
- public function testCalculatesPageSize()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"g\", \"resources\": [\"d\", \"e\", \"f\"] }",
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"j\", \"resources\": [\"g\", \"h\", \"i\"] }",
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"j\", \"resources\": [\"j\", \"k\"] }"
- ));
-
- $ri = new MockCommandIterator($this->getServiceBuilder()->get('mock')->getCommand('iterable_command'), array(
- 'page_size' => 3,
- 'limit' => 7
- ));
-
- $this->assertEquals(array('d', 'e', 'f', 'g', 'h', 'i', 'j'), $ri->toArray());
- $requests = $this->getServer()->getReceivedRequests(true);
- $this->assertEquals(3, count($requests));
- $this->assertEquals(3, $requests[0]->getQuery()->get('page_size'));
- $this->assertEquals(3, $requests[1]->getQuery()->get('page_size'));
- $this->assertEquals(1, $requests[2]->getQuery()->get('page_size'));
- }
-
- public function testUseAsArray()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"g\", \"resources\": [\"d\", \"e\", \"f\"] }",
- "HTTP/1.1 200 OK\r\nContent-Length: 52\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"g\", \"h\", \"i\"] }"
- ));
-
- $ri = new MockCommandIterator($this->getServiceBuilder()->get('mock')->getCommand('iterable_command'));
-
- // Ensure that the key is never < 0
- $this->assertEquals(0, $ri->key());
- $this->assertEquals(0, count($ri));
-
- // Ensure that the iterator can be used as KVP array
- $data = array();
- foreach ($ri as $key => $value) {
- $data[$key] = $value;
- }
-
- // Ensure that the iterate is countable
- $this->assertEquals(6, count($ri));
- $this->assertEquals(array('d', 'e', 'f', 'g', 'h', 'i'), $data);
- }
-
- public function testBailsWhenSendReturnsNoResults()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\n\r\n{ \"next_token\": \"g\", \"resources\": [\"d\", \"e\", \"f\"] }",
- "HTTP/1.1 200 OK\r\n\r\n{ \"next_token\": \"\", \"resources\": [] }"
- ));
-
- $ri = new MockCommandIterator($this->getServiceBuilder()->get('mock')->getCommand('iterable_command'));
-
- // Ensure that the iterator can be used as KVP array
- $data = $ri->toArray();
-
- // Ensure that the iterate is countable
- $this->assertEquals(3, count($ri));
- $this->assertEquals(array('d', 'e', 'f'), $data);
-
- $this->assertEquals(2, $ri->getRequestCount());
- }
-
- public function testHoldsDataOptions()
- {
- $ri = new MockCommandIterator($this->getServiceBuilder()->get('mock')->getCommand('iterable_command'));
- $this->assertNull($ri->get('foo'));
- $this->assertSame($ri, $ri->set('foo', 'bar'));
- $this->assertEquals('bar', $ri->get('foo'));
- }
-
- public function testSettingLimitOrPageSizeClearsData()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"d\", \"e\", \"f\"] }",
- "HTTP/1.1 200 OK\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"d\", \"e\", \"f\"] }",
- "HTTP/1.1 200 OK\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"d\", \"e\", \"f\"] }"
- ));
-
- $ri = new MockCommandIterator($this->getServiceBuilder()->get('mock')->getCommand('iterable_command'));
- $ri->toArray();
- $this->assertNotEmpty($this->readAttribute($ri, 'resources'));
-
- $ri->setLimit(10);
- $this->assertEmpty($this->readAttribute($ri, 'resources'));
-
- $ri->toArray();
- $this->assertNotEmpty($this->readAttribute($ri, 'resources'));
- $ri->setPageSize(10);
- $this->assertEmpty($this->readAttribute($ri, 'resources'));
- }
-
- public function testWorksWithCustomAppendIterator()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue(array(
- "HTTP/1.1 200 OK\r\n\r\n{ \"next_token\": \"\", \"resources\": [\"d\", \"e\", \"f\"] }"
- ));
- $ri = new MockCommandIterator($this->getServiceBuilder()->get('mock')->getCommand('iterable_command'));
- $a = new \Guzzle\Iterator\AppendIterator();
- $a->append($ri);
- $results = iterator_to_array($a, false);
- $this->assertEquals(4, $ri->calledNext);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/PhpStreamRequestFactoryTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/PhpStreamRequestFactoryTest.php
deleted file mode 100644
index 083aaa0..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/PhpStreamRequestFactoryTest.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Stream;
-
-use Guzzle\Stream\Stream;
-use Guzzle\Stream\PhpStreamRequestFactory;
-use Guzzle\Http\Client;
-
-/**
- * @group server
- * @covers \Guzzle\Stream\PhpStreamRequestFactory
- */
-class PhpStreamRequestFactoryTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /** @var Client */
- protected $client;
-
- /** @var PhpStreamRequestFactory */
- protected $factory;
-
- protected function setUp()
- {
- $this->client = new Client($this->getServer()->getUrl());
- $this->factory = new PhpStreamRequestFactory();
- }
-
- public function testOpensValidStreamByCreatingContext()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
- $request = $this->client->get('/');
- $stream = $this->factory->fromRequest($request);
- $this->assertEquals('hi', (string) $stream);
- $headers = $this->factory->getLastResponseHeaders();
- $this->assertContains('HTTP/1.1 200 OK', $headers);
- $this->assertContains('Content-Length: 2', $headers);
- $this->assertSame($headers, $stream->getCustomData('response_headers'));
- $this->assertEquals(2, $stream->getSize());
- }
-
- public function testOpensValidStreamByPassingContextAndMerging()
- {
- $request = $this->client->get('/');
- $this->factory = $this->getMockBuilder('Guzzle\Stream\PhpStreamRequestFactory')
- ->setMethods(array('createContext', 'createStream'))
- ->getMock();
- $this->factory->expects($this->never())
- ->method('createContext');
- $this->factory->expects($this->once())
- ->method('createStream')
- ->will($this->returnValue(new Stream(fopen('php://temp', 'r'))));
-
- $context = array('http' => array('method' => 'HEAD', 'ignore_errors' => false));
- $this->factory->fromRequest($request, stream_context_create($context));
- $options = stream_context_get_options($this->readAttribute($this->factory, 'context'));
- $this->assertEquals('HEAD', $options['http']['method']);
- $this->assertFalse($options['http']['ignore_errors']);
- $this->assertEquals('1.1', $options['http']['protocol_version']);
- }
-
- public function testAppliesProxySettings()
- {
- $request = $this->client->get('/');
- $request->getCurlOptions()->set(CURLOPT_PROXY, 'tcp://foo.com');
- $this->factory = $this->getMockBuilder('Guzzle\Stream\PhpStreamRequestFactory')
- ->setMethods(array('createStream'))
- ->getMock();
- $this->factory->expects($this->once())
- ->method('createStream')
- ->will($this->returnValue(new Stream(fopen('php://temp', 'r'))));
- $this->factory->fromRequest($request);
- $options = stream_context_get_options($this->readAttribute($this->factory, 'context'));
- $this->assertEquals('tcp://foo.com', $options['http']['proxy']);
- }
-
- public function testAddsPostFields()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
- $request = $this->client->post('/', array('Foo' => 'Bar'), array('foo' => 'baz bar'));
- $stream = $this->factory->fromRequest($request);
- $this->assertEquals('hi', (string) $stream);
-
- $headers = $this->factory->getLastResponseHeaders();
- $this->assertContains('HTTP/1.1 200 OK', $headers);
- $this->assertContains('Content-Length: 2', $headers);
- $this->assertSame($headers, $stream->getCustomData('response_headers'));
-
- $received = $this->getServer()->getReceivedRequests();
- $this->assertEquals(1, count($received));
- $this->assertContains('POST / HTTP/1.1', $received[0]);
- $this->assertContains('host: ', $received[0]);
- $this->assertContains('user-agent: Guzzle/', $received[0]);
- $this->assertContains('foo: Bar', $received[0]);
- $this->assertContains('content-length: 13', $received[0]);
- $this->assertContains('foo=baz%20bar', $received[0]);
- }
-
- public function testAddsBody()
- {
- $this->getServer()->flush();
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
- $request = $this->client->put('/', array('Foo' => 'Bar'), 'Testing...123');
- $stream = $this->factory->fromRequest($request);
- $this->assertEquals('hi', (string) $stream);
-
- $headers = $this->factory->getLastResponseHeaders();
- $this->assertContains('HTTP/1.1 200 OK', $headers);
- $this->assertContains('Content-Length: 2', $headers);
- $this->assertSame($headers, $stream->getCustomData('response_headers'));
-
- $received = $this->getServer()->getReceivedRequests();
- $this->assertEquals(1, count($received));
- $this->assertContains('PUT / HTTP/1.1', $received[0]);
- $this->assertContains('host: ', $received[0]);
- $this->assertContains('user-agent: Guzzle/', $received[0]);
- $this->assertContains('foo: Bar', $received[0]);
- $this->assertContains('content-length: 13', $received[0]);
- $this->assertContains('Testing...123', $received[0]);
- }
-
- public function testCanDisableSslValidation()
- {
- $request = $this->client->get('/');
- $request->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, false);
- $this->factory = $this->getMockBuilder('Guzzle\Stream\PhpStreamRequestFactory')
- ->setMethods(array('createStream'))
- ->getMock();
- $this->factory->expects($this->once())
- ->method('createStream')
- ->will($this->returnValue(new Stream(fopen('php://temp', 'r'))));
- $this->factory->fromRequest($request);
- $options = stream_context_get_options($this->readAttribute($this->factory, 'context'));
- $this->assertFalse($options['ssl']['verify_peer']);
- }
-
- public function testUsesSslValidationByDefault()
- {
- $request = $this->client->get('/');
- $this->factory = $this->getMockBuilder('Guzzle\Stream\PhpStreamRequestFactory')
- ->setMethods(array('createStream'))
- ->getMock();
- $this->factory->expects($this->once())
- ->method('createStream')
- ->will($this->returnValue(new Stream(fopen('php://temp', 'r'))));
- $this->factory->fromRequest($request);
- $options = stream_context_get_options($this->readAttribute($this->factory, 'context'));
- $this->assertTrue($options['ssl']['verify_peer']);
- $this->assertSame($request->getCurlOptions()->get(CURLOPT_CAINFO), $options['ssl']['cafile']);
- }
-
- public function testBasicAuthAddsUserAndPassToUrl()
- {
- $request = $this->client->get('/');
- $request->setAuth('Foo', 'Bar');
- $this->factory = $this->getMockBuilder('Guzzle\Stream\PhpStreamRequestFactory')
- ->setMethods(array('createStream'))
- ->getMock();
- $this->factory->expects($this->once())
- ->method('createStream')
- ->will($this->returnValue(new Stream(fopen('php://temp', 'r'))));
- $this->factory->fromRequest($request);
- $this->assertContains('Foo:Bar@', (string) $this->readAttribute($this->factory, 'url'));
- }
-
- public function testCanCreateCustomStreamClass()
- {
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nhi");
- $request = $this->client->get('/');
- $stream = $this->factory->fromRequest($request, array(), array('stream_class' => 'Guzzle\Http\EntityBody'));
- $this->assertInstanceOf('Guzzle\Http\EntityBody', $stream);
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/StreamTest.php b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/StreamTest.php
deleted file mode 100644
index 4973f25..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/Stream/StreamTest.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-
-namespace Guzzle\Tests\Stream;
-
-use Guzzle\Stream\Stream;
-
-/**
- * @group server
- * @covers Guzzle\Stream\Stream
- */
-class StreamTest extends \Guzzle\Tests\GuzzleTestCase
-{
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testConstructorThrowsExceptionOnInvalidArgument()
- {
- $stream = new Stream(true);
- }
-
- public function testConstructor()
- {
- $handle = fopen('php://temp', 'r+');
- fwrite($handle, 'data');
- $stream = new Stream($handle);
- $this->assertEquals($handle, $stream->getStream());
- $this->assertTrue($stream->isReadable());
- $this->assertTrue($stream->isWritable());
- $this->assertTrue($stream->isLocal());
- $this->assertTrue($stream->isSeekable());
- $this->assertEquals('PHP', $stream->getWrapper());
- $this->assertEquals('TEMP', $stream->getStreamType());
- $this->assertEquals(4, $stream->getSize());
- $this->assertEquals('php://temp', $stream->getUri());
- $this->assertEquals(array(), $stream->getWrapperData());
- $this->assertFalse($stream->isConsumed());
- unset($stream);
- }
-
- public function testCanModifyStream()
- {
- $handle1 = fopen('php://temp', 'r+');
- $handle2 = fopen('php://temp', 'r+');
- $stream = new Stream($handle1);
- $this->assertSame($handle1, $stream->getStream());
- $stream->setStream($handle2, 10);
- $this->assertEquals(10, $stream->getSize());
- $this->assertSame($handle2, $stream->getStream());
- }
-
- public function testStreamClosesHandleOnDestruct()
- {
- $handle = fopen('php://temp', 'r');
- $stream = new Stream($handle);
- unset($stream);
- $this->assertFalse(is_resource($handle));
- }
-
- public function testConvertsToString()
- {
- $handle = fopen('php://temp', 'w+');
- fwrite($handle, 'data');
- $stream = new Stream($handle);
- $this->assertEquals('data', (string) $stream);
- unset($stream);
-
- $handle = fopen(__DIR__ . '/../TestData/FileBody.txt', 'r');
- $stream = new Stream($handle);
- $this->assertEquals('', (string) $stream);
- unset($stream);
- }
-
- public function testConvertsToStringAndRestoresCursorPos()
- {
- $handle = fopen('php://temp', 'w+');
- $stream = new Stream($handle);
- $stream->write('foobazbar');
- $stream->seek(3);
- $this->assertEquals('foobazbar', (string) $stream);
- $this->assertEquals(3, $stream->ftell());
- }
-
- public function testIsConsumed()
- {
- $handle = fopen('php://temp', 'w+');
- fwrite($handle, 'data');
- $stream = new Stream($handle);
- $this->assertFalse($stream->isConsumed());
- $stream->read(4);
- $this->assertTrue($stream->isConsumed());
- }
-
- public function testAllowsSettingManualSize()
- {
- $handle = fopen('php://temp', 'w+');
- fwrite($handle, 'data');
- $stream = new Stream($handle);
- $stream->setSize(10);
- $this->assertEquals(10, $stream->getSize());
- unset($stream);
- }
-
- public function testWrapsStream()
- {
- $handle = fopen('php://temp', 'w+');
- fwrite($handle, 'data');
- $stream = new Stream($handle);
- $this->assertTrue($stream->isSeekable());
- $this->assertTrue($stream->isReadable());
- $this->assertTrue($stream->seek(0));
- $this->assertEquals('da', $stream->read(2));
- $this->assertEquals('ta', $stream->read(2));
- $this->assertTrue($stream->seek(0));
- $this->assertEquals('data', $stream->read(4));
- $stream->write('_appended');
- $stream->seek(0);
- $this->assertEquals('data_appended', $stream->read(13));
- }
-
- public function testGetSize()
- {
- $size = filesize(__DIR__ . '/../../../bootstrap.php');
- $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
- $stream = new Stream($handle);
- $this->assertEquals($handle, $stream->getStream());
- $this->assertEquals($size, $stream->getSize());
- $this->assertEquals($size, $stream->getSize());
- unset($stream);
-
- // Make sure that false is returned when the size cannot be determined
- $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- $handle = fopen('http://127.0.0.1:' . $this->getServer()->getPort(), 'r');
- $stream = new Stream($handle);
- $this->assertEquals(false, $stream->getSize());
- unset($stream);
- }
-
- public function testEnsuresSizeIsConsistent()
- {
- $h = fopen('php://temp', 'r+');
- fwrite($h, 'foo');
- $stream = new Stream($h);
- $this->assertEquals(3, $stream->getSize());
- $stream->write('test');
- $this->assertEquals(7, $stream->getSize());
- fclose($h);
- }
-
- public function testAbstractsMetaData()
- {
- $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
- $stream = new Stream($handle);
- $this->assertEquals('plainfile', $stream->getMetaData('wrapper_type'));
- $this->assertEquals(null, $stream->getMetaData('wrapper_data'));
- $this->assertInternalType('array', $stream->getMetaData());
- }
-
- public function testDoesNotAttemptToWriteToReadonlyStream()
- {
- $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
- $stream = new Stream($handle);
- $this->assertEquals(0, $stream->write('foo'));
- }
-
- public function testProvidesStreamPosition()
- {
- $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
- $stream = new Stream($handle);
- $stream->read(2);
- $this->assertSame(ftell($handle), $stream->ftell());
- $this->assertEquals(2, $stream->ftell());
- }
-
- public function testRewindIsSeekZero()
- {
- $stream = new Stream(fopen('php://temp', 'w+'));
- $stream->write('foobazbar');
- $this->assertTrue($stream->rewind());
- $this->assertEquals('foobazbar', $stream->read(9));
- }
-
- public function testCanDetachStream()
- {
- $r = fopen('php://temp', 'w+');
- $stream = new Stream($r);
- $stream->detachStream();
- $this->assertNull($stream->getStream());
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/FileBody.txt b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/FileBody.txt
deleted file mode 100644
index e69de29..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/FileBody.txt
+++ /dev/null
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/bar.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/bar.json
deleted file mode 100644
index c354ed7..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/bar.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "includes": ["foo.json"]
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/baz.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/baz.json
deleted file mode 100644
index 765237b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/baz.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "includes": ["foo.json", "bar.json"]
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/foo.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/foo.json
deleted file mode 100644
index cee5005..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/foo.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "includes": ["recursive.json"],
- "operations": {
- "abstract": {
- "httpMethod": "POST"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/recursive.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/recursive.json
deleted file mode 100644
index c354ed7..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/description/recursive.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "includes": ["foo.json"]
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/mock_response b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/mock_response
deleted file mode 100644
index b6938a2..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/mock_response
+++ /dev/null
@@ -1,3 +0,0 @@
-HTTP/1.1 200 OK
-Content-Length: 0
-
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json1.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json1.json
deleted file mode 100644
index 7b2a9da..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json1.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "includes": [ "json2.json" ],
- "services": {
- "abstract": {
- "access_key": "xyz",
- "secret": "abc"
- },
- "mock": {
- "class": "Guzzle\\Tests\\Service\\Mock\\MockClient",
- "extends": "abstract",
- "params": {
- "username": "foo",
- "password": "baz",
- "subdomain": "bar"
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json2.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json2.json
deleted file mode 100644
index 08e5566..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/json2.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "services": {
- "foo": {
- "class": "Guzzle\\Tests\\Service\\Mock\\MockClient",
- "extends": "abstract",
- "params": {
- "baz": "bar"
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/services.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/services.json
deleted file mode 100644
index 25452e4..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/services/services.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "abstract": {
- "access_key": "xyz",
- "secret": "abc"
- },
- "mock": {
- "class": "Guzzle\\Tests\\Service\\Mock\\MockClient",
- "extends": "abstract",
- "params": {
- "username": "foo",
- "password": "baz",
- "subdomain": "bar"
- }
- },
-
- "test.abstract.aws": {
- "params": {
- "access_key": "12345",
- "secret_key": "abcd"
- }
- },
-
- "test.s3": {
- "class": "Guzzle\\Service\\Aws\\S3Client",
- "extends": "test.abstract.aws",
- "params": {
- "devpay_product_token": "",
- "devpay_user_token": ""
- }
- },
-
- "test.simple_db": {
- "class": "Guzzle\\Service\\Aws\\SimpleDb\\SimpleDbClient",
- "extends": "test.abstract.aws"
- },
-
- "test.sqs": {
- "class": "Guzzle\\Service\\Aws\\Sqs\\SqsClient",
- "extends": "test.abstract.aws"
- },
-
- "test.centinel": {
- "class": "Guzzle\\Service\\CardinalCommerce\\Centinel.CentinelClient",
- "params": {
- "password": "test",
- "processor_id": "123",
- "merchant_id": "456"
- }
- },
-
- "test.mws": {
- "class": "Guzzle\\Service\\Mws\\MwsClient",
- "extends": "test.abstract.aws",
- "params": {
- "merchant_id": "ABCDE",
- "marketplace_id": "FGHIJ",
- "application_name": "GuzzleTest",
- "application_version": "0.1",
- "base_url": "https://mws.amazonservices.com"
- }
- },
-
- "mock": {
- "class": "Guzzle\\Tests\\Service\\Mock\\MockClient",
- "params": {
- "username": "test_user",
- "password": "****",
- "subdomain": "test"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service.json
deleted file mode 100644
index 01557ca..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "includes": [ "test_service2.json" ],
- "operations": {
- "test": {
- "uri": "/path"
- },
- "concrete": {
- "extends": "abstract"
- },
- "foo_bar": {
- "uri": "/testing",
- "parameters": {
- "other": {
- "location": "json",
- "location_key": "Other"
- },
- "test": {
- "type": "object",
- "location": "json",
- "properties": {
- "baz": {
- "type": "boolean",
- "default": true
- },
- "bar": {
- "type": "string",
- "filters": [
- {
- "method": "strtolower",
- "args": ["test", "@value"]
- },
- "strtoupper"
- ]
- }
- }
- }
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service2.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service2.json
deleted file mode 100644
index 66dd9ef..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service2.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "operations": {
- "abstract": {
- "uri": "/abstract"
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service_3.json b/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service_3.json
deleted file mode 100644
index ae2ae0b..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/Guzzle/Tests/TestData/test_service_3.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "includes": [ "test_service2.json" ],
- "operations": {
- "test": {
- "uri": "/path"
- },
- "concrete": {
- "extends": "abstract"
- },
- "baz_qux": {
- "uri": "/testing",
- "parameters": {
- "other": {
- "location": "json",
- "location_key": "Other"
- },
- "test": {
- "type": "object",
- "location": "json",
- "properties": {
- "baz": {
- "type": "boolean",
- "default": true
- },
- "bar": {
- "type": "string",
- "filters": [
- {
- "method": "strtolower",
- "args": ["test", "@value"]
- },
- "strtoupper"
- ]
- }
- }
- }
- }
- }
- }
-}
diff --git a/inc/mailgun/guzzle/guzzle/tests/bootstrap.php b/inc/mailgun/guzzle/guzzle/tests/bootstrap.php
deleted file mode 100644
index 28908d3..0000000
--- a/inc/mailgun/guzzle/guzzle/tests/bootstrap.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-error_reporting(E_ALL | E_STRICT);
-
-require_once 'PHPUnit/TextUI/TestRunner.php';
-require dirname(__DIR__) . '/vendor/autoload.php';
-
-// Add the services file to the default service builder
-$servicesFile = __DIR__ . '/Guzzle/Tests/TestData/services/services.json';
-$builder = Guzzle\Service\Builder\ServiceBuilder::factory($servicesFile);
-Guzzle\Tests\GuzzleTestCase::setServiceBuilder($builder);