| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <?phpnamespace Aws\CloudSearchDomain;use Aws\AwsClient;use Aws\CommandInterface;use Aws\HandlerList;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];        };        unset($args['endpoint']['default']);        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;    }}
 |