working login system

This commit is contained in:
grimhilt 2023-10-21 22:27:34 +02:00
parent 908ead5b11
commit f6db6992a0

View File

@ -12,9 +12,6 @@ use crate::utils::api::ApiProps;
use crate::commands::config; use crate::commands::config;
use crate::commands::clone::get_url_props; use crate::commands::clone::get_url_props;
use crate::services::request_manager::get_request_manager; use crate::services::request_manager::get_request_manager;
use crate::services::api_call::ApiCall;
use super::login::Login;
lazy_static! { lazy_static! {
static ref HTTP_TOKEN: Mutex<String> = Mutex::new(String::new()); static ref HTTP_TOKEN: Mutex<String> = Mutex::new(String::new());
@ -103,28 +100,17 @@ impl ApiBuilder {
self self
} }
fn set_auth(&mut self) -> &mut ApiBuilder { pub fn set_token(&mut self, token: String) {
// check .config match self.request.take() {
//let config_file = PathBuf::from("~/.nextsync/config"); None => {
//if config_file.exists() { eprintln!("fatal: incorrect request");
// std::process::exit(1);
//} else { },
// let res = Login::new() Some(req) => {
// .set_host(self.host.clone()) self.request = Some(req.bearer_auth(token));
// .ask_auth() }
// .send_with_err(); }
self.auth_set = true;
// if let Err(err) = res {
// eprintln!("fatal: authentification failed");
// std::process::exit(1);
// }
//}
//// todo if not exist
//dotenv().ok();
//let password = env::var("PASSWORD").unwrap();
//let username = env::var("USERNAME").unwrap();
self
} }
pub fn set_xml(&mut self, xml_payload: String) -> &mut ApiBuilder { pub fn set_xml(&mut self, xml_payload: String) -> &mut ApiBuilder {
@ -174,22 +160,28 @@ impl ApiBuilder {
self self
} }
pub fn send(&mut self, need_text: bool) -> Result<Option<String>, ApiError> { fn set_request_manager(&mut self) {
let mut request_manager = get_request_manager().lock().unwrap(); let mut request_manager = get_request_manager().lock().unwrap();
let request_manager = request_manager.as_mut().unwrap(); let request_manager = request_manager.as_mut().unwrap();
if !self.host.is_none() if !self.host.is_none()
{ {
request_manager.set_host(self.host.clone().unwrap()); request_manager.set_host(self.host.clone().unwrap().replace("https://", ""));
} }
if !self.auth_set { if !self.auth_set {
self.set_token(request_manager.get_token());
//self.set_auth(); //self.set_auth();
self.set_header("TOKEN", HeaderValue::from_str(&request_manager.get_token()).unwrap()); }
}
pub fn send(&mut self, need_text: bool) -> Result<Option<String>, ApiError> {
if !self.host.is_none() || !self.auth_set {
self.set_request_manager();
} }
let res = tokio::runtime::Runtime::new().unwrap().block_on(async {
tokio::runtime::Runtime::new().unwrap().block_on(async { match self.request.take() {
let res = match self.request.take() {
None => { None => {
eprintln!("fatal: incorrect request"); eprintln!("fatal: incorrect request");
std::process::exit(1); std::process::exit(1);
@ -197,24 +189,26 @@ impl ApiBuilder {
Some(req) => { Some(req) => {
if let Some(headers) = &self.headers { if let Some(headers) = &self.headers {
req.headers(headers.clone()) req.headers(headers.clone())
.send().await.map_err(ApiError::RequestError)? .send().await
} else { } else {
req.send().await.map_err(ApiError::RequestError)? req.send().await
} }
}, },
};
if res.status().is_success() {
if need_text {
let body = res.text().await.map_err(|err| ApiError::EmptyError(err))?;
Ok(Some(body))
} else {
Ok(None)
}
} else {
Err(ApiError::IncorrectRequest(res))
} }
}) }).map_err(ApiError::RequestError)?;
if res.status().is_success() {
if need_text {
let body = tokio::runtime::Runtime::new().unwrap().block_on(async {
res.text().await
}).map_err(|err| ApiError::EmptyError(err))?;
Ok(Some(body))
} else {
Ok(None)
}
} else {
Err(ApiError::IncorrectRequest(res))
}
} }
pub async fn old_send(&mut self) -> Result<Response, Error> { pub async fn old_send(&mut self) -> Result<Response, Error> {
@ -227,7 +221,7 @@ impl ApiBuilder {
if !self.auth_set { if !self.auth_set {
//self.set_auth(); //self.set_auth();
self.set_header("TOKEN", HeaderValue::from_str(&request_manager.get_token()).unwrap()); self.set_token(request_manager.get_token());
} }