class InovadoraXml::ServidorWsdl

Attributes

args_request[RW]
cert[RW]
errors[RW]
key[RW]
metodo_soap[RW]
retorno[RW]
wsdl[RW]
xml_enviar[RW]

Public Class Methods

new(xml_enviar, metodo_soap, wsdl, cert = nil, key = nil, args_request = {}) click to toggle source
# File lib/inovadora_xml/servidor_wsdl.rb, line 6
def initialize(xml_enviar, metodo_soap, wsdl, cert = nil, key = nil, args_request = {})
  self.xml_enviar   = xml_enviar
  self.metodo_soap  = metodo_soap
  self.wsdl         = wsdl

  self.cert         = cert
  self.key          = key

  self.args_request = args_request

  self.errors       = ActiveModel::Errors.new(self)
end

Public Instance Methods

enviar() click to toggle source
# File lib/inovadora_xml/servidor_wsdl.rb, line 19
def enviar
  begin
    cliente = estabelecer_cliente()

    response = cliente.request(self.metodo_soap, args_request) do
      soap.xml = self.xml_enviar
    end
    self.retorno = response
  rescue Savon::SOAP::Fault => fault
    self.errors.add(:base, fault.to_s)
  rescue Savon::HTTP::Error => fault2
    self.errors.add(:base, fault2.to_s)
  rescue Exception => e
    self.errors.add(:base, e.message)
  ensure
    return self.errors.blank?
  end
end
estabelecer_cliente() click to toggle source
# File lib/inovadora_xml/servidor_wsdl.rb, line 38
def estabelecer_cliente
  Savon::Client.new do |wsdl, http|
    wsdl.document               = self.wsdl
    http.auth.ssl.cert_file     = self.cert unless self.cert.blank?
    http.auth.ssl.cert_key_file = self.key unless self.key.blank?
    http.auth.ssl.verify_mode   = :none
  end
end