TokenMapper::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Mechpave\ImgurClient\Mapper;
4
5
use Mechpave\ImgurClient\Entity\TokenInterface;
6
7
/**
8
 * Class TokenMapper
9
 * @package Mechpave\ImgurClient\Mapper
10
 */
11
class TokenMapper
12
{
13
    /**
14
     * @var ObjectMapper
15
     */
16
    protected $objectMapper;
17
18
    /**
19
     * TokenMapper constructor.
20
     * @param ObjectMapper $objectMapper
21
     */
22 2
    public function __construct(ObjectMapper $objectMapper)
23
    {
24 2
        $this->objectMapper = $objectMapper;
25 2
    }
26
27
    /**
28
     * Builds token object from raw data
29
     *
30
     * @param array $tokenData
31
     * @return TokenInterface
32
     */
33 2
    public function buildToken(array $tokenData)
34
    {
35 2
        if (empty($tokenData['access_token']) ||
36 2
            empty($tokenData['refresh_token']) ||
37 2
            empty($tokenData['expires_in']) ||
38 2
            empty($tokenData['account_id'])) {
39
            throw new \InvalidArgumentException();
40
        }
41
42 2
        $tokenClass = $this->objectMapper->getTokenClass();
43
44
        /** @var TokenInterface $token */
45 2
        $token = new $tokenClass();
46
        $token
47 2
            ->setAccessToken($tokenData['access_token'])
48 2
            ->setRefreshToken($tokenData['refresh_token'])
49 2
            ->setExpiresAt($tokenData['expires_in'] + time())
50 2
            ->setAccountId($tokenData['account_id']);
51
52 2
        return $token;
53
    }
54
}