Completed
Push — master ( 483eda...cb59ac )
by Дмитрий
03:04
created

Factory::buildClassName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
/**
3
 * SocialConnect project
4
 * @author: Patsura Dmitry https://github.com/ovr <[email protected]>
5
 */
6
7
namespace SocialConnect\Auth;
8
9
use SocialConnect\OAuth1\AbstractProvider as OAuth1AbstractProvider;
10
use SocialConnect\OAuth2\AbstractProvider as OAuth2AbstractProvider;
11
12
/**
13
 * Class Factory
14
 * @package SocialConnect\Auth\Provider
15
 */
16
class Factory implements FactoryInterface
17
{
18
    /**
19
     * @param $id
20
     * @return string
21
     */
22
    protected function buildClassName($id)
23
    {
24
        return '\\SocialConnect\\' . $id . '\\Provider';
25
    }
26
27
    /**
28
     * @param $id
29
     * @return bool
30
     */
31
    public function has($id)
32
    {
33
        return class_exists($this->buildClassName($id));
34
    }
35
36
    /**
37
     * @param string $id
38
     * @param array $parameters
39
     * @param Service $service
40
     * @return OAuth1AbstractProvider|OAuth2AbstractProvider
41
     */
42
    public function factory($id, array $parameters, Service $service)
43
    {
44
        $providerClassName = $this->buildClassName($id);
45
46
        $consumer = new Consumer($parameters['applicationId'], $parameters['applicationSecret']);
47
48
        /**
49
         * @var $provider AbstractBaseProvider
50
         */
51
        $provider = new $providerClassName($service, $consumer);
52
53
        if (isset($parameters['scope'])) {
54
            $provider->setScope($parameters['scope']);
55
        }
56
57
        if (isset($parameters['fields'])) {
58
            $provider->setFields($parameters['fields']);
59
        }
60
61
        return $provider;
62
    }
63
}
64