Sha256: c2866741c1cd0f7667a110a3e059c9e2733addc616af4af6f4a5a39ecefeac13

Contents?: true

Size: 953 Bytes

Versions: 2

Compression:

Stored size: 953 Bytes

Contents

module Protolink
  module FaradayResponse
    class WithIndifferentAccess < ::Faraday::Response::Middleware
      begin
        require 'active_support/core_ext/hash/indifferent_access'
      rescue LoadError, NameError => error
        self.load_error = error
      end

      def self.register_on_complete(env)
        env[:response].on_complete do |response|
          json = response[:body]
          if json.is_a?(Hash)
            response[:body] = ::HashWithIndifferentAccess.new(json)
          elsif json.is_a?(Array) and json.first.is_a?(Hash)
            response[:body] = json.map{|item| ::HashWithIndifferentAccess.new(item) }
          end
        end
      end
    end

    class RaiseOnAuthenticationFailure < ::Faraday::Response::Middleware
      def self.register_on_complete(env)
        env[:response].on_complete do |response|
          raise AuthenticationFailed if response[:status] == 401
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
protolink-0.1.1 lib/protolink/middleware.rb
protolink-0.1.0 lib/protolink/middleware.rb