From 7dec8f76fe1f72829f02b972c850e59e28b7d858 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Sat, 30 Jan 2021 16:06:04 +0100 Subject: [PATCH] Add medium client --- src/backend/client/mediums.rs | 27 +++++++++++++++++++++++++++ src/backend/client/mod.rs | 3 +++ src/meson.build | 1 + 3 files changed, 31 insertions(+) create mode 100644 src/backend/client/mediums.rs diff --git a/src/backend/client/mediums.rs b/src/backend/client/mediums.rs new file mode 100644 index 0000000..86a1028 --- /dev/null +++ b/src/backend/client/mediums.rs @@ -0,0 +1,27 @@ +use super::Backend; +use crate::database::Medium; +use anyhow::Result; + +impl Backend { + /// Get all available mediums from the server, that contain the specified + /// recording. + pub async fn get_mediums_for_recording(&self, recording_id: &str) -> Result> { + let body = self.get(&format!("recordings/{}/mediums", recording_id)).await?; + let mediums: Vec = serde_json::from_str(&body)?; + Ok(mediums) + } + + /// Get all available mediums from the server, that match the specified + /// DiscID. + pub async fn get_mediums_by_discid(&self, discid: &str) -> Result> { + let body = self.get(&format!("discids/{}/mediums", discid)).await?; + let mediums: Vec = serde_json::from_str(&body)?; + Ok(mediums) + } + + /// Post a new medium to the server. + pub async fn post_medium(&self, data: &Medium) -> Result<()> { + self.post("mediums", serde_json::to_string(data)?).await?; + Ok(()) + } +} diff --git a/src/backend/client/mod.rs b/src/backend/client/mod.rs index 51d55bf..34cfbc2 100644 --- a/src/backend/client/mod.rs +++ b/src/backend/client/mod.rs @@ -13,6 +13,9 @@ pub use ensembles::*; pub mod instruments; pub use instruments::*; +pub mod mediums; +pub use mediums::*; + pub mod persons; pub use persons::*; diff --git a/src/meson.build b/src/meson.build index 0091060..f708860 100644 --- a/src/meson.build +++ b/src/meson.build @@ -35,6 +35,7 @@ run_command( sources = files( 'backend/client/ensembles.rs', 'backend/client/instruments.rs', + 'backend/client/mediums.rs', 'backend/client/mod.rs', 'backend/client/persons.rs', 'backend/client/recordings.rs',