Sha256: ac4502159d45230cd1dc5900f2413ecaa41f1660725782f36b4586e110ceadc2

Contents?: true

Size: 1.17 KB

Versions: 7

Compression:

Stored size: 1.17 KB

Contents

module CorreiosSigep
  module Builders
    module XML
      class Request

        def initialize(document, overrides={})
          @document = Nokogiri::XML(document.to_xml)
          config    = CorreiosSigep.configuration

          administrative_fields!( overrides[:administrative] ||
                                  config.administrative_fields )
        end

        def administrative_fields!(administrative_fields)
          add_node 'codAdministrativo', administrative_fields.administrative_code
        end

        def to_xml
          @document
            .to_xml(save_with: Nokogiri::XML::Node::SaveOptions::NO_DECLARATION)
            .gsub(/<(\/)?root>/, '')
        end

        def self.build_xml(request, overrides={})
          new(request, overrides).to_xml
        end

        private

        def add_node(node_name, node_content)
          @document.root.children.first.add_previous_sibling(
            create_node(node_name, node_content)
          )
        end

        def create_node(node_name, node_content)
          node = Nokogiri::XML::Node.new(node_name, @document)
          node.content = node_content
          node
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
correios_sigep-2.2.0 lib/correios_sigep/builders/xml/request.rb
correios_sigep-2.1.1 lib/correios_sigep/builders/xml/request.rb
correios_sigep-2.1.0 lib/correios_sigep/builders/xml/request.rb
correios_sigep-2.0.0 lib/correios_sigep/builders/xml/request.rb
correios_sigep-1.0.2 lib/correios_sigep/builders/xml/request.rb
correios_sigep-1.0.1 lib/correios_sigep/builders/xml/request.rb
correios_sigep-1.0.0 lib/correios_sigep/builders/xml/request.rb