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