class JWT::Encode
Encoding logic for JWT
Constants
- ALG_KEY
Public Class Methods
new(options)
click to toggle source
# File lib/jwt/encode.rb, line 12 def initialize(options) @payload = options[:payload] @key = options[:key] @algorithm = resolve_algorithm(options[:algorithm]) @headers = options[:headers].transform_keys(&:to_s) @headers[ALG_KEY] = @algorithm.alg end
Public Instance Methods
segments()
click to toggle source
# File lib/jwt/encode.rb, line 20 def segments validate_claims! combine(encoded_header_and_payload, encoded_signature) end
Private Instance Methods
combine(*parts)
click to toggle source
# File lib/jwt/encode.rb, line 75 def combine(*parts) parts.join('.') end
encode_data(data)
click to toggle source
# File lib/jwt/encode.rb, line 71 def encode_data(data) ::JWT::Base64.url_encode(JWT::JSON.generate(data)) end
encode_header()
click to toggle source
# File lib/jwt/encode.rb, line 49 def encode_header encode_data(@headers) end
encode_payload()
click to toggle source
# File lib/jwt/encode.rb, line 53 def encode_payload encode_data(@payload) end
encode_signature()
click to toggle source
# File lib/jwt/encode.rb, line 67 def encode_signature ::JWT::Base64.url_encode(signature) end
encoded_header()
click to toggle source
# File lib/jwt/encode.rb, line 33 def encoded_header @encoded_header ||= encode_header end
encoded_header_and_payload()
click to toggle source
# File lib/jwt/encode.rb, line 45 def encoded_header_and_payload @encoded_header_and_payload ||= combine(encoded_header, encoded_payload) end
encoded_payload()
click to toggle source
# File lib/jwt/encode.rb, line 37 def encoded_payload @encoded_payload ||= encode_payload end
encoded_signature()
click to toggle source
# File lib/jwt/encode.rb, line 41 def encoded_signature @encoded_signature ||= encode_signature end
resolve_algorithm(algorithm)
click to toggle source
# File lib/jwt/encode.rb, line 27 def resolve_algorithm(algorithm) return algorithm if Algos.implementation?(algorithm) Algos.create(algorithm) end
signature()
click to toggle source
# File lib/jwt/encode.rb, line 57 def signature @algorithm.sign(data: encoded_header_and_payload, signing_key: @key) end
validate_claims!()
click to toggle source
# File lib/jwt/encode.rb, line 61 def validate_claims! return unless @payload.is_a?(Hash) ClaimsValidator.new(@payload).validate! end