Completed
Push — master ( 300a85...802a6c )
by François
03:18
created

Identity::getAgentName()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 7
rs 9.4285
cc 2
eloc 4
nc 2
nop 0
1
<?php
2
3
/*
4
 * This file is part of the Bouncer package.
5
 *
6
 * (c) François Hodierne <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Bouncer\Resource;
13
14
use Bouncer\Bouncer;
15
use Bouncer\Resource;
16
17
class Identity extends Resource
18
{
19
20
    /**
21
     * The unique id
22
     *
23
     * @var string
24
     */
25
    protected $id;
26
27
    /**
28
     * Type: browser or robot
29
     *
30
     * @var string
31
     */
32
    protected $type;
33
34
    /**
35
     * The Address
36
     *
37
     * @var Address
38
     */
39
    protected $address;
40
41
    /**
42
     * The Signature
43
     *
44
     * @var Signature
45
     */
46
    protected $signature;
47
48
    /**
49
     * The HTTP Headers
50
     *
51
     * @var array
52
     */
53
    protected $headers;
54
55
    /**
56
     * The User Agent
57
     *
58
     * @var UserAgent
59
     */
60
    protected $userAgent;
61
62
    /**
63
     * Session
64
     *
65
     * @var Session
66
     */
67
    protected $session;
68
69
    /**
70
     * Reputation
71
     *
72
     * @var array
73
     */
74
    protected $reputation;
75
76
    /**
77
     * @param array $attributes
78
     */
79
    public function __construct($attributes = null)
80
    {
81
        parent::__construct($attributes);
0 ignored issues
show
Bug introduced by
It seems like $attributes defined by parameter $attributes on line 79 can also be of type null; however, Bouncer\Resource::__construct() does only seem to accept array, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
82
        $address = $this->getAddress();
83
        $signature = $this->getSignature();
84
        if ($address && $signature) {
85
            $this->id = Bouncer::hash($signature->getId() . $address->getId());
86
        }
87
    }
88
89
    /*
90
     * @return string|null
91
     */
92
    public function getId()
93
    {
94
        return $this->id;
95
    }
96
97
    /*
98
     * @param string
99
     */
100
    public function setId($id)
101
    {
102
        $this->id = $id;
103
    }
104
105
    /*
106
     * @return string|null
107
     */
108
    public function getType()
109
    {
110
        return $this->type;
111
    }
112
113
    /*
114
     * @param string
115
     */
116
    public function setType($type)
117
    {
118
        $this->type = $type;
119
    }
120
121
    /*
122
     * @return Address|null
123
     */
124
    public function getAddress()
125
    {
126
        return $this->address;
127
    }
128
129
    /*
130
     * @param string|array|object $address
131
     */
132
    public function setAddress($address)
133
    {
134
        if (is_object($address)) {
135
            $this->address = $address;
136
        } elseif (is_string($address) || is_array($address)) {
137
            $this->address = new Address($address);
138
        }
139
    }
140
141
    /*
142
     * @return array
143
     */
144
    public function getHeaders()
145
    {
146
        return $this->headers;
147
    }
148
149
    /*
150
     * @param array $headers
151
     */
152
    public function setHeaders($headers)
153
    {
154
        $this->headers = $headers;
155
        $signature = new Signature(array('headers' => $headers));
156
        $this->setSignature($signature);
157
    }
158
159
    /*
160
     * @return Signature|null
161
     */
162
    public function getSignature()
163
    {
164
        return $this->signature;
165
    }
166
167
    /*
168
     * @param array|object $signature
169
     */
170
    public function setSignature($signature)
171
    {
172
        if (is_object($signature)) {
173
            $this->signature = $signature;
174
        } elseif (is_array($signature)) {
175
            $this->signature = new Signature($signature);
176
        }
177
    }
178
179
    /*
180
     * @return UserAgent|null
181
     */
182
    public function getUserAgent()
183
    {
184
        return $this->userAgent;
185
    }
186
187
    /*
188
     * @param array|object $userAgent
189
     */
190
    public function setUserAgent($userAgent)
191
    {
192
        if (is_object($userAgent)) {
193
            $this->userAgent = $userAgent;
194
        } elseif (is_array($userAgent)) {
195
            $this->userAgent = new UserAgent($userAgent);
196
        }
197
    }
198
199
    /*
200
     * @return Session|null
201
     */
202
    public function getSession()
203
    {
204
        return $this->session;
205
    }
206
207
    /*
208
     * @param string|array|object $session
209
     */
210
    public function setSession($session)
211
    {
212
        if (is_object($session)) {
213
            $this->session = $session;
214
        } elseif (is_string($session) || is_array($session)) {
215
            $this->session = new Session($session);
216
        }
217
    }
218
219
    /*
220
     * @return array|null
221
     */
222
    public function getReputation()
223
    {
224
        return $this->reputation;
225
    }
226
227
    /*
228
     * @param array $reputation
229
     */
230
    public function setReputation($reputation)
231
    {
232
        $this->reputation = $reputation;
233
    }
234
235
    /*
236
     * @return string|null
237
     */
238
    public function getStatus()
239
    {
240
        $reputation = $this->getReputation();
241
        if (is_array($reputation) && array_key_exists('status', $reputation)) {
242
            return $reputation['status'];
243
        }
244
    }
245
246
    /*
247
     * @return bool
248
     */
249
    public function isNice()
250
    {
251
        return $this->getStatus() === Bouncer::NICE;
252
    }
253
254
    /*
255
     * @return bool
256
     */
257
    public function isSuspicious()
258
    {
259
        return $this->getStatus() === Bouncer::SUSPICIOUS;
260
    }
261
262
    /*
263
     * @return bool
264
     */
265
    public function isBad()
266
    {
267
        return $this->getStatus() === Bouncer::BAD;
268
    }
269
270
    /*
271
     * @return string|null
272
     */
273
    public function getAgentName()
274
    {
275
        $userAgent = $this->getUserAgent();
276
        if ($userAgent) {
277
            return $userAgent->getAgentName();
278
        }
279
    }
280
281
    /*
282
     * @return string|null
283
     */
284
    public function getSystemName()
285
    {
286
        $userAgent = $this->getUserAgent();
287
        if ($userAgent) {
288
            return $userAgent->getSystemName();
289
        }
290
    }
291
292
    /*
293
     * @return array
294
     */
295
    public function toArray()
296
    {
297
        $identity = array();
298
299
        if ($this->id) {
300
            $identity['id'] = $this->id;
301
        }
302
303
        return $identity;
304
    }
305
306
}
307