Completed
Push — master ( d5972d...c20ba1 )
by Mario
03:00
created

delegateHydrateAndReturnResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 0
cts 2
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 2
1
<?php
2
3
namespace Marek\Toggable\Service;
4
5
use Marek\Toggable\API\Exception\NotFoundException;
6
use Marek\Toggable\API\Http\Response\Response;
7
8
/**
9
 * Class AbstractService
10
 * @package Marek\Toggable\Service
11
 */
12
abstract class AbstractService
13
{
14
    /**
15
     * @var \Marek\Toggable\Http\Manager\RequestManagerInterface
16
     */
17
    protected $requestManager;
18
19
    /**
20
     * @var \Marek\Toggable\Hydrator\HydratorInterface
21
     */
22
    protected $hydrator;
23
24
    /**
25
     * AbstractService constructor.
26
     *
27
     * @param \Marek\Toggable\Http\Manager\RequestManagerInterface $requestManager
28
     * @param \Marek\Toggable\Hydrator\HydratorInterface $hydrator
29
     */
30 49
    public function __construct(
31
        \Marek\Toggable\Http\Manager\RequestManagerInterface $requestManager,
32
        \Marek\Toggable\Hydrator\HydratorInterface $hydrator
33
    )
34
    {
35 49
        $this->requestManager = $requestManager;
36 49
        $this->hydrator = $hydrator;
37 49
    }
38
39
    /**
40
     * Extract helper method
41
     *
42
     * @param object $object
43
     *
44
     * @return array
45
     */
46 9
    protected function extractDataFromObject($object)
47
    {
48 9
        return $this->hydrator->extract($object);
49
    }
50
51
    /**
52
     * Hydrate helper method
53
     *
54
     * @param \Marek\Toggable\API\Http\Response\ResponseInterface $response
55
     * @param object $object
56
     *
57
     * @return object
58
     */
59 14
    protected function hydrateDataFromArrayToObject(\Marek\Toggable\API\Http\Response\ResponseInterface $response, $object)
60
    {
61 14
        $data = $response->getBody()['data'];
62
63 14
        return $this->hydrator->hydrate($data, $object);
64
    }
65
66
    /**
67
     * Delegates request/response management
68
     *
69
     * @param \Marek\Toggable\API\Http\Request\RequestInterface $request
70
     *
71
     * @return \Marek\Toggable\API\Http\Response\Response
72
     */
73 23
    protected function delegate(\Marek\Toggable\API\Http\Request\RequestInterface $request)
74
    {
75
        try {
76
77 23
            $response = $this->requestManager->request($request);
78
79 23
        } catch(NotFoundException $e) {
80
81
            return new Response();
82
        }
83
84 23
        return $response;
85
    }
86
87
    /**
88
     * Response helper method
89
     *
90
     * @param \Marek\Toggable\API\Http\Request\RequestInterface $request
91
     *
92
     * @return \Marek\Toggable\API\Toggl\Values\ValueObject
93
     */
94
    protected function delegateHydrateAndReturnResponse(\Marek\Toggable\API\Http\Request\RequestInterface $request)
95
    {
96
        throw new \RuntimeException('Method not implented');
97
    }
98
}
99