class Intersail::Rpdf::ZapPdfClient

Public Class Methods

new(address) click to toggle source
# File lib/rpdf/services/zap_pdf_client.rb, line 10
def initialize(address)
  @url = address
  @ws = Savon.client(wsdl: "#{address}?wsdl")
end

Public Instance Methods

delay() click to toggle source
# File lib/rpdf/services/zap_pdf_client.rb, line 68
def delay
  rand(self.class.min_try_delay...self.class.max_try_delay) / 1000.0
end
get_template_tags(templateFile, options = {}) click to toggle source
# File lib/rpdf/services/zap_pdf_client.rb, line 43
def get_template_tags(templateFile, options = {})
  max_tries = options.delete(:max_tries) || self.class.max_tries

  templateData = Base64.encode64(File.read(templateFile))

  try = 1
  loop do

    response = @ws.call(:get_template_tags, message: { data: templateData })

    tags = response.nil? ? nil : response.body[:get_template_tags_response][:get_template_tags_result]

    return Intersail::Rpdf::Node.new(tags) unless tags.nil?

    if try < max_tries
      try += 1
      sleep delay
    else
      break
    end
  end

  nil
end
make_pdf_with_local_file(templateFile, data, options = {}) click to toggle source
# File lib/rpdf/services/zap_pdf_client.rb, line 19
def make_pdf_with_local_file(templateFile, data, options = {})
  max_tries = options.delete(:max_tries) || self.class.max_tries

  templateData = Base64.encode64(File.read(templateFile))

  try = 1
  loop do
    response = @ws.call(:make_pdf_with_xml, message: { data: templateData, xmlTags: data.to_xml(options) })

    pdfData = response.nil? ? nil : response.body[:make_pdf_with_xml_response][:make_pdf_with_xml_result]

    return  Base64.decode64(pdfData) unless pdfData.nil?

    if try < max_tries
      try += 1
      sleep delay
    else
      break
    end
  end

  nil
end
url() click to toggle source
# File lib/rpdf/services/zap_pdf_client.rb, line 15
def url
  @url
end