class Skroutz::ErrorHandler

Public Instance Methods

on_complete(env) click to toggle source
# File lib/skroutz/errors.rb, line 52
def on_complete(env)
  status = env[:status]

  return unless (400...600).include?(status)

  send("handle_#{status.to_s.gsub(/(\d\d)$/, 'xx')}", env)
end

Private Instance Methods

handle_4xx(env) click to toggle source
# File lib/skroutz/errors.rb, line 62
def handle_4xx(env) # rubocop:disable Metrics/AbcSize
  case env.status
  when 400
    raise Skroutz::ClientError.new(env.status, env.body)
  when 401
    raise Skroutz::UnauthorizedError.new(env.status, env.body)
  when 403
    raise Skroutz::RateLimitingError if rate_limited?(env)
    raise Skroutz::ClientError.new(env.status, env.body)
  when 404, 410
    raise Skroutz::ResourceNotFound.new(env.status, env.body)
  end
end
handle_5xx(env) click to toggle source
# File lib/skroutz/errors.rb, line 76
def handle_5xx(env)
  raise Skroutz::ServerError.new(env.status, env.body)
end
rate_limited?(env) click to toggle source
# File lib/skroutz/errors.rb, line 80
def rate_limited?(env)
  env.response_headers.fetch('x-ratelimit-remaining', 1).to_i <= 0
end