Issues (2)

src/ApiClient.php (2 issues)

Severity
1
<?php declare(strict_types=1);
2
3
namespace TheHorhe\ApiClient;
4
5
use GuzzleHttp\Client;
6
use GuzzleHttp\Psr7\Request;
7
use Psr\Http\Message\RequestInterface;
8
use Psr\Http\Message\ResponseInterface;
9
10
class ApiClient implements ApiClientInterface
11
{
12
    /**
13
     * @param MethodInterface $method
14
     * @return mixed
15
     */
16
    public function executeMethod(MethodInterface $method)
17
    {
18
        $this->preprocessMethod($method);
19
20
        $client = $this->createClient();
21
        $request = $this->buildRequest($method);
22
23
        try {
24
            $response = $client->send($request, $method->getOptions());
25
            $this->preprocessResponse($response);
26
27
            return $method->processResponse($response);
28
        } catch (\Throwable $exception) {
29
            return $method->handleException($exception);
30
        }
31
32
    }
33
34
    /**
35
     * @param MethodInterface $method
36
     * @return RequestInterface
37
     */
38
    protected function buildRequest(MethodInterface $method)
39
    {
40
        $request = new Request(
41
            $method->getHttpMethod(),
42
            sprintf('%s://%s%s?%s', $method->getScheme(), $method->getHost(), $method->getMethodUrl(), $this->buildQueryString($method->getQueryParameters())),
43
            $method->getHeaders(),
44
            $method->getBody()
45
        );
46
47
        return $request;
48
    }
49
    
50
    /**
51
     * @param array $parametersArray
52
     * @return string
53
     */
54
    protected function buildQueryString($parametersArray)
55
    {
56
        $query = http_build_query($parametersArray, '', '&');
57
        
58
        return preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $query);
59
    } 
60
61
    /**
62
     * @return Client
63
     */
64
    protected function createClient()
65
    {
66
        return new Client();
67
    }
68
69
    /**
70
     * Methods allows add some common operations, e.g. add body parameter to the body of all methods executed by this client.
71
     *
72
     * @param MethodInterface $method
73
     * @return void
74
     */
75
    protected function preprocessMethod(MethodInterface $method)
0 ignored issues
show
The parameter $method is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

75
    protected function preprocessMethod(/** @scrutinizer ignore-unused */ MethodInterface $method)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
76
    {
77
78
    }
79
80
    /**
81
     * Use this to modify response before processing
82
     *
83
     * @param ResponseInterface $response
84
     * @return void
85
     */
86
    protected function preprocessResponse(ResponseInterface $response)
0 ignored issues
show
The parameter $response is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

86
    protected function preprocessResponse(/** @scrutinizer ignore-unused */ ResponseInterface $response)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
87
    {
88
89
    }
90
}
91