use crate::client::{error::OctoClientError, OctoClient};
use error_stack::{IntoReport, Result, ResultExt};
use serde::{Deserialize, Serialize};
use super::model::{JobInfo, ProgressInfo};
impl OctoClient {
pub async fn current_job(&self) -> Result<JobInformationResponse, OctoClientError> {
let request = self
.get("/api/job")?
.build()
.into_report()
.change_context(OctoClientError::BuildRequest)?;
let raw = self.execute(request).await?;
self.parse::<JobInformationResponse>(raw).await
}
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(untagged)]
pub enum JobInformationResponse {
Online {
job: Box<JobInfo>,
progress: ProgressInfo,
state: String,
},
Offline {
state: String,
},
Error {
error: Option<String>,
},
Unknown,
}