Passed
Push — main ( 33d492...e44212 )
by Filipe
12:02
created

CorsModule::services()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * This file is part of Cors
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 */
9
10
declare(strict_types=1);
11
12
namespace Slick\Cors;
13
14
use Dotenv\Dotenv;
15
use Slick\Cors\Infrastructure\Converter;
16
use Slick\Cors\Infrastructure\CorsMiddleware;
0 ignored issues
show
Bug introduced by
The type Slick\Cors\Infrastructure\CorsMiddleware was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
17
use Slick\Di\Definition\ObjectDefinition;
18
use Slick\ModuleApi\Infrastructure\AbstractModule;
19
use Slick\ModuleApi\Infrastructure\FrontController\MiddlewareHandler;
20
use Slick\ModuleApi\Infrastructure\FrontController\MiddlewareHandlerInterface;
21
use Slick\ModuleApi\Infrastructure\FrontController\MiddlewarePosition;
0 ignored issues
show
Bug introduced by
The type Slick\ModuleApi\Infrastr...ller\MiddlewarePosition was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
22
use Slick\ModuleApi\Infrastructure\FrontController\Position;
23
use Slick\ModuleApi\Infrastructure\FrontController\WebModuleInterface;
24
use function Slick\ModuleApi\importSettingsFile;
25
26
/**
27
 * CorsModule
28
 *
29
 * @package Slick\Cors
30
 */
31
final class CorsModule extends AbstractModule implements WebModuleInterface
32
{
33
    /** @var array<array<string, mixed>>  */
34
    public static array $defaultConfig = [
35
        'cors' => [
36
            'origin' => '*',
37
            'methods' => 'GET, POST, PATCH, PUT, HEAD, DELETE, OPTIONS',
38
            'headers' => 'origin, x-requested-with, content-type, authorization',
39
            'credentials' => 'true'
40
        ]
41
    ];
42
43
    public function description(): string
44
    {
45
        return "Enables Cross-Origin Resource Sharing (CORS) for secure and flexible API interactions.";
46
    }
47
48
    /**
49
     * Retrieves the settings from a configuration file.
50
     *
51
     * @param Dotenv $dotenv The Dotenv instance used for loading environment variables.
52
     * @return array<string|mixed> The array containing the settings.
53
     * @SuppressWarnings("PHPMD.UnusedFormalParameter")
54
     */
55
    public function settings(Dotenv $dotenv): array
56
    {
57
        $file = APP_ROOT . '/config/modules/cors.php';
58
        return importSettingsFile($file, self::$defaultConfig);
59
    }
60
61
    public function services(): array
62
    {
63
        return [
64
            Converter::class => ObjectDefinition::create(Converter\JsonApiConverter::class)
65
        ];
66
    }
67
68
69
    /**
70
     * Retrieves an array of middleware handlers.
71
     *
72
     * @return array<MiddlewareHandlerInterface> The array of middleware handlers.
73
     */
74
    public function middlewareHandlers(): array
75
    {
76
        $position = new MiddlewarePosition(Position::Top);
77
78
        return [
79
            new MiddlewareHandler(
80
                'cors',
81
                $position,
82
                CorsMiddleware::class
83
            )
84
        ];
85
    }
86
}
87