1use crate::client::HingeClient;
2use crate::errors::HingeError;
3use crate::models::LoginTokens;
4use crate::storage::Storage;
5
6pub struct AuthApi<'a, S: Storage + Clone> {
7 pub(super) client: &'a mut HingeClient<S>,
8}
9
10impl<S: Storage + Clone> AuthApi<'_, S> {
11 pub async fn initiate_sms(&mut self) -> Result<(), HingeError> {
12 self.client.initiate_login().await
13 }
14
15 pub async fn submit_otp(&mut self, otp: &str) -> Result<LoginTokens, HingeError> {
16 self.client.submit_otp(otp).await
17 }
18
19 pub async fn submit_email_code(
20 &mut self,
21 case_id: &str,
22 email_code: &str,
23 ) -> Result<LoginTokens, HingeError> {
24 self.client.submit_email_code(case_id, email_code).await
25 }
26
27 pub fn load_tokens_secure(&mut self) -> Result<(), HingeError> {
28 self.client.load_tokens_secure()
29 }
30
31 pub async fn is_session_valid(&mut self) -> Result<bool, HingeError> {
32 self.client.is_session_valid().await
33 }
34}