bhcli

"Strange's fork of n0tr1v's bhcli (onion)"
git clone https://git.dasho.dev/Strange/bhcli.git
Log | Files | Refs | README

commit fb0816f130e79e4fb3c6064ac30717b8608be09d
parent 94ee480c04a4e84423eeb30b82099b2665e9876f
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri,  7 Apr 2023 00:21:43 -0700

cleanup

Diffstat:
Msrc/main.rs | 68+++++++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 37 insertions(+), 31 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -213,7 +213,7 @@ struct LeChatPHPClient { base_client: BaseClient, guest_color: String, client: Client, - session: String, + session: Option<String>, config: LeChatPHPConfig, manual_captcha: bool, refresh_rate: u64, @@ -236,26 +236,30 @@ impl LeChatPHPClient { let mut attempt = 0; loop { match self.login() { - Err(LoginErr::KickedErr) | Err(LoginErr::RegErr) | Err(LoginErr::NicknameErr) | Err(LoginErr::UnknownErr) => { - log::error!("{}", e); - break; - }, - Err(LoginErr::CaptchaFailedSolveErr) => { - log::error!("{}", e); - continue; - }, - Err(LoginErr::CaptchaWgErr) | Err(LoginErr::CaptchaUsedErr) => {}, - Err(LoginErr::ServerDownErr) | Err(LoginErr::ServerDown500Err) => { - log::error!("{}", e); - }, - Err(LoginErr::Reqwest(err)) => { - if err.is_connect() { - log::error!("{}\nIs tor proxy enabled ?", err); - break; - } else if err.is_timeout() { - log::error!("timeout: {}", err); - } else { - log::error!("{}", err); + Err(e) => { + match e { + LoginErr::KickedErr | LoginErr::RegErr | LoginErr::NicknameErr | LoginErr::UnknownErr => { + log::error!("{}", e); + break; + }, + LoginErr::CaptchaFailedSolveErr => { + log::error!("{}", e); + continue; + }, + LoginErr::CaptchaWgErr | LoginErr::CaptchaUsedErr => {}, + LoginErr::ServerDownErr | LoginErr::ServerDown500Err => { + log::error!("{}", e); + }, + LoginErr::Reqwest(err) => { + if err.is_connect() { + log::error!("{}\nIs tor proxy enabled ?", err); + break; + } else if err.is_timeout() { + log::error!("timeout: {}", err); + } else { + log::error!("{}", err); + } + }, } }, Ok(()) => { @@ -271,7 +275,7 @@ impl LeChatPHPClient { if max_retry > 0 && attempt > max_retry { break; } - self.session = "".to_owned(); + self.session = None; let retry_in = Duration::from_secs(2); let mut msg = format!("retry login in {:?}, attempt: {}", retry_in, attempt); if max_retry > 0 { @@ -314,8 +318,8 @@ impl LeChatPHPClient { let client = self.client.clone(); let rx = Arc::clone(&self.rx); let full_url = format!("{}/{}", &self.config.url, &self.config.page_php); - let url = format!("{}?action=post&session={}", &full_url, self.session); - let session = self.session.clone(); + let session = self.session.clone().unwrap(); + let url = format!("{}?action=post&session={}", &full_url, &session); thread::spawn(move || loop { let rx = rx.lock().unwrap(); @@ -509,7 +513,7 @@ impl LeChatPHPClient { let client = self.client.clone(); let messages = Arc::clone(&messages); let users = Arc::clone(&users); - let session = self.session.clone(); + let session = self.session.clone().unwrap(); let username = self.base_client.username.clone(); let refresh_rate = self.refresh_rate.clone(); let base_url = self.config.url.clone(); @@ -739,7 +743,7 @@ impl LeChatPHPClient { fn login(&mut self) -> Result<(), LoginErr> { // If we provided a session, skip login process - if self.session != "" { + if self.session.is_some() { return Ok(()); } if self.chat_type == ClientType::BHC { @@ -761,15 +765,17 @@ impl LeChatPHPClient { return Err(LoginErr::CaptchaWgErr); } } - self.session = lechatphp::login( + self.session = Some(lechatphp::login( &self.client, &self.config.url, &self.config.page_php, &self.base_client.username, - &self.base_client.password, &self.guest_color, self.manual_captcha)?; + &self.base_client.password, &self.guest_color, self.manual_captcha)?); Ok(()) } fn logout(&mut self) -> anyhow::Result<()> { - lechatphp::logout(&self.client, &self.config.url, &self.config.page_php, &self.session)?; - self.session = "".to_owned(); + if let Some(session) = &self.session { + lechatphp::logout(&self.client, &self.config.url, &self.config.page_php, &session)?; + self.session = None; + } Ok(()) } @@ -1606,7 +1612,7 @@ fn new_default_le_chat_php_client(params: Params) -> LeChatPHPClient { }, max_login_retry: params.max_login_retry, guest_color: params.guest_color, - session: "".to_owned(), + session: None, client: params.client, manual_captcha: params.manual_captcha, refresh_rate: params.refresh_rate,