Sha256: 3ebabb7c4701fe46a690c3ac3a975aa664080ec31c2b2ab994bd5afc3686f7f5

Contents?: true

Size: 1.5 KB

Versions: 2

Compression:

Stored size: 1.5 KB

Contents

module Monri
  class Transactions
    class TransactionResponse < Response

      # @param [Hash] params
      def initialize(params)
        if params.has_key?(:errors)
          self[:errors] = params.delete(:errors)
        end

        if params.has_key?(:transaction)
          self[:transaction] = Monri::Transactions::Transaction.new(params.delete(:transaction))
        end

        if params.has_key?(:secure_message)
          self[:secure_message] = Monri::Transactions::SecureMessage.new(params.delete(:secure_message))
        end
        super(params)
      end

      # @return [TrueClass, FalseClass]
      def failed?
        errors != nil && errors.length > 0 || super
      end

      # @return [Array]
      def errors
        self[:errors]
      end

      # @return [Monri::Transactions::TransactionResponse]
      def transaction
        self[:transaction]
      end

      # @return [Monri::Transactions::SecureMessage]
      def secure_message
        self[:secure_message]
      end

      # @return [TransactionResponse]
      def self.create
        raise ArgumentError, 'Provide a block' unless block_given?

        begin
          TransactionResponse.new(yield)
        rescue StandardError => e
          params = { exception: e }
          if e.is_a?(Monri::Errors::HttpRequestError) && e.body != nil
            body = JSON.parse(e.body, symbolize_names: true) rescue {}
            params.merge!(body)
          end
          TransactionResponse.new(params)
        end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
monri-0.3.0 lib/monri/transactions/transaction_response.rb
monri-0.2.0 lib/monri/transactions/transaction_response.rb