Passed
Push — master ( fbb477...a4502d )
by Thomas Mauro
02:52
created

ConfigProvider::getDependencies()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 64
Code Lines 56

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

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