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:
1 parent
ee1719af92
commit
3f931e8409
1 file changed
+22
-2
@@ -9,7 +9,8 @@ use headers::{ContentType, Header};
|
|||||||
use http::{response::Parts, Extensions, HeaderMap, HeaderName, HeaderValue, Method, StatusCode};
|
use http::{response::Parts, Extensions, HeaderMap, HeaderName, HeaderValue, Method, StatusCode};
|
||||||
use send_wrapper::SendWrapper;
|
use send_wrapper::SendWrapper;
|
||||||
use serde::{de::DeserializeOwned, Serialize};
|
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;
|
use url::Url;
|
||||||
|
|
||||||
pub static GLOBAL_REQUEST_CLIENT: OnceLock<reqwest::Client> = OnceLock::new();
|
pub static GLOBAL_REQUEST_CLIENT: OnceLock<reqwest::Client> = OnceLock::new();
|
||||||
@@ -49,10 +50,12 @@ impl ClientRequest {
|
|||||||
.parse()
|
.parse()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
let headers = get_request_headers();
|
||||||
|
|
||||||
ClientRequest {
|
ClientRequest {
|
||||||
method,
|
method,
|
||||||
url,
|
url,
|
||||||
headers: HeaderMap::new(),
|
headers,
|
||||||
extensions: Extensions::new(),
|
extensions: Extensions::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -505,6 +508,23 @@ pub fn get_server_url() -> &'static str {
|
|||||||
|
|
||||||
static ROOT_URL: OnceLock<&'static str> = OnceLock::new();
|
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 {
|
pub trait ClientResponseDriver {
|
||||||
fn status(&self) -> StatusCode;
|
fn status(&self) -> StatusCode;
|
||||||
fn headers(&self) -> &HeaderMap;
|
fn headers(&self) -> &HeaderMap;
|
||||||
|
|||||||
Reference in new issue
Block a user