class IngramMicro::InboundTransmissionFactory

Attributes

request_body_string[R]

Public Class Methods

from_xml(request_body_string) click to toggle source
# File lib/ingram_micro/inbound_transmission_factory.rb, line 6
def self.from_xml(request_body_string)
  new(request_body_string).from_xml
end
new(request_body_string) click to toggle source
# File lib/ingram_micro/inbound_transmission_factory.rb, line 10
def initialize(request_body_string)
  begin
    Nokogiri::XML(request_body_string) do |config|
      config.options = Nokogiri::XML::ParseOptions::STRICT | Nokogiri::XML::ParseOptions::NONET
    end
  rescue Nokogiri::SyntaxError => e
    raise Error, "#{self.class.name} received malformed XML: #{request_body_string}: #{e.message}"
  end

  @request_body_string = request_body_string
end

Public Instance Methods

from_xml() click to toggle source
# File lib/ingram_micro/inbound_transmission_factory.rb, line 22
def from_xml
  inbound_transmission_class.new(request_hash)
end

Private Instance Methods

inbound_transmission_class() click to toggle source
# File lib/ingram_micro/inbound_transmission_factory.rb, line 28
def inbound_transmission_class
  case transaction_name
    when 'sales-order-success'
      IngramMicro::SalesOrderSuccess
    when 'sales-order-rejection'
      IngramMicro::SalesOrderRejection
    when 'ship-advice'
      IngramMicro::ShipAdvice
    when 'inventory-synchronization'
      IngramMicro::InventorySync
    else
      raise Error, "#{self.class.name} received unrecognized transaction-name: #{transaction_name}"
  end
end
request_hash() click to toggle source
# File lib/ingram_micro/inbound_transmission_factory.rb, line 47
def request_hash
  @request_hash ||= Nori.new.parse(request_body_string)
end
transaction_name() click to toggle source
# File lib/ingram_micro/inbound_transmission_factory.rb, line 43
def transaction_name
  request_hash['message']['message_header']['transaction_name']
end