Class: Gentle::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/gentle/message.rb

Defined Under Namespace

Classes: MissingClientError, MissingDocumentError

Constant Summary collapse

NAMESPACE =
"http://schemas.quietlogistics.com/V2/EventMessage.xsd"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Message



11
12
13
14
15
# File 'lib/gentle/message.rb', line 11

def initialize(options = {})
  @xml = Nokogiri::XML::Document.parse(options[:xml]) if options[:xml]
  @client = options[:client]
  @document = options[:document]
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



9
10
11
# File 'lib/gentle/message.rb', line 9

def client
  @client
end

#documentObject (readonly)

Returns the value of attribute document.



9
10
11
# File 'lib/gentle/message.rb', line 9

def document
  @document
end

#xmlObject (readonly)

Returns the value of attribute xml.



9
10
11
# File 'lib/gentle/message.rb', line 9

def xml
  @xml
end

Instance Method Details

#attributesObject

Raises:



32
33
34
35
36
37
38
39
40
41
# File 'lib/gentle/message.rb', line 32

def attributes
  raise(MissingClientError.new("client cannot be missing")) unless @client
  raise(MissingDocumentError.new("document cannot be missing")) unless @document
  {
    ClientId: @client.client_id, BusinessUnit: @client.business_unit,
    DocumentName: @document.filename, DocumentType: @document.type,
    Warehouse: @document.warehouse, MessageDate: @document.date.utc.iso8601,
    MessageId: @document.message_id, xmlns: NAMESPACE
  }
end

#document_nameObject



28
29
30
# File 'lib/gentle/message.rb', line 28

def document_name
  @document ? @document.filename : @xml.css('EventMessage').first['DocumentName']
end

#document_typeObject



24
25
26
# File 'lib/gentle/message.rb', line 24

def document_type
  @document ? @document.type : @xml.css('EventMessage').first['DocumentType']
end

#to_xmlObject



17
18
19
20
21
22
# File 'lib/gentle/message.rb', line 17

def to_xml
  builder = Nokogiri::XML::Builder.new do |xml|
    xml.EventMessage(attributes)
  end
  builder.to_xml
end