class EventBus::Event

Attributes

body[R]
headers[R]
name[R]
schema_version[R]

Public Class Methods

new(name, body, schema_version = 1.0) click to toggle source
# File lib/event_bus/event.rb, line 5
def initialize(name, body, schema_version = 1.0)
  @name = name
  @body = JSON.parse(body) rescue body
  @schema_version = @body['headers']['schemaVersion'] rescue schema_version
  generate_headers if has_name?
  build_payload if @body && @body.has_key?('headers')
end

Public Instance Methods

has_body?() click to toggle source
# File lib/event_bus/event.rb, line 20
def has_body?
  body && !body.empty?
end
has_name?() click to toggle source
# File lib/event_bus/event.rb, line 24
def has_name?
  name && !name.empty?
end
payload() click to toggle source
# File lib/event_bus/event.rb, line 13
def payload
  {
    headers: headers,
    body: body
  }.to_json
end

Private Instance Methods

build_payload() click to toggle source
# File lib/event_bus/event.rb, line 30
def build_payload
  @headers = body['headers']
  @body = body['body']
end
generate_headers() click to toggle source
# File lib/event_bus/event.rb, line 35
def generate_headers
  header_spec = name.split('.')

  @headers = {
    appName: EventBus::Config::APP_NAME,
    resource: header_spec[0],
    origin: header_spec[1],
    action: header_spec[2],
    schemaVersion: schema_version
  }
end