Sha256: 8fa0bd04bf8fc30a69b5465a8862c55552a502ce14dabe93ecbafa32bd90282e

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

require 'happymapper'
module Dineromail
  class Notification
    include HappyMapper

    tag 'operacion'
    element :transaction_id, String, :tag => 'id'
    element :type, String, :tag => 'tipo'

    def initialize(options = {})
      @options = options.symbolize_keys
    end

    def status_report
      unless @status_report
        @status_report = StatusReport.get_report_for(transaction_id,@options)
      end
      @status_report
    end
    
    def transaction_id
      #If the transaction_id being used is the string representation 
      #of an integer return an integer for backward compatibility
      if @transaction_id =~ /\A\d+\Z/
        @transaction_id.to_i
      else
        @transaction_id
      end
    end

    def valid_report?
      status_report.valid_report?
    end

    def method_missing(symbol, *args)
      unless status_report.operations.empty?
        status_report.operations.first.send(symbol, *args)
      end
    end

    def self.parse(xml)
      #Convert tags to lowercase
      xml = xml.gsub(/<(.*?)[> ]/){|tag| tag.downcase}
      super(xml)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dineromail-0.2.1 lib/dineromail/notification.rb
dineromail-0.2.0 lib/dineromail/notification.rb