class JWTear::Token

Public Class Methods

new() click to toggle source
# File lib/jwtear/token.rb, line 8
def initialize
  @jws = JWS.new
  @jwe = JWE.new
end

Public Instance Methods

generate(type, header:, payload:, key:) click to toggle source

generate

An interface for JWS and JWE token generation operation.

@param type [Symbol] @param header [JSON] @param payload [JSON] @param key [String]

@example

token = JWTear::Token.new
token.generate(:jws, header: '{"alg":"HS256","typ":"JWT"}', payload: '{"user":"admin"}', key: "P@ssw0rd123")

@return [JWS | JWE]

# File lib/jwtear/token.rb, line 44
def generate(type, header:, payload:, key:)
  case type
  when :jws
    @jws.generate_jws(header:header , payload:payload , key:key)
  when :jwe
    @jwe.generate_jwe(header:header , payload:payload , key:key)
  else
    print_error "Unknown type: #{type}"
    raise
  end
rescue JSON::ParserError => e
  print_error "Unexpected Token."
  puts e.message
rescue Exception => e
  method = method(__method__)
  print_error "Unknown Exception: #{method.owner}##{method.name}"
  print_warning 'Please report the issue to: https://github.com/KINGSABRI/jwtear/issues'.underline
  puts e.full_message
  exit!
end
parse(token) click to toggle source

parse

An interface for JWS and JWE parse operation.

@param token [String]

@return [JWS|JWE]

# File lib/jwtear/token.rb, line 18
def parse(token)
  token_segments = token.split('.').size
  if token_segments <= 3 # JWS
    @jws.parse(token)
  else  # JWE
    @jwe.parse(token)
  end
rescue Exception => e
  print_error "#{method(__method__).owner}##{__method__} : Unknown Exception"
  print_warning 'Please report the issue to: https://github.com/KINGSABRI/jwtear/issues'.underline
  puts e.full_message
  exit!
end