Client   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 145
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 14
lcom 1
cbo 2
dl 0
loc 145
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getParameter() 0 4 2
A setParameter() 0 6 1
B loadParameters() 0 50 8
A getAuthentication() 0 4 2
1
<?php
2
namespace Integracao\ControlPay;
3
4
use Integracao\ControlPay\Constants\ControlPayParameterConst;
5
use Integracao\ControlPay\Factory\AuthenticationFactory;
6
use Integracao\ControlPay\Impl\KeyQueryStringAuthentication;
7
use Integracao\ControlPay\Interfaces\IAuthentication;
8
9
/**
10
 * Class Client
11
 * @package Sdk\Integracao\NTKPedido
12
 */
13
class Client
14
{
15
16
    /**
17
     * @var string
18
     */
19
    const CONTROLPAY_HOST_DEFAULT = "";
20
21
    /**
22
     * Timeout padrão
23
     *
24
     * @var integer
25
     */
26
    const CONTROLPAY_TIMEOUT_DEFAULT = 25;
27
28
    /**
29
     * Timeout padrão
30
     *
31
     * @var IAuthentication
32
     */
33
    const CONTROLPAY_OAUTH_TYPE_DEFAULT = KeyQueryStringAuthentication::class;
34
35
    /**
36
     * Parâmetros, pré inicializado com valores padrão
37
     *
38
     * @var array
39
     */
40
    private $_params = [
41
        ControlPayParameterConst::CONTROLPAY_HOST => self::CONTROLPAY_HOST_DEFAULT,
42
        ControlPayParameterConst::CONTROLPAY_TIMEOUT => self::CONTROLPAY_TIMEOUT_DEFAULT,
43
        ControlPayParameterConst::CONTROLPAY_OAUTH_TYPE => self::CONTROLPAY_OAUTH_TYPE_DEFAULT
44
    ];
45
46
    /**
47
     * @var IAuthentication
48
     */
49
    private $authentication;
50
51
    /**
52
     * Client constructor
53
     *
54
     * $params Configurações opcionais, caso não seja passado os parâmetros será
55
     * acatado as presentes na raiz "/controlpay-sdk/config.ini"
56
     *
57
     * @param array[ControlPayParameterConst::{PARAM} => '', ...] $params
58
     * @throws \Exception
59
     */
60
    public function __construct(array $params = null, IAuthentication $authentication = null)
61
    {
62
        $this->loadParameters($params, $authentication);
63
    }
64
65
    /**
66
     * Obter parâmetro
67
     *
68
     * @param $key
69
     * @return mixed
70
     */
71
    public function getParameter($key)
72
    {
73
        return isset($this->_params[$key]) ? $this->_params[$key] : null;
74
    }
75
76
    /**
77
     * Adicionar Parâmetro
78
     *
79
     * @param $key
80
     * @param $value
81
     * @return $this
82
     */
83
    public function setParameter($key, $value)
84
    {
85
        $this->_params[$key] = $value;
86
        $this->loadParameters($this->_params, $this->authentication);
87
        return $this;
88
    }
89
90
    /**
91
     * Carrega parâmetros
92
     *
93
     * @param $params
94
     * @param IAuthentication $authentication
95
     * @throws \Exception
96
     */
97
    private function loadParameters($params, IAuthentication $authentication = null)
98
    {
99
        $this->_params[ControlPayParameterConst::CONTROLPAY_HOST] = getenv('CONTROLPAY_HOST');
100
        $this->_params[ControlPayParameterConst::CONTROLPAY_TIMEOUT] = getenv('CONTROLPAY_TIMEOUT');
101
        $this->_params[ControlPayParameterConst::CONTROLPAY_USER] = getenv('CONTROLPAY_USER');
102
        $this->_params[ControlPayParameterConst::CONTROLPAY_PWD] = getenv('CONTROLPAY_PWD');
103
        $this->_params[ControlPayParameterConst::CONTROLPAY_KEY] = getenv('CONTROLPAY_KEY');
104
        $this->_params[ControlPayParameterConst::CONTROLPAY_DEFAULT_PESSOA_ID] = getenv('CONTROLPAY_DEFAULT_PESSOA_ID');
105
        $this->_params[ControlPayParameterConst::CONTROLPAY_DEFAULT_PRODUTO_QTDE] = getenv('CONTROLPAY_DEFAULT_PRODUTO_QTDE');
106
        $this->_params[ControlPayParameterConst::CONTROLPAY_DEFAULT_TERMINAL_ID] = getenv('CONTROLPAY_DEFAULT_TERMINAL_ID');
107
        $this->_params[ControlPayParameterConst::CONTROLPAY_DEFAULT_PRODUTO_ID] = getenv('CONTROLPAY_DEFAULT_PRODUTO_ID');
108
        $this->_params[ControlPayParameterConst::CONTROLPAY_DEFAULT_FORMA_PAGAMENTO_ID] = getenv('CONTROLPAY_DEFAULT_FORMA_PAGAMENTO_ID');
109
        $this->_params[ControlPayParameterConst::CONTROLPAY_DEFAULT_FORMA_AGUARDA_TEF] = getenv('CONTROLPAY_DEFAULT_FORMA_AGUARDA_TEF');
110
        $this->_params[ControlPayParameterConst::CONTROLPAY_DEFAULT_SENHA_TECNICA] = getenv('CONTROLPAY_DEFAULT_SENHA_TECNICA');
111
        $this->_params[ControlPayParameterConst::CONTROLPAY_OAUTH_TYPE] = KeyQueryStringAuthentication::class;
112
113
114
        if(!is_null($params))
115
            foreach ($params as $key => $param)
116
            {
117
                if(!in_array($key, [
118
                    ControlPayParameterConst::CONTROLPAY_HOST,
119
                    ControlPayParameterConst::CONTROLPAY_TIMEOUT,
120
                    ControlPayParameterConst::CONTROLPAY_USER,
121
                    ControlPayParameterConst::CONTROLPAY_PWD,
122
                    ControlPayParameterConst::CONTROLPAY_KEY,
123
                    ControlPayParameterConst::CONTROLPAY_OAUTH_TYPE,
124
                    ControlPayParameterConst::CONTROLPAY_DEFAULT_PESSOA_ID,
125
                    ControlPayParameterConst::CONTROLPAY_DEFAULT_TERMINAL_ID,
126
                    ControlPayParameterConst::CONTROLPAY_DEFAULT_PRODUTO_ID,
127
                    ControlPayParameterConst::CONTROLPAY_DEFAULT_PRODUTO_QTDE,
128
                    ControlPayParameterConst::CONTROLPAY_DEFAULT_FORMA_PAGAMENTO_ID,
129
                    ControlPayParameterConst::CONTROLPAY_DEFAULT_FORMA_AGUARDA_TEF,
130
                    ControlPayParameterConst::CONTROLPAY_DEFAULT_SENHA_TECNICA
131
                ]))
132
                    throw new \Exception(sprintf("Parâmetro %s inválido", $key));
133
            }
134
135
        if(!is_null($params) && is_array($params))
136
            foreach ($params as $key => $value)
137
                $this->_params[$key] = $value;
138
139
        if(is_null($authentication))
140
        {
141
            $this->authentication = AuthenticationFactory::getInstance($this->_params, $this);
142
            return;
143
        }
144
145
        $this->authentication = $authentication;
146
    }
147
148
    /**
149
     * @return IAuthentication
150
     */
151
    public function getAuthentication()
152
    {
153
        return !empty($this->authentication) ? $this->authentication->getAuthorization() : null;
154
    }
155
156
157
}
158
159
160
161
162
163
164
165