AccessToken::updateFromSalesforceRefresh()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php namespace DarkGold\Salesforce;
2
3
use Carbon\Carbon;
4
5
class AccessToken
6
{
7
8
    /**
9
     * @var string
10
     */
11
    private $id;
12
13
    /**
14
     * @var \Carbon\Carbon
15
     */
16
    private $dateIssued;
17
18
    /**
19
     * @var \Carbon\Carbon
20
     */
21
    private $dateExpires;
22
23
    /**
24
     * @var array
25
     */
26
    private $scope;
27
28
    /**
29
     * @var string
30
     */
31
    private $tokenType;
32
33
    /**
34
     * @var string
35
     */
36
    private $refreshToken;
37
38
    /**
39
     * @var string
40
     */
41
    private $signature;
42
43
    /**
44
     * @var string
45
     */
46
    private $accessToken;
47
48
    /**
49
     * @var string
50
     */
51
    private $apiUrl;
52
53
    /**
54
     * @param string         $id
55
     * @param \Carbon\Carbon $dateIssued
56
     * @param \Carbon\Carbon $dateExpires
57
     * @param array          $scope
58
     * @param string         $tokenType
59
     * @param string         $refreshToken
60
     * @param string         $signature
61
     * @param string         $accessToken
62
     * @param string         $apiUrl
63
     */
64
    public function __construct(
65
        $id,
66
        $dateIssued,
67
        $dateExpires,
68
        $scope,
69
        $tokenType,
70
        $refreshToken,
71
        $signature,
72
        $accessToken,
73
        $apiUrl
74
    ) {
75
        $this->id           = $id;
76
        $this->dateIssued   = $dateIssued;
77
        $this->dateExpires  = $dateExpires;
78
        $this->scope        = $scope;
79
        $this->tokenType    = $tokenType;
80
        $this->refreshToken = $refreshToken;
81
        $this->signature    = $signature;
82
        $this->accessToken  = $accessToken;
83
        $this->apiUrl       = $apiUrl;
84
    }
85
86
87
    public function updateFromSalesforceRefresh(array $salesforceToken)
88
    {
89
        $this->dateIssued = Carbon::createFromTimestamp((int)($salesforceToken['issued_at'] / 1000));
90
91
        $this->dateExpires = $this->dateIssued->copy()->addHour()->subMinutes(5);
92
93
        $this->signature = $salesforceToken['signature'];
94
95
        $this->accessToken = $salesforceToken['access_token'];
96
    }
97
98
    /**
99
     * @return bool
100
     */
101
    public function needsRefresh()
102
    {
103
        return $this->dateExpires->lt(Carbon::now());
104
    }
105
106
107
    /**
108
     * @return array
109
     */
110
    public function toArray()
111
    {
112
        return [
113
            'id'           => $this->id,
114
            'dateIssued'   => $this->dateIssued->format('Y-m-d H:i:s'),
115
            'dateExpires'  => $this->dateExpires->format('Y-m-d H:i:s'),
116
            'scope'        => $this->scope,
117
            'tokenType'    => $this->tokenType,
118
            'refreshToken' => $this->refreshToken,
119
            'signature'    => $this->signature,
120
            'accessToken'  => $this->accessToken,
121
            'apiUrl'       => $this->apiUrl,
122
        ];
123
    }
124
125
    /**
126
     * @param int $options
127
     * @return string
128
     */
129
    public function toJson($options = 0)
130
    {
131
        return json_encode($this->toArray(), $options);
132
    }
133
134
    /**
135
     * @return string
136
     */
137
    public function __toString()
138
    {
139
        return $this->toJson();
140
    }
141
142
    /**
143
     * @return Carbon
144
     */
145
    public function getDateExpires()
146
    {
147
        return $this->dateExpires;
148
    }
149
150
    /**
151
     * @return Carbon
152
     */
153
    public function getDateIssued()
154
    {
155
        return $this->dateIssued;
156
    }
157
158
    /**
159
     * @return string
160
     */
161
    public function getRefreshToken()
162
    {
163
        return $this->refreshToken;
164
    }
165
166
    /**
167
     * @return string
168
     */
169
    public function getAccessToken()
170
    {
171
        return $this->accessToken;
172
    }
173
174
    /**
175
     * @return array
176
     */
177
    public function getScope()
178
    {
179
        return $this->scope;
180
    }
181
182
    /**
183
     * @return string
184
     */
185
    public function getApiUrl()
186
    {
187
        return $this->apiUrl;
188
    }
189
190
}