Completed
Push — master ( 70ca3b...6984b9 )
by Mario
03:10
created

UserService::delegateHydrateAndReturnResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
ccs 5
cts 5
cp 1
rs 9.4285
cc 1
eloc 5
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Marek\Toggable\Service\User;
4
5
use Marek\Toggable\API\Http\Request\RequestInterface;
6
use Marek\Toggable\Service\AbstractService;
7
use Marek\Toggable\API\Http\Request\Users\GetCurrentUser;
8
use Marek\Toggable\API\Http\Request\Users\ResetApiToken;
9
use Marek\Toggable\API\Http\Request\Users\SignUp;
10
use Marek\Toggable\API\Http\Request\Users\UpdateUser;
11
use Marek\Toggable\API\Http\Response\Users\Token;
12
use Marek\Toggable\API\Http\Response\Users\User as UserResponse;
13
use Marek\Toggable\API\Toggl\Values\User\User;
14
15
16
/**
17
 * Class UserService
18
 * @package Marek\Toggable\Service\User
19
 */
20
class UserService extends AbstractService implements \Marek\Toggable\API\Toggl\UserServiceInterface
21
{
22
    /**
23
     * @inheritDoc
24
     */
25 1
    public function getCurrentUserData($withRelatedData = false)
26
    {
27 1
        $request = new GetCurrentUser(
28
            array(
29 1
                'relatedData' => $withRelatedData,
30
            )
31 1
        );
32
33 1
        return $this->delegateHydrateAndReturnResponse($request);
34
    }
35
36
    /**
37
     * @inheritDoc
38
     */
39 1
    public function updateUser(\Marek\Toggable\API\Toggl\Values\User\User $user)
40
    {
41 1
        $request = new UpdateUser(
42
            array(
43 1
                'data' => $this->extractDataFromObject($user),
44
            )
45 1
        );
46
47 1
        return $this->delegateHydrateAndReturnResponse($request);
48
    }
49
50
    /**
51
     * @inheritDoc
52
     */
53 1
    public function resetApiToken()
54
    {
55 1
        $request = new ResetApiToken();
56
57 1
        $response = $this->delegate($request);
58
59 1
        return new Token(
60
            array(
61 1
                'token' => $response->body,
62
            )
63 1
        );
64
    }
65
66
    /**
67
     * @inheritDoc
68
     */
69 1
    public function signUpNewUser(\Marek\Toggable\API\Toggl\Values\User\SignUp $signUp)
70
    {
71 1
        $request = new SignUp(
72
            array(
73 1
                'data' => $this->extractDataFromObject($signUp),
74
            )
75 1
        );
76
77 1
        return $this->delegateHydrateAndReturnResponse($request);
78
    }
79
80
    /**
81
     * @inheritdoc
82
     */
83 3
    protected function delegateHydrateAndReturnResponse(RequestInterface $request)
84
    {
85 3
        $response = $this->delegate($request);
86
87 3
        return new UserResponse(
88
            array(
89 3
                'user' => $this->hydrateDataFromArrayToObject($response, new User()),
90
            )
91 3
        );
92
    }
93
}
94