class CzechPostB2bClient::RequestBuilders::BaseBuilder

Constants

TIME_FORMAT

Attributes

request_id[R]
xml_struct[R]

Public Class Methods

new(request_id: 1) click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 12
def initialize(request_id: 1)
  @request_id = request_id
end

Public Instance Methods

steps() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 16
def steps
  %i[validate_data
     build_xml_struct
     render_xml]
end

Private Instance Methods

add_element_to(parent_element, element, attributes: {}, value: nil) click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 68
def add_element_to(parent_element, element, attributes: {}, value: nil)
  if element.is_a?(String)
    parent_element << new_element(element, attributes: attributes, value: value) unless value.nil?
  else
    parent_element << element unless element.nil?
  end
end
b2b_req_header() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 60
def b2b_req_header
  new_element('header').tap do |header|
    add_element_to(header, 'idExtTransaction', value: request_id)
    add_element_to(header, 'timeStamp', value: Time.now.strftime(TIME_FORMAT))
    add_element_to(header, 'idContract', value: configuration.contract_id)
  end
end
build_xml_struct() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 30
def build_xml_struct
  @xml_struct = struct_base
  add_element_to(@xml_struct, new_instruct(attributes: { version: '1.0', encoding: 'UTF-8', standalone: 'yes' }))

  bb = new_element('b2bRequest', attributes: configuration.namespaces).tap do |b2b_req|
    add_element_to(b2b_req, b2b_req_header)
    add_element_to(b2b_req, service_data_struct)
  end

  add_element_to(@xml_struct, bb)

  @xml_struct
end
configuration() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 48
def configuration
  CzechPostB2bClient.configuration
end
namespaces() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 52
def namespaces
  configuration.namespaces.to_a.collect { |ns, url| "#{ns}=\"#{url}\"" }.join(' ')
end
new_element(name, attributes: {}, value: '') click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 76
def new_element(name, attributes: {}, value: '')
  Ox::Element.new(name).tap do |elm|
    attributes.each_pair { |key, val| elm[key] = val }
    elm << value.to_s
  end
end
new_instruct(attributes: {}) click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 83
def new_instruct(attributes: {})
  Ox::Instruct.new(:xml).tap do |elm|
    attributes.each_pair { |key, val| elm[key] = val }
  end
end
render_xml() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 44
def render_xml
  @result = Ox.dump(xml_struct)
end
struct_base() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 56
def struct_base
  Ox::Document.new(encoding: 'utf-8')
end
validate_data() click to toggle source
# File lib/czech_post_b2b_client/request_builders/base_builder.rb, line 26
def validate_data
  # nothing to validate
end