Completed
Push — master ( 169be8...2af833 )
by Mario
03:34
created

AbstractService   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 4

Test Coverage

Coverage 85.71%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 5
c 2
b 0
f 0
lcom 2
cbo 4
dl 0
loc 75
ccs 12
cts 14
cp 0.8571
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A extractDataFromObject() 0 4 1
A hydrateDataFromArrayToObject() 0 6 1
A delegate() 0 13 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 30
    public function __construct(
31
        \Marek\Toggable\Http\Manager\RequestManagerInterface $requestManager,
32
        \Marek\Toggable\Hydrator\HydratorInterface $hydrator
33
    )
34
    {
35 30
        $this->requestManager = $requestManager;
36 30
        $this->hydrator = $hydrator;
37 30
    }
38
39
    /**
40
     * Extract helper method
41
     *
42
     * @param object $object
43
     *
44
     * @return array
45
     */
46 4
    protected function extractDataFromObject($object)
47
    {
48 4
        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 5
    protected function hydrateDataFromArrayToObject(\Marek\Toggable\API\Http\Response\ResponseInterface $response, $object)
60
    {
61 5
        $data = $response->getBody()['data'];
62
63 5
        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 10
    protected function delegate(\Marek\Toggable\API\Http\Request\RequestInterface $request)
74
    {
75
        try {
76
77 10
            $response = $this->requestManager->request($request);
78
79
        } catch(NotFoundException $e) {
80
81
            return new Response();
82
        }
83
84 10
        return $response;
85
    }
86
}
87