@@ -167,7 +167,8 @@ namespace TurboHTTP
167167 public static TurboHTTP.ITurboHttpClientBuilder UseResponse(this TurboHTTP.ITurboHttpClientBuilder builder, System.Func<System.Net.Http.HttpRequestMessage, System.Net.Http.HttpResponseMessage, System.Net.Http.HttpResponseMessage> transform) { }
168168 public static TurboHTTP.ITurboHttpClientBuilder WithCache(this TurboHTTP.ITurboHttpClientBuilder builder, System.Action<TurboHTTP.CacheOptions>? configure = null) { }
169169 public static TurboHTTP.ITurboHttpClientBuilder WithCache(this TurboHTTP.ITurboHttpClientBuilder builder, TurboHTTP.Protocol.Caching.ICacheStore store, System.Action<TurboHTTP.CacheOptions>? configure = null) { }
170- public static TurboHTTP.ITurboHttpClientBuilder WithCookies(this TurboHTTP.ITurboHttpClientBuilder builder, TurboHTTP.Protocol.Cookies.ICookieJar? jar = null) { }
170+ public static TurboHTTP.ITurboHttpClientBuilder WithCookies(this TurboHTTP.ITurboHttpClientBuilder builder) { }
171+ public static TurboHTTP.ITurboHttpClientBuilder WithCookies(this TurboHTTP.ITurboHttpClientBuilder builder, TurboHTTP.Protocol.Cookies.ICookieStore store) { }
171172 public static TurboHTTP.ITurboHttpClientBuilder WithDecompression(this TurboHTTP.ITurboHttpClientBuilder builder, bool enabled = true) { }
172173 public static TurboHTTP.ITurboHttpClientBuilder WithExpectContinue(this TurboHTTP.ITurboHttpClientBuilder builder, System.Action<TurboHTTP.Expect100Options>? configure = null) { }
173174 public static TurboHTTP.ITurboHttpClientBuilder WithRedirect(this TurboHTTP.ITurboHttpClientBuilder builder, System.Action<TurboHTTP.RedirectOptions>? configure = null) { }
@@ -237,6 +238,14 @@ namespace TurboHTTP.Diagnostics
237238}
238239namespace TurboHTTP.Protocol.Caching
239240{
241+ public sealed class CacheBody : System.IDisposable
242+ {
243+ public bool IsEmpty { get; }
244+ public int Length { get; }
245+ public System.ReadOnlyMemory<byte> Memory { get; }
246+ public System.ReadOnlySpan<byte> Span { get; }
247+ public void Dispose() { }
248+ }
240249 public sealed class CacheControl : System.IEquatable<TurboHTTP.Protocol.Caching.CacheControl>
241250 {
242251 public CacheControl() { }
@@ -257,6 +266,43 @@ namespace TurboHTTP.Protocol.Caching
257266 public bool Public { get; init; }
258267 public System.TimeSpan? SMaxAge { get; init; }
259268 }
269+ public sealed class CacheControlStoreEntry : System.IEquatable<TurboHTTP.Protocol.Caching.CacheControlStoreEntry>
270+ {
271+ public CacheControlStoreEntry() { }
272+ public bool Immutable { get; init; }
273+ public System.TimeSpan? MaxAge { get; init; }
274+ public System.TimeSpan? MaxStale { get; init; }
275+ public System.TimeSpan? MinFresh { get; init; }
276+ public bool MustRevalidate { get; init; }
277+ public bool MustUnderstand { get; init; }
278+ public bool NoCache { get; init; }
279+ public string[] NoCacheFields { get; init; }
280+ public bool NoStore { get; init; }
281+ public bool NoTransform { get; init; }
282+ public bool OnlyIfCached { get; init; }
283+ public bool Private { get; init; }
284+ public string[] PrivateFields { get; init; }
285+ public bool ProxyRevalidate { get; init; }
286+ public bool Public { get; init; }
287+ public System.TimeSpan? SMaxAge { get; init; }
288+ }
289+ public sealed class CacheStoreEntry : System.IDisposable
290+ {
291+ public CacheStoreEntry() { }
292+ public int? AgeSeconds { get; init; }
293+ public required TurboHTTP.Protocol.Caching.CacheBody Body { get; init; }
294+ public TurboHTTP.Protocol.Caching.CacheControlStoreEntry? CacheControl { get; init; }
295+ public System.DateTimeOffset? Date { get; init; }
296+ public string? ETag { get; init; }
297+ public System.DateTimeOffset? Expires { get; init; }
298+ public System.DateTimeOffset? LastModified { get; init; }
299+ public required System.DateTimeOffset RequestTime { get; init; }
300+ public required System.Net.Http.HttpResponseMessage Response { get; init; }
301+ public required System.DateTimeOffset ResponseTime { get; init; }
302+ public string[] VaryHeaderNames { get; init; }
303+ public System.Collections.Generic.Dictionary<string, string?> VaryRequestValues { get; init; }
304+ public void Dispose() { }
305+ }
260306 public interface ICacheEntry : System.IDisposable
261307 {
262308 int? AgeSeconds { get; }
@@ -272,18 +318,43 @@ namespace TurboHTTP.Protocol.Caching
272318 System.Collections.Generic.IReadOnlyList<string> VaryHeaderNames { get; }
273319 System.Collections.Generic.IReadOnlyDictionary<string, string?> VaryRequestValues { get; }
274320 }
275- public interface ICacheStore
321+ public interface ICacheStore : System.IDisposable
276322 {
277- TurboHTTP.Protocol.Caching.ICacheEntry? Get(System.Net.Http.HttpRequestMessage request);
278- void Invalidate(System.Uri uri);
279- void Put(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpResponseMessage response, System.Buffers.IMemoryOwner<byte> bodyOwner, int bodyLength, System.DateTimeOffset requestTime, System.DateTimeOffset responseTime);
323+ void Clear();
324+ bool Remove(string key);
325+ void Set(string key, TurboHTTP.Protocol.Caching.CacheStoreEntry entry);
326+ bool TryGet(string key, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out TurboHTTP.Protocol.Caching.CacheStoreEntry? entry);
280327 }
281328}
282329namespace TurboHTTP.Protocol.Cookies
283330{
284- public interface ICookieJar
331+ public sealed class CookieStoreEntry : System.IEquatable<TurboHTTP.Protocol.Cookies.CookieStoreEntry>
332+ {
333+ public CookieStoreEntry(string Name, string Value, string Domain, string Path, System.DateTimeOffset? ExpiresAt, bool Secure, bool HttpOnly, TurboHTTP.Protocol.Cookies.SameSitePolicy SameSite, bool IsHostOnly, System.DateTimeOffset CreatedAt) { }
334+ public System.DateTimeOffset CreatedAt { get; init; }
335+ public string Domain { get; init; }
336+ public System.DateTimeOffset? ExpiresAt { get; init; }
337+ public bool HttpOnly { get; init; }
338+ public bool IsHostOnly { get; init; }
339+ public string Name { get; init; }
340+ public string Path { get; init; }
341+ public TurboHTTP.Protocol.Cookies.SameSitePolicy SameSite { get; init; }
342+ public bool Secure { get; init; }
343+ public string Value { get; init; }
344+ }
345+ public interface ICookieStore
346+ {
347+ int Count { get; }
348+ void Add(TurboHTTP.Protocol.Cookies.CookieStoreEntry entry);
349+ void Clear();
350+ System.Collections.Generic.IReadOnlyList<TurboHTTP.Protocol.Cookies.CookieStoreEntry> GetAll();
351+ void Remove(string name, string domain, string path);
352+ }
353+ public enum SameSitePolicy
285354 {
286- void AddCookiesToRequest(System.Uri requestUri, ref System.Net.Http.HttpRequestMessage request);
287- void ProcessResponse(System.Uri requestUri, System.Net.Http.HttpResponseMessage response);
355+ Unspecified = 0,
356+ Strict = 1,
357+ Lax = 2,
358+ None = 3,
288359 }
289360}
0 commit comments