entertainarr-adapter-http 0.1.1

HTTP adapter for entertainarr
Documentation
use anyhow::Context;

use crate::entity::ApiResource;
use crate::entity::podcast_episode::{PodcastEpisodeDocument, PodcastEpisodeRelation};

impl super::Client {
    pub async fn podcast_episode_list(
        &self,
    ) -> anyhow::Result<ApiResource<Vec<PodcastEpisodeDocument>, PodcastEpisodeRelation>> {
        let Some(token) = self.token.as_deref() else {
            anyhow::bail!("unauthorized")
        };
        let url = format!("{}/api/podcast-episodes", self.base_url);
        let res = self
            .inner
            .get(&url)
            .query(&[("include", "podcast")])
            .header("Authorization", format!("Bearer {token}"))
            .send()
            .await
            .context("unable to send request")?;
        if let Err(err) = res.error_for_status_ref() {
            let body = res.text().await.context("unable to read payload body")?;
            Err(anyhow::Error::from(err).context(body))
        } else {
            res.json().await.context("unable to deserialize payload")
        }
    }
}