fetch method

Future<HttpResponse> fetch({
  1. required String path,
  2. Map<String, dynamic>? params,
  3. Map<String, dynamic>? headers,
  4. int? maxAttempts,
  5. Cache? enableCache,
})

Implementation

Future<HttpResponse> fetch({
  required String path,
  Map<String, dynamic>? params,
  Map<String, dynamic>? headers,
  int? maxAttempts,
  Cache? enableCache,
}) async {
  Future makeRequest() {
    logger.debug('Make request: $path');
    return _createRequest(
      () => _dio.get(path, queryParameters: params, options: Options(headers: headers)),
      onSuccess: (data) => Future.value(data),
      maxAttempts: maxAttempts,
    );
  }

  final result;
  if (enableCache == null) {
    result = await makeRequest();
  } else {
    final key = sha1.string(path + jsonEncode(params)).base64();
    final cache = await Cache.init(duration: enableCache.duration);
    result = await cache.get(key: key, process: makeRequest);
  }

  return HttpResponse(data: result);
}