Class: Correios::SRO::RequestBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/correios/sro/request_builder.rb

Constant Summary collapse

QUERY_TYPES =
{ list: "L", range: "F" }.freeze
RESULT_MODES =
{ all:  "T", last:  "U" }.freeze
LANGUAGE =
{ pt:  "101", en:  "102" }.freeze
NAMESPACES =
{
  "xmlns:soapenv" => "http://schemas.xmlsoap.org/soap/envelope/",
  "xmlns:res" => "http://resource.webservice.correios.com.br/"
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(tracker) ⇒ RequestBuilder

Returns a new instance of RequestBuilder.

[View source]

16
17
18
# File 'lib/correios/sro/request_builder.rb', line 16

def initialize(tracker)
  @tracker = tracker
end

Instance Method Details

#build_xmlObject

[View source]

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/correios/sro/request_builder.rb', line 20

def build_xml
  Nokogiri::XML::Builder.new do |builder|
    builder[:soapenv].Envelope(NAMESPACES) {
      builder[:soapenv].Header  { }
      builder[:soapenv].Body  {
        builder[:res].buscaEventosLista() {
          builder.usuario(@tracker.user) {
            builder.parent.namespace = nil
          }
          builder.senha(@tracker.password) {
            builder.parent.namespace = nil
          }
          builder.tipo(QUERY_TYPES[@tracker.query_type]) {
            builder.parent.namespace = nil
          }
          builder.resultado(RESULT_MODES[@tracker.result_mode]) {
            builder.parent.namespace = nil
          }
          builder.lingua(LANGUAGE[@tracker.language]) {
            builder.parent.namespace = nil
          }
          @tracker.object_numbers.each do |object_number|
            builder.objetos(object_number) {
              builder.parent.namespace = nil
            }
          end
        }
      }
    }
  end.to_xml
end