class Trusona::Workers::TrusonaficationCreator

Creates Trusonafications

Constants

DEFAULT_TIMEOUT

Public Class Methods

new(service: nil) click to toggle source
# File lib/trusona/workers/trusonafication_creator.rb, line 10
def initialize(service: nil)
  @service = service || Trusona::Services::TrusonaficationService.new
end

Public Instance Methods

create(params: {}, timeout: nil, &block) click to toggle source
# File lib/trusona/workers/trusonafication_creator.rb, line 14
def create(params: {}, timeout: nil, &block)
  raise ArgumentError, 'Missing or empty params hash' if
    params.nil? || params.empty?

  resource = Trusona::Resources::Trusonafication.new(params)
  trusonafication = @service.create(resource)
  return trusonafication unless block_given?

  handle_block(trusonafication, @service, timeout, block)
end

Private Instance Methods

handle_block(trusonafication, service, timeout, block) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/trusona/workers/trusonafication_creator.rb, line 29
def handle_block(trusonafication, service, timeout, block)
  timeout ||= DEFAULT_TIMEOUT

  future = Time.now.to_i + timeout
  while Time.now.to_i < future
    t = service.get(trusonafication)
    if t.status == trusonafication.status
      sleep(1)
    else
      block.yield(t)
      break
    end
  end
end