ResponseMacroServiceProvider::boot()   A
last analyzed

Complexity

Conditions 4
Paths 1

Size

Total Lines 55
Code Lines 43

Duplication

Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 0 Features 2
Metric Value
cc 4
eloc 43
c 6
b 0
f 2
nc 1
nop 0
dl 0
loc 55
rs 9.232

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace RC\JSend;
4
5
use Illuminate\Support\ServiceProvider;
6
7
class ResponseMacroServiceProvider extends ServiceProvider
8
{
9
    /**
10
     * Bootstrap the application services.
11
     *
12
     * @return void
13
     */
14
    public function boot()
15
    {
16
        $self = $this;
17
18
        response()->macro('jsend', [$this, 'jsend']);
19
20
        response()->macro('resource_fetched', function (
21
            $data = null,
22
            $presenter = null,
23
            $message = 'Resource Fetched Successfully',
24
            $status = 'success',
25
            $code = 200
26
        ) use ($self) {
27
            return $self->jsend($data, $presenter, $status, $message, $code);
28
        });
29
30
        response()->macro('resource_updated', function (
31
            $data = null,
32
            $presenter = null,
33
            $message = 'Resource Updated Successfully',
34
            $status = 'success',
35
            $code = 200
36
        ) use ($self) {
37
            return $self->jsend($data, $presenter, $status, $message, $code);
38
        });
39
40
        response()->macro('resource_created', function (
41
            $data = null,
42
            $presenter = null,
43
            $message = 'Resource Created Successfully',
44
            $status = 'success',
45
            $code = 201
46
        ) use ($self) {
47
            return $self->jsend($data, $presenter, $status, $message, $code);
48
        });
49
50
        response()->macro('resource_deleted', function (
51
            $data = null,
52
            $presenter = null,
53
            $message = null,
54
            $status = null,
55
            $code = 204
56
        ) use ($self) {
57
            return $self->jsend($data, $presenter, $status, $message, $code);
58
        });
59
60
        response()->macro('jsend_error', function (
61
            \Exception $e,
62
            $message = null,
63
            $code = null
64
        ) use ($self) {
65
            $message = $message ? $message : $e->getMessage();
66
            $code = $code ? $code : $e->getCode();
67
            $code = $code ? $code : 400;
68
            return $self->jsend(null, null, 'error', $message, $code);
69
        });
70
    }
71
72
    /**
73
     * Register the application services.
74
     *
75
     * @return void
76
     */
77
    public function register()
78
    {
79
        //
80
    }
81
82
    /**
83
     * Send jsend response
84
     *
85
     * @param mixed $data
86
     * @param mixed $presenter
87
     * @param string | null $status
88
     * @param string | null $message
89
     * @param int $code
90
     * @return \Illuminate\Http\JsonResponse
91
     */
92
    public function jsend($data = null, $presenter = null, $status = null, $message = null, $code)
93
    {
94
        if ($data != null && $presenter != null) {
95
            $data = $presenter->present($data);
96
        }
97
98
        $body = [
99
            'status' => $status,
100
            'message' => $message,
101
            'data' => $data
102
        ];
103
104
        return response()->json($body, $code);
105
    }
106
}
107