Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions packages/fullstack/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -49,10 +50,12 @@ impl ClientRequest {
.parse()
.unwrap();

let headers = get_request_headers();

ClientRequest {
method,
url,
headers: HeaderMap::new(),
headers,
extensions: Extensions::new(),
}
}
Expand Down Expand Up @@ -499,6 +502,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;
Expand Down
Loading