Method: FormAPI::Client#combine_pdfs

Defined in:
lib/form_api/api/client.rb

#combine_pdfs(options) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/form_api/api/client.rb', line 108

def combine_pdfs(options)
  unless options[:source_pdfs].is_a?(::Array)
    raise InvalidDataError, "source_pdfs is required, and must be an Array."
  end

  # Wait for job to finish by default.
  wait = options.key?(:wait) ? options[:wait] : true
  options.delete :wait

  # PdfAPI requires a :combined_submission_data option.
  response = super(options)

  return response unless wait

  combined_submission = response.combined_submission
  timeout = options[:timeout] || 600
  start_time = Time.now

  # Wait for submission to be ready
  while combined_submission.state == 'pending'
    sleep 1
    combined_submission = get_combined_submission(combined_submission.id)

    if Time.now - start_time > timeout
      raise PollTimeoutError, "Merged PDF was not ready after #{timeout} seconds!"
    end
  end

  CreateCombinedSubmissionResponse.new(
    status: combined_submission.state == 'processed' ? 'success' : 'error',
    combined_submission: combined_submission
  )
end