use time::Duration;
use super::Client;
use crate::{
common::MediaAction,
error::Result,
requests::{inputs::InputId, media_inputs::Request},
responses::media_inputs as responses,
};
pub struct MediaInputs<'a> {
pub(super) client: &'a Client,
}
impl MediaInputs<'_> {
#[doc(alias = "GetMediaInputStatus")]
pub async fn status(&self, input: InputId<'_>) -> Result<responses::MediaStatus> {
self.client.send_message(Request::Status { input }).await
}
#[doc(alias = "SetMediaInputCursor")]
pub async fn set_cursor(&self, input: InputId<'_>, cursor: Duration) -> Result<()> {
self.client
.send_message(Request::SetCursor { input, cursor })
.await
}
#[doc(alias = "OffsetMediaInputCursor")]
pub async fn offset_cursor(&self, input: InputId<'_>, offset: Duration) -> Result<()> {
self.client
.send_message(Request::OffsetCursor { input, offset })
.await
}
#[doc(alias = "TriggerMediaInputAction")]
pub async fn trigger_action(&self, input: InputId<'_>, action: MediaAction) -> Result<()> {
self.client
.send_message(Request::TriggerAction { input, action })
.await
}
}