Add interface package. Start adding auth stuff for refreshing tokens.
This commit is contained in:
6
navidrome/src/client/auth.rs
Normal file
6
navidrome/src/client/auth.rs
Normal file
@ -0,0 +1,6 @@
|
||||
use async_trait::async_trait;
|
||||
|
||||
#[async_trait]
|
||||
pub trait Auth {
|
||||
fn login(&mut self) -> Result<(), reqwest::Error>;
|
||||
}
|
@ -5,6 +5,8 @@ use std::fmt::{Debug, Display, Formatter};
|
||||
pub struct NavidromeBuilder {
|
||||
base: Option<String>,
|
||||
token: Option<String>,
|
||||
username: Option<String>,
|
||||
password: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@ -26,6 +28,8 @@ impl NavidromeBuilder {
|
||||
return NavidromeBuilder {
|
||||
base: None,
|
||||
token: None,
|
||||
username: None,
|
||||
password: None,
|
||||
};
|
||||
}
|
||||
|
||||
@ -39,6 +43,16 @@ impl NavidromeBuilder {
|
||||
return self;
|
||||
}
|
||||
|
||||
pub fn username(&mut self, username: impl ToString) -> &mut NavidromeBuilder {
|
||||
self.username = Some(username.to_string());
|
||||
return self;
|
||||
}
|
||||
|
||||
pub fn password(&mut self, password: impl ToString) -> &mut NavidromeBuilder {
|
||||
self.password = Some(password.to_string());
|
||||
return self;
|
||||
}
|
||||
|
||||
pub fn build(&self) -> Result<Navidrome, NavidromeBuilderError> {
|
||||
let client = reqwest::ClientBuilder::new()
|
||||
.build()
|
||||
@ -50,10 +64,9 @@ impl NavidromeBuilder {
|
||||
.clone()
|
||||
.ok_or(NavidromeBuilderError::MissingParam)?,
|
||||
http: client,
|
||||
token: self
|
||||
.token
|
||||
.clone()
|
||||
.ok_or(NavidromeBuilderError::MissingParam)?,
|
||||
token: self.token.clone(),
|
||||
username: self.username.ok_or(NavidromeBuilderError::MissingParam)?,
|
||||
password: self.password.ok_or(NavidromeBuilderError::MissingParam)?,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,9 @@ pub type MediaResult<U> = Result<U, reqwest::Error>;
|
||||
pub struct Navidrome {
|
||||
base: String,
|
||||
http: reqwest::Client,
|
||||
token: String,
|
||||
token: Option<String>,
|
||||
username: String,
|
||||
password: String,
|
||||
}
|
||||
|
||||
impl QualifyPath for Navidrome {
|
||||
|
Reference in New Issue
Block a user