class JWT::Encode
Encoding logic for JWT
Public Class Methods
new(options)
click to toggle source
# File lib/jwt/encode.rb, line 9 def initialize(options) @payload = options[:payload] @key = options[:key] @algorithm = JWA.resolve(options[:algorithm]) @headers = options[:headers].transform_keys(&:to_s) end
Public Instance Methods
segments()
click to toggle source
# File lib/jwt/encode.rb, line 16 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 65 def combine(*parts) parts.join('.') end
encode_data(data)
click to toggle source
# File lib/jwt/encode.rb, line 61 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 39 def encode_header encode_data(@headers.merge(@algorithm.header(signing_key: @key))) end
encode_payload()
click to toggle source
# File lib/jwt/encode.rb, line 43 def encode_payload encode_data(@payload) end
encode_signature()
click to toggle source
# File lib/jwt/encode.rb, line 57 def encode_signature ::JWT::Base64.url_encode(signature) end
encoded_header()
click to toggle source
# File lib/jwt/encode.rb, line 23 def encoded_header @encoded_header ||= encode_header end
encoded_header_and_payload()
click to toggle source
# File lib/jwt/encode.rb, line 35 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 27 def encoded_payload @encoded_payload ||= encode_payload end
encoded_signature()
click to toggle source
# File lib/jwt/encode.rb, line 31 def encoded_signature @encoded_signature ||= encode_signature end
signature()
click to toggle source
# File lib/jwt/encode.rb, line 47 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 51 def validate_claims! return unless @payload.is_a?(Hash) Claims.verify_payload!(@payload, :numeric) end