Completed
Push — master ( f7424d...b53e51 )
by Alejandro
07:43
created

JsonErrorResponseGenerator::responsePhraseToCode()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
c 1
b 0
f 0
1
<?php
2
namespace Shlinkio\Shlink\Rest\ErrorHandler;
3
4
use Acelaya\ExpressiveErrorHandler\ErrorHandler\ErrorResponseGeneratorInterface;
5
use Fig\Http\Message\StatusCodeInterface;
6
use Psr\Http\Message\ResponseInterface as Response;
7
use Psr\Http\Message\ServerRequestInterface as Request;
8
use Zend\Diactoros\Response\JsonResponse;
9
use Zend\Expressive\Router\RouteResult;
10
11
class JsonErrorResponseGenerator implements ErrorResponseGeneratorInterface, StatusCodeInterface
12
{
13
    /**
14
     * Final handler for an application.
15
     *
16
     * @param \Throwable|\Exception $e
17
     * @param Request $request
18
     * @param Response $response
19
     * @return Response
20
     */
21 2
    public function __invoke($e, Request $request, Response $response)
22
    {
23 2
        $status = $response->getStatusCode();
24 2
        $responsePhrase = $status < 400 ? 'Internal Server Error' : $response->getReasonPhrase();
25 2
        $status = $status < 400 ? self::STATUS_INTERNAL_SERVER_ERROR : $status;
26
27 2
        return new JsonResponse([
28 2
            'error' => $this->responsePhraseToCode($responsePhrase),
29 2
            'message' => $responsePhrase,
30 2
        ], $status);
31
    }
32
33
    /**
34
     * @param string $responsePhrase
35
     * @return string
36
     */
37 2
    protected function responsePhraseToCode($responsePhrase)
38
    {
39 2
        return strtoupper(str_replace(' ', '_', $responsePhrase));
40
    }
41
}
42