lib/gnip_api/response.rb in gnip_api-1.2.3 vs lib/gnip_api/response.rb in gnip_api-1.2.4
- old
+ new
@@ -25,15 +25,24 @@
end
def error_message
if @body && !@body.empty?
parsed = GnipApi::JsonParser.new.parse(@body)
- message = parsed['error']['message']
- message += " - TID: #{parsed['error']['transactionId']}" if parsed['error']['transactionId']
- return message
+ 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
- return nil
end
def check_for_errors!
if ok?
GnipApi.logger.info "#{request_method} request to #{request_uri} returned with status #{status} OK"
@@ -47,11 +56,30 @@
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
+
+ private
+ 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
+
+ def rules_summary? data
+ data.keys.include? "summary"
+ end
+
+ def generic_error? data
+ data.keys.include? "error"
end
end
end