summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/CloudSearchDomain/CloudSearchDomainClient.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/CloudSearchDomain/CloudSearchDomainClient.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/CloudSearchDomain/CloudSearchDomainClient.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/CloudSearchDomain/CloudSearchDomainClient.php b/vendor/aws/aws-sdk-php/src/CloudSearchDomain/CloudSearchDomainClient.php
new file mode 100644
index 0000000..fc670cb
--- /dev/null
+++ b/vendor/aws/aws-sdk-php/src/CloudSearchDomain/CloudSearchDomainClient.php
@@ -0,0 +1,84 @@
+<?php
+namespace Aws\CloudSearchDomain;
+
+use Aws\AwsClient;
+use Aws\CommandInterface;
+use GuzzleHttp\Psr7\Uri;
+use Psr\Http\Message\RequestInterface;
+use GuzzleHttp\Psr7;
+
+/**
+ * This client is used to search and upload documents to an **Amazon CloudSearch** Domain.
+ *
+ * @method \Aws\Result search(array $args = [])
+ * @method \GuzzleHttp\Promise\Promise searchAsync(array $args = [])
+ * @method \Aws\Result suggest(array $args = [])
+ * @method \GuzzleHttp\Promise\Promise suggestAsync(array $args = [])
+ * @method \Aws\Result uploadDocuments(array $args = [])
+ * @method \GuzzleHttp\Promise\Promise uploadDocumentsAsync(array $args = [])
+ */
+class CloudSearchDomainClient extends AwsClient
+{
+ public function __construct(array $args)
+ {
+ parent::__construct($args);
+ $list = $this->getHandlerList();
+ $list->appendBuild($this->searchByPost(), 'cloudsearchdomain.search_by_POST');
+ }
+
+ public static function getArguments()
+ {
+ $args = parent::getArguments();
+ $args['endpoint']['required'] = true;
+ $args['region']['default'] = function (array $args) {
+ // Determine the region from the provided endpoint.
+ // (e.g. http://search-blah.{region}.cloudsearch.amazonaws.com)
+ return explode('.', new Uri($args['endpoint']))[1];
+ };
+
+ return $args;
+ }
+
+ /**
+ * Use POST for search command
+ *
+ * Useful when query string is too long
+ */
+ private function searchByPost()
+ {
+ return static function (callable $handler) {
+ return function (
+ CommandInterface $c,
+ RequestInterface $r = null
+ ) use ($handler) {
+ if ($c->getName() !== 'Search') {
+ return $handler($c, $r);
+ }
+ return $handler($c, self::convertGetToPost($r));
+ };
+ };
+ }
+
+ /**
+ * Converts default GET request to a POST request
+ *
+ * Avoiding length restriction in query
+ *
+ * @param RequestInterface $r GET request to be converted
+ * @return RequestInterface $req converted POST request
+ */
+ public static function convertGetToPost(RequestInterface $r)
+ {
+ if ($r->getMethod() === 'POST') {
+ return $r;
+ }
+
+ $query = $r->getUri()->getQuery();
+ $req = $r->withMethod('POST')
+ ->withBody(Psr7\Utils::streamFor($query))
+ ->withHeader('Content-Length', strlen($query))
+ ->withHeader('Content-Type', 'application/x-www-form-urlencoded')
+ ->withUri($r->getUri()->withQuery(''));
+ return $req;
+ }
+}