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