TokenBuilder::create()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Zenstruck\JWT;
4
5
/**
6
 * @author Kevin Bond <[email protected]>
7
 */
8
final class TokenBuilder
9
{
10
    private $claims = [];
11
    private $headers = [Token::HEADER_TYP => 'JWT'];
12
13
    /**
14
     * @param string $key
15
     * @param mixed  $value
16
     *
17
     * @return self
18
     */
19 2
    public function set($key, $value)
20
    {
21 2
        $this->claims[$key] = $value;
22
23 2
        return $this;
24
    }
25
26
    /**
27
     * @param string $value
28
     *
29
     * @return self
30
     */
31 1
    public function issuer($value)
32
    {
33 1
        return $this->set(Token::CLAIM_ISS, $value);
34
    }
35
36
    /**
37
     * @param string $value
38
     *
39
     * @return self
40
     */
41 1
    public function subject($value)
42
    {
43 1
        return $this->set(Token::CLAIM_SUB, $value);
44
    }
45
46
    /**
47
     * @param string $value
48
     *
49
     * @return self
50
     */
51 1
    public function audience($value)
52
    {
53 1
        return $this->set(Token::CLAIM_AUD, $value);
54
    }
55
56
    /**
57
     * @param \DateTime $time
58
     *
59
     * @return self
60
     */
61 1
    public function expiresAt(\DateTime $time)
62
    {
63 1
        return $this->set(Token::CLAIM_EXP, $time->getTimestamp());
64
    }
65
66
    /**
67
     * @param \DateTime $time
68
     *
69
     * @return self
70
     */
71 1
    public function notBefore(\DateTime $time)
72
    {
73 1
        return $this->set(Token::CLAIM_NBF, $time->getTimestamp());
74
    }
75
76
    /**
77
     * @param \DateTime|null $time
78
     *
79
     * @return self
80
     */
81 2
    public function issuedAt(\DateTime $time = null)
82
    {
83 2
        if (null === $time) {
84 1
            $time = new \DateTime('now');
85 1
        }
86
87 2
        return $this->set(Token::CLAIM_IAT, $time->getTimestamp());
88
    }
89
90
    /**
91
     * @param string $value
92
     *
93
     * @return self
94
     */
95 1
    public function id($value)
96
    {
97 1
        return $this->set(Token::CLAIM_JTI, $value);
98
    }
99
100
    /**
101
     * @return Token
102
     */
103 2
    public function create()
104
    {
105 2
        return new Token($this->claims, $this->headers);
106
    }
107
}
108