Sha256: 1fa427c32e342a0a7ecfabfb53e03044092e0a8e1c33d77cbde6915b4b92912d

Contents?: true

Size: 894 Bytes

Versions: 1

Compression:

Stored size: 894 Bytes

Contents

# frozen_string_literal: true

module Pushybullet
  module Errors
    class ClientError < Faraday::ClientError
      attr_reader :cat, :message, :type

      protected

      def exc_msg_and_response(exc, response = nil)
        headers = response_headers exc, response

        if headers['Content-Type'] =~ /\bjson$/
          err = JSON.parse(response[:body])
          @type = err['error']['type']
          @message = err['error']['message']
          @cat = err['error']['cat']
        end

        super
      end

      def response_headers(exc, response = nil)
        if response.nil? && exc.respond_to?(:each_key)
          exc[:headers]
        else
          response[:headers]
        end
      end
    end

    class Unauthorized < ClientError; end
    class Forbidden < ClientError; end
    class TooManyRequests < ClientError; end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pushybullet-0.1.2 lib/pushybullet/errors.rb