Completed
Push — develop ( 291211...8d06e7 )
by Ando
11:36
created

SpeakJson   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 2
Bugs 0 Features 2
Metric Value
wmc 3
c 2
b 0
f 2
lcom 0
cbo 1
dl 0
loc 32
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A handle() 0 19 3
1
<?php
2
3
namespace App\Http\Middleware;
4
5
use Closure;
6
use Illuminate\Http\Request;
7
use Symfony\Component\HttpFoundation\Response;
8
9
class SpeakJson
10
{
11
    /**
12
     *
13
     */
14
    const JSONAPI_CONTENT_TYPE = 'application/vnd.api+json';
15
16
    /**
17
     * @param Request $request
18
     * @param Closure $next
19
     * @return Response
20
     */
21
    public function handle(Request $request, Closure $next)
22
    {
23
24
        if ($request->header('Content-Type') !== self::JSONAPI_CONTENT_TYPE) {
25
            return response(null, Response::HTTP_UNSUPPORTED_MEDIA_TYPE);
26
        }
27
28
        $accept = $request->header('accept', '*/*');
29
30
        if (!in_array($accept, ['*/*', self::JSONAPI_CONTENT_TYPE])) {
31
            return response(null, Response::HTTP_NOT_ACCEPTABLE);
32
        }
33
34
        $response = $next($request);
35
36
        $response->header('Content-Type', self::JSONAPI_CONTENT_TYPE);
37
38
        return $response;
39
    }
40
}
41