executeOrThrow<T> static method

Future<T> executeOrThrow<T>(
  1. List<YKInterceptor> interceptors,
  2. int maxRetries,
  3. YKNetworkingRequest request, {
  4. int retryCount = 0,
  5. Set<String>? retrySkipNames,
})

Throwing variant of execute.

Returns T directly on success, throws YKNetworkException on failure or cancellation.

Implementation

static Future<T> executeOrThrow<T>(
  List<YKInterceptor> interceptors,
  int maxRetries,
  YKNetworkingRequest request, {
  int retryCount = 0,
  Set<String>? retrySkipNames,
}) async {
  final result = await _executeWithChain<T>(
    interceptors: interceptors,
    maxRetries: maxRetries,
    request: request,
    retryCount: retryCount,
    retrySkipNames: retrySkipNames,
    transport: () async {
      final dio = YKNetworkingConfig.getInstance().dio;
      dio.options.baseUrl = request.baseUrl;
      final dioResponse = await _sendRequest(dio, request);
      return YKInterceptorResponse(
        data: dioResponse.data,
        statusCode: dioResponse.statusCode ?? 200,
        headers: dioResponse.headers.map,
        request: request,
      );
    },
  );

  switch (result) {
    case YKSuccess(:final data):
      return data;
    case YKFailure(:final exception):
      throw exception;
    case YKCancelled(:final reason):
      throw YKNetworkException(
        type: YKErrorType.cancelled,
        message: reason,
      );
  }
}