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