Completed
Push — master ( 8eb315...5aaba6 )
by Changwan
04:29
created

SqsAdapter::flush()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 5
c 0
b 0
f 0
nc 2
nop 0
dl 0
loc 9
ccs 0
cts 9
cp 0
crap 6
rs 9.6666
1
<?php
2
namespace Wandu\Q\Adapter;
3
4
use Aws\Sqs\Exception\SqsException;
5
use Aws\Sqs\SqsClient;
6
use Wandu\Q\Contracts\Adapter;
7
8
class SqsAdapter implements Adapter
9
{
10
    /** @var \Aws\Sqs\SqsClient */
11
    protected $client;
12
13
    /** @var string */
14
    protected $url;
15
    
16
    public function __construct(SqsClient $client, $url)
17
    {
18
        $this->client = $client;
19
        $this->url = $url;
20
    }
21
22
    /**
23
     * {@inheritdoc}
24
     */
25
    public function flush()
26
    {
27
        try {
28
            $this->client->purgeQueue([
29
                'QueueUrl' => $this->url,
30
            ]);
31
        } catch (SqsException $e) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
Consider adding a comment why this CATCH block is empty.
Loading history...
32
        }
33
    }
34
35
    /**
36
     * {@inheritdoc}
37
     */
38
    public function send(string $payload)
39
    {
40
        $this->client->sendMessage([
41
            'QueueUrl' => $this->url,
42
            'MessageBody' => $payload,
43
        ]);
44
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49
    public function receive()
50
    {
51
        $receiveResult = $this->client->receiveMessage([
52
            'QueueUrl' => $this->url,
53
            'MaxNumberOfMessages' => 1,
54
        ]);
55
        print_r($receiveResult);
56
        if ($receiveResult->search("Messages") && ((int)$receiveResult->search("Messages | length(@)")) > 0) {
57
            return new SqsJob(
58
                $receiveResult->search("Messages[0].ReceiptHandle"),
59
                $receiveResult->search("Messages[0].Body")
60
            );
61
        }
62
        return null;
63
    }
64
65
    /**
66
     * {@inheritdoc}
67
     */
68
    public function remove($job)
69
    {
70
        /** @var \Wandu\Q\Adapter\SqsJob $job */
71
        $this->client->deleteMessage([
72
            'QueueUrl'  => $this->url,
73
            'ReceiptHandle' => $job->getReceiptHandler(),
74
        ]);
75
    }
76
}
77