wrangler/http/
legacy.rs

1use reqwest::blocking::{Client, ClientBuilder};
2use reqwest::header::{HeaderMap, HeaderValue};
3use reqwest::redirect::Policy;
4use std::time::Duration;
5
6use crate::http::{feature::headers, Feature, DEFAULT_HTTP_TIMEOUT_SECONDS};
7use crate::settings::global_user::GlobalUser;
8
9// TODO: remove this and replace it entirely with cloudflare-rs
10pub fn client() -> Client {
11    builder()
12        .default_headers(headers(None))
13        .build()
14        .expect("could not create http client")
15}
16
17pub fn legacy_auth_client(user: &GlobalUser) -> Client {
18    get_client(user, None)
19}
20
21pub fn featured_legacy_auth_client(user: &GlobalUser, feature: Feature) -> Client {
22    get_client(user, Some(feature))
23}
24
25fn get_client(user: &GlobalUser, feature: Option<Feature>) -> Client {
26    let mut headers = headers(feature);
27    add_auth_headers(&mut headers, user);
28
29    builder()
30        .default_headers(headers)
31        .redirect(Policy::none())
32        .build()
33        .expect("could not create authenticated http client")
34}
35
36fn builder() -> ClientBuilder {
37    let builder = reqwest::blocking::Client::builder();
38    builder
39        .connect_timeout(Duration::from_secs(10))
40        .timeout(Duration::from_secs(DEFAULT_HTTP_TIMEOUT_SECONDS))
41}
42
43fn add_auth_headers(headers: &mut HeaderMap, user: &GlobalUser) {
44    match user {
45        GlobalUser::ApiTokenAuth { api_token } => {
46            headers.insert(
47                "Authorization",
48                HeaderValue::from_str(&format!("Bearer {}", &api_token)).unwrap(),
49            );
50        }
51        GlobalUser::OAuthTokenAuth {
52            oauth_token,
53            refresh_token: _,
54            expiration_time: _,
55        } => {
56            headers.insert(
57                "Authorization",
58                HeaderValue::from_str(&format!("Bearer {}", &oauth_token)).unwrap(),
59            );
60        }
61        GlobalUser::GlobalKeyAuth { email, api_key } => {
62            headers.insert("X-Auth-Email", HeaderValue::from_str(email).unwrap());
63            headers.insert("X-Auth-Key", HeaderValue::from_str(api_key).unwrap());
64        }
65    }
66}