Repository navigation
Expand file tree
/
Copy pathHttpApiProblem.php
More file actions
82 lines (73 loc) · 2.29 KB
/
Copy pathHttpApiProblem.php
File metadata and controls
82 lines (73 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
declare(strict_types=1);
namespace Phpro\ApiProblem\Http;
use Phpro\ApiProblem\ApiProblemInterface;
class HttpApiProblem implements ApiProblemInterface
{
public const TYPE_HTTP_RFC = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html';
private static $statusTitles = [
// CLIENT ERROR
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',
408 => 'Request Time-out',
409 => 'Conflict',
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed',
413 => 'Request Entity Too Large',
414 => 'Request-URI Too Large',
415 => 'Unsupported Media Type',
416 => 'Requested range not satisfiable',
417 => 'Expectation Failed',
418 => 'I\'m a teapot',
422 => 'Unprocessable Entity',
423 => 'Locked',
424 => 'Failed Dependency',
425 => 'Unordered Collection',
426 => 'Upgrade Required',
428 => 'Precondition Required',
429 => 'Too Many Requests',
431 => 'Request Header Fields Too Large',
// SERVER ERROR
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Time-out',
505 => 'HTTP Version not supported',
506 => 'Variant Also Negotiates',
507 => 'Insufficient Storage',
508 => 'Loop Detected',
511 => 'Network Authentication Required',
];
/**
* @var array
*/
private $data;
public function __construct(int $statusCode, array $data)
{
$this->data = array_merge(
[
'status' => $statusCode,
'type' => self::TYPE_HTTP_RFC,
'title' => self::getTitleForStatusCode($statusCode),
'detail' => '',
],
$data
);
}
public static function getTitleForStatusCode(int $statusCode): string
{
return self::$statusTitles[$statusCode] ?? 'Unknown';
}
public function toArray(): array
{
return $this->data;
}
}