AbstractConsultaApi::getModelos()   A
last analyzed

Complexity

Conditions 2
Paths 3

Size

Total Lines 14
Code Lines 10

Duplication

Lines 14
Ratio 100 %

Importance

Changes 0
Metric Value
dl 14
loc 14
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 10
nc 3
nop 2
1
<?php
2
3
namespace FipeApi;
4
5
use Curl\Curl;
6
use FipeApi\Constants\FipeApiParameter;
7
use FipeApi\Interfaces\IConsultaApi;
8
9
/**
10
 * Class AbstractConsultaApi
11
 * @package FipeApi
12
 */
13
abstract class AbstractConsultaApi implements IConsultaApi
14
{
15
16
    /**
17
     * @var Client
18
     */
19
    protected $client;
20
21
    /**
22
     * @var Curl
23
     */
24
    protected $_curl;
25
26
    /**
27
     * @var string
28
     */
29
    protected $tipo;
30
31
    /**
32
     * AbstractConsultaApi constructor.
33
     * @param $tipo
34
     * @param Client|null $client
35
     */
36
    public function __construct($tipo, Client $client = null)
37
    {
38
39
        $this->_curl = new Curl();
40
        $this->tipo = $tipo;
41
42
        if(is_null($client))
43
        {
44
            $this->client = new Client();
45
        }else{
46
            $this->client = $client;
47
        }
48
49
    }
50
51
    /**
52
     * @return array
53
     * @throws \Exception
54
     */
55 View Code Duplication
    public function getMarcas()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
56
    {
57
        try{
58
            $this->_curl->get(sprintf("%s/%s/marcas.json",
59
                $this->client->getParameter(FipeApiParameter::FIPE_API_HOST),
60
                $this->tipo)
61
            );
62
            return $this->getResponse();
63
        }catch(\Exception $ex){
64
            var_dump($ex);
0 ignored issues
show
Security Debugging Code introduced by
var_dump($ex); looks like debug code. Are you sure you do not want to remove it? This might expose sensitive data.
Loading history...
65
            throw new \Exception($ex->getMessage());
66
        }
67
    }
68
69
    /**
70
     * @param integer $fabricante
71
     *
72
     * @return array
73
     * @throws \Exception
74
     */
75 View Code Duplication
    public function getVeiculos($fabricante)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
76
    {
77
        try{
78
            $this->_curl->get(sprintf("%s/%s/veiculos/%s.json",
79
                    $this->client->getParameter(FipeApiParameter::FIPE_API_HOST),
80
                    $this->tipo,
81
                    $fabricante)
82
            );
83
            return $this->getResponse();
84
        }catch(\Exception $ex){
85
            throw new \Exception($ex->getMessage());
86
        }
87
    }
88
89
    /**
90
     * @param integer $fabricante
91
     * @param integer $veiculo
92
     *
93
     * @return array
94
     * @throws \Exception
95
     */
96 View Code Duplication
    public function getModelos($fabricante, $veiculo)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
97
    {
98
        try{
99
            $this->_curl->get(sprintf("%s/%s/veiculo/%s/%s.json",
100
                    $this->client->getParameter(FipeApiParameter::FIPE_API_HOST),
101
                    $this->tipo,
102
                    $fabricante,
103
                    $veiculo)
104
            );
105
            return $this->getResponse();
106
        }catch(\Exception $ex){
107
            throw new \Exception($ex->getMessage());
108
        }
109
    }
110
111 View Code Duplication
    public function getDetalhes($fabricante, $veiculo, $fipeCodigo)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
112
    {
113
        try{
114
            $this->_curl->get(sprintf("%s/%s/veiculo/%s/%s/%s.json",
115
                    $this->client->getParameter(FipeApiParameter::FIPE_API_HOST),
116
                    $this->tipo,
117
                    $fabricante,
118
                    $veiculo,
119
                    $fipeCodigo)
120
            );
121
            return $this->getResponse();
122
        }catch(\Exception $ex){
123
            throw new \Exception($ex->getMessage());
124
        }
125
    }
126
127
    /**
128
     * @return array
129
     */
130
    protected function getResponse()
131
    {
132
        return [
133
            'http' => [
134
                'httpStatusCode' => $this->_curl->httpStatusCode,
135
                'httpErrorMessage' => $this->_curl->httpErrorMessage
136
            ],
137
            'data' => json_decode($this->_curl->rawResponse, true)
138
        ];
139
    }
140
141
}