Module: Traitify

Extended by:
Configuration
Defined in:
lib/traitify/middleware/raise_error.rb,
lib/traitify.rb,
lib/traitify/data.rb,
lib/traitify/error.rb,
lib/traitify/client.rb,
lib/traitify/version.rb,
lib/traitify/response.rb,
lib/traitify/client/model.rb,
lib/traitify/client/setup.rb,
lib/traitify/configuration.rb,
lib/traitify/client/request.rb,
lib/traitify/client/overrides.rb,
lib/traitify/client/connection.rb,
lib/traitify/middleware/formatter.rb

Overview

Defined Under Namespace

Modules: Configuration, Middleware Classes: BadRequest, Client, Data, Error, NotFound, Response, ServerError, Unauthorized, UnprocessableEntity

Constant Summary collapse

VERSION =
"2.1.1".freeze

Constants included from Configuration

Configuration::VALID_OPTIONS_KEYS

Class Attribute Summary collapse

Class Method Summary collapse

Methods included from Configuration

configure, options

Class Attribute Details

.loggerObject



28
29
30
31
32
# File 'lib/traitify.rb', line 28

def logger
  @logger ||= Logger.new($stdout).tap do |log|
    log.progname = name
  end
end

Class Method Details

.log(level, message) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/traitify.rb', line 34

def log(level, message)
  message = "[traitify-ruby] #{message}"
  case level
  when :debug
    logger.debug message
  when :warn
    logger.warn message
  when :error
    logger.error message
  else
    logger.info message
  end
end

.new(options = {}) ⇒ Object



24
25
26
# File 'lib/traitify.rb', line 24

def new(options = {})
  Traitify::Client.new(options)
end

.valid_jwt_token?(token) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/traitify.rb', line 48

def valid_jwt_token?(token)
  algorithm = "RS256"
  return false unless jwt_public_keys && jwt_public_keys.any?

  public_keys = jwt_public_keys.map { |key| OpenSSL::PKey::RSA.new(key) }

  public_keys.each do |public_key|
    decoded_token = JWT.decode(token, public_key, true, {
      algorithm: algorithm,
      iss: "Traitify by Paradox",
      verify_iss: true,
      verify_iat: true,
      verify_nbf: true,
      verify_jti: true
    })

    payload = decoded_token[0]
    validate_claims(payload)
    return true
  rescue JWT::ExpiredSignature, JWT::DecodeError, JWT::VerificationError => e
    log(:warn, "[JWT] #{e.class.name}: #{e.message}")
    next
  rescue => e
    log(:error, "[JWT] Unexpected error: #{e.class} - #{e.message}")
    next
  end

  false
end