Skip to content

Commit db406cb

Browse files
MaximeRougieuxMaximeRougieux
andauthored
fix: Allow keyBuilder to depend on request body (#185)
Co-authored-by: MaximeRougieux <[email protected]>
1 parent 83f549d commit db406cb

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

dio_cache_interceptor/lib/src/dio_cache_interceptor_cache_utils.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ extension _DioCacheInterceptorUtils on DioCacheInterceptor {
124124
return options.keyBuilder(
125125
url: request.uri,
126126
headers: request.getFlattenHeaders(),
127+
body: request.data,
127128
);
128129
}
129130
}

http_cache_client/lib/src/client/http_cache_client_cache_utils.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ extension _CacheClientUtils on CacheClient {
1616
}
1717

1818
String _getCacheKey(HttpBaseRequest request) {
19+
final innerRequest = request.inner;
20+
1921
return request.options.keyBuilder(
20-
url: request.inner.url,
21-
headers: request.inner.headers,
22+
url: innerRequest.url,
23+
headers: innerRequest.headers,
24+
body: innerRequest is http.Request ? innerRequest.body : null,
2225
);
2326
}
2427

@@ -90,10 +93,7 @@ extension _CacheClientUtils on CacheClient {
9093
cacheOptions: request.options,
9194
).compute(
9295
cacheResponseBuilder: () => response.toCacheResponse(
93-
key: request.options.keyBuilder(
94-
url: request.inner.url,
95-
headers: request.inner.headers,
96-
),
96+
key: _getCacheKey(request),
9797
options: request.options,
9898
requestDate: request.requestDate,
9999
),

http_cache_core/lib/src/model/cache/cache_options.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'cache_priority.dart';
99
typedef CacheKeyBuilder = String Function({
1010
required Uri url,
1111
Map<String, String>? headers,
12+
Object? body,
1213
});
1314

1415
/// Options to apply to handle request and cache behaviour.
@@ -73,6 +74,7 @@ class CacheOptions {
7374
static String defaultCacheKeyBuilder({
7475
required Uri url,
7576
Map<String, String>? headers,
77+
Object? body,
7678
}) {
7779
return _uuid.v5(Namespace.url.value, url.toString());
7880
}

0 commit comments

Comments
 (0)