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

SpeakJson::handle()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 2
Metric Value
c 2
b 0
f 2
dl 0
loc 19
rs 9.4285
cc 3
eloc 9
nc 3
nop 2
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