request method

  1. @override
Stream<Response> request(
  1. Request request, [
  2. NextLink? forward
])

A function called when a request reaches this Link

Implementation

@override
Stream<Response> request(Request request, [NextLink? forward]) async* {
  final policy = _getPolicyFromContext(request.context) ?? defaultPolicy;
  final ttl = _getTtlFromContext(request.context) ?? defaultTtl;
  final cacheKey = generateCacheKey(request);

  switch (policy) {
    case CachePolicy.cacheFirst:
      yield* _cacheFirst(request, forward, cacheKey, ttl);
    case CachePolicy.networkFirst:
      yield* _networkFirst(request, forward, cacheKey, ttl);
    case CachePolicy.cacheOnly:
      yield* _cacheOnly(request, cacheKey);
    case CachePolicy.networkOnly:
      yield* _networkOnly(request, forward, cacheKey, ttl);
    case CachePolicy.cacheAndNetwork:
      yield* _cacheAndNetwork(request, forward, cacheKey, ttl);
  }
}