burn_central_client/user/
mod.rs1pub mod response;
2
3use reqwest::header::SET_COOKIE;
4
5use crate::{
6 BurnCentralCredentials, Client, ClientError,
7 client::ResponseExt,
8 user::response::{GetUserOrganizationsResponse, UserResponseSchema},
9};
10
11impl Client {
12 pub fn login(&self, credentials: &BurnCentralCredentials) -> Result<String, ClientError> {
14 let url = self.join("login/api-key");
15
16 let form = self
17 .http_client
18 .post(url)
19 .form::<BurnCentralCredentials>(credentials);
20
21 tracing::debug!("Requesting login form: {form:?}");
22
23 let res = form.send()?.map_to_burn_central_err()?;
24
25 let cookie_header = res.headers().get(SET_COOKIE);
26 if let Some(cookie) = cookie_header {
27 let cookie_str = cookie
28 .to_str()
29 .expect("Session cookie should be able to convert to str");
30 Ok(cookie_str.to_string())
31 } else {
32 Err(ClientError::BadSessionId)
33 }
34 }
35
36 pub fn get_current_user(&self) -> Result<UserResponseSchema, ClientError> {
37 let url = self.join("user");
38
39 self.get_json::<UserResponseSchema>(url)
40 }
41
42 pub fn get_user_organizations(&self) -> Result<GetUserOrganizationsResponse, ClientError> {
43 let url = self.join("user/organizations");
44
45 self.get_json(url)
46 }
47}