module DTK::Client::Response::ErrorHandler
Constants
- DefaultErrorCode
- DefaultErrorMsg
- Info
- SpecificErrorCodes
Public Class Methods
error_info?(response, opts={})
click to toggle source
# File lib/domain/response/error_handler.rb, line 34 def self.error_info?(response, opts={}) unless errors = response["errors"] return (opts[:default_error_if_nil] && error_info_default()) end # special rare case errors = errors.first["errors"] if errors.is_a?(Array) && errors.first["errors"] error_msg = "" error_internal = nil error_backtrace = nil error_code = nil error_on_server = nil #TODO: below just 'captures' first error errors.each do |err| error_msg += err["message"] unless err["message"].nil? error_msg += err["error"] unless err["error"].nil? error_msg += OsUtil.remove_html_tags(err["original_exception"].to_s) unless err["original_exception"].nil? error_on_server = true unless err["on_client"] error_code = err["code"]||(err["errors"] && err["errors"].first["code"]) error_internal ||= (err["internal"] or error_code == "not_found") #"not_found" code is at Ramaze level; so error_internal not set error_backtrace ||= err["backtrace"] end # in case we could not parse error lets log error info if error_msg.empty? DtkLogger.instance.error("Error info could not be extracted from following response: " + response.to_s) end # normalize it for display error_msg = error_msg.empty? ? DefaultErrorMsg : "#{error_msg}" unless error_code and SpecificErrorCodes.include?(error_code) error_code = if error_internal error_on_server ? :server_error : :client_error else DefaultErrorCode end end error_code = error_code.to_sym Info.new(error_msg,error_code,error_backtrace) end
error_info_default()
click to toggle source
# File lib/domain/response/error_handler.rb, line 80 def self.error_info_default() Info.new(DefaultErrorMsg,DefaultErrorCode,nil) end