processAndHandleResponse method

dynamic processAndHandleResponse(
  1. Response response
)

ApiService Process and return response

Implementation

dynamic processAndHandleResponse(Response<dynamic> response) {
  _debugLog(
      'Processing Response - Type: ${response.runtimeType}, Status: ${response.statusCode}');

  ApiSuccess apiSuccess = ApiSuccess();
  apiSuccess.statusCode = (response.statusCode ?? codeTimeOut);
  ApiError apiError = ApiError();
  apiError.statusCode = (response.statusCode ?? codeTimeOut);
  var isSuccess = response.isOk && response.body != null;

  if (isSuccess) {
    apiSuccess.data = response.body;
    _debugLog('Success Response - Data Type: ${apiSuccess.data.runtimeType}');
    _handleResponse(apiSuccess);
  } else {
    apiError.statusCode = (response.statusCode ?? codeTimeOut);
    _debugLog('Error Response - Status Code: ${apiError.statusCode}',
        isError: true);

    if (_allowedStatusCodes.contains(response.statusCode)) {
      apiError.message = response.bodyString!;
      apiError.errorObject = jsonDecode(response.bodyString!);
      _debugLog('Status 200 Error - Body: ${response.bodyString}',
          isError: true);
    }
    if (response.statusCode == 422) {
      apiError.message = response.bodyString!;
      apiError.errorObject = jsonDecode(response.bodyString!);
      _debugLog('Validation Error (422) - Body: ${response.bodyString}',
          isError: true);
    } else {
      _debugLog('Error Status Text: ${response.statusText}', isError: true);
      response.statusText!;
    }
    _handleErrorResponse(apiError);
  }
  return (isSuccess ? apiSuccess : apiError);
}