...
1
2
3 package openid
4
5 import (
6 "time"
7
8 "github.com/pkg/errors"
9 )
10
11
12
13
14
15
16
17
18
19 type Builder struct {
20 claims []*ClaimPair
21 }
22
23 func NewBuilder() *Builder {
24 return &Builder{}
25 }
26
27 func (b *Builder) Claim(name string, value interface{}) *Builder {
28 b.claims = append(b.claims, &ClaimPair{Key: name, Value: value})
29 return b
30 }
31
32 func (b *Builder) Address(v *AddressClaim) *Builder {
33 return b.Claim(AddressKey, v)
34 }
35
36 func (b *Builder) Audience(v []string) *Builder {
37 return b.Claim(AudienceKey, v)
38 }
39
40 func (b *Builder) Birthdate(v *BirthdateClaim) *Builder {
41 return b.Claim(BirthdateKey, v)
42 }
43
44 func (b *Builder) Email(v string) *Builder {
45 return b.Claim(EmailKey, v)
46 }
47
48 func (b *Builder) EmailVerified(v bool) *Builder {
49 return b.Claim(EmailVerifiedKey, v)
50 }
51
52 func (b *Builder) Expiration(v time.Time) *Builder {
53 return b.Claim(ExpirationKey, v)
54 }
55
56 func (b *Builder) FamilyName(v string) *Builder {
57 return b.Claim(FamilyNameKey, v)
58 }
59
60 func (b *Builder) Gender(v string) *Builder {
61 return b.Claim(GenderKey, v)
62 }
63
64 func (b *Builder) GivenName(v string) *Builder {
65 return b.Claim(GivenNameKey, v)
66 }
67
68 func (b *Builder) IssuedAt(v time.Time) *Builder {
69 return b.Claim(IssuedAtKey, v)
70 }
71
72 func (b *Builder) Issuer(v string) *Builder {
73 return b.Claim(IssuerKey, v)
74 }
75
76 func (b *Builder) JwtID(v string) *Builder {
77 return b.Claim(JwtIDKey, v)
78 }
79
80 func (b *Builder) Locale(v string) *Builder {
81 return b.Claim(LocaleKey, v)
82 }
83
84 func (b *Builder) MiddleName(v string) *Builder {
85 return b.Claim(MiddleNameKey, v)
86 }
87
88 func (b *Builder) Name(v string) *Builder {
89 return b.Claim(NameKey, v)
90 }
91
92 func (b *Builder) Nickname(v string) *Builder {
93 return b.Claim(NicknameKey, v)
94 }
95
96 func (b *Builder) NotBefore(v time.Time) *Builder {
97 return b.Claim(NotBeforeKey, v)
98 }
99
100 func (b *Builder) PhoneNumber(v string) *Builder {
101 return b.Claim(PhoneNumberKey, v)
102 }
103
104 func (b *Builder) PhoneNumberVerified(v bool) *Builder {
105 return b.Claim(PhoneNumberVerifiedKey, v)
106 }
107
108 func (b *Builder) Picture(v string) *Builder {
109 return b.Claim(PictureKey, v)
110 }
111
112 func (b *Builder) PreferredUsername(v string) *Builder {
113 return b.Claim(PreferredUsernameKey, v)
114 }
115
116 func (b *Builder) Profile(v string) *Builder {
117 return b.Claim(ProfileKey, v)
118 }
119
120 func (b *Builder) Subject(v string) *Builder {
121 return b.Claim(SubjectKey, v)
122 }
123
124 func (b *Builder) UpdatedAt(v time.Time) *Builder {
125 return b.Claim(UpdatedAtKey, v)
126 }
127
128 func (b *Builder) Website(v string) *Builder {
129 return b.Claim(WebsiteKey, v)
130 }
131
132 func (b *Builder) Zoneinfo(v string) *Builder {
133 return b.Claim(ZoneinfoKey, v)
134 }
135
136
137
138
139 func (b *Builder) Build() (Token, error) {
140 tok := New()
141 for _, claim := range b.claims {
142 if err := tok.Set(claim.Key.(string), claim.Value); err != nil {
143 return nil, errors.Wrapf(err, `failed to set claim %q`, claim.Key.(string))
144 }
145 }
146 return tok, nil
147 }
148
View as plain text