Sha256: 06a6f7243bea0c908b900416d520b11781fb87d40817b349fedacbc13ef5f970
Contents?: true
Size: 1.2 KB
Versions: 7
Compression:
Stored size: 1.2 KB
Contents
module Ecoportal module API class V1 class People def job operation = Common::BatchOperation.new("/people", person_class, logger: client.logger) yield operation # The batch operation is responsible for logging the output job_id = create_job(operation) status = wait_for_job_completion(job_id) if status&.complete? operation.process_response job_result(job_id, operation) else raise "Job `#{job_id}` not complete. Probably timeout after #{JOB_TIMEOUT + 60} seconds. Current status: #{status}" end end private def wait_for_job_completion(job_id) # timeout library is evil. So we make poor-man timeout. # https://jvns.ca/blog/2015/11/27/why-rubys-timeout-is-dangerous-and-thread-dot-raise-is-terrifying/ before = Time.now while true status = job_status(job_id) break status if status.complete? break status if Time.now >= before + (JOB_TIMEOUT + 60) sleep(DELAY_STATUS_CHECK) status end end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems