json<S> static method

Future<ApiResult<S>> json<S>(
  1. NetResponse<S> response,
  2. NetMapperSuccess<S> mapperSuccess,
  3. NetMapperError mapperError
)

Implementation

static Future<ApiResult<S>> json<S>(NetResponse<S> response,
    NetMapperSuccess<S> mapperSuccess, NetMapperError mapperError) async {
  try {
    if (response.statusCode == 200) {
      final responseData = response.body;
      if (responseData != null) {
        final responseObject = mapperSuccess(responseData);

        return responseObject?.let(
              (result) => ApiResultSuccess(result, response.statusCode),
            ) ??
            _buildError(response.statusCode, response.statusMessage,
                responseData, mapperError);
      } else {
        return _buildError(response.statusCode, response.statusMessage,
            responseData, mapperError);
      }
    } else {
      return _buildError(
          response.statusCode, response.statusMessage, response, mapperError);
    }
  } on DioException catch (exception) {
    logger.e("error", error: exception, stackTrace: StackTrace.current);
    return ApiResultErrorInternal(exception.error.toString());
  } catch (e) {
    logger.e("error", error: e, stackTrace: StackTrace.current);
    return ApiResultErrorInternal(e.toString());
  }
}