Skip to content

Commit a5a9003

Browse files
committed
Include the response/variation key in the stored json files for easier debugging
1 parent ed570df commit a5a9003

6 files changed

Lines changed: 34 additions & 19 deletions

File tree

src/HttpClient.Cache/Files/FileCache.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ TimeProvider timeProvider
256256
);
257257
var variationFile = VariationFile.CreateTemp(_tempDirectory);
258258

259-
await variationFile.WriteAsync(variation);
259+
await variationFile.WriteAsync(variationKey, variation);
260260

261261
// Let the variation file have the same (possibly updated) expiration as the response
262262
variationFileName.SetExpiration(variationFile.Info, expiration);
@@ -276,8 +276,9 @@ CancellationToken cancellationToken
276276
{
277277
var modified = response.GetModified() ?? now;
278278
var expiration = response.GetExpiration(now) ?? (now + DefaultInitialExpiration);
279-
var metadata = new Metadata()
279+
var metadata = new MetadataModel()
280280
{
281+
Key = responseKey,
281282
Url = response.RequestMessage!.RequestUri!,
282283
Version = response.Version,
283284
StatusCode = response.StatusCode,
@@ -300,8 +301,6 @@ CancellationToken cancellationToken
300301
x.Value.ToList()
301302
))
302303
.ToList(),
303-
Etag = response.Headers.ETag?.ToString(),
304-
LastModified = response.Content.Headers.LastModified,
305304
};
306305

307306
var metadataFileName = FileName.Metadata(responseKey, modified, response.Headers.ETag);

src/HttpClient.Cache/Files/FileCacheSerializerContext.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace HttpClientCache.Files;
44

5-
[JsonSerializable(typeof(Metadata))]
6-
[JsonSerializable(typeof(Variation))]
5+
[JsonSerializable(typeof(MetadataModel))]
6+
[JsonSerializable(typeof(VariationModel))]
77
[JsonSourceGenerationOptions(
88
PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase,
99
WriteIndented = true,

src/HttpClient.Cache/Files/Metadata.cs renamed to src/HttpClient.Cache/Files/MetadataModel.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
namespace HttpClientCache.Files;
44

5-
public record Metadata
5+
public record MetadataModel
66
{
7+
public required string Key { get; init; }
78
public required Uri Url { get; init; }
89
public required Version Version { get; init; }
910
public required HttpStatusCode StatusCode { get; init; }
1011
public required string? ReasonPhrase { get; init; }
1112
public required List<KeyValuePair<string, List<string>>> ResponseHeaders { get; init; }
1213
public required List<KeyValuePair<string, List<string>>> ContentHeaders { get; init; }
1314
public required List<KeyValuePair<string, List<string>>>? TrailingHeaders { get; init; }
14-
public required string? Etag { get; init; }
15-
public required DateTimeOffset? LastModified { get; init; }
1615
}

src/HttpClient.Cache/Files/ResponseFilePair.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,23 +113,23 @@ public readonly bool TryMakePermanent(DirectoryInfo rootDirectory, FileName meta
113113
return response;
114114
}
115115

116-
public readonly async ValueTask<Metadata> ReadMetadataAsync()
116+
public readonly async ValueTask<MetadataModel> ReadMetadataAsync()
117117
{
118118
await using var stream = MetadataInfo.OpenRead();
119119
var metadata = await JsonSerializer.DeserializeAsync(
120120
stream,
121-
FileCacheSerializerContext.Default.Metadata
121+
FileCacheSerializerContext.Default.MetadataModel
122122
);
123123
return metadata!;
124124
}
125125

126-
public readonly async ValueTask WriteMetadataAsync(Metadata metadata)
126+
public readonly async ValueTask WriteMetadataAsync(MetadataModel metadata)
127127
{
128128
await using var stream = MetadataInfo.OpenWrite();
129129
await JsonSerializer.SerializeAsync(
130130
stream,
131131
metadata,
132-
FileCacheSerializerContext.Default.Metadata
132+
FileCacheSerializerContext.Default.MetadataModel
133133
);
134134
}
135135

src/HttpClient.Cache/Files/VariationFile.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,29 @@ public readonly bool TryMakePermanent(DirectoryInfo rootDirectory, FileName vari
3838
}
3939

4040
await using var stream = Info.OpenRead();
41-
var variation = await JsonSerializer.DeserializeAsync(
41+
var model = await JsonSerializer.DeserializeAsync(
4242
stream,
43-
FileCacheSerializerContext.Default.Variation
43+
FileCacheSerializerContext.Default.VariationModel
4444
);
45-
return variation!;
45+
return new Variation(model!.CacheType)
46+
{
47+
NormalizedVaryHeaders = model.NormalizedVaryHeaders,
48+
};
4649
}
4750

48-
public readonly async ValueTask WriteAsync(Variation variation)
51+
public readonly async ValueTask WriteAsync(string key, Variation variation)
4952
{
53+
var model = new VariationModel
54+
{
55+
Key = key,
56+
CacheType = variation.CacheType,
57+
NormalizedVaryHeaders = variation.NormalizedVaryHeaders,
58+
};
5059
using var stream = Info.OpenWrite();
5160
await JsonSerializer.SerializeAsync(
5261
stream,
53-
variation,
54-
FileCacheSerializerContext.Default.Variation
62+
model,
63+
FileCacheSerializerContext.Default.VariationModel
5564
);
5665
}
5766

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace HttpClientCache.Files;
2+
3+
internal class VariationModel
4+
{
5+
public required string Key { get; init; } = string.Empty;
6+
public required CacheType CacheType { get; init; }
7+
public required List<string> NormalizedVaryHeaders { get; init; }
8+
}

0 commit comments

Comments
 (0)