Class: Hushed::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/hushed/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

Returns a new instance of Message.



12
13
14
15
16
# File 'lib/hushed/message.rb', line 12

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/hushed/message.rb', line 9

def client
  @client
end

#documentObject (readonly)

Returns the value of attribute document.



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

def document
  @document
end

#message_objectObject

Returns the value of attribute message_object.



10
11
12
# File 'lib/hushed/message.rb', line 10

def message_object
  @message_object
end

#xmlObject (readonly)

Returns the value of attribute xml.



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

def xml
  @xml
end

Instance Method Details

#attributesObject

Raises:



39
40
41
42
43
44
45
46
47
48
# File 'lib/hushed/message.rb', line 39

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,
    MessageId: @document.message_id, xmlns: NAMESPACE
  }
end

#deleteObject



25
26
27
28
29
# File 'lib/hushed/message.rb', line 25

def delete
  return false unless message_object
  message_object.delete
  true
end

#document_nameObject



35
36
37
# File 'lib/hushed/message.rb', line 35

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

#document_typeObject



31
32
33
# File 'lib/hushed/message.rb', line 31

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

#to_xmlObject



18
19
20
21
22
23
# File 'lib/hushed/message.rb', line 18

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