GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 7fc479...eaeb31 )
by Freek
01:20
created

WebhookCall   A

Complexity

Total Complexity 22

Size/Duplication

Total Lines 172
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 22
lcom 1
cbo 4
dl 0
loc 172
rs 10
c 0
b 0
f 0

18 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 15 1
A __construct() 0 4 1
A url() 0 6 1
A payload() 0 8 1
A onQueue() 0 6 1
A useSecret() 0 6 1
A useHttpVerb() 0 6 1
A maximumTries() 0 6 1
A useBackoffStrategy() 0 10 2
A timeoutInSeconds() 0 6 1
A signUsing() 0 10 2
A withHeaders() 0 6 1
A verifySsl() 0 6 1
A doNotVerifySsl() 0 6 1
A meta() 0 6 1
A withTags() 0 6 1
A dispatch() 0 14 3
A getAllHeaders() 0 10 1
1
<?php
2
3
namespace Spatie\WebhookServer;
4
5
use Spatie\WebhookServer\Signer\Signer;
6
use Spatie\WebhookServer\Exceptions\InvalidSigner;
7
use Spatie\WebhookServer\Exceptions\CouldNotCallWebhook;
8
use Spatie\WebhookServer\BackoffStrategy\BackoffStrategy;
9
use Spatie\WebhookServer\Exceptions\InvalidBackoffStrategy;
10
11
class WebhookCall
12
{
13
    /** @var \Spatie\WebhookServer\CallWebhookJob */
14
    protected $callWebhookJob;
15
16
    /** @var string */
17
    protected $secret;
18
19
    /** @var \Spatie\WebhookServer\Signer\Signer */
20
    protected $signer;
21
22
    /** @var array */
23
    protected $headers = [];
24
25
    /** @var array */
26
    private $payload = [];
27
28
    public static function create(): self
29
    {
30
        $config = config('webhook-server');
31
32
        return (new static())
33
            ->onQueue($config['queue'])
34
            ->useHttpVerb($config['http_verb'])
35
            ->maximumTries($config['tries'])
36
            ->useBackoffStrategy($config['backoff_strategy'])
37
            ->timeoutInSeconds($config['timeout_in_seconds'])
38
            ->signUsing($config['signer'])
39
            ->withHeaders($config['headers'])
40
            ->withTags($config['tags'])
41
            ->verifySsl($config['verify_ssl']);
42
    }
43
44
    public function __construct()
45
    {
46
        $this->callWebhookJob = app(CallWebhookJob::class);
47
    }
48
49
    public function url(string $url)
50
    {
51
        $this->callWebhookJob->webhookUrl = $url;
52
53
        return $this;
54
    }
55
56
    public function payload(array $payload)
57
    {
58
        $this->payload = $payload;
59
60
        $this->callWebhookJob->payload = $payload;
61
62
        return $this;
63
    }
64
65
    public function onQueue(string $queue)
66
    {
67
        $this->callWebhookJob->queue = $queue;
68
69
        return $this;
70
    }
71
72
    public function useSecret(string $secret)
73
    {
74
        $this->secret = $secret;
75
76
        return $this;
77
    }
78
79
    public function useHttpVerb(string $verb)
80
    {
81
        $this->callWebhookJob->httpVerb = $verb;
82
83
        return $this;
84
    }
85
86
    public function maximumTries(int $tries)
87
    {
88
        $this->callWebhookJob->tries = $tries;
89
90
        return $this;
91
    }
92
93
    public function useBackoffStrategy(string $backoffStrategyClass)
94
    {
95
        if (! is_subclass_of($backoffStrategyClass, BackoffStrategy::class)) {
96
            throw InvalidBackoffStrategy::doesNotExtendBackoffStrategy($backoffStrategyClass);
97
        }
98
99
        $this->callWebhookJob->backoffStrategyClass = $backoffStrategyClass;
100
101
        return $this;
102
    }
103
104
    public function timeoutInSeconds(int $timeoutInSeconds)
105
    {
106
        $this->callWebhookJob->requestTimeout = $timeoutInSeconds;
107
108
        return $this;
109
    }
110
111
    public function signUsing(string $signerClass)
112
    {
113
        if (! is_subclass_of($signerClass, Signer::class)) {
114
            throw InvalidSigner::doesImplementSigner($signerClass);
115
        }
116
117
        $this->signer = app($signerClass);
118
119
        return $this;
120
    }
121
122
    public function withHeaders(array $headers)
123
    {
124
        $this->headers = $headers;
125
126
        return $this;
127
    }
128
129
    public function verifySsl(bool $verifySsl = true)
130
    {
131
        $this->callWebhookJob->verifySsl = $verifySsl;
132
133
        return $this;
134
    }
135
136
    public function doNotVerifySsl()
137
    {
138
        $this->verifySsl(false);
139
140
        return $this;
141
    }
142
143
    public function meta(array $meta)
144
    {
145
        $this->callWebhookJob->meta = $meta;
146
147
        return $this;
148
    }
149
150
    public function withTags(array $tags)
151
    {
152
        $this->callWebhookJob->tags = $tags;
153
154
        return $this;
155
    }
156
157
    public function dispatch(): void
158
    {
159
        if (! $this->callWebhookJob->webhookUrl) {
160
            throw CouldNotCallWebhook::urlNotSet();
161
        }
162
163
        if (empty($this->secret)) {
164
            throw CouldNotCallWebhook::secretNotSet();
165
        }
166
167
        $this->callWebhookJob->headers = $this->getAllHeaders();
168
169
        dispatch($this->callWebhookJob);
170
    }
171
172
    protected function getAllHeaders(): array
173
    {
174
        $headers = $this->headers;
175
176
        $signature = $this->signer->calculateSignature($this->payload, $this->secret);
177
178
        $headers[$this->signer->signatureHeaderName()] = $signature;
179
180
        return $headers;
181
    }
182
}
183