Sha256: f7586fc3ad473cfd731b0777c4c0b6fc7f5870a8e1ee3b99f0141def5d557f5a

Contents?: true

Size: 941 Bytes

Versions: 10

Compression:

Stored size: 941 Bytes

Contents

require 'time'

module Spreedly

  class PaymentMethod < Model

    include ErrorsParser

    field :email, :storage_state, :data, :payment_method_type
    attr_reader :errors

    def initialize(xml_doc)
      super
      @errors = errors_from(xml_doc)
    end

    def self.new_from(xml_doc)
      case xml_doc.at_xpath('.//payment_method_type').inner_text
      when 'credit_card'
        return CreditCard.new(xml_doc)
      when 'paypal'
        return Paypal.new(xml_doc)
      when 'sprel'
        return Sprel.new(xml_doc)
      when 'bank_account'
        return BankAccount.new(xml_doc)
      when 'third_party_token'
        return ThirdPartyToken.new(xml_doc)
      end
    end

    def self.new_list_from(xml_doc)
      payment_methods = xml_doc.xpath('.//payment_methods/payment_method')
      payment_methods.map do |each|
        self.new_from(each)
      end
    end

    def valid?
      @errors.empty?
    end

  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spreedly-2.0.28 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.27 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.26 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.25 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.24 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.23 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.22 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.21 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.20 lib/spreedly/payment_methods/payment_method.rb
spreedly-2.0.19 lib/spreedly/payment_methods/payment_method.rb