spacetraders_client/client/
mod.rs1mod error;
2mod scheduler;
3mod send;
4mod utils;
5
6pub use error::{ClientError, RetryPolicy};
7pub use scheduler::{RequestPriority, RequestScheduler};
8pub use utils::{RequestActivitySnapshot, request_activity_snapshot};
9
10pub(crate) type PError<E> = progenitor_client::Error<E>;
11pub(crate) use utils::{classify_status, retry_after_from_headers};
12
13pub struct StClient {
14 pub(crate) base_url: String,
15 pub(crate) token: String,
16 pub(crate) scheduler: RequestScheduler,
17 pub(crate) http: reqwest::Client,
18 pub(crate) inner: crate::generated::Client,
19}
20
21impl StClient {
22 pub fn new(base_url: &str, token: String, scheduler: RequestScheduler) -> Self {
36 let base_url = base_url.trim_end_matches('/').to_string();
37 let inner = Self::build_inner(&base_url, &token);
38 Self {
39 base_url,
40 token,
41 scheduler,
42 http: reqwest::Client::new(),
43 inner,
44 }
45 }
46
47 fn build_inner(base_url: &str, token: &str) -> crate::generated::Client {
48 let mut headers = reqwest::header::HeaderMap::new();
49 headers.insert(
50 reqwest::header::AUTHORIZATION,
51 format!("Bearer {token}")
52 .parse()
53 .expect("invalid bearer token"),
54 );
55 let http = reqwest::Client::builder()
56 .default_headers(headers)
57 .build()
58 .expect("failed to build reqwest client");
59 crate::generated::Client::new_with_client(base_url, http)
60 }
61
62 pub fn set_token(&mut self, token: String) {
63 self.token = token.clone();
64 self.inner = Self::build_inner(&self.base_url, &token);
65 }
66
67 pub fn token(&self) -> &str {
68 &self.token
69 }
70}