turntable 0.0.1

Turntable is unpkg copy
Documentation
mod file;
mod meta_dir;
mod meta_file;
mod module;

use poem::{Request, Response};

use crate::{
  handlers::{
    file::serve_file, meta_dir::serve_directory_metadata, meta_file::serve_file_metadata,
    module::serve_module,
  },
  models::PackageQuery,
};

#[poem::handler]
pub async fn handle_pkg_pathname(query: PackageQuery, req: &Request) -> poem::Result<Response> {
  if query.meta.is_some() {
    return match req.uri().path().ends_with('/') {
      true => serve_directory_metadata(req).await,
      false => serve_file_metadata(req).await,
    };
  }

  if query.module.is_some() {
    return serve_module(req).await;
  }

  serve_file(req).await
}