Completed
Push — master ( d83768...66ea7e )
by Fabian
02:05
created

Request   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 55
ccs 23
cts 23
cp 1
rs 10
c 0
b 0
f 0
wmc 7

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B execute() 0 25 6
1
<?php
2
/**
3
 * @author  Fabian Hanisch
4
 * @since   14.07.2017 23:08
5
 * @version 1.0
6
 */
7
8
namespace HanischIt\KrakenApi\Service\RequestService;
9
10
use HanischIt\KrakenApi\Enum\RequestMethodEnum;
11
use HanischIt\KrakenApi\Enum\VisibilityEnum;
12
use HanischIt\KrakenApi\Model\Header;
13
use HanischIt\KrakenApi\Model\RequestInterface;
14
use HanischIt\KrakenApi\Model\RequestOptions;
15
use HanischIt\KrakenApi\Model\ResponseInterface;
16
17
/**
18
 * Class Request
19
 *
20
 * @package HanischIt\KrakenApi\Service\RequestService
21
 */
22
class Request implements RequestServiceInterface
23
{
24
    /**
25
     * @var PostRequest
26
     */
27
    private $postRequest;
28
    /**
29
     * @var GetRequest
30
     */
31
    private $getRequest;
32
33
    /**
34
     * Request constructor.
35
     *
36
     * @param PostRequest $postRequest
37
     * @param GetRequest $getRequest
38
     */
39 4
    public function __construct(PostRequest $postRequest, GetRequest $getRequest)
40
    {
41 4
        $this->postRequest = $postRequest;
42 4
        $this->getRequest = $getRequest;
43 4
    }
44
45
    /**
46
     * @param RequestInterface $request
47
     * @param RequestOptions $requestOptions
48
     * @param Header $header
49
     *
50
     * @return ResponseInterface
51
     */
52 4
    public function execute(RequestInterface $request, RequestOptions $requestOptions, Header $header)
53
    {
54 4
        $method = $request->getVisibility() == VisibilityEnum::VISIBILITY_PRIVATE ? RequestMethodEnum::REQUEST_METHOD_POST : RequestMethodEnum::REQUEST_METHOD_GET;
55
56 4
        if ($method === RequestMethodEnum::REQUEST_METHOD_POST) {
57 2
            $response = $this->postRequest->execute($request, $requestOptions, $header);
58 2
        } else {
59 2
            $response = $this->getRequest->execute($request, $requestOptions);
60
        }
61
62 4
        $responseClass = $request->getResponseClassName();
63 4
        $result = json_decode($response->getBody(), true);
0 ignored issues
show
Bug introduced by
The method getBody() does not exist on HanischIt\KrakenApi\Model\ResponseInterface. ( Ignorable by Annotation )

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

63
        $result = json_decode($response->/** @scrutinizer ignore-call */ getBody(), true);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
64 4
        $responseObject = new $responseClass();
65 4
        if (isset($result["result"])) {
66 4
            if (method_exists($responseObject, "manualMapping")) {
67 2
                $responseObject->manualMapping($result["result"]);
68 2
            } else {
69 2
                foreach ($result["result"] as $key => $val) {
70 2
                    $methodName = "set" . ucfirst($key);
71 2
                    $responseObject->$methodName($val);
72 2
                }
73
            }
74 4
        }
75
76 4
        return $responseObject;
77
    }
78
}
79