quilt-server 0.1.1

OpenAPI Quilt package server using the quilt-rs Rust library.
use poem::{listener::TcpListener, Route, Server};
use poem_openapi::{param::Query, OpenApi, OpenApiService, payload::Json};

mod quilt;
use quilt::manifest_from_uri;
use quilt::package_uri;

async fn message(name: String) -> String {
    let uri = package_uri(name);
    let manifest = manifest_from_uri(uri).await;
    let message = format!("Hello, world! {}", manifest.unwrap().rows.len());
    message
}
struct Api;

#[OpenApi]
impl Api {
    #[oai(path = "/example-package", method = "get")]
    async fn index(&self, package_name: Query<Option<String>>) -> Json<Vec<String>> {
        match package_name.0 {
            Some(name) => {
                Json(vec![message(name).await])
            },
            None => Json(vec!["hello!".to_string()]),
        }
    }


}

#[tokio::main]
async fn main() -> Result<(), std::io::Error> {
    if std::env::var_os("RUST_LOG").is_none() {
        std::env::set_var("RUST_LOG", "poem=debug");
    }
    tracing_subscriber::fmt::init();

    let api_service =
        OpenApiService::new(Api, "Hello World", "1.0").server("http://localhost:3000/api");
    let ui = api_service.swagger_ui();

    Server::new(TcpListener::bind("0.0.0.0:3000"))
        .run(Route::new()
        .nest("/api", api_service)
        .nest("/", ui))
        .await
}