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