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

UserService   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Test Coverage

Coverage 100%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
c 4
b 0
f 0
dl 0
loc 74
wmc 5
lcom 1
cbo 9
ccs 26
cts 26
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getCurrentUserData() 0 10 1
A updateUser() 0 10 1
A resetApiToken() 0 12 1
A signUpNewUser() 0 10 1
A delegateHydrateAndReturnResponse() 0 10 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