kjspkg-api 0.2.0

A simple and ergonomic API client for KJSPKG.
Documentation
use super::{ApiHelper, VersionApi};
use crate::models::PackageVersion;
use eyre::Result;
use tokio::runtime::Handle;

impl VersionApi {
    pub async fn get(&self) -> Result<PackageVersion> {
        Ok(self
            .client
            .get(self.url(format!(
                "packages/{}/versions/{}",
                self.package, self.version
            ))?)
            .send()
            .await?
            .json()
            .await?)
    }

    pub fn get_sync(&self, rt: &Handle) -> Result<PackageVersion> {
        Ok(rt.block_on(
            rt.block_on(
                self.client
                    .get(self.url(format!(
                        "packages/{}/versions/{}",
                        self.package, self.version
                    ))?)
                    .send(),
            )?
            .json(),
        )?)
    }

    pub async fn download(&self) -> Result<Vec<u8>> {
        Ok(self
            .client
            .get(self.url(format!(
                "packages/{}/versions/{}/download",
                self.package, self.version
            ))?)
            .send()
            .await?
            .bytes()
            .await?
            .to_vec())
    }

    pub fn download_sync(&self, rt: &Handle) -> Result<Vec<u8>> {
        Ok(rt
            .block_on(
                rt.block_on(
                    self.client
                        .get(self.url(format!(
                            "packages/{}/versions/{}/download",
                            self.package, self.version
                        ))?)
                        .send(),
                )?
                .bytes(),
            )?
            .to_vec())
    }
}