checkInformation method

  1. @mustCallSuper
FutureOr<RemoteObject> checkInformation({
  1. required covariant RequestResponse requestResponse,
  2. required Map<String, String>? requestHeaders,
  3. required Uri? requestUri,
  4. Object? requestBody,
})
inherited

Usually use after server call to return the required data or failure.

By default, transformation function will be call after success response.

Implementation

@mustCallSuper
FutureOr<RemoteObject> checkInformation({
  required covariant RequestResponse requestResponse,
  required Map<String, String>? requestHeaders,
  required Uri? requestUri,
  Object? requestBody,
}) {
  if (inadmissibleStatusCode.contains(requestResponse.statusCode)) {
    observer.onInadmissibleException(
      requestResponse.statusCode,
      requestResponse.body?.call() ?? '',
      requestResponse.originalResponse,
      List.from(inadmissibleStatusCode),
      datasourceName: runtimeType.toString(),
      requestBody: requestBody,
      requestHeaders: requestHeaders,
      requestUri: requestUri,
    );

    throw InadmissibleDataSourceException(
      statusCode: requestResponse.statusCode,
      body: requestResponse.body?.call() ?? '',
      requestBody: requestBody,
      requestHeaders: requestHeaders,
      requestUri: requestUri,
    );
  }
  if (!admissibleStatusCode.contains(requestResponse.statusCode)) {
    observer.onUnControlException(
      requestResponse.statusCode,
      requestResponse.body?.call() ?? '',
      requestResponse.originalResponse,
      List.from(inadmissibleStatusCode),
      List.from(admissibleStatusCode),
      datasourceName: runtimeType.toString(),
      requestBody: requestBody,
      requestHeaders: requestHeaders,
      requestUri: requestUri,
    );

    throw UnControlDataSourceException(
      statusCode: requestResponse.statusCode,
      body: 'Unexpect error. No admissible values provide by server.\n',
      requestBody: requestBody,
      requestHeaders: requestHeaders,
      requestUri: requestUri,
    );
  }

  final objectResult = transformation(remoteResponse: requestResponse);

  observer.onAdmissible(objectResult, datasourceName: runtimeType.toString());

  return objectResult;
}