Sha256: 96cd68a53707d380550df29480115e4859dd3f1aa4260a4ff117f6a4256e5d57

Contents?: true

Size: 823 Bytes

Versions: 6

Compression:

Stored size: 823 Bytes

Contents

module PensioAPI
  module Callback
    FakeRequest = Struct.new(:headers, :body)
 
    def self.parse_success(xml)
      parse(xml, :success)
    end
    
    def self.parse_failure(xml)
      parse(xml, :failure)
    end

    def self.parse_chargeback(xml)
      parse(xml, :chargeback)
    end
    
    private 
    
    def self.parse(xml, handler)
      params = MultiXml.parse(xml)
      
      request = FakeRequest.new(
        params['APIResponse']['Header'],
        params['APIResponse']['Body']
      )
      
      case handler
      when :success
        PensioAPI::Responses::SuccessCallback.new(request)
      when :failure
        PensioAPI::Responses::SubscriptionFailureCallback.new(request)
      when :chargeback
        PensioAPI::Responses::ChargebackCallback.new(request)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pensio_api-0.3.5 lib/pensio_api/callback.rb
pensio_api-0.3.4 lib/pensio_api/callback.rb
pensio_api-0.3.3 lib/pensio_api/callback.rb
pensio_api-0.3.2 lib/pensio_api/callback.rb
pensio_api-0.3.1 lib/pensio_api/callback.rb
pensio_api-0.3.0 lib/pensio_api/callback.rb