Skip to content

Commit c5463a2

Browse files
committed
fix: BaseRequest now has headers getter instead of headerValuesAsList.
1 parent 286daea commit c5463a2

20 files changed

Lines changed: 109 additions & 166 deletions

File tree

dio_cache_interceptor/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 4.0.3
2+
- fix: BaseRequest now has `headers` getter instead of `headerValuesAsList`.
3+
- chore: Updated dependencies.
4+
15
## 4.0.2
26
- fix: Missing exports to handle client only caching.
37

dio_cache_interceptor/lib/src/extension/request_extension.dart

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,6 @@ import 'package:dio_cache_interceptor/src/extension/cache_option_extension.dart'
33
import 'package:http_cache_core/http_cache_core.dart';
44

55
extension RequestExtension on RequestOptions {
6-
// Request headers are not of type Headers...
7-
// This method helps to wrap it to correct list for iteration
8-
List<String>? headerValuesAsList(String headerKey) {
9-
final value = headers[headerKey];
10-
11-
if (value is Iterable<String>) return value.toList();
12-
if (value is String) return value.split(',').map((h) => h.trim()).toList();
13-
14-
return value;
15-
}
16-
176
CacheOptions? getCacheOptions() {
187
return extra[extraKey];
198
}
@@ -24,7 +13,7 @@ extension RequestExtension on RequestOptions {
2413

2514
for (var header in headers.entries) {
2615
if (header.value is Iterable) {
27-
h[header.key] = header.value.join(',');
16+
h[header.key] = header.value.join(', ');
2817
} else if (header.value != null) {
2918
h[header.key] = header.value.toString();
3019
}

dio_cache_interceptor/lib/src/model/dio_base_request.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@ import 'package:http_cache_core/http_cache_core.dart';
55
/// Wrapper on [BaseRequest] to deal with [RequestOptions]
66
class DioBaseRequest extends BaseRequest {
77
final RequestOptions request;
8+
final Map<String, String> _headers;
89

9-
DioBaseRequest(this.request);
10-
11-
@override
12-
List<String>? headerValuesAsList(String header) {
13-
return request.headerValuesAsList(header);
10+
DioBaseRequest(this.request) : _headers = request.getFlattenHeaders() {
11+
request.headers = _headers;
1412
}
1513

1614
@override
@@ -21,4 +19,7 @@ class DioBaseRequest extends BaseRequest {
2119
request.headers[header] = value;
2220
}
2321
}
22+
23+
@override
24+
Map<String, String> get headers => _headers;
2425
}

dio_cache_interceptor/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: Dio HTTP cache interceptor with multiple stores respecting HTTP dir
33
repository: https://github.com/llfbandit/dart_http_cache
44
issue_tracker: https://github.com/llfbandit/dart_http_cache/issues
55

6-
version: 4.0.2
6+
version: 4.0.3
77

88
environment:
99
sdk: ^3.0.0

dio_cache_interceptor/test/request_extension_test.dart

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,40 @@ import 'package:http_cache_core/http_cache_core.dart';
44
import 'package:test/test.dart';
55

66
void main() {
7-
test('request cache control from String', () {
7+
test('getFlattenHeaders returns correct header', () {
88
final cacheControlReference = [
99
'max-age=1',
1010
'no-store',
11-
'no-cache',
11+
'no-cache="set-cookie"',
1212
'public',
1313
'max-stale=2',
1414
'min-fresh=3',
1515
'must-revalidate',
1616
];
1717

18-
// Correctly formatted
18+
// Correctly formatted from list
1919
var rq = RequestOptions(
2020
path: 'https://foo.com',
21-
headers: {
22-
cacheControlHeader:
23-
'max-age=1, no-store, no-cache, public, max-stale=2, min-fresh=3, must-revalidate'
24-
},
21+
headers: {cacheControlHeader: cacheControlReference},
2522
);
2623

2724
expect(
28-
cacheControlReference,
29-
rq.headerValuesAsList(cacheControlHeader),
25+
rq.getFlattenHeaders()[cacheControlHeader],
26+
cacheControlReference.join(', '),
3027
);
3128

32-
// Without spaces
29+
// Without spaces from String
30+
final values =
31+
'max-age=1,no-store,no-cache,public,max-stale=2,min-fresh=3,must-revalidate';
3332
rq = RequestOptions(
3433
path: 'https://foo.com',
35-
headers: {
36-
cacheControlHeader:
37-
'max-age=1,no-store,no-cache,public,max-stale=2,min-fresh=3,must-revalidate'
38-
},
34+
headers: {cacheControlHeader: values},
3935
);
4036

41-
expect(
42-
cacheControlReference,
43-
rq.headerValuesAsList(cacheControlHeader),
44-
);
37+
expect(rq.getFlattenHeaders()[cacheControlHeader], values);
4538
});
4639

47-
test('cache control with field name', () {
40+
test('getFlattenHeaders cache control with field name', () {
4841
final cacheControlReference = [
4942
'max-age=1',
5043
'no-store',
@@ -55,18 +48,14 @@ void main() {
5548
'must-revalidate',
5649
];
5750

58-
// Correctly formatted
5951
var rq = RequestOptions(
6052
path: 'https://foo.com',
61-
headers: {
62-
cacheControlHeader:
63-
'max-age=1, no-store, no-cache="set-cookie", public, max-stale=2, min-fresh=3, must-revalidate'
64-
},
53+
headers: {cacheControlHeader: cacheControlReference},
6554
);
6655

6756
expect(
68-
cacheControlReference,
69-
rq.headerValuesAsList(cacheControlHeader),
57+
rq.getFlattenHeaders()[cacheControlHeader],
58+
cacheControlReference.join(', '),
7059
);
7160
});
7261
}

http_cache_client/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.0.2
2+
- fix: BaseRequest now has `headers` getter instead of `headerValuesAsList`.
3+
- chore: Updated dependencies.
4+
15
## 1.0.1
26
- fix: Improve cache save time.
37
- fix: Improve request date assignment.

http_cache_client/lib/src/model/http_base_request.dart

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,7 @@ class HttpBaseRequest extends BaseRequest {
1515
HttpBaseRequest(this.inner, this.options, this._date);
1616

1717
@override
18-
List<String>? headerValuesAsList(String header) {
19-
final value = inner.headers[header];
20-
21-
if (value != null) {
22-
final values = <String>[];
23-
24-
if (!value.contains(',')) {
25-
values.add(value);
26-
} else {
27-
if (header == 'set-cookie') {
28-
return value.split(setCookieSplitter);
29-
} else {
30-
return value.split(headerSplitter);
31-
}
32-
}
33-
34-
return values;
35-
}
36-
37-
return null;
38-
}
18+
Map<String, String> get headers => inner.headers;
3919

4020
@override
4121
void setHeader(String header, String? value) {

http_cache_client/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: http_cache_client
22
description: HTTP cache client with multiple stores respecting HTTP directives (or not).
3-
version: 1.0.1
3+
version: 1.0.2
44
repository: https://github.com/llfbandit/dart_http_cache
55
issue_tracker: https://github.com/llfbandit/dart_http_cache/issues
66

http_cache_client/test/http_base_request_test.dart

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ void main() {
1313
DateTime.now(),
1414
);
1515

16-
expect(request.headerValuesAsList(cacheControlHeader), isNull);
16+
expect(request.headers[cacheControlHeader], isNull);
1717
});
1818

1919
test('headerValuesAsList simple', () {
@@ -26,9 +26,8 @@ void main() {
2626
DateTime.now(),
2727
);
2828

29-
final values = request.headerValuesAsList(cacheControlHeader);
30-
expect(values, isNotNull);
31-
expect(values?.first, equals('no-store'));
29+
final values = request.headers[cacheControlHeader];
30+
expect(values, equals('no-store'));
3231
});
3332

3433
test('headerValuesAsList set-cookie', () {
@@ -44,14 +43,14 @@ void main() {
4443
DateTime.now(),
4544
);
4645

47-
final values = request.headerValuesAsList('set-cookie');
46+
final values = request.headers['set-cookie'];
4847
expect(values, isNotNull);
4948
expect(
50-
values?.first,
49+
values,
5150
equals(
5251
'id=a3fWa; Max-Age=2592000; Expires=Wed, 21 Oct 2015 07:28:00 GMT'));
5352
expect(
54-
values?.last,
53+
values,
5554
equals(
5655
'id=a3fWa; Max-Age=2592000; Expires=Wed, 21 Oct 2015 07:28:00 GMT'));
5756
});
@@ -68,11 +67,8 @@ void main() {
6867
DateTime.now(),
6968
);
7069

71-
final values = request.headerValuesAsList(cacheControlHeader);
72-
expect(values, isNotNull);
73-
expect(values?.first, equals('no-cache'));
74-
expect(values![1], equals('private'));
75-
expect(values.last, equals('max-age=3600'));
70+
final values = request.headers[cacheControlHeader];
71+
expect(values, equals('no-cache, private,max-age=3600'));
7672
});
7773

7874
test('setHeader null value', () {
@@ -87,11 +83,11 @@ void main() {
8783
DateTime.now(),
8884
);
8985

90-
var values = request.headerValuesAsList(cacheControlHeader);
86+
var values = request.headers[cacheControlHeader];
9187
expect(values, isNotNull);
9288

9389
request.setHeader(cacheControlHeader, null);
94-
values = request.headerValuesAsList(cacheControlHeader);
90+
values = request.headers[cacheControlHeader];
9591
expect(values, isNull);
9692
});
9793

@@ -107,12 +103,12 @@ void main() {
107103
DateTime.now(),
108104
);
109105

110-
var values = request.headerValuesAsList(cacheControlHeader);
111-
expect(values?.length, 3);
106+
var values = request.headers[cacheControlHeader];
107+
expect(values, equals('no-cache, private,max-age=3600'));
112108

113109
request.setHeader(cacheControlHeader, 'no-store');
114-
values = request.headerValuesAsList(cacheControlHeader);
115-
expect(values?.first, equals('no-store'));
110+
values = request.headers[cacheControlHeader];
111+
expect(values, equals('no-store'));
116112
});
117113

118114
test('requestDate returns given date', () {

http_cache_core/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## 1.1.1
22
- fix: Send only one condition on request cache validation.
3+
- fix: BaseRequest now has `headers` getter instead of `headerValuesAsList`.
34

45
## 1.1.0
56
- feat: Early skip strategy calculation when request has already cache check conditions.

0 commit comments

Comments
 (0)