Completed
Pull Request — master (#109)
by Tobias
03:08
created

CommonClassesStrategy::getCandidates()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 8
ccs 0
cts 7
cp 0
rs 9.4285
cc 2
eloc 4
nc 2
nop 1
crap 6
1
<?php
2
3
namespace Http\Discovery\Strategy;
4
5
use GuzzleHttp\Psr7\Request as GuzzleRequest;
6
use Http\Client\HttpAsyncClient;
7
use Http\Client\HttpClient;
8
use Http\Discovery\MessageFactoryDiscovery;
9
use Http\Message\MessageFactory;
10
use Http\Message\MessageFactory\GuzzleMessageFactory;
11
use Http\Message\StreamFactory;
12
use Http\Message\StreamFactory\GuzzleStreamFactory;
13
use Http\Message\UriFactory;
14
use Http\Message\UriFactory\GuzzleUriFactory;
15
use Http\Message\MessageFactory\DiactorosMessageFactory;
16
use Http\Message\StreamFactory\DiactorosStreamFactory;
17
use Http\Message\UriFactory\DiactorosUriFactory;
18
use Zend\Diactoros\Request as DiactorosRequest;
19
use Http\Message\MessageFactory\SlimMessageFactory;
20
use Http\Message\StreamFactory\SlimStreamFactory;
21
use Http\Message\UriFactory\SlimUriFactory;
22
use Slim\Http\Request as SlimRequest;
23
use Http\Adapter\Guzzle6\Client as Guzzle6;
24
use Http\Adapter\Guzzle5\Client as Guzzle5;
25
use Http\Client\Curl\Client as Curl;
26
use Http\Client\Socket\Client as Socket;
27
use Http\Adapter\React\Client as React;
28
use Http\Adapter\Buzz\Client as Buzz;
29
use Http\Adapter\Cake\Client as Cake;
30
use Http\Adapter\Zend\Client as Zend;
31
use Http\Adapter\Artax\Client as Artax;
32
use Nyholm\Psr7\Request as NyholmRequest;
33
use Nyholm\Psr7\Factory\MessageFactory as NyholmMessageFactory;
34
use Nyholm\Psr7\Factory\StreamFactory as NyholmStreamFactory;
35
use Nyholm\Psr7\Factory\UriFactory as NyholmUriFactory;
36
37
/**
38
 * @internal
39
 *
40
 * @author Tobias Nyholm <[email protected]>
41
 */
42
final class CommonClassesStrategy implements DiscoveryStrategy
43
{
44
    /**
45
     * @var array
46
     */
47
    private static $classes = [
48
        MessageFactory::class => [
49
            ['class' => NyholmMessageFactory::class, 'condition' => [NyholmRequest::class, NyholmMessageFactory::class]],
50
            ['class' => GuzzleMessageFactory::class, 'condition' => [GuzzleRequest::class, GuzzleMessageFactory::class]],
51
            ['class' => DiactorosMessageFactory::class, 'condition' => [DiactorosRequest::class, DiactorosMessageFactory::class]],
52
            ['class' => SlimMessageFactory::class, 'condition' => [SlimRequest::class, SlimMessageFactory::class]],
53
        ],
54
        StreamFactory::class => [
55
            ['class' => NyholmStreamFactory::class, 'condition' => [NyholmRequest::class, NyholmStreamFactory::class]],
56
            ['class' => GuzzleStreamFactory::class, 'condition' => [GuzzleRequest::class, GuzzleStreamFactory::class]],
57
            ['class' => DiactorosStreamFactory::class, 'condition' => [DiactorosRequest::class, DiactorosStreamFactory::class]],
58
            ['class' => SlimStreamFactory::class, 'condition' => [SlimRequest::class, SlimStreamFactory::class]],
59
        ],
60
        UriFactory::class => [
61
            ['class' => NyholmUriFactory::class, 'condition' => [NyholmRequest::class, NyholmUriFactory::class]],
62
            ['class' => GuzzleUriFactory::class, 'condition' => [GuzzleRequest::class, GuzzleUriFactory::class]],
63
            ['class' => DiactorosUriFactory::class, 'condition' => [DiactorosRequest::class, DiactorosUriFactory::class]],
64
            ['class' => SlimUriFactory::class, 'condition' => [SlimRequest::class, SlimUriFactory::class]],
65
        ],
66
        HttpAsyncClient::class => [
67
            ['class' => Guzzle6::class, 'condition' => Guzzle6::class],
68
            ['class' => Curl::class, 'condition' => Curl::class],
69
            ['class' => React::class, 'condition' => React::class],
70
        ],
71
        HttpClient::class => [
72
            ['class' => Guzzle6::class, 'condition' => Guzzle6::class],
73
            ['class' => Guzzle5::class, 'condition' => Guzzle5::class],
74
            ['class' => Curl::class, 'condition' => Curl::class],
75
            ['class' => Socket::class, 'condition' => Socket::class],
76
            ['class' => Buzz::class, 'condition' => Buzz::class],
77
            ['class' => React::class, 'condition' => React::class],
78
            ['class' => Cake::class, 'condition' => Cake::class],
79
            ['class' => Zend::class, 'condition' => Zend::class],
80
            ['class' => Artax::class, 'condition' => Artax::class],
81
            [
82
                'class' => ['CommonClassesStrategy::buzzInstanciate',
83
                'condition' => [\Buzz\Client\Curl::class, \Buzz\Message\ResponseBuilder::class]
84
            ],
85
        ],
86
    ];
0 ignored issues
show
Bug introduced by
This code did not parse for me. Apparently, there is an error somewhere around this line:

Syntax error, unexpected ';', expecting ']'
Loading history...
87
88
    /**
89
     * {@inheritdoc}
90
     */
91
    public static function getCandidates($type)
92
    {
93
        if (isset(self::$classes[$type])) {
94
            return self::$classes[$type];
95
        }
96
97
        return [];
98
    }
99
100
    public static function buzzInstanciate() {
101
        return new \Buzz\Client\Curl([], MessageFactoryDiscovery::find());
102
    }
103
}
104