WebhookTrait   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 13
c 2
b 0
f 0
dl 0
loc 46
ccs 0
cts 20
cp 0
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A live() 0 3 1
A preview() 0 5 1
A handle() 0 13 3
1
<?php
2
3
namespace Distilleries\Contentful\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Http\JsonResponse;
7
use Distilleries\Contentful\Webhook\Manager;
8
9
trait WebhookTrait
10
{
11
    /**
12
     * Handle Contentful live webhook.
13
     *
14
     * @param  \Illuminate\Http\Request  $request
15
     * @return \Illuminate\Http\JsonResponse
16
     */
17
    public function live(Request $request): JsonResponse
18
    {
19
        return $this->handle($request, false);
20
    }
21
22
    /**
23
     * Handle Contentful preview webhook.
24
     *
25
     * @param  \Illuminate\Http\Request  $request
26
     * @return \Illuminate\Http\JsonResponse
27
     */
28
    public function preview(Request $request): JsonResponse
29
    {
30
        use_contentful_preview();
31
32
        return $this->handle($request, true);
33
    }
34
35
    /**
36
     * Handle webhook request.
37
     *
38
     * @param  \Illuminate\Http\Request  $request
39
     * @param  boolean  $isPreview
40
     * @return \Illuminate\Http\JsonResponse
41
     */
42
    protected function handle(Request $request, bool $isPreview): JsonResponse
43
    {
44
        $headers = $request->header();
45
        $headers = is_string($headers) ? [$headers] : $headers;
46
        $payload = $request->all();
47
48
        $response = (new Manager)->handle($headers, $payload, $isPreview);
0 ignored issues
show
Bug introduced by
It seems like $headers can also be of type null; however, parameter $headers of Distilleries\Contentful\Webhook\Manager::handle() does only seem to accept array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

48
        $response = (new Manager)->handle(/** @scrutinizer ignore-type */ $headers, $payload, $isPreview);
Loading history...
49
        $responseClass = response();
50
51
        if (method_exists($responseClass, 'json')) {
52
            return $responseClass->json($response['message'], $response['status']);
53
        } else {
54
            return response(json_encode($response['message']), $response['status']);
0 ignored issues
show
Bug Best Practice introduced by
The expression return response(json_enc...), $response['status']) returns the type Illuminate\Http\Response which is incompatible with the type-hinted return Illuminate\Http\JsonResponse.
Loading history...
55
        }
56
    }
57
}
58