mod auth;
mod crates;
mod organisations;
mod sessions;
mod ssh_key;
mod users;
use crate::RateLimit;
use axum::{
handler::Handler,
routing::{delete, get},
Router,
};
pub fn authenticated_routes(rate_limit: &RateLimit) -> Router {
Router::new()
.nest("/organisations", organisations::routes(rate_limit))
.nest("/crates", crates::routes(rate_limit))
.nest("/users", users::routes(rate_limit))
.nest("/auth", auth::authenticated_routes(rate_limit))
.nest("/sessions", sessions::routes(rate_limit))
.route(
"/ssh-key",
get(ssh_key::handle_get.layer(rate_limit.with_cost(1)))
.put(ssh_key::handle_put.layer(rate_limit.with_cost(24))),
)
.route(
"/ssh-key/:id",
delete(ssh_key::handle_delete.layer(rate_limit.with_cost(24))),
)
}
pub fn unauthenticated_routes(rate_limit: &RateLimit) -> Router {
Router::new().nest("/auth", auth::unauthenticated_routes(rate_limit))
}