class EbayTrading::Notification

Public Class Methods

new(post_data) click to toggle source
# File lib/ebay_trading/notification.rb, line 13
def initialize(post_data)
  @raw_data = post_data
  parse
end

Public Instance Methods

body() click to toggle source
# File lib/ebay_trading/notification.rb, line 22
def body
  @body ||= parse_body
end
document() click to toggle source
# File lib/ebay_trading/notification.rb, line 34
def document
  @document ||= load_document
end
event_name() click to toggle source
# File lib/ebay_trading/notification.rb, line 42
def event_name
  @event_name ||= parse_event_name
end
signature() click to toggle source
# File lib/ebay_trading/notification.rb, line 26
def signature
  @signature ||= parse_signature
end
timestamp() click to toggle source
# File lib/ebay_trading/notification.rb, line 30
def timestamp
  @timestamp ||= parse_timestamp
end
valid?() click to toggle source
# File lib/ebay_trading/notification.rb, line 18
def valid?
  signature == generated_signature
end
xml_body() click to toggle source
# File lib/ebay_trading/notification.rb, line 38
def xml_body
  @xml_body ||= parse_xml_body
end

Private Instance Methods

app_id() click to toggle source
# File lib/ebay_trading/notification.rb, line 51
def app_id
  Api.app_id
end
cert() click to toggle source
# File lib/ebay_trading/notification.rb, line 55
def cert
  Api.cert
end
dev_id() click to toggle source
# File lib/ebay_trading/notification.rb, line 47
def dev_id
  Api.dev_id
end
generate_signature() click to toggle source
# File lib/ebay_trading/notification.rb, line 106
def generate_signature
  Base64.encode64(Digest::MD5.digest(timestamp + dev_id + app_id + cert)).chomp
end
generated_signature() click to toggle source
# File lib/ebay_trading/notification.rb, line 63
def generated_signature
  @generated_signature ||= generate_signature
end
load_document() click to toggle source
# File lib/ebay_trading/notification.rb, line 72
def load_document
  result = REXML::Document.new(@raw_data).root
  raise InvalidNotificationError, "The notification is empty" if result.nil?
  result
end
load_response_class(method_id) click to toggle source
# File lib/ebay_trading/notification.rb, line 67
def load_response_class(method_id)
  load_response_class(xml.root.name)
  XML::Mapping.load_object_from_xml(xml.root)
end
parse() click to toggle source
# File lib/ebay_trading/notification.rb, line 59
def parse
  parse_xml_body
end
parse_body() click to toggle source
# File lib/ebay_trading/notification.rb, line 102
def parse_body
  XML::Mapping.load_object_from_xml(xml_body)
end
parse_event_name() click to toggle source
# File lib/ebay_trading/notification.rb, line 84
def parse_event_name
  event_name_node = REXML::XPath.first(document, "//NotificationEventName")
  raise InvalidNotificationError, "Notification event name is missing" if event_name_node.nil?
  event_name_node.text
end
parse_signature() click to toggle source
# File lib/ebay_trading/notification.rb, line 90
def parse_signature
  signature_node = REXML::XPath.first(document, "//ebl:NotificationSignature")
  raise InvalidNotificationError, "Notification signature is missing" if signature_node.nil?
  signature_node.text
end
parse_timestamp() click to toggle source
# File lib/ebay_trading/notification.rb, line 78
def parse_timestamp
  timestamp_node = REXML::XPath.first(document, "//Timestamp")
  raise InvalidNotificationError, "Notification timestamp is missing" if timestamp_node.nil?
  timestamp_node.text
end
parse_xml_body() click to toggle source
# File lib/ebay_trading/notification.rb, line 96
def parse_xml_body
  soap_body = REXML::XPath.first(document, '//soapenv:Body')
  raise InvalidNotificationError, "Soap body is invalid" if soap_body.nil? || soap_body.elements.size < 1
  soap_body.elements[1]
end