class JWT::Encode

Encoding logic for JWT

Constants

ALG_KEY
ALG_NONE

Public Class Methods

new(options) click to toggle source
# File lib/jwt/encode.rb, line 13
def initialize(options)
  @payload = options[:payload]
  @key = options[:key]
  _, @algorithm = Algos.find(options[:algorithm])
  @headers = options[:headers].each_with_object({}) { |(key, value), headers| headers[key.to_s] = value }
end

Public Instance Methods

segments() click to toggle source
# File lib/jwt/encode.rb, line 20
def segments
  @segments ||= 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) click to toggle source
# File lib/jwt/encode.rb, line 61
def encode(data)
  JWT::Base64.url_encode(JWT::JSON.generate(data))
end
encode_header() click to toggle source
# File lib/jwt/encode.rb, line 42
def encode_header
  @headers[ALG_KEY] = @algorithm
  encode(@headers)
end
encode_payload() click to toggle source
# File lib/jwt/encode.rb, line 47
def encode_payload
  if @payload && @payload.is_a?(Hash)
    ClaimsValidator.new(@payload).validate!
  end

  encode(@payload)
end
encode_signature() click to toggle source
# File lib/jwt/encode.rb, line 55
def encode_signature
  return '' if @algorithm == ALG_NONE

  JWT::Base64.url_encode(JWT::Signature.sign(@algorithm, encoded_header_and_payload, @key))
end
encoded_header() click to toggle source
# File lib/jwt/encode.rb, line 26
def encoded_header
  @encoded_header ||= encode_header
end
encoded_header_and_payload() click to toggle source
# File lib/jwt/encode.rb, line 38
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 30
def encoded_payload
  @encoded_payload ||= encode_payload
end
encoded_signature() click to toggle source
# File lib/jwt/encode.rb, line 34
def encoded_signature
  @encoded_signature ||= encode_signature
end