Completed
Push — master ( e15c58...b150a8 )
by Changwan
07:08
created

NullAdapter::enqueue()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
nc 1
nop 2
dl 0
loc 7
ccs 0
cts 7
cp 0
crap 2
rs 9.4285
c 1
b 0
f 0
1
<?php
2
namespace Wandu\Q\Adapter;
3
4
use Aws\Sqs\SqsClient;
5
use Wandu\Q\Contracts\AdapterInterface;
6
use Wandu\Q\Contracts\SerializerInterface;
7
use Wandu\Q\Job\SqsJob;
8
9
class NullAdapter implements AdapterInterface
10
{
11
    /** @var \Aws\Sqs\SqsClient */
12
    protected $client;
13
14
    /** @var string */
15
    protected $url;
16
17
    /**
18
     * @param string $key
19
     * @param string $secret
20
     * @param string $region
21
     * @param string $url
22
     */
23
    public function __construct($key, $secret, $region, $url)
24
    {
25
        $this->client = new SqsClient([
26
            'version' => 'latest',
27
            'credentials' => [
28
                'key' => $key,
29
                'secret' => $secret,
30
            ],
31
            'region' => $region,
32
        ]);
33
        $this->url = $url;
34
    }
35
36
    /**
37
     * {@inheritdoc}
38
     */
39
    public function enqueue(SerializerInterface $serializer, $payload)
40
    {
41
        $this->client->sendMessage([
42
            'QueueUrl' => $this->url,
43
            'MessageBody' => $serializer->serialize($payload),
44
        ]);
45
    }
46
47
    /**
48
     * {@inheritdoc}
49
     */
50
    public function dequeue(SerializerInterface $serializer)
51
    {
52
        $message = $this->client->receiveMessage([
53
            'QueueUrl' => $this->url,
54
        ])->get('Messages');
55
        if (count($message)) {
56
            return new SqsJob(
57
                $this->client,
58
                $this->url,
59
                $message[0]['ReceiptHandle'],
60
                $serializer->unserialize($message[0]['Body'])
61
            );
62
        }
63
        return null;
64
    }
65
}
66