turadg/pocket-ruby

View on GitHub
lib/faraday/raise_pocket_error.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Faraday
  #   HTTP Status X-Error-Code  X-Error
  # 400 138 Missing consumer key.
  # 403 152 Invalid consumer key.
  # 400 181 Invalid redirect uri.
  # 400 182 Missing code.
  # 400 185 Code not found.
  # 403 158 User rejected code.
  # 403 159 Already used code.
  # 50X 199 Pocket server issue.
  #
  # @see http://getpocket.com/developer/docs/authentication
  class Response::RaisePocketError < Response::Middleware
    CLIENT_ERROR_STATUSES = 400...600

    def on_complete(env)
      case env[:status]
      when 404
        raise Faraday::ResourceNotFound, response_values(env)
      when 400..403
        raise Pocket::Error, env[:response_headers]["X-Error"]
      when CLIENT_ERROR_STATUSES
        raise Faraday::ClientError, response_values(env)
      end
    end

    def response_values(env)
      {status: env[:status], headers: env[:response_headers], body: env[:body]}
    end
  end
end