Class: MastercardCoreSdk::Exceptions::ErrorHandler
- Inherits:
-
Object
- Object
- MastercardCoreSdk::Exceptions::ErrorHandler
- Includes:
- Converters
- Defined in:
- lib/mastercard_core_sdk/exceptions/error_handler.rb
Overview
Raises custom errors as per error response details.
Constant Summary collapse
- ERR_DESC_NULL_RES =
"Received null response: "- ERR_DESC_EMPTY_RES =
"Received empty body: "- ERR_REASON_NULL_RES =
"NULL_RESPONSE"- ERR_REASON_EMPTY_BODY_RES =
"EMPTY_BODY"- ERR_REASON_INVALID_RES =
"INVALID_RESPONSE"- ERR_REASON_NT_TIMEOUT =
"NETWORK_TIMEOUT"- ERR_MSG_INVALID_RES =
"Received invalid response: ["- ERR_MSG_UNKN_RES =
"Unknown reason for failure, please check logs."- ERR_SRC_UNKN =
"Unknown"- ERR_NETWORK =
"NETWORK_ERROR"- ERR_UNKN_REASON =
"GENERAL_ERROR"- ERR_INTERNAL =
"INTERNAL_PROCESSING_ERROR"- SEP_COLON =
"]: "- ERR_MSG_RES_PARSE =
"Exception occurred during response parsing."- @@logger =
Logging.logger[self]
Instance Method Summary collapse
-
#handle_error(error_response) ⇒ Object
Raise custom error as per response error object.
Instance Method Details
#handle_error(error_response) ⇒ Object
Raise custom error as per response error object.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/mastercard_core_sdk/exceptions/error_handler.rb', line 33 def handle_error(error_response) errors = nil response_body = error_response.response.response_body response_status_code = error_response.response_code if response_body.empty? errors = get_errors_object(ERR_DESC_EMPTY_RES, ERR_REASON_EMPTY_BODY_RES, ERR_SRC_UNKN) @@logger.error "400 #{ERR_SRC_UNKN}" raise SDKResponseError.new(:errors_object => errors, :status_code => 400) elsif response_status_code == 200 # In some cases, response code is 200 and response body is empty. # Received response, but could not be matched to the appropriate response object. description = ERR_MSG_INVALID_RES + response_body + SEP_COLON errors = get_errors_object(description, ERR_REASON_INVALID_RES, ERR_SRC_UNKN) @@logger.error "400 #{ERR_MSG_INVALID_RES}" raise SDKResponseError.new(:errors_object => errors, :status_code => 400) end content_type = error_response.response.headers['Content-Type'] rescue nil begin converter = SDKConverterFactory.get_converter(content_type) errors = converter.response_body_converter(response_body, Errors) raise SDKResponseError.new(:errors_object => errors, :status_code => response_status_code) rescue SDKConversionError => err # For request and access token call if any require parameter missing in header server send response as encodedURL. # Below code set the received response as description and raise Errors object. if SDKConverterFactory.get_mime_sub_type(content_type).include?(CONTENT_TYPE_URL_ENCODED) description = response_body else description = err. end case response_status_code when 400 errors = get_errors_object(description, nil, "") when 502 # Request timeout errors = get_errors_object(description, ERR_REASON_NT_TIMEOUT, ERR_NETWORK) else # Unknown error errors = get_errors_object(ERR_MSG_UNKN_RES, ERR_UNKN_REASON, ERR_SRC_UNKN) end @@logger.error "#{response_status_code}\n#{errors.error}" raise SDKResponseError.new(:errors_object => errors, :status_code => response_status_code) end end |