class Cubscout::Response

Public Instance Methods

on_complete(env) click to toggle source
# File lib/cubscout/response.rb, line 7
def on_complete(env)
  handle_response_status(env.status, env)
  parse_json_reponse(env)
end

Private Instance Methods

handle_response_status(status, env) click to toggle source
# File lib/cubscout/response.rb, line 14
def handle_response_status(status, env)
  case status
  when 400
    raise Cubscout::MalformedRequestError, env.body
  when 401
    raise Cubscout::AuthenticationError, env.body
  when 403
    raise Cubscout::PermissionDeniedError, env.body
  when 404
    raise Cubscout::ResourceNotFoundError, env.body
  when 429
    limit = env.response_headers["x-ratelimit-limit-minute"]
    remaining = env.response_headers["x-ratelimit-remaining-minute"]
    retry_after = env.response_headers["x-ratelimit-retry-after"]
    raise Cubscout::RateLimitExceeded, {retry_after_minutes: retry_after, limit: limit, remaining: remaining}
  when 500
    raise Cubscout::InternalError, env.body
  end
end
parse_json_reponse(env) click to toggle source
# File lib/cubscout/response.rb, line 34
def parse_json_reponse(env)
  return true if [201, 204].include?(env.status)

  begin
    parsed_body = JSON.parse(env.body)
    env[:raw_body] = env.body
  rescue JSON::ParserError
    raise Cubscout::JsonParseError, env.body
  end

  env.body = parsed_body
end