LaravelSqsFifoQueueServiceProvider   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 91
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 91
ccs 23
cts 23
cp 1
rs 10
wmc 9

7 Methods

Rating   Name   Duplication   Size   Complexity  
A extendManager() 0 3 1
A registerContentDeduplicator() 0 3 1
A register() 0 14 2
A registerSqsDeduplicator() 0 3 1
A registerConnectors() 0 4 1
A registerDeduplicators() 0 4 2
A registerUniqueDeduplicator() 0 3 1
1
<?php
2
3
namespace ShiftOneLabs\LaravelSqsFifoQueue;
4
5
use Illuminate\Support\ServiceProvider;
6
use ShiftOneLabs\LaravelSqsFifoQueue\Queue\Deduplicators\Sqs;
7
use ShiftOneLabs\LaravelSqsFifoQueue\Queue\Deduplicators\Unique;
8
use ShiftOneLabs\LaravelSqsFifoQueue\Queue\Deduplicators\Content;
9
use ShiftOneLabs\LaravelSqsFifoQueue\Queue\Connectors\SqsFifoConnector;
10
11
class LaravelSqsFifoQueueServiceProvider extends ServiceProvider
12
{
13
    /**
14
     * Register any application services.
15
     *
16
     * @return void
17
     */
18 576
    public function register()
19
    {
20 576
        $app = $this->app;
21
22 576
        $this->registerDeduplicators();
23
24
        // Queue is a deferred provider. We don't want to force resolution to provide
25
        // a new driver. Therefore, if the queue has already been resolved, extend
26
        // it now. Otherwise, extend the queue after it has been resolved.
27 576
        if ($app->bound('queue')) {
28 576
            $this->extendManager($app['queue']);
29
        } else {
30 9
            $app->afterResolving('queue', function ($manager) {
31 9
                $this->extendManager($manager);
32 9
            });
33
        }
34
    }
35
36
    /**
37
     * Register everything for the given manager.
38
     *
39
     * @param  \Illuminate\Queue\QueueManager  $manager
40
     *
41
     * @return void
42
     */
43 576
    public function extendManager($manager)
44
    {
45 576
        $this->registerConnectors($manager);
46
    }
47
48
    /**
49
     * Register the connectors on the queue manager.
50
     *
51
     * @param  \Illuminate\Queue\QueueManager  $manager
52
     *
53
     * @return void
54
     */
55 576
    public function registerConnectors($manager)
56
    {
57 576
        $manager->extend('sqs-fifo', function () {
58 45
            return new SqsFifoConnector();
59 576
        });
60
    }
61
62
    /**
63
     * Register the default deduplicator methods.
64
     *
65
     * @return void
66
     */
67 576
    public function registerDeduplicators()
68
    {
69 576
        foreach (['Unique', 'Content', 'Sqs'] as $deduplicator) {
70 576
            $this->{"register{$deduplicator}Deduplicator"}();
71
        }
72
    }
73
74
    /**
75
     * Register the unique deduplicator to treat all messages as unique.
76
     *
77
     * @return void
78
     */
79 576
    public function registerUniqueDeduplicator()
80
    {
81 576
        $this->app->bind('queue.sqs-fifo.deduplicator.unique', Unique::class);
82
    }
83
84
    /**
85
     * Register the content deduplicator to treat messages with the same payload as duplicates.
86
     *
87
     * @return void
88
     */
89 576
    public function registerContentDeduplicator()
90
    {
91 576
        $this->app->bind('queue.sqs-fifo.deduplicator.content', Content::class);
92
    }
93
94
    /**
95
     * Register the SQS deduplicator for queues with ContentBasedDeduplication enabled on SQS.
96
     *
97
     * @return void
98
     */
99 576
    public function registerSqsDeduplicator()
100
    {
101 576
        $this->app->bind('queue.sqs-fifo.deduplicator.sqs', Sqs::class);
102
    }
103
}
104