Class: Euston::EventHeaders

Inherits:
Object
  • Object
show all
Defined in:
lib/euston/event_headers.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, type, version, timestamp = Time.now, source_message = nil, source_message_type = nil) ⇒ EventHeaders

Returns a new instance of EventHeaders.



5
6
7
8
9
10
11
12
# File 'lib/euston/event_headers.rb', line 5

def initialize id, type, version, timestamp = Time.now, source_message = nil, source_message_type = nil
  @id = id
  @type = type
  @version = version
  @timestamp = Time.at(timestamp).utc
  @source_message = source_message
  @source_message_type = source_message_type
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



3
4
5
# File 'lib/euston/event_headers.rb', line 3

def id
  @id
end

#source_messageObject (readonly)

Returns the value of attribute source_message.



3
4
5
# File 'lib/euston/event_headers.rb', line 3

def source_message
  @source_message
end

#source_message_typeObject (readonly)

Returns the value of attribute source_message_type.



3
4
5
# File 'lib/euston/event_headers.rb', line 3

def source_message_type
  @source_message_type
end

#timestampObject (readonly)

Returns the value of attribute timestamp.



3
4
5
# File 'lib/euston/event_headers.rb', line 3

def timestamp
  @timestamp
end

#typeObject (readonly)

Returns the value of attribute type.



3
4
5
# File 'lib/euston/event_headers.rb', line 3

def type
  @type
end

#versionObject (readonly)

Returns the value of attribute version.



3
4
5
# File 'lib/euston/event_headers.rb', line 3

def version
  @version
end

Class Method Details

.from_hash(hash) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/euston/event_headers.rb', line 22

def self.from_hash hash
  if hash.has_key? :command
    source_message = hash[:command]
    source_message_type = :command
  elsif hash.has_key? :event_subscription
    source_message = hash[:event_subscription]
    source_message_type = :event_subscription
  end

  self.new hash[:id], hash[:type].to_sym, hash[:version], hash[:timestamp], source_message, source_message_type
end

Instance Method Details

#to_hashObject



14
15
16
17
18
19
20
# File 'lib/euston/event_headers.rb', line 14

def to_hash
  ((@source_message_type && @source_message) ? Hash[@source_message_type, @source_message] : {})
    .merge :id => id,
           :type => type,
           :version => version,
           :timestamp => timestamp
end

#to_sObject



34
35
36
# File 'lib/euston/event_headers.rb', line 34

def to_s
  "#{id} #{type} (v#{version})"
end