Sha256: 36ffd18ce615c9d9eb53c6026500292d99e62ff28683eb732a366ca77bf65fe6

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

#!/usr/bin/env ruby
# Util::Ipn -- de.oddb.org -- 29.01.2008 -- hwyss@ywesee.com

require 'oddb/business/invoice'
require 'oddb/util/mail'
require 'oddb/util/ydim'
require 'oddb/util/yus'

module ODDB
  module Util
module Ipn
  def Ipn.process(notification)
    id = notification.params["invoice"]
    invoice = Business::Invoice.find_by_id(id) or raise "unknown invoice '#{id}'"
    invoice.status = notification.status.to_s.downcase
    if(notification.complete?)
      Ipn.process_invoice(invoice)
    else
      invoice.ipn = notification
    end
    invoice.save
    invoice
  end
  def Ipn.process_invoice(invoice)
    invoice.items.each { |item| Ipn.process_item invoice, item }
    Ydim.inject(invoice, :payment_received => true)
    Mail.notify_invoice(invoice)
  end
  def Ipn.process_item(invoice, item)
    case item.type
    when :poweruser
      yus_name = invoice.yus_name
      item.expiry_time = Time.now + (60 * 60 * 24 * item.quantity)
      Util::Yus.set_preference(yus_name, 'poweruser_duration', item.quantity)
      Util::Yus.grant(yus_name, 'login', "#{ODDB.config.auth_domain}.PowerUser")
      Util::Yus.grant(yus_name, 'view', ODDB.config.auth_domain, item.expiry_time)
    when :export
      yus_name = invoice.yus_name
      item.expiry_time = Time.now + (60 * 60 * 24)
      Util::Yus.grant(yus_name, 'login', "#{ODDB.config.auth_domain}.PowerUser")
      Util::Yus.grant(yus_name, 'download',
                      "#{ODDB.config.auth_domain}.#{item.text}",
                      item.expiry_time)
    end
  end
end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ramaze.ch.oddb.org-1.0.0 lib/oddb/util/ipn.rb