ConfigProvider::getDependencies()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 61
Code Lines 53

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 4
Bugs 0 Features 0
Metric Value
eloc 53
c 4
b 0
f 0
dl 0
loc 61
ccs 0
cts 53
cp 0
rs 9.0254
cc 1
nc 1
nop 0
crap 2

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace TMV\HTTPlugModule;
6
7
use Http\Discovery\Psr17FactoryDiscovery;
8
use Laminas\ServiceManager\Factory\InvokableFactory;
9
use TMV\HTTPlugModule\ClientFactory\AutoDiscoveryFactory;
10
use TMV\HTTPlugModule\ClientFactory\BuzzFactory;
11
use TMV\HTTPlugModule\ClientFactory\CurlFactory;
12
use TMV\HTTPlugModule\ClientFactory\Guzzle6Factory;
13
use TMV\HTTPlugModule\ClientFactory\MockFactory;
14
use TMV\HTTPlugModule\ClientFactory\ReactFactory;
15
use TMV\HTTPlugModule\ClientFactory\SocketFactory;
16
use TMV\HTTPlugModule\DIFactory\ClientFactory\BuzzFactoryFactory;
17
use TMV\HTTPlugModule\DIFactory\ClientFactory\CurlFactoryFactory;
18
use TMV\HTTPlugModule\DIFactory\PluginFactoryManagerFactory;
19
20
class ConfigProvider
21
{
22
    /**
23
     * @return array<string, mixed>
24
     */
25
    public function __invoke(): array
26
    {
27
        return [
28
            'dependencies' => $this->getDependencies(),
29
            'httplug' => [
30
                'plugin_factory_manager' => [
31
                    'factories' => [
32
                        'cache' => PluginFactory\CacheFactory::class,
33
                        'add_host' => PluginFactory\AddHostFactory::class,
34
                        'add_path' => PluginFactory\AddPathFactory::class,
35
                        'authentication' => PluginFactory\AuthenticationFactory::class,
36
                        'base_uri' => PluginFactory\BaseUriFactory::class,
37
                        'content_length' => PluginFactory\ContentLengthFactory::class,
38
                        'content_type' => PluginFactory\ContentTypeFactory::class,
39
                        'cookie' => PluginFactory\CookieFactory::class,
40
                        'decoder' => PluginFactory\DecoderFactory::class,
41
                        'error' => PluginFactory\ErrorFactory::class,
42
                        'header_append' => PluginFactory\HeaderAppendFactory::class,
43
                        'header_defaults' => PluginFactory\HeaderDefaultsFactory::class,
44
                        'header_remove' => PluginFactory\HeaderRemoveFactory::class,
45
                        'header_set' => PluginFactory\HeaderSetFactory::class,
46
                        'history' => PluginFactory\HistoryFactory::class,
47
                        'logger' => PluginFactory\LoggerFactory::class,
48
                        'query_defaults' => PluginFactory\QueryDefaultsFactory::class,
49
                        'redirect' => PluginFactory\RedirectFactory::class,
50
                        'request_matcher' => PluginFactory\RequestMatcherFactory::class,
51
                        'retry' => PluginFactory\RetryFactory::class,
52
                        'stopwatch' => PluginFactory\StopwatchFactory::class,
53
                        'vcr_record' => PluginFactory\VcrRecordFactory::class,
54
                        'vcr_replay' => PluginFactory\VcrReplayFactory::class,
55
                    ],
56
                ],
57
                'authentication_factories' => [
58
                    'basic' => PluginFactory\Authentication\BasicFactory::class,
59
                    'bearer' => PluginFactory\Authentication\BearerFactory::class,
60
                    'wsse' => PluginFactory\Authentication\WsseFactory::class,
61
                    'query_param' => PluginFactory\Authentication\QueryParamFactory::class,
62
                ],
63
64
                // Global plugin configuration. When configured here, plugins need to be explicitly added to clients by service name.
65
                'plugins' => [],
66
67
                'clients' => [],
68
            ],
69
        ];
70
    }
71
72
    /**
73
     * @return array<string, array<mixed, mixed>>
74
     */
75
    public function getDependencies(): array
76
    {
77
        return [
78
            'abstract_factories' => [
79
                DIFactory\ClientAbstractFactory::class,
80
                DIFactory\FlexibleClientAbstractFactory::class,
81
                DIFactory\HttpMethodsClientAbstractFactory::class,
82
            ],
83
            'aliases' => [
84
                'httplug.client' => 'httplug.client.default',
85
                'httplug.client_factory.buz' => BuzzFactory::class,
86
                'httplug.client_factory.curl' => CurlFactory::class,
87
                'httplug.client_factory.guzzle6' => Guzzle6Factory::class,
88
                'httplug.client_factory.mock' => MockFactory::class,
89
                'httplug.client_factory.react' => ReactFactory::class,
90
                'httplug.client_factory.socket' => SocketFactory::class,
91
            ],
92
            'factories' => [
93
                'httplug.response_factory' => [Psr17FactoryDiscovery::class, 'findResponseFactory'],
94
                'httplug.request_factory' => [Psr17FactoryDiscovery::class, 'findRequestFactory'],
95
                'httplug.uri_factory' => [Psr17FactoryDiscovery::class, 'findUrlFactory'],
96
                'httplug.stream_factory' => [Psr17FactoryDiscovery::class, 'findStreamFactory'],
97
                // Client factories
98
                AutoDiscoveryFactory::class => InvokableFactory::class,
99
                BuzzFactory::class => BuzzFactoryFactory::class,
100
                CurlFactory::class => CurlFactoryFactory::class,
101
                Guzzle6Factory::class => InvokableFactory::class,
102
                MockFactory::class => InvokableFactory::class,
103
                ReactFactory::class => InvokableFactory::class,
104
                SocketFactory::class => InvokableFactory::class,
105
                // Authentication factories
106
                PluginFactory\Authentication\BasicFactory::class => InvokableFactory::class,
107
                PluginFactory\Authentication\BearerFactory::class => InvokableFactory::class,
108
                PluginFactory\Authentication\WsseFactory::class => InvokableFactory::class,
109
                PluginFactory\Authentication\QueryParamFactory::class => InvokableFactory::class,
110
                // Plugin factory manager
111
                PluginFactoryManager::class => PluginFactoryManagerFactory::class,
112
                // Plugin factories
113
                PluginFactory\CacheFactory::class => DIFactory\PluginFactory\CacheFactoryFactory::class,
114
                PluginFactory\AddHostFactory::class => DIFactory\PluginFactory\AddHostFactoryFactory::class,
115
                PluginFactory\AddPathFactory::class => DIFactory\PluginFactory\AddPathFactoryFactory::class,
116
                PluginFactory\AuthenticationFactory::class => DIFactory\PluginFactory\AuthenticationFactoryFactory::class,
117
                PluginFactory\BaseUriFactory::class => DIFactory\PluginFactory\BaseUriFactoryFactory::class,
118
                PluginFactory\ContentLengthFactory::class => InvokableFactory::class,
119
                PluginFactory\ContentTypeFactory::class => InvokableFactory::class,
120
                PluginFactory\CookieFactory::class => DIFactory\PluginFactory\CookieFactoryFactory::class,
121
                PluginFactory\DecoderFactory::class => InvokableFactory::class,
122
                PluginFactory\ErrorFactory::class => InvokableFactory::class,
123
                PluginFactory\HeaderAppendFactory::class => InvokableFactory::class,
124
                PluginFactory\HeaderDefaultsFactory::class => InvokableFactory::class,
125
                PluginFactory\HeaderRemoveFactory::class => InvokableFactory::class,
126
                PluginFactory\HeaderSetFactory::class => InvokableFactory::class,
127
                PluginFactory\HistoryFactory::class => DIFactory\PluginFactory\HistoryFactoryFactory::class,
128
                PluginFactory\LoggerFactory::class => DIFactory\PluginFactory\LoggerFactoryFactory::class,
129
                PluginFactory\QueryDefaultsFactory::class => InvokableFactory::class,
130
                PluginFactory\RedirectFactory::class => InvokableFactory::class,
131
                PluginFactory\RequestMatcherFactory::class => DIFactory\PluginFactory\RequestMatcherFactoryFactory::class,
132
                PluginFactory\RetryFactory::class => InvokableFactory::class,
133
                PluginFactory\StopwatchFactory::class => DIFactory\PluginFactory\StopwatchFactoryFactory::class,
134
                PluginFactory\VcrRecordFactory::class => DIFactory\PluginFactory\VcrRecordFactoryFactory::class,
135
                PluginFactory\VcrReplayFactory::class => DIFactory\PluginFactory\VcrReplayFactoryFactory::class,
136
            ],
137
        ];
138
    }
139
}
140