Skip to content

Commit 1a1d877

Browse files
authored
Extract context classes into separate files for better organization (#717)
1 parent d3e52e9 commit 1a1d877

5 files changed

Lines changed: 67 additions & 46 deletions

File tree

lib/jwt/encoded_token.rb

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# frozen_string_literal: true
22

3+
require_relative 'encoded_token/claims_context'
4+
35
module JWT
46
# Represents an encoded JWT token
57
#
@@ -12,22 +14,6 @@ module JWT
1214
# encoded_token.verify_signature!(algorithm: 'HS256', key: 'secret')
1315
# encoded_token.payload # => {'pay' => 'load'}
1416
class EncodedToken
15-
# @private
16-
# Allow access to the unverified payload for claim verification.
17-
class ClaimsContext
18-
extend Forwardable
19-
20-
def_delegators :@token, :header, :unverified_payload
21-
22-
def initialize(token)
23-
@token = token
24-
end
25-
26-
def payload
27-
unverified_payload
28-
end
29-
end
30-
3117
DEFAULT_CLAIMS = [:exp].freeze
3218

3319
private_constant(:DEFAULT_CLAIMS)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# frozen_string_literal: true
2+
3+
require 'forwardable'
4+
5+
module JWT
6+
# @private
7+
class EncodedToken
8+
# Allow access to the unverified payload for claim verification.
9+
class ClaimsContext
10+
extend Forwardable
11+
12+
def_delegators :@token, :header, :unverified_payload
13+
14+
def initialize(token)
15+
@token = token
16+
end
17+
18+
def payload
19+
unverified_payload
20+
end
21+
end
22+
end
23+
end

lib/jwt/jwa.rb

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,40 +9,12 @@
99
require_relative 'jwa/ps'
1010
require_relative 'jwa/rsa'
1111
require_relative 'jwa/unsupported'
12+
require_relative 'jwa/verifier_context'
13+
require_relative 'jwa/signer_context'
1214

1315
module JWT
1416
# The JWA module contains all supported algorithms.
1517
module JWA
16-
# @api private
17-
class VerifierContext
18-
attr_reader :jwa
19-
20-
def initialize(jwa:, keys:)
21-
@jwa = jwa
22-
@keys = Array(keys)
23-
end
24-
25-
def verify(*args, **kwargs)
26-
@keys.any? do |key|
27-
@jwa.verify(*args, **kwargs, verification_key: key)
28-
end
29-
end
30-
end
31-
32-
# @api private
33-
class SignerContext
34-
attr_reader :jwa
35-
36-
def initialize(jwa:, key:)
37-
@jwa = jwa
38-
@key = key
39-
end
40-
41-
def sign(*args, **kwargs)
42-
@jwa.sign(*args, **kwargs, signing_key: @key)
43-
end
44-
end
45-
4618
class << self
4719
# @api private
4820
def resolve(algorithm)

lib/jwt/jwa/signer_context.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
module JWT
4+
module JWA
5+
# @api private
6+
class SignerContext
7+
attr_reader :jwa
8+
9+
def initialize(jwa:, key:)
10+
@jwa = jwa
11+
@key = key
12+
end
13+
14+
def sign(*args, **kwargs)
15+
@jwa.sign(*args, **kwargs, signing_key: @key)
16+
end
17+
end
18+
end
19+
end

lib/jwt/jwa/verifier_context.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# frozen_string_literal: true
2+
3+
module JWT
4+
module JWA
5+
# @api private
6+
class VerifierContext
7+
attr_reader :jwa
8+
9+
def initialize(jwa:, keys:)
10+
@jwa = jwa
11+
@keys = Array(keys)
12+
end
13+
14+
def verify(*args, **kwargs)
15+
@keys.any? do |key|
16+
@jwa.verify(*args, **kwargs, verification_key: key)
17+
end
18+
end
19+
end
20+
end
21+
end

0 commit comments

Comments
 (0)