Files
managarr/src/network/readarr_network/mod.rs
T

76 lines
1.9 KiB
Rust

use anyhow::Result;
use log::info;
use super::{NetworkEvent, NetworkResource};
use crate::models::readarr_models::ReadarrSerdeable;
use crate::network::{Network, RequestMethod};
mod system;
#[cfg(test)]
#[path = "readarr_network_tests.rs"]
mod readarr_network_tests;
#[derive(Debug, Eq, PartialEq, Clone)]
pub enum ReadarrEvent {
GetDiskSpace,
GetHostConfig,
GetStatus,
HealthCheck,
}
impl NetworkResource for ReadarrEvent {
fn resource(&self) -> &'static str {
match &self {
ReadarrEvent::GetHostConfig => "/config/host",
ReadarrEvent::GetDiskSpace => "/diskspace",
ReadarrEvent::HealthCheck => "/health",
ReadarrEvent::GetStatus => "/system/status",
}
}
}
impl From<ReadarrEvent> for NetworkEvent {
fn from(readarr_event: ReadarrEvent) -> Self {
NetworkEvent::Readarr(readarr_event)
}
}
impl Network<'_, '_> {
pub async fn handle_readarr_event(
&mut self,
readarr_event: ReadarrEvent,
) -> Result<ReadarrSerdeable> {
match readarr_event {
ReadarrEvent::GetDiskSpace => self
.get_readarr_diskspace()
.await
.map(ReadarrSerdeable::from),
ReadarrEvent::GetHostConfig => self
.get_readarr_host_config()
.await
.map(ReadarrSerdeable::from),
ReadarrEvent::GetStatus => self.get_readarr_status().await.map(ReadarrSerdeable::from),
ReadarrEvent::HealthCheck => self
.get_readarr_healthcheck()
.await
.map(ReadarrSerdeable::from),
}
}
pub(in crate::network::readarr_network) async fn get_readarr_healthcheck(
&mut self,
) -> Result<()> {
info!("Performing Readarr health check");
let event = ReadarrEvent::HealthCheck;
let request_props = self
.request_props_from(event, RequestMethod::Get, None::<()>, None, None)
.await;
self
.handle_request::<(), ()>(request_props, |_, _| ())
.await
}
}