quilt-server 0.1.1

OpenAPI Quilt package server using the quilt-rs Rust library.
use poem::Error;
use quilt_rs::browse_remote_package;
use quilt_rs::LocalDomain;
use quilt_rs::Manifest;
use quilt_rs::S3PackageURI;


pub fn package_uri(package_name: String) -> String {
    let url = format!("quilt+s3://quilt-example#package={}", package_name);
    url
}

pub async fn manifest_from_uri(uri_string: String) -> Result<Manifest, Error> {
    let path_buf = std::env::current_dir().unwrap();
    let local_domain = LocalDomain::new(path_buf);
    let uri = S3PackageURI::try_from(uri_string.as_str()).expect("Failed to parse URI");
    let manifest: Manifest = browse_remote_package(local_domain.into(), uri)
        .await
        .expect("Failed to browse remote package");
    println!("manifest: {:#?}", manifest);
    assert!(manifest.rows.len() > 0);
    manifest.rows.len();
    Ok(manifest)
}

#[cfg(test)]
mod tests {
    use super::*;

    #[tokio::test]
    async fn test_manifest_from_uri() {
        let uri = package_uri("akarve/test_dest".to_string());
        let manifest = manifest_from_uri(uri).await;
        assert!(manifest.is_ok());
    }
}