@@ -13,15 +13,15 @@ export class HttpCacheService {
13
13
* Gets the unique key used as idenitifier to store
14
14
* a cached response for the given http request.
15
15
*/
16
- private getRequestIdentifier ( request : HttpRequest ) : string {
16
+ private getRequestIdentifier < HttpRequestBodyT > ( request : HttpRequest < HttpRequestBodyT > ) : string {
17
17
const fullUrl = request . urlWithParams ;
18
18
return fullUrl ;
19
19
}
20
20
21
21
/**
22
22
* Tells if a cached entry is expired.
23
23
*/
24
- private isEntryExpired < T > ( entry : HttpCacheEntry < T > ) : boolean {
24
+ private isEntryExpired < HttpResponseT > ( entry : HttpCacheEntry < HttpResponseT > ) : boolean {
25
25
const nowTime = new Date ( ) . getTime ( ) ;
26
26
const cachedAtDate = entry . cachedAt instanceof Date ? entry . cachedAt : new Date ( entry . cachedAt ) ;
27
27
const cachedTime = cachedAtDate . getTime ( ) ;
@@ -31,30 +31,32 @@ export class HttpCacheService {
31
31
/**
32
32
* Gets the cached entry associated with the request.
33
33
*/
34
- private getEntry < T > ( request : HttpRequest ) : HttpCacheEntry < T > | undefined {
34
+ private getEntry < HttpResponseT , HttpRequestBodyT > (
35
+ request : HttpRequest < HttpRequestBodyT >
36
+ ) : HttpCacheEntry < HttpResponseT > | undefined {
35
37
const reqIdentifier = this . getRequestIdentifier ( request ) ;
36
- return this . prefixedStore . get ( reqIdentifier ) as HttpCacheEntry < T > ;
38
+ return this . prefixedStore . get ( reqIdentifier ) as HttpCacheEntry < HttpResponseT > ;
37
39
}
38
40
39
41
/**
40
42
* Removes a cached entry.
41
43
*/
42
- private removeEntry < T > ( entry : HttpCacheEntry < T > ) : void {
44
+ private removeEntry < HttpResponseT > ( entry : HttpCacheEntry < HttpResponseT > ) : void {
43
45
this . prefixedStore . delete ( entry . identifier ) ;
44
46
}
45
47
46
48
/**
47
49
* Determines if for the given request is available a cached response.
48
50
*/
49
- has ( request : HttpRequest ) : boolean {
51
+ has < HttpRequestBodyT > ( request : HttpRequest < HttpRequestBodyT > ) : boolean {
50
52
const key = this . getRequestIdentifier ( request ) ;
51
53
return this . prefixedStore . has ( key ) ;
52
54
}
53
55
54
56
/**
55
57
* Tells if the cached request is expired or not.
56
58
*/
57
- isExpired ( request : HttpRequest ) : boolean {
59
+ isExpired < HttpRequestBodyT > ( request : HttpRequest < HttpRequestBodyT > ) : boolean {
58
60
const cachedEntry = this . getEntry ( request ) ;
59
61
if ( ! cachedEntry ) {
60
62
return true ;
@@ -66,26 +68,31 @@ export class HttpCacheService {
66
68
/**
67
69
* Gets the cached entry in the map for the given request.
68
70
*/
69
- get < T > ( request : HttpRequest ) : T | undefined {
71
+ get < HttpResponseT , HttpRequestBodyT > (
72
+ request : HttpRequest < HttpRequestBodyT >
73
+ ) : HttpResponseT | undefined {
70
74
const cachedEntry = this . getEntry ( request ) ;
71
75
if ( ! cachedEntry ) {
72
76
return undefined ;
73
77
}
74
78
75
79
const isExpired = this . isEntryExpired ( cachedEntry ) ;
76
- return isExpired ? undefined : ( cachedEntry . response as T ) ;
80
+ return isExpired ? undefined : ( cachedEntry . response as HttpResponseT ) ;
77
81
}
78
82
79
83
/**
80
84
* Puts a new cached response for the given request.
81
85
*/
82
- put < T > ( request : HttpRequest , response : T ) : void {
86
+ put < HttpResponseT , HttpRequestBodyT > (
87
+ request : HttpRequest < HttpRequestBodyT > ,
88
+ response : HttpResponseT
89
+ ) : void {
83
90
if ( ! request . maxAge ) {
84
91
return ;
85
92
}
86
93
87
94
const reqKey = this . getRequestIdentifier ( request ) ;
88
- const entry : HttpCacheEntry < T > = {
95
+ const entry : HttpCacheEntry < HttpResponseT > = {
89
96
response,
90
97
identifier : reqKey ,
91
98
cachedAt : new Date ( ) ,
0 commit comments