liboxen 0.46.7

Oxen is a fast, unstructured data version control, to help version large machine learning datasets written in Rust.
Documentation
use crate::api::client;
use crate::api::endpoint;
use crate::error::OxenError;
use crate::view::version::VersionResponse;
use crate::view::StatusMessage;

pub async fn get_remote_version(scheme: &str, host: &str) -> Result<String, OxenError> {
    let url = format!("{scheme}://{host}/api/version");
    log::debug!("Checking version at url {}", url);

    let client = client::new_for_url(&url)?;
    if let Ok(res) = client.get(&url).send().await {
        log::debug!("get_remote_version got status: {}", res.status());
        let body = client::parse_json_body(&url, res).await?;
        log::debug!("get_remote_version got body: {}", body);
        let response: Result<StatusMessage, serde_json::Error> = serde_json::from_str(&body);
        match response {
            Ok(val) => Ok(val.oxen_version.unwrap()),
            Err(_) => Err(OxenError::basic_str(format!(
                "api::version::get_remote_version {url} Err parsing response \n\n{body}"
            ))),
        }
    } else {
        let err = format!("api::version::get_remote_version Err request failed: {url}");
        Err(OxenError::basic_str(err))
    }
}

pub async fn get_min_oxen_version(scheme: &str, host: &str) -> Result<String, OxenError> {
    let url = format!("{scheme}://{host}/api/min_version");
    log::debug!("Checking min cli version at url {}", url);

    let client = client::new_for_url(&url)?;
    if let Ok(res) = client.get(&url).send().await {
        log::debug!("get_remote_version got status: {}", res.status());
        let body = client::parse_json_body(&url, res).await?;
        log::debug!("get_remote_version got body: {}", body);
        let response: Result<VersionResponse, serde_json::Error> = serde_json::from_str(&body);
        match response {
            Ok(val) => Ok(val.version),
            Err(_) => Err(OxenError::basic_str(format!(
                "api::version::get_min_oxen_version {url} Err parsing response \n\n{body}"
            ))),
        }
    } else {
        let err = format!("api::version::get_min_oxen_version Err request failed: {url}");
        Err(OxenError::basic_str(err))
    }
}