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 12
def initialize(options)
  @payload   = options[:payload]
  @key       = options[:key]
  @algorithm = 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 19
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 64
def combine(*parts)
  parts.join('.')
end
encode(data) click to toggle source
# File lib/jwt/encode.rb, line 60
def encode(data)
  JWT::Base64.url_encode(JWT::JSON.generate(data))
end
encode_header() click to toggle source
# File lib/jwt/encode.rb, line 41
def encode_header
  @headers[ALG_KEY] = @algorithm
  encode(@headers)
end
encode_payload() click to toggle source
# File lib/jwt/encode.rb, line 46
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 54
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 25
def encoded_header
  @encoded_header ||= encode_header
end
encoded_header_and_payload() click to toggle source
# File lib/jwt/encode.rb, line 37
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 29
def encoded_payload
  @encoded_payload ||= encode_payload
end
encoded_signature() click to toggle source
# File lib/jwt/encode.rb, line 33
def encoded_signature
  @encoded_signature ||= encode_signature
end