Add some functions to read/write request header for server functions (#4823)

* Add some functions to read/write request header for server functions

* Use LazyLock<Mutex<_>> to allow rewriting and clearing request headers.
This commit is contained in:
Javier E. authored and GitHub committed 2025-10-30 18:54:14 -07:00
1 parent ee1719af92
commit 3f931e8409
1 file changed
+22 -2
+22 -2
View File
@@ -9,7 +9,8 @@ use headers::{ContentType, Header};
use http::{response::Parts, Extensions, HeaderMap, HeaderName, HeaderValue, Method, StatusCode};
use send_wrapper::SendWrapper;
use serde::{de::DeserializeOwned, Serialize};
use std::{fmt::Display, pin::Pin, prelude::rust_2024::Future, sync::OnceLock};
use std::sync::{LazyLock, Mutex, OnceLock};
use std::{fmt::Display, pin::Pin, prelude::rust_2024::Future};
use url::Url;
pub static GLOBAL_REQUEST_CLIENT: OnceLock<reqwest::Client> = OnceLock::new();
@@ -49,10 +50,12 @@ impl ClientRequest {
.parse()
.unwrap();
let headers = get_request_headers();
ClientRequest {
method,
url,
headers: HeaderMap::new(),
headers,
extensions: Extensions::new(),
}
}
@@ -505,6 +508,23 @@ pub fn get_server_url() -> &'static str {
static ROOT_URL: OnceLock<&'static str> = OnceLock::new();
/// Delete the extra request headers for all servers functions.
pub fn clear_request_headers() {
REQUEST_HEADERS.lock().unwrap().clear();
}
/// Set the extra request headers for all servers functions.
pub fn set_request_headers(headers: HeaderMap) {
*REQUEST_HEADERS.lock().unwrap() = headers;
}
/// Returns the extra request headers for all servers functions.
pub fn get_request_headers() -> HeaderMap {
REQUEST_HEADERS.lock().unwrap().clone()
}
static REQUEST_HEADERS: LazyLock<Mutex<HeaderMap>> = LazyLock::new(|| Mutex::new(HeaderMap::new()));
pub trait ClientResponseDriver {
fn status(&self) -> StatusCode;
fn headers(&self) -> &HeaderMap;