use crate::client::{error::OctoClientError, server::model::CurrentUser, OctoClient};
use error_stack::{IntoReport, Result, ResultExt};
use serde::{Deserialize, Serialize};
impl OctoClient {
pub async fn get_current_user(&self) -> Result<CurrentUser, OctoClientError> {
let request = self
.get("/api/currentuser")?
.build()
.into_report()
.change_context(OctoClientError::BuildRequest)?;
let raw = self.execute(request).await?;
self.parse::<CurrentUser>(raw).await
}
pub async fn server_version(&self) -> Result<VersionInfo, OctoClientError> {
let request = self
.get("/api/version")?
.build()
.into_report()
.change_context(OctoClientError::BuildRequest)?;
let raw = self.execute(request).await?;
self.parse::<VersionInfo>(raw).await
}
pub async fn server_information(&self) -> Result<ServerInfo, OctoClientError> {
let request = self
.get("/api/server")?
.build()
.into_report()
.change_context(OctoClientError::BuildRequest)?;
let raw = self.execute(request).await?;
self.parse::<ServerInfo>(raw).await
}
}
#[derive(Serialize, Deserialize)]
pub struct VersionInfo {
pub api: String,
pub server: String,
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct ServerInfo {
pub version: String,
pub safemode: Option<SafeMode>,
}
#[derive(Serialize, Deserialize)]
pub enum SafeMode {
#[serde(rename = "settings")]
Settings,
#[serde(rename = "incomplete_startup")]
IncompleteStartup,
#[serde(rename = "flag")]
Flag,
NotSafeMode(bool),
}