class RecurlyEvent::Parser

Public Class Methods

from_payload(payload) click to toggle source
# File lib/recurly_event/parser.rb, line 10
def self.from_payload(payload)
  JSON.parse(payload.to_json, object_class: OpenStruct)
end
new(request) click to toggle source
# File lib/recurly_event/parser.rb, line 14
def initialize(request)
  @request = request
end
parse(request) click to toggle source
# File lib/recurly_event/parser.rb, line 6
def self.parse(request)
  new(request)
end

Public Instance Methods

event_name() click to toggle source
# File lib/recurly_event/parser.rb, line 18
def event_name
  hash_from_request.first.first
end
payload() click to toggle source
# File lib/recurly_event/parser.rb, line 22
def payload
  payload = hash_from_request.first.last
  payload.merge("event" => event_name)
end

Private Instance Methods

hash_from_request() click to toggle source
# File lib/recurly_event/parser.rb, line 29
def hash_from_request
  # see https://recurly.readme.io/v2.0/page/webhooks for the xml structure
  @hash_from_request ||= begin
    xml_string = @request.body.respond_to?(:string) ? @request.body.string : @request.body.read
    Hash.from_xml(xml_string)
  end
end