add http_get_cache
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:http/http.dart';
|
||||
|
||||
import 'cache_control.dart';
|
||||
import 'date_parser.dart';
|
||||
|
||||
class RequestHeaders {
|
||||
final Map<String, String> value;
|
||||
RequestHeaders(this.value);
|
||||
|
||||
static DateParser dateParser = const DateParser();
|
||||
|
||||
String getValue(String key) {
|
||||
final result = value.entries.firstWhere(
|
||||
(e) => e.key.toLowerCase() == key.toLowerCase(),
|
||||
orElse: () => MapEntry(key, ''),
|
||||
);
|
||||
return result.value;
|
||||
}
|
||||
|
||||
String get eTag => getValue('eTag');
|
||||
|
||||
int get age => int.tryParse(getValue('Age')) ?? 0;
|
||||
|
||||
int? get lastModified => dateParser(getValue('Last-Modified'))?.toSeconds();
|
||||
|
||||
int? get date => dateParser(getValue('Date'))?.toSeconds();
|
||||
|
||||
int? get expires => dateParser(getValue('Expires'))?.toSeconds();
|
||||
|
||||
int? get created {
|
||||
final lastModifiedKey = value.keys.firstWhereOrNull(
|
||||
(e) => e.toLowerCase() == 'last-modified',
|
||||
);
|
||||
final dateKey = value.keys.firstWhereOrNull(
|
||||
(e) => e.toLowerCase() == 'date',
|
||||
);
|
||||
final key = lastModifiedKey ?? dateKey;
|
||||
if (key != null) {
|
||||
final d = dateParser(value[key]!);
|
||||
if (d != null) return d.millisecondsSinceEpoch;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
extension BaseRequestCCUtils on BaseRequest {
|
||||
RequestHeaders get requestHeaders {
|
||||
return RequestHeaders(headers);
|
||||
}
|
||||
|
||||
RequestCacheControl get cacheControl {
|
||||
return RequestCacheControl(requestHeaders.getValue('cache-control'));
|
||||
}
|
||||
}
|
||||
|
||||
extension StreamedResponseCCUtils on StreamedResponse {
|
||||
RequestHeaders get requestHeaders {
|
||||
return RequestHeaders(headers);
|
||||
}
|
||||
|
||||
ResponseCacheControl get cacheControl {
|
||||
return ResponseCacheControl(requestHeaders.getValue('cache-control'));
|
||||
}
|
||||
}
|
||||
|
||||
extension ResponseCCUtils on Response {
|
||||
RequestHeaders get requestHeaders {
|
||||
return RequestHeaders(headers);
|
||||
}
|
||||
|
||||
ResponseCacheControl get cacheControl {
|
||||
return ResponseCacheControl(requestHeaders.getValue('cache-control'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user