use std::error::Error;
use reqwest::Method;
use crate::{
PatToken, PatTokenCreateRequest, PatTokenManager, PatTokenResult,
crud::error::DEVOPS_ERROR_MESSAGE,
};
impl PatTokenManager {
pub async fn create_pat_token(
&self,
create_request: PatTokenCreateRequest,
) -> Result<PatToken, Box<dyn Error>> {
let response = self
.base_request(Method::POST, &self.pat_url)
.json(&create_request)
.send()
.await?;
match response.error_for_status() {
Ok(response) => {
log::debug!("{:#?}", response);
let ct_result = response.json::<PatTokenResult>().await?;
Ok(ct_result.pat_token)
}
Err(e) => {
log::debug!("Error: {:#?}", e);
if let Some(status) = e.status()
&& status.is_client_error()
{
return Err::<PatToken, Box<dyn Error>>(DEVOPS_ERROR_MESSAGE.into());
}
Err::<PatToken, Box<dyn Error>>(Box::new(e))
}
}
}
}