Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
RequestMethod
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
3 / 3
6
100.00% covered (success)
100.00%
1 / 1
 toSymfonyRequestMethod
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 hasOptionalOrNoContentBody
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
3
 allowedInOpenApi
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\Core\Enums;
3
4enum RequestMethod: string
5{
6    case POST = 'POST';
7    case PUT = 'PUT';
8    case DELETE = 'DELETE';
9    case PATCH = 'PATCH';
10    case GET = 'GET';
11    case HEAD = 'HEAD';
12    case CONNECT = 'CONNECT';
13    case OPTIONS = 'OPTIONS';
14    case TRACE = 'TRACE';
15    case PROPFIND = 'PROPFIND';
16    case PROPPATCH = 'PROPPATCH';
17    case MKCOL = 'MKCOL';
18    case COPY = 'COPY';
19    case MOVE = 'MOVE';
20    case LOCK = 'LOCK';
21    case UNLOCK = 'UNLOCK';
22    case ANY = 'ANY';
23
24    /**
25     * @return string|array<string>
26     */
27    public function toSymfonyRequestMethod(): string|array
28    {
29        if ($this === self::ANY) {
30            return [];
31        }
32        return $this->value;
33    }
34
35    public function hasOptionalOrNoContentBody(): bool
36    {
37        return match ($this) {
38            self::GET,
39            self::HEAD,
40            self::DELETE,
41            self::OPTIONS,
42            self::TRACE,
43            self::ANY => true,
44            default => false,
45        };
46    }
47
48    /**
49     * @return array<RequestMethod>
50     */
51    public static function allowedInOpenApi(): array
52    {
53        return [
54            self::POST,
55            self::PUT,
56            self::DELETE,
57            self::PATCH,
58            self::GET,
59            self::HEAD,
60            self::OPTIONS,
61            self::TRACE,
62        ];
63    }
64}