mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-05-01 00:31:09 +00:00
feat(blahd): set Cache-Control
This commit is contained in:
parent
cd7d0f773f
commit
1a4980ebba
2 changed files with 20 additions and 9 deletions
|
@ -32,7 +32,7 @@ sha2 = "0.10"
|
||||||
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal", "sync", "time"] }
|
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal", "sync", "time"] }
|
||||||
tokio-stream = { version = "0.1", features = ["sync"] }
|
tokio-stream = { version = "0.1", features = ["sync"] }
|
||||||
toml = "0.8"
|
toml = "0.8"
|
||||||
tower-http = { version = "0.6", features = ["cors", "limit"] }
|
tower-http = { version = "0.6", features = ["cors", "limit", "set-header"] }
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
tracing-subscriber = "0.3"
|
tracing-subscriber = "0.3"
|
||||||
url = { version = "2", features = ["serde"] }
|
url = { version = "2", features = ["serde"] }
|
||||||
|
|
|
@ -50,6 +50,12 @@ pub use middleware::ApiError;
|
||||||
pub(crate) const SERVER_AND_VERSION: &str = concat!("blahd/", env!("CARGO_PKG_VERSION"));
|
pub(crate) const SERVER_AND_VERSION: &str = concat!("blahd/", env!("CARGO_PKG_VERSION"));
|
||||||
const SERVER_SRC_URL: Option<&str> = option_env!("CFG_SRC_URL");
|
const SERVER_SRC_URL: Option<&str> = option_env!("CFG_SRC_URL");
|
||||||
|
|
||||||
|
const HEADER_PUBLIC_NO_CACHE: (HeaderName, HeaderValue) = (
|
||||||
|
header::CACHE_CONTROL,
|
||||||
|
HeaderValue::from_static("public, no-cache"),
|
||||||
|
);
|
||||||
|
const DEFAULT_CACHE_CONTROL: HeaderValue = HeaderValue::from_static("private, no-cache");
|
||||||
|
|
||||||
#[serde_inline_default]
|
#[serde_inline_default]
|
||||||
#[derive(Debug, Clone, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
#[serde(deny_unknown_fields)]
|
#[serde(deny_unknown_fields)]
|
||||||
|
@ -158,6 +164,12 @@ pub fn router(st: Arc<AppState>) -> Router {
|
||||||
.layer(tower_http::limit::RequestBodyLimitLayer::new(
|
.layer(tower_http::limit::RequestBodyLimitLayer::new(
|
||||||
st.config.max_request_len,
|
st.config.max_request_len,
|
||||||
))
|
))
|
||||||
|
.layer(
|
||||||
|
tower_http::set_header::SetResponseHeaderLayer::if_not_present(
|
||||||
|
header::CACHE_CONTROL,
|
||||||
|
DEFAULT_CACHE_CONTROL,
|
||||||
|
),
|
||||||
|
)
|
||||||
// NB. This comes at last (outmost layer), so inner errors will still be wrapped with
|
// NB. This comes at last (outmost layer), so inner errors will still be wrapped with
|
||||||
// correct CORS headers. Also `Authorization` must be explicitly included besides `*`.
|
// correct CORS headers. Also `Authorization` must be explicitly included besides `*`.
|
||||||
.layer(
|
.layer(
|
||||||
|
@ -176,15 +188,14 @@ type RE<T> = R<T, ApiError>;
|
||||||
|
|
||||||
async fn handle_server_metadata(State(st): ArcState) -> Response {
|
async fn handle_server_metadata(State(st): ArcState) -> Response {
|
||||||
let (json, etag) = st.server_metadata.clone();
|
let (json, etag) = st.server_metadata.clone();
|
||||||
|
let headers = [
|
||||||
(
|
(
|
||||||
[(
|
|
||||||
header::CONTENT_TYPE,
|
header::CONTENT_TYPE,
|
||||||
const { HeaderValue::from_static("application/json") },
|
const { HeaderValue::from_static("application/json") },
|
||||||
)],
|
),
|
||||||
etag,
|
HEADER_PUBLIC_NO_CACHE,
|
||||||
json,
|
];
|
||||||
)
|
(headers, etag, json).into_response()
|
||||||
.into_response()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn handle_ws(State(st): ArcState, ws: WebSocketUpgrade) -> Response {
|
async fn handle_ws(State(st): ArcState, ws: WebSocketUpgrade) -> Response {
|
||||||
|
@ -495,7 +506,7 @@ async fn room_get_feed<FT: feed::FeedType>(
|
||||||
self_url,
|
self_url,
|
||||||
next_url,
|
next_url,
|
||||||
});
|
});
|
||||||
Ok((ETag(Some(ret_etag)), resp).into_response())
|
Ok(([HEADER_PUBLIC_NO_CACHE], ETag(Some(ret_etag)), resp).into_response())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get room messages with pagination parameters,
|
/// Get room messages with pagination parameters,
|
||||||
|
|
Loading…
Add table
Reference in a new issue