WebhooksController::__construct()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 2
c 1
b 0
f 0
nc 2
nop 0
dl 0
loc 4
rs 10
1
<?php
2
3
4
namespace Digikraaft\PaystackWebhooks\Http\Controllers;
5
6
use Digikraaft\PaystackWebhooks\Events\WebhookHandled;
7
use Digikraaft\PaystackWebhooks\Events\WebhookReceived;
8
use Digikraaft\PaystackWebhooks\Http\Middleware\VerifyWebhookSignature;
9
use Illuminate\Http\Request;
10
use Illuminate\Routing\Controller;
11
use Illuminate\Support\Str;
12
use Symfony\Component\HttpFoundation\Response;
13
14
class WebhooksController extends Controller
15
{
16
    /**
17
     * Create a new WebhooksController instance.
18
     *
19
     * @return void
20
     */
21
    public function __construct()
22
    {
23
        if (config('paystackwebhooks.secret', env('PAYSTACK_SECRET'))) {
24
            $this->middleware(VerifyWebhookSignature::class);
25
        }
26
    }
27
28
    /**
29
     * Handle Paystack webhooks call.
30
     *
31
     * @param  \Illuminate\Http\Request  $request
32
     * @return \Symfony\Component\HttpFoundation\Response
33
     */
34
    public function handleWebhook(Request $request)
35
    {
36
        $payload = json_decode($request->getContent(), true);
37
        $method = 'handle'.Str::studly(str_replace('.', '_', $payload['event']));
38
39
        WebhookReceived::dispatch($payload);
40
41
        if (method_exists($this, $method)) {
42
            $response = $this->{$method}($payload);
43
44
            WebhookHandled::dispatch($payload);
45
46
            return $response;
47
        }
48
49
        return $this->missingMethod();
50
    }
51
52
    /**
53
     * Handle successful calls on the controller.
54
     *
55
     * @param  array  $parameters
56
     * @return \Symfony\Component\HttpFoundation\Response
57
     */
58
    protected function successMethod($parameters = [])
59
    {
60
        return new Response('Webhook Handled', 200);
61
    }
62
63
    /**
64
     * Handle calls to missing methods on the controller.
65
     *
66
     * @param  array  $parameters
67
     * @return \Symfony\Component\HttpFoundation\Response
68
     */
69
    protected function missingMethod($parameters = [])
70
    {
71
        return new Response;
72
    }
73
}
74