Sha256: 9f4b654cfe52fb3a30a73198e6b0f91a59e354f1d62534afb14ebd4bb19922ed

Contents?: true

Size: 690 Bytes

Versions: 2

Compression:

Stored size: 690 Bytes

Contents

module PensioAPI
  module Responses
    class Base
      include PensioAPI::Mixins::MethodMissing

      attr_reader :raw

      def initialize(request)
        @raw = request.body
        @headers = request.headers
        unless success?
          raise PensioAPI::Errors::BadRequest.new(request) unless header_ok
          raise PensioAPI::Errors::GatewayError.new(request) unless body_ok
        end
      end

      def success?
        header_ok && body_ok
      end

      private

      def header_ok
        @headers['ErrorCode'].to_i == 0
      end

      def body_ok
        !@raw.has_key?('Result') || ['Success', 'OK', nil].include?(@raw['Result'])
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pensio_api-0.2.3 lib/pensio_api/responses/base.rb
pensio_api-0.2.2 lib/pensio_api/responses/base.rb