aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-server
diff options
context:
space:
mode:
Diffstat (limited to 'atuin-server')
-rw-r--r--atuin-server/src/router.rs25
-rw-r--r--atuin-server/src/settings.rs2
2 files changed, 18 insertions, 9 deletions
diff --git a/atuin-server/src/router.rs b/atuin-server/src/router.rs
index 9b525e05..08eea996 100644
--- a/atuin-server/src/router.rs
+++ b/atuin-server/src/router.rs
@@ -57,7 +57,7 @@ async fn teapot() -> impl IntoResponse {
(http::StatusCode::IM_A_TEAPOT, "☕")
}
pub fn router(postgres: Postgres, settings: Settings) -> Router {
- Router::new()
+ let routes = Router::new()
.route("/", get(handlers::index))
.route("/sync/count", get(handlers::history::count))
.route("/sync/history", get(handlers::history::list))
@@ -65,12 +65,19 @@ pub fn router(postgres: Postgres, settings: Settings) -> Router {
.route("/history", post(handlers::history::add))
.route("/user/:username", get(handlers::user::get))
.route("/register", post(handlers::user::register))
- .route("/login", post(handlers::user::login))
- .fallback(teapot.into_service())
- .layer(
- ServiceBuilder::new()
- .layer(TraceLayer::new_for_http())
- .layer(Extension(postgres))
- .layer(Extension(settings)),
- )
+ .route("/login", post(handlers::user::login));
+
+ let path = settings.path.as_str();
+ if path.is_empty() {
+ routes
+ } else {
+ Router::new().nest(path, routes)
+ }
+ .fallback(teapot.into_service())
+ .layer(
+ ServiceBuilder::new()
+ .layer(TraceLayer::new_for_http())
+ .layer(Extension(postgres))
+ .layer(Extension(settings)),
+ )
}
diff --git a/atuin-server/src/settings.rs b/atuin-server/src/settings.rs
index b0e07b71..8da0c0aa 100644
--- a/atuin-server/src/settings.rs
+++ b/atuin-server/src/settings.rs
@@ -11,6 +11,7 @@ pub const HISTORY_PAGE_SIZE: i64 = 100;
pub struct Settings {
pub host: String,
pub port: u16,
+ pub path: String,
pub db_uri: String,
pub open_registration: bool,
pub max_history_length: usize,
@@ -35,6 +36,7 @@ impl Settings {
.set_default("port", 8888)?
.set_default("open_registration", false)?
.set_default("max_history_length", 8192)?
+ .set_default("path", "")?
.add_source(
Environment::with_prefix("atuin")
.prefix_separator("_")