diff options
Diffstat (limited to 'pingora-proxy/src/proxy_trait.rs')
-rw-r--r-- | pingora-proxy/src/proxy_trait.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/pingora-proxy/src/proxy_trait.rs b/pingora-proxy/src/proxy_trait.rs index 00e54f4..e67a9f0 100644 --- a/pingora-proxy/src/proxy_trait.rs +++ b/pingora-proxy/src/proxy_trait.rs @@ -18,6 +18,7 @@ use pingora_cache::{ CacheKey, CacheMeta, ForcedInvalidationKind, RespCacheable::{self, *}, }; +use proxy_cache::range_filter::{self}; use std::time::Duration; /// The interface to control the HTTP proxy @@ -216,6 +217,23 @@ pub trait ProxyHttp { ) } + /// This filter is called when cache is enabled to determine what byte range to return (in both + /// cache hit and miss cases) from the response body. It is only used when caching is enabled, + /// otherwise the upstream is responsible for any filtering. It allows users to define the range + /// this request is for via its return type `range_filter::RangeType`. + /// + /// It also allow users to modify the response header accordingly. + /// + /// The default implementation can handle a single-range as per [RFC7232]. + fn range_header_filter( + &self, + req: &RequestHeader, + resp: &mut ResponseHeader, + _ctx: &mut Self::CTX, + ) -> range_filter::RangeType { + proxy_cache::range_filter::range_header_filter(req, resp) + } + /// Modify the request before it is sent to the upstream /// /// Unlike [Self::request_filter()], this filter allows to change the request headers to send |