%PDF- %PDF-
Direktori : /var/www/html/news/vendor/aws/aws-sdk-php/src/Sqs/ |
Current File : //var/www/html/news/vendor/aws/aws-sdk-php/src/Sqs/SqsClient.php |
<?php namespace Aws\Sqs; use Aws\AwsClient; use Aws\CommandInterface; use Aws\Sqs\Exception\SqsException; use GuzzleHttp\Psr7\Uri; use GuzzleHttp\Psr7\UriResolver; use Psr\Http\Message\RequestInterface; /** * Client used to interact Amazon Simple Queue Service (Amazon SQS) * * @method \Aws\Result addPermission(array $args = []) * @method \GuzzleHttp\Promise\Promise addPermissionAsync(array $args = []) * @method \Aws\Result changeMessageVisibility(array $args = []) * @method \GuzzleHttp\Promise\Promise changeMessageVisibilityAsync(array $args = []) * @method \Aws\Result changeMessageVisibilityBatch(array $args = []) * @method \GuzzleHttp\Promise\Promise changeMessageVisibilityBatchAsync(array $args = []) * @method \Aws\Result createQueue(array $args = []) * @method \GuzzleHttp\Promise\Promise createQueueAsync(array $args = []) * @method \Aws\Result deleteMessage(array $args = []) * @method \GuzzleHttp\Promise\Promise deleteMessageAsync(array $args = []) * @method \Aws\Result deleteMessageBatch(array $args = []) * @method \GuzzleHttp\Promise\Promise deleteMessageBatchAsync(array $args = []) * @method \Aws\Result deleteQueue(array $args = []) * @method \GuzzleHttp\Promise\Promise deleteQueueAsync(array $args = []) * @method \Aws\Result getQueueAttributes(array $args = []) * @method \GuzzleHttp\Promise\Promise getQueueAttributesAsync(array $args = []) * @method \Aws\Result getQueueUrl(array $args = []) * @method \GuzzleHttp\Promise\Promise getQueueUrlAsync(array $args = []) * @method \Aws\Result listDeadLetterSourceQueues(array $args = []) * @method \GuzzleHttp\Promise\Promise listDeadLetterSourceQueuesAsync(array $args = []) * @method \Aws\Result listQueues(array $args = []) * @method \GuzzleHttp\Promise\Promise listQueuesAsync(array $args = []) * @method \Aws\Result purgeQueue(array $args = []) * @method \GuzzleHttp\Promise\Promise purgeQueueAsync(array $args = []) * @method \Aws\Result receiveMessage(array $args = []) * @method \GuzzleHttp\Promise\Promise receiveMessageAsync(array $args = []) * @method \Aws\Result removePermission(array $args = []) * @method \GuzzleHttp\Promise\Promise removePermissionAsync(array $args = []) * @method \Aws\Result sendMessage(array $args = []) * @method \GuzzleHttp\Promise\Promise sendMessageAsync(array $args = []) * @method \Aws\Result sendMessageBatch(array $args = []) * @method \GuzzleHttp\Promise\Promise sendMessageBatchAsync(array $args = []) * @method \Aws\Result setQueueAttributes(array $args = []) * @method \GuzzleHttp\Promise\Promise setQueueAttributesAsync(array $args = []) */ class SqsClient extends AwsClient { public function __construct(array $config) { parent::__construct($config); $list = $this->getHandlerList(); $list->appendBuild($this->queueUrl(), 'sqs.queue_url'); $list->appendSign($this->validateMd5(), 'sqs.md5'); } /** * Converts a queue URL into a queue ARN. * * @param string $queueUrl The queue URL to perform the action on. * Retrieved when the queue is first created. * * @return string An ARN representation of the queue URL. */ public function getQueueArn($queueUrl) { $queueArn = strtr($queueUrl, array( 'http://' => 'arn:aws:', 'https://' => 'arn:aws:', '.amazonaws.com' => '', '/' => ':', '.' => ':', )); // Cope with SQS' .fifo / :fifo arn inconsistency if (substr($queueArn, -5) === ':fifo') { $queueArn = substr_replace($queueArn, '.fifo', -5); } return $queueArn; } /** * Moves the URI of the queue to the URI in the input parameter. * * @return callable */ private function queueUrl() { return static function (callable $handler) { return function ( CommandInterface $c, RequestInterface $r = null ) use ($handler) { if ($c->hasParam('QueueUrl')) { $r = $r->withUri(UriResolver::resolve( $r->getUri(), new Uri($c['QueueUrl']) )); } return $handler($c, $r); }; }; } /** * Validates ReceiveMessage body MD5s * * @return callable */ private function validateMd5() { return static function (callable $handler) { return function ( CommandInterface $c, RequestInterface $r = null ) use ($handler) { if ($c->getName() !== 'ReceiveMessage') { return $handler($c, $r); } return $handler($c, $r) ->then( function ($result) use ($c, $r) { foreach ((array) $result['Messages'] as $msg) { if (isset($msg['MD5OfBody']) && md5($msg['Body']) !== $msg['MD5OfBody'] ) { throw new SqsException( sprintf( 'MD5 mismatch. Expected %s, found %s', $msg['MD5OfBody'], md5($msg['Body']) ), $c, [ 'code' => 'ClientChecksumMismatch', 'request' => $r ] ); } } return $result; } ); }; }; } }