diff --git a/readme.md b/readme.md index 7b5bedf..a71d70d 100644 --- a/readme.md +++ b/readme.md @@ -111,6 +111,23 @@ $params = [ $felicio->deleteMessage($params); ``` +## Count messages +```php +require __DIR__ . '/vendor/autoload.php'; + +use Felicio\Felicio; + +$felicioDotFile = __DIR__ . '/.felicio'; + +$felicio = new Felicio($felicioDotFile); + +$queueUrl = 'https://sqs.us-west-2.amazonaws.com/999999999/my_queue'; + +$messages = $felicio->countMessages($queueUrl); + +var_dump($messages); +``` + ## Contributing Feel free to contribute, make a fork! diff --git a/src/Felicio.php b/src/Felicio.php index 8f24ac6..7d22ba4 100644 --- a/src/Felicio.php +++ b/src/Felicio.php @@ -6,8 +6,8 @@ use Felicio\Contracts\FelicioContract; use Aws\Sdk; -use Aws\Credentials\Credentials; use Aws\Exception\AwsException; +use Aws\Credentials\Credentials; use Symfony\Component\Dotenv\Dotenv; final class Felicio implements FelicioContract @@ -35,39 +35,44 @@ public function __construct($felicioDotFile) $this->felicioClient = $sdk->createSqs(); } - public function sendMessage(array $params): bool + public function sendMessage(array $params) { try { - $this->felicioClient - ->sendMessage($params); - - return true; + return $this->felicioClient->sendMessage($params)->get('MessageId'); } catch (AwsException $e) { throw new AwsException(); } } - public function receiveMessage(array $params): array + public function receiveMessage(array $params) { try { - return $this->felicioClient - ->receiveMessage($params) - ->get('Messages'); - + return $this->felicioClient->receiveMessage($params)->get('Messages'); } catch (AwsException $e) { throw new AwsException(); } } - public function deleteMessage(array $params): bool + public function deleteMessage(array $params) { try { - $this->felicioClient - ->deleteMessage($params); - - return true; + return $this->felicioClient->deleteMessage($params); } catch (AwsException $e) { throw new AwsException(); } } + + public function countMessages($queue) + { + $response = $this->felicioClient->getQueueAttributes( + [ + 'QueueUrl' => $queue, + 'AttributeNames' => ['ApproximateNumberOfMessages'], + ] + ); + + $attributes = $response->get('Attributes'); + + return (int)$attributes['ApproximateNumberOfMessages']; + } } \ No newline at end of file diff --git a/tests/FelicioTest.php b/tests/FelicioTest.php index 3a7eb99..ff494d3 100644 --- a/tests/FelicioTest.php +++ b/tests/FelicioTest.php @@ -43,7 +43,7 @@ public function testSendMessage() 'MessageBody' => 'Message 001' ]; - $this->assertTrue($this->instance->sendMessage($params)); + $this->assertIsString($this->instance->sendMessage($params)); } public function testReceiveMessage() @@ -66,7 +66,7 @@ public function testDeleteMessage() 'ReceiptHandle' => '', //required ]; - $this->assertTrue($this->instance->deleteMessage($params)); + $this->assertEmpty($this->instance->deleteMessage($params)); } public function testDeleteMessageWithoutParameters() @@ -80,4 +80,11 @@ public function testDeleteMessageWithoutParameters() $this->instance->deleteMessage($params); } + + public function testIfExistsMessage() + { + $queueUrl = ''; //required + + $this->assertGreaterThan(1, $this->instance->countMessages($queueUrl)); + } } \ No newline at end of file