Skip to content

Commit d1ec3b1

Browse files
authored
Merge pull request #30 from noha/integrate-headers-accessors
Integrate headers accessors
2 parents 63b01fb + 9b255fa commit d1ec3b1

2 files changed

Lines changed: 88 additions & 2 deletions

File tree

source/JSONWebToken-Core/JOSEHeader.class.st

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ Class {
55
#name : 'JOSEHeader',
66
#superclass : 'Object',
77
#instVars : [
8-
'properties'
8+
'properties',
9+
'strict'
910
],
1011
#category : 'JSONWebToken-Core-Headers',
1112
#package : 'JSONWebToken-Core',
@@ -26,6 +27,31 @@ JOSEHeader >> = aHeader [
2627
^ aHeader hasSameElements: properties
2728
]
2829

30+
{ #category : 'accessing' }
31+
JOSEHeader >> at: aString [
32+
33+
^ strict
34+
ifTrue: [ properties at: aString ]
35+
ifFalse: [ properties at: aString ifAbsent: nil ]
36+
]
37+
38+
{ #category : 'accessing' }
39+
JOSEHeader >> at: aKey put: aValue [
40+
properties at: aKey put: aValue
41+
]
42+
43+
{ #category : 'initialization' }
44+
JOSEHeader >> beLenient [
45+
46+
strict := false
47+
]
48+
49+
{ #category : 'initialization' }
50+
JOSEHeader >> beStrict [
51+
52+
strict := true
53+
]
54+
2955
{ #category : 'testing' }
3056
JOSEHeader >> hasSameElements: aDictionary [
3157
^ (properties difference: aDictionary) isEmpty
@@ -36,6 +62,23 @@ JOSEHeader >> hash [
3662
^ properties hash
3763
]
3864

65+
{ #category : 'initialization' }
66+
JOSEHeader >> initialize [
67+
super initialize.
68+
strict := true
69+
]
70+
71+
{ #category : 'accessing' }
72+
JOSEHeader >> kid [
73+
"Public Key ID"
74+
^ properties at: 'kid'
75+
]
76+
77+
{ #category : 'accessing' }
78+
JOSEHeader >> kid: anObject [
79+
properties at: 'kid' put: anObject
80+
]
81+
3982
{ #category : 'accessing' }
4083
JOSEHeader >> typ [
4184
^ self type

source/JSONWebToken-Core/JWTClaimsSet.class.st

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
"
22
A set of specific claims
3+
4+
The registered claim names are: iss, sub, aud, exp, nbf, iat, jti
5+
None of the claims defined are intended to be mandatory to use or implement in all cases, but rather they provide a starting point for a set of useful, interoperable claims.
36
"
47
Class {
58
#name : 'JWTClaimsSet',
@@ -29,7 +32,7 @@ JWTClaimsSet >> at: aString [
2932

3033
^ strict
3134
ifTrue: [ claims at: aString ]
32-
ifFalse: [ claims at: aString ifAbsent: [ ] ]
35+
ifFalse: [ claims at: aString ifAbsent: nil ]
3336
]
3437

3538
{ #category : 'accessing - basic' }
@@ -191,11 +194,41 @@ JWTClaimsSet >> issuer: anObject [
191194
self iss: anObject
192195
]
193196

197+
{ #category : 'accessing' }
198+
JWTClaimsSet >> jti [
199+
^ self at: 'jti'
200+
]
201+
202+
{ #category : 'accessing' }
203+
JWTClaimsSet >> jti: aString [
204+
self at: 'jti' put: aString
205+
]
206+
207+
{ #category : 'accessing' }
208+
JWTClaimsSet >> jwtId [
209+
^ self jti
210+
]
211+
212+
{ #category : 'accessing' }
213+
JWTClaimsSet >> jwtId: aString [
214+
self jti: aString
215+
]
216+
194217
{ #category : 'accessing' }
195218
JWTClaimsSet >> mimeType [
196219
^ 'JWT'
197220
]
198221

222+
{ #category : 'accessing' }
223+
JWTClaimsSet >> nbf [
224+
^ self at: 'nbf'
225+
]
226+
227+
{ #category : 'accessing' }
228+
JWTClaimsSet >> nbf: aString [
229+
self at: 'nbf' put: aString
230+
]
231+
199232
{ #category : 'accessing' }
200233
JWTClaimsSet >> nonce [
201234
^ self at: 'nonce'
@@ -206,6 +239,16 @@ JWTClaimsSet >> nonce: anObject [
206239
self at: 'nonce' put: anObject
207240
]
208241

242+
{ #category : 'accessing' }
243+
JWTClaimsSet >> notBefore [
244+
^ self nbf
245+
]
246+
247+
{ #category : 'accessing' }
248+
JWTClaimsSet >> notBefore: aString [
249+
self nbf: aString
250+
]
251+
209252
{ #category : 'accessing' }
210253
JWTClaimsSet >> setClaims: aCollection [
211254
claims := aCollection

0 commit comments

Comments
 (0)