module Pxpay
  # The return notification from Payment Express 
  class Notification
    require 'nokogiri'
    attr_accessor :response
    # Create a new Notification from Payment Express' response
    def initialize(response)
      @response = response
    end
    
    # Return the xml response
    def to_xml
      response
    end 
    
    # Return the response as a hash
    def to_hash
      doc = ::Nokogiri::XML( self.response )
      hash = {}
      doc.at_css("Response").element_children.each do |attribute|
        hash[attribute.name.underscore.to_sym] = attribute.inner_text
      end
      hash
    end
  end
end

class String
  # A copy of Rails' ActiveSupport underscore method
   def underscore
     self.gsub(/::/, '/').
     gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
     gsub(/([a-z\d])([A-Z])/,'\1_\2').
     tr("-", "_").
     downcase
   end
end
module Pxpay
  # The return notification from Payment Express 
  class Notification
    require 'nokogiri'
    attr_accessor :response
    # Create a new Notification from Payment Express' response
    def initialize(response)
      @response = response
    end
    
    # Return the xml response
    def to_xml
      response
    end 
    
    # Return the response as a hash
    def to_hash
      doc = ::Nokogiri::XML( self.response )
      hash = {}
      doc.at_css("Response").element_children.each do |attribute|
        hash[attribute.name.underscore.to_sym] = attribute.inner_text
      end
      hash[:valid] = doc.at_css("Response")['valid']
      hash
    end
  end
end

class String
  # A copy of Rails' ActiveSupport underscore method
   def underscore
     self.gsub(/::/, '/').
     gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
     gsub(/([a-z\d])([A-Z])/,'\1_\2').
     tr("-", "_").
     downcase
   end
end
Rollback of last commit, can't just remove valid, will work it out properly later
Rollback of last commit, can't just remove valid, will work it out properly later