yurijmi/better_offsite_payments

View on GitHub
lib/offsite_payments/return.rb

Summary

Maintainability
A
1 hr
Test Coverage
module OffsitePayments #:nodoc:
  class Return
    attr_accessor :params
    attr_reader :notification

    def initialize(query_string, options = {})
      @params  = parse(query_string)
      @options = options
    end

    # Successful by default. Overridden in the child class
    def success?
      true
    end

    # Not cancelled by default.  Overridden in the child class.
    def cancelled?
      false
    end

    def message
    end

    def parse(query_string)
      return {} if query_string.blank?

      query_string.split('&').inject({}) do |memo, chunk|
        next if chunk.empty?
        key, value = chunk.split('=', 2)
        next if key.empty?
        value = value.nil? ? nil : CGI.unescape(value)
        memo[CGI.unescape(key)] = value
        memo
      end
    end
  end
end