Sha256: 553c1a3070b05e9c6a2346d5d8920032590532c650b16d356cfd5ab931cf40b0
Contents?: true
Size: 1.47 KB
Versions: 2
Compression:
Stored size: 1.47 KB
Contents
require 'form_api/api/pdf_api' # The original 'lib' files are overriden every time we # regenerate the client, so custom methods go in here. # Also I want to call it "Client". module FormAPI class Client < PDFApi class InvalidDataError < ApiError; end class PollTimeoutError < ApiError; end class InvalidResponseError < ApiError; end def generate_pdf(opts = {}) unless opts[:data].kind_of?(::Hash) raise InvalidDataError, ":data is required, and must be a Hash." end # Wait for job to finish by default. if !opts.has_key?(:wait) opts[:wait] = true end # FormAPI requires a nested :data object. opts[:data] = { data: opts.delete(:data) } if opts[:metadata] opts[:data][:metadata] = opts.delete(:metadata) end template_id = opts.delete :template_id response = super(template_id, opts) return response unless opts[:wait] submission = response.submission timeout = opts[:timeout] || 60 start_time = Time.now # Wait for submission to be ready while submission.state != 'processed' sleep 1 submission = get_submission(submission.id) if Time.now - start_time > timeout raise PollTimeoutError, "PDF was not ready after #{timeout} seconds!" end end return InlineResponse201.new( status: submission.state == 'processed' ? 'success' : 'error', submission: submission ) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
form_api-0.1.3 | extensions/lib/form_api/api/client.rb |
form_api-0.1.2 | extensions/lib/form_api/api/client.rb |