Class: JWTear::Token

Inherits:
Object
  • Object
show all
Includes:
Helpers::Extensions::Print
Defined in:
lib/jwtear/token.rb

Instance Method Summary collapse

Methods included from Helpers::Extensions::Print

#print_bad, #print_error, #print_good, #print_h1, #print_h2, #print_h3, #print_status, #print_warning

Constructor Details

#initializeToken

Returns a new instance of Token.



8
9
10
11
# File 'lib/jwtear/token.rb', line 8

def initialize
  @jws = JWS.new
  @jwe = JWE.new
end

Instance Method Details

#generate(type, header:, payload:, key:) ⇒ JWS | JWE

generate

An interface for JWS and JWE token generation operation.

Examples:

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

Parameters:

  • type (Symbol)
  • header (JSON)
  • payload (JSON)
  • key (String)

Returns:



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/jwtear/token.rb', line 45

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) ⇒ JWS|JWE

parse

An interface for JWS and JWE parse operation.

Parameters:

  • token (String)

Returns:



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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 "Unknown Exception: #{method(__method__).owner}"
  print_warning 'Please report the issue to: https://github.com/KINGSABRI/jwtear/issues'.underline
  puts e
  puts e.backtrace
  exit!
end