WebhookTrait::live()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 3
cp 0
crap 2
rs 10
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