genericParseResponse<DataTypeGeneric extends Jsonable<Object>?> method

Future<EResponse<DataTypeGeneric>> genericParseResponse<DataTypeGeneric extends Jsonable<Object>?>(
  1. Future futureResponse, {
  2. DataTypeGeneric? dataType,
})
inherited

Implementation

Future<EResponse<DataTypeGeneric>> genericParseResponse<DataTypeGeneric extends Jsonable?>(
    Future futureResponse, {DataTypeGeneric? dataType}) async {
  EResponse response = await getSaveResponse(futureResponse);
  try {
    DataTypeGeneric? dataTypeResult;
    if (dataType != null) {
      if(response.body is DataTypeGeneric) {
        dataTypeResult = response.body;
      } else
      if(response.body is String) {
        dataTypeResult = dataType.fromJsonString(response.body) as DataTypeGeneric?;
      } else
      if(response.body is Map) {
        dataTypeResult = dataType.fromJsonMap(response.body) as DataTypeGeneric?;
      }
    }
    Object? errorTypeResult = parseError(response);
    return EResponse<DataTypeGeneric>(response.base, dataTypeResult,
        error: errorTypeResult);
  } catch (e) {
    String message = e.toString();
    response = EResponse(
        http.Response(
          response.body?.toString() ?? '',
          Jsonable.jsonParserError,
          headers: response.base.headers,
          isRedirect: response.base.isRedirect,
          persistentConnection: response.base.persistentConnection,
          reasonPhrase: response.base.reasonPhrase,
          request: response.base.request,
        ),
        response.body,
        error: message);
    print(e);
  }
  return EResponse<DataTypeGeneric>(response.base, null, error: response.error);
}