class Trusona::Resources::Trusonafication

Represents a Trusonafication resource

Attributes

accepted_level[RW]
action[RW]
callback_url[RW]
custom_fields[RW]
device_identifier[RW]
email[RW]
expires_at[RW]
id[RW]
level[RW]
prompt[RW]
resource[RW]
trucode_id[RW]
trusona_id[RW]
user_identifier[RW]
user_presence[RW]

Public Class Methods

new(params = {}) click to toggle source

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength

# File lib/trusona/resources/trusonafication.rb, line 19
def initialize(params = {})
  @params = normalize_keys(params)
  return if @params.nil?

  self.accepted_level    = determine_accepted_level(@params)
  self.action            = @params[:action]
  self.device_identifier = @params[:device_identifier]
  self.user_identifier   = @params[:user_identifier]
  self.trucode_id        = @params[:trucode_id]
  self.email             = @params[:email]
  self.expires_at        = normalize_time(@params[:expires_at])
  self.id                = @params[:id]
  self.level             = @params[:level]
  self.resource          = @params[:resource]
  self.trusona_id        = @params[:trusona_id]
  self.prompt            = defaulting_to(true, @params[:prompt])
  self.user_presence     = defaulting_to(true, @params[:user_presence])
  self.custom_fields     = @params[:custom_fields]
  self.callback_url      = @params[:callback_url]

  @status = @params[:status]
end

Public Instance Methods

accepted?() click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/trusona/resources/trusonafication.rb, line 70
def accepted?
  return true if status == :accepted
  return true if status == :accepted_at_higher_level

  false
end
rejected?() click to toggle source
# File lib/trusona/resources/trusonafication.rb, line 77
def rejected?
  !accepted?
end
status() click to toggle source

rubocop:disable Metrics/MethodLength rubocop:disable Metrics/CyclomaticComplexity

# File lib/trusona/resources/trusonafication.rb, line 87
def status
  case @status
  when 'INVALID_TRUSONA_ID'
    :invalid_trusona_id
  when 'IN_PROGRESS'
    :in_progress
  when 'REJECTED'
    :rejected
  when 'ACCEPTED'
    :accepted
  when 'INVALID_EMAIL'
    :invalid_email
  when 'ACCEPTED_AT_LOWER_LEVEL'
    :accepted_at_lower_level
  when 'ACCEPTED_AT_HIGHER_LEVEL'
    :accepted_at_higher_level
  when 'EXPIRED'
    :expired
  else
    :invalid
  end
end
to_h() click to toggle source

rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize

# File lib/trusona/resources/trusonafication.rb, line 44
def to_h
  @params
end
to_json(*_args) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/trusona/resources/trusonafication.rb, line 49
def to_json(*_args)
  JSON(
    device_identifier: device_identifier,
    user_identifier: user_identifier,
    trucode_id: trucode_id,
    trusona_id: trusona_id,
    email: email,
    resource: resource,
    action: action,
    desired_level: level,
    id: id,
    status: @status,
    prompt: prompt,
    user_presence: user_presence,
    custom_fields: custom_fields,
    expires_at: expires_at&.iso8601,
    callback_url: callback_url
  )
end
valid?() click to toggle source
# File lib/trusona/resources/trusonafication.rb, line 81
def valid?
  attributes_present && attributes_filled
end

Private Instance Methods

attributes_filled() click to toggle source
# File lib/trusona/resources/trusonafication.rb, line 134
def attributes_filled
  return false if identifier.empty?
  return false if resource.empty?
  return false if action.empty?

  true
end
attributes_present() click to toggle source
# File lib/trusona/resources/trusonafication.rb, line 125
def attributes_present
  return false if identifier.nil?
  return false if resource.nil?
  return false if action.nil?
  return false if level.nil?

  true
end
defaulting_to(value, param) click to toggle source

rubocop:enable Metrics/CyclomaticComplexity rubocop:enable Metrics/MethodLength

# File lib/trusona/resources/trusonafication.rb, line 114
def defaulting_to(value, param)
  return value if param.nil?
  return value if param.respond_to?(:empty?) && param.empty?

  param
end
determine_accepted_level(params) click to toggle source
# File lib/trusona/resources/trusonafication.rb, line 121
def determine_accepted_level(params)
  params[:result][:accepted_level] unless params[:result].nil?
end
identifier() click to toggle source
# File lib/trusona/resources/trusonafication.rb, line 142
def identifier
  device_identifier || user_identifier || trucode_id || trusona_id || email
end