class InovadoraXml::Xml
Attributes
cert[RW]
errors[RW]
key[RW]
metodo_soap[RW]
retorno[RW]
schema[RW]
wsdl[RW]
xml_gerado[RW]
xml_nfse[RW]
Public Class Methods
new(*args)
click to toggle source
# File lib/inovadora_xml.rb, line 22 def initialize(*args) self.errors = ActiveModel::Errors.new(self) self.xml_gerado = self.gerar_xml() self.validar_args() # self.valid? end
Public Instance Methods
assinar(tag_assinar)
click to toggle source
# File lib/inovadora_xml.rb, line 84 def assinar(tag_assinar) assinador = InovadoraXml::Assinador.new(self.xml_gerado, tag_assinar, self.cert, self.key) assinador.assinar_xml assinador.errors.full_messages.each do |error| self.errors.add(:base, error) end self.xml_gerado = assinador.xml_assinado if assinador.errors.blank? ensure return self.errors.blank? end
comunicar(request_args = {})
click to toggle source
# File lib/inovadora_xml.rb, line 30 def comunicar(request_args = {}) if self.valid? servidor = InovadoraXml::ServidorWsdl.new( self.envelopar(), self.metodo_soap, self.wsdl, self.cert, self.key, request_args ) unless servidor.enviar raise InovadoraXml::CustomExceptions::ServerError.new(servidor), "Server Error" end #usage: self.retorno.to_xml ou self.retorno.body self.retorno = servidor.retorno end rescue InovadoraXml::CustomExceptions::ServerError => e e.object.errors.full_messages.each {|e| "Erro na comunicação: #{self.errors.add(:base, e)}"} rescue Exception => e self.errors.add(:base, e.message) ensure return self.errors.blank? end
valid?()
click to toggle source
# File lib/inovadora_xml.rb, line 64 def valid? erros = [] schema = open(self.schema) xsd = Nokogiri::XML::Schema(schema) xsd.validate(self.xml_gerado).each do |error| unless error.message.to_s.include?("{http://www.w3.org/2000/09/xmldsig#}Signature") || error.message.to_s.include?("{http://www.w3.org/2000/09/xmldsig#}SignedInfo") erros << "(Linha: " + error.line.to_s + ") => " + error.message.to_s end end erros.each {|erro| self.errors.add(:base, erro)} rescue Errno::ENOENT => e self.errors.add(:base, "Arquivo schema não existe") rescue Exception => e self.errors.add(:base, e) ensure self.errors.blank? end
validar_args()
click to toggle source
# File lib/inovadora_xml.rb, line 56 def validar_args self.errors.add(:base, "Metodo SOAP não especificado") if self.metodo_soap.blank? self.errors.add(:base, "Schema não especificado") if self.schema.blank? self.errors.add(:base, "WSDL não especificado") if self.wsdl.blank? return self.errors.blank? end