diff --git a/edu-sync-cli/src/add.rs b/edu-sync-cli/src/add.rs index 1fb247c..b1a8dbe 100644 --- a/edu-sync-cli/src/add.rs +++ b/edu-sync-cli/src/add.rs @@ -49,7 +49,7 @@ impl Subcommand { .parse()? }; - let account_config = AccountConfig::new(self.url, token, self.path, self.lang).await; + let account_config = AccountConfig::new(self.url, token, self.path, self.lang).await?; let account = Account::new(account_config.id.clone(), token); account.save_token().unwrap(); let mut config = config_task.await??; diff --git a/edu-sync/src/config.rs b/edu-sync/src/config.rs index 7654081..a4c8be7 100644 --- a/edu-sync/src/config.rs +++ b/edu-sync/src/config.rs @@ -124,7 +124,12 @@ impl Display for AccountConfig { } impl AccountConfig { - pub async fn new(site_url: Url, token: Token, path: PathBuf, lang: Option) -> Self { + pub async fn new( + site_url: Url, + token: Token, + path: PathBuf, + lang: Option, + ) -> Result { let ws_client = ws::Client::new(util::shared_http(), &site_url, token, lang.clone()); let Info { site_url, @@ -132,19 +137,22 @@ impl AccountConfig { full_name, site_name, .. - } = ws_client.get_info().await.unwrap(); + } = ws_client.get_info().await.map_err(|err| match err { + ws::RequestError::WsError(err) => err, + ws::RequestError::HttpError(err) => Err(err).unwrap(), + })?; let id = Id { site_url, user_id, lang, }; - Self { + Ok(Self { user: full_name, site: site_name, id, path, courses: CourseConfigs(BTreeMap::new()), - } + }) } } diff --git a/edu-ws/src/ws.rs b/edu-ws/src/ws.rs index 07232a1..7d376cc 100644 --- a/edu-ws/src/ws.rs +++ b/edu-ws/src/ws.rs @@ -17,11 +17,14 @@ use crate::{ #[serde(tag = "errorcode")] pub enum Error { #[error("{message}")] - #[serde(rename = "invalidtoken")] - InvalidToken { message: String }, + #[serde(rename = "accessexception")] + AccessException { message: String }, #[error("{message}")] #[serde(rename = "errorcoursecontextnotvalid")] CourseContextNotValid { message: String }, + #[error("{message}")] + #[serde(rename = "invalidtoken")] + InvalidToken { message: String }, } #[derive(Error, Debug)]