Completed
Pull Request — master (#9)
by
unknown
25:07
created

SqsFifoConnector::getDefaultConfiguration()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 8
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 14
ccs 9
cts 9
cp 1
crap 2
rs 10
1
<?php
2
3
namespace ShiftOneLabs\LaravelSqsFifoQueue\Queue\Connectors;
4
5
use Aws\Sqs\SqsClient;
6
use Illuminate\Support\Str;
7
use InvalidArgumentException;
8
use Illuminate\Queue\Connectors\SqsConnector;
9
use ShiftOneLabs\LaravelSqsFifoQueue\Support\Arr;
10
use ShiftOneLabs\LaravelSqsFifoQueue\SqsFifoQueue;
11
12
class SqsFifoConnector extends SqsConnector
13
{
14
    /**
15
     * Establish a queue connection.
16
     *
17
     * @param  array  $config
18
     *
19
     * @return \Illuminate\Contracts\Queue\Queue
20
     */
21 280
    public function connect(array $config)
22
    {
23 280
        $config = $this->getDefaultConfiguration($config);
24
25 280
        if (!Str::endsWith($config['queue'], '.fifo')) {
26 70
            throw new InvalidArgumentException('FIFO queue name must end in ".fifo"');
27
        }
28
29 210
        if (!empty($config['key']) && !empty($config['secret'])) {
30
            $config['credentials'] = Arr::only($config, ['key', 'secret', 'token']);
31
        }
32
33 210
        $group = Arr::pull($config, 'group', 'default');
34 210
        $deduplicator = Arr::pull($config, 'deduplicator', 'unique');
35
36 210
        return new SqsFifoQueue(
37 210
            new SqsClient($config),
38 210
            $config['queue'],
39 210
            Arr::get($config, 'prefix', ''),
40 132
            $group,
41 96
            $deduplicator
42 36
        );
43
    }
44
45
    /**
46
     * Get the default configuration for SQS.
47
     *
48
     * @param  array  $config
49
     *
50
     * @return array
51
     */
52 280
    protected function getDefaultConfiguration(array $config)
53
    {
54
        // Laravel >= 5.1 has the "getDefaultConfiguration" method.
55 280
        if (method_exists(get_parent_class(), 'getDefaultConfiguration')) {
56 196
            return parent::getDefaultConfiguration($config);
57
        }
58
59 84
        return array_merge([
60 84
            'version' => 'latest',
61
            'http' => [
62 24
                'timeout' => 60,
63 24
                'connect_timeout' => 60,
64 24
            ],
65 60
        ], $config);
66
    }
67
}
68