11<?php
2+
3+ declare (strict_types=1 );
4+
25namespace Codeception \Lib \Driver ;
36
7+ use Aws \Credentials \Credentials ;
8+ use Aws \Sqs \SqsClient ;
49use Codeception \Exception \TestRuntimeException ;
510use Codeception \Lib \Interfaces \Queue ;
6- use Aws \Sqs \SqsClient ;
7- use Aws \Credentials \Credentials ;
811
912class AmazonSQS implements Queue
1013{
11- protected $ queue ;
14+ protected ? SqsClient $ queue = null ;
1215
1316 /**
1417 * Connect to the queueing server. (AWS, Iron.io and Beanstalkd)
15- * @param array $config
16- * @return
1718 */
18- public function openConnection ($ config )
19+ public function openConnection (array $ config )
1920 {
2021 $ params = [
2122 'region ' => $ config ['region ' ],
@@ -47,9 +48,9 @@ public function openConnection($config)
4748 * Post/Put a message on to the queue server
4849 *
4950 * @param string $message Message Body to be send
50- * @param string $queue Queue Name
51+ * @param string $queue Queue name
5152 */
52- public function addMessageToQueue ($ message , $ queue )
53+ public function addMessageToQueue (string $ message , string $ queue )
5354 {
5455 $ this ->queue ->sendMessage ([
5556 'QueueUrl ' => $ this ->getQueueURL ($ queue ),
@@ -68,19 +69,19 @@ public function getQueues()
6869 $ queues = $ this ->queue ->listQueues (['QueueNamePrefix ' => '' ])->get ('QueueUrls ' );
6970 foreach ($ queues as $ queue ) {
7071 $ tokens = explode ('/ ' , $ queue );
71- $ queueNames [] = $ tokens [sizeof ($ tokens ) - 1 ];
72+ $ queueNames [] = $ tokens [count ($ tokens ) - 1 ];
7273 }
74+
7375 return $ queueNames ;
7476 }
7577
7678 /**
7779 * Count the current number of messages on the queue.
7880 *
79- * @param $queue Queue Name
80- *
81+ * @param string $queue Queue name
8182 * @return int Count
8283 */
83- public function getMessagesCurrentCountOnQueue ($ queue )
84+ public function getMessagesCurrentCountOnQueue (string $ queue )
8485 {
8586 return $ this ->queue ->getQueueAttributes ([
8687 'QueueUrl ' => $ this ->getQueueURL ($ queue ),
@@ -91,19 +92,18 @@ public function getMessagesCurrentCountOnQueue($queue)
9192 /**
9293 * Count the total number of messages on the queue.
9394 *
94- * @param $queue Queue Name
95- *
95+ * @param string $queue Queue name
9696 * @return int Count
9797 */
98- public function getMessagesTotalCountOnQueue ($ queue )
98+ public function getMessagesTotalCountOnQueue (string $ queue )
9999 {
100100 return $ this ->queue ->getQueueAttributes ([
101101 'QueueUrl ' => $ this ->getQueueURL ($ queue ),
102102 'AttributeNames ' => ['ApproximateNumberOfMessages ' ],
103103 ])->get ('Attributes ' )['ApproximateNumberOfMessages ' ];
104104 }
105105
106- public function clearQueue ($ queue )
106+ public function clearQueue (string $ queue )
107107 {
108108 $ queueURL = $ this ->getQueueURL ($ queue );
109109 while (true ) {
@@ -112,6 +112,7 @@ public function clearQueue($queue)
112112 if (!$ res ->getPath ('Messages ' )) {
113113 return ;
114114 }
115+
115116 foreach ($ res ->getPath ('Messages ' ) as $ msg ) {
116117 $ this ->queue ->deleteMessage ([
117118 'QueueUrl ' => $ queueURL ,
@@ -124,19 +125,19 @@ public function clearQueue($queue)
124125 /**
125126 * Get the queue/tube URL from the queue name (AWS function only)
126127 *
127- * @param $queue Queue Name
128- *
128+ * @param string $queue Queue name
129129 * @return string Queue URL
130130 */
131- private function getQueueURL ($ queue )
131+ private function getQueueURL (string $ queue )
132132 {
133133 $ queues = $ this ->queue ->listQueues (['QueueNamePrefix ' => '' ])->get ('QueueUrls ' );
134134 foreach ($ queues as $ queueURL ) {
135135 $ tokens = explode ('/ ' , $ queueURL );
136- if (strtolower ($ queue ) == strtolower ($ tokens [sizeof ($ tokens ) - 1 ])) {
136+ if (strtolower ($ queue ) === strtolower ($ tokens [count ($ tokens ) - 1 ])) {
137137 return $ queueURL ;
138138 }
139139 }
140+
140141 throw new TestRuntimeException ('queue [ ' . $ queue . '] not found ' );
141142 }
142143
0 commit comments