sendRequestToEndpoint<T> method

  1. @override
Future<T> sendRequestToEndpoint<T>({
  1. required BaseRequest prepareRequest(),
  2. required T jsonConverter(
    1. Response
    ),
  3. String? requestIdentifier,
  4. bool canUseCacheForResponse = false,
  5. bool canSaveResponseToCache = true,
  6. bool canUseOldCachedResponseAsFallback = true,
  7. List<String> extraTagsToAssociate = const [],
  8. List<String> extraTagsToClear = const [],
  9. Duration maxCacheAge = const Duration(days: 1),
})
override

Implementation

@override
Future<T> sendRequestToEndpoint<T>(
    {required BaseRequest Function() prepareRequest,
    required T Function(Response) jsonConverter,
    String? requestIdentifier,
    bool canUseCacheForResponse = false,
    bool canSaveResponseToCache = true,
    bool canUseOldCachedResponseAsFallback = true,

    /// Extra tags to associate with the cache entry
    List<String> extraTagsToAssociate = const [],

    /// Extra tags to clear from the cache if this request succeeds
    List<String> extraTagsToClear = const [],
    Duration maxCacheAge = const Duration(days: 1)}) async {
  final T result = await _sendRequest(
      requestIdentifier: requestIdentifier,
      canUseCacheForResponse: canUseCacheForResponse,
      canSaveResponseToCache: canSaveResponseToCache,
      canUseOldCachedResponseAsFallback: canUseOldCachedResponseAsFallback,
      maxCacheAge: maxCacheAge,
      prepareRequest: () {
        final request = prepareRequest();
        return PreparedRequest(
            request: _api.authenticateRequest(request),
            tags: ["customRequest", ...extraTagsToAssociate]);
      },
      parseResponse: (response) => jsonConverter(response));
  if (cacheEngine != null && extraTagsToClear.isNotEmpty) {
    await removeCacheEntriesWithTags(extraTagsToClear);
  }
  return result;
}