Sha256: f95188c36348a66a46d4f12c128dfdd25698c251aa982168b13ad6b8f00cfe05
Contents?: true
Size: 1.89 KB
Versions: 1
Compression:
Stored size: 1.89 KB
Contents
module MerbMerchant #:nodoc: module Billing #:nodoc: module Integrations #:nodoc: class Notification attr_accessor :params attr_accessor :raw # set this to an array in the subclass, to specify which IPs are allowed to send requests class_inheritable_accessor :production_ips def initialize(post, options = {}) @options = options empty! parse(post) end def status raise NotImplementedError, "Must implement this method in the subclass" end # the money amount we received in X.2 decimal. def gross raise NotImplementedError, "Must implement this method in the subclass" end def gross_cents (gross.to_f * 100.0).round end # This combines the gross and currency and returns a proper Money object. # this requires the money library located at http://dist.leetsoft.com/api/money def amount return Money.new(gross_cents, currency) rescue ArgumentError return Money.new(gross_cents) # maybe you have an own money object which doesn't take a currency? end # reset the notification. def empty! @params = Hash.new @raw = "" end # Check if the request comes from an official IP def valid_sender?(ip) return true if MerbMerchant::Billing::Base.integration_mode == :test || production_ips.blank? production_ips.include?(ip) end private # Take the posted data and move the relevant data into a hash def parse(post) @raw = post.to_s for line in @raw.split('&') key, value = *line.scan( %r{^([A-Za-z0-9_.]+)\=(.*)$} ).flatten params[key] = CGI.unescape(value) end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
merb_merchant-1.4.1 | lib/merb_merchant/billing/integrations/notification.rb |