class GnipApi::Response

Constants

OK_STATUSES

List of codes that are considered OK

Attributes

body[R]
headers[R]
request[R]
status[R]

Public Class Methods

new(request, status, body, headers) click to toggle source
# File lib/gnip_api/response.rb, line 8
def initialize request, status, body, headers
  @status = status
  @body = body
  @headers = headers
  @request = request
end

Public Instance Methods

check_for_errors!() click to toggle source
# File lib/gnip_api/response.rb, line 46
def check_for_errors!
  if ok?
    GnipApi.logger.info "#{request_method} request to #{request_uri} returned with status #{status} OK"
    GnipApi.logger.debug "Headers -> #{headers.inspect}"
    GnipApi.logger.debug "Body -> #{body.inspect}"
    GnipApi.logger.debug "Request headers -> #{request.headers.inspect}"
    GnipApi.logger.debug "Request payload -> #{request.payload.inspect}"
  else
    GnipApi.logger.error "#{request_method} request to #{request_uri} returned with status #{status} FAIL"
    GnipApi.logger.debug "Headers -> #{headers.inspect}"
    GnipApi.logger.debug "Body -> #{body.inspect}"
    GnipApi.logger.debug "Request headers -> #{request.headers.inspect}"
    GnipApi.logger.debug "Request payload -> #{request.payload.inspect}"
    raise GnipApi::Errors::Adapter::GnipSoftwareError.new error_message if status == 503
    raise GnipApi::Errors::Adapter::RateLimitError.new error_message if status == 429
    raise GnipApi::Errors::Adapter::InvalidInput.new(error_message) if status == 422
    raise GnipApi::Errors::Adapter::RequestError.new("Status #{status} #{error_message}")
  end
end
error_message() click to toggle source
# File lib/gnip_api/response.rb, line 27
def error_message
  if @body && !@body.empty?
    parsed = GnipApi::JsonParser.new.parse(@body)
    if rules_summary? parsed
      created = parsed["summary"]["created"]
      failed = parsed["summary"]["not_created"]
      timstamp = parsed["sent"]
      log_rule_failures(parsed)
      return "Invalid rules: created #{created}, failed #{failed} verify and try again"
    elsif generic_error? parsed
      message = parsed['error']['message']
      message += " - TID: #{parsed['error']['transactionId']}" if parsed['error']['transactionId']
      return message
    else
      return "Unknown error"
    end
  end
end
ok?() click to toggle source
# File lib/gnip_api/response.rb, line 23
def ok?
  OK_STATUSES.include? @status
end
request_method() click to toggle source
# File lib/gnip_api/response.rb, line 15
def request_method
  @request.request_method
end
request_uri() click to toggle source
# File lib/gnip_api/response.rb, line 19
def request_uri
  @request.uri
end

Private Instance Methods

generic_error?(data) click to toggle source
# File lib/gnip_api/response.rb, line 80
def generic_error? data
  data.keys.include? "error"
end
log_rule_failures(data) click to toggle source
# File lib/gnip_api/response.rb, line 67
def log_rule_failures data
  message = "Invalid rules (422):\n"
  data["detail"].each do |rule|
    message += "Rule: #{rule['value']}\n"
    message += "Reason: #{rule['message']}\n\n"
  end
  GnipApi.logger.error message
end
rules_summary?(data) click to toggle source
# File lib/gnip_api/response.rb, line 76
def rules_summary? data
  data.keys.include? "summary"
end