AccessToken::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 21
rs 9.584
c 0
b 0
f 0
cc 1
nc 1
nop 9

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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
}