summaryrefslogtreecommitdiff
path: root/src/setup
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-16 20:14:33 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-16 20:14:33 -0400
commitea74daca4809e4008dd8d01039db9fff3be659d9 (patch)
tree5972cabf646e8d5e635e9e2a176bff56c178461a /src/setup
parent56e16e29db55dae84549229d24b971f8bcf7da21 (diff)
Organizational pass on endpoints and routes.
Diffstat (limited to 'src/setup')
-rw-r--r--src/setup/routes/mod.rs9
-rw-r--r--src/setup/routes/post.rs (renamed from src/setup/routes.rs)34
2 files changed, 23 insertions, 20 deletions
diff --git a/src/setup/routes/mod.rs b/src/setup/routes/mod.rs
new file mode 100644
index 0000000..e1e1711
--- /dev/null
+++ b/src/setup/routes/mod.rs
@@ -0,0 +1,9 @@
+use axum::{routing::post, Router};
+
+use crate::app::App;
+
+mod post;
+
+pub fn router() -> Router<App> {
+ Router::new().route("/api/setup", post(post::handler))
+}
diff --git a/src/setup/routes.rs b/src/setup/routes/post.rs
index ff41734..9e6776f 100644
--- a/src/setup/routes.rs
+++ b/src/setup/routes/post.rs
@@ -2,44 +2,38 @@ use axum::{
extract::{Json, State},
http::StatusCode,
response::{IntoResponse, Response},
- routing::post,
- Router,
};
-use super::app;
use crate::{
- app::App, clock::RequestedAt, error::Internal, login::Password, token::extract::IdentityToken,
+ app::App, clock::RequestedAt, error::Internal, login::Password, setup::app,
+ token::extract::IdentityToken,
};
-pub fn router() -> Router<App> {
- Router::new().route("/api/setup", post(on_setup))
-}
-
-#[derive(serde::Deserialize)]
-struct SetupRequest {
- name: String,
- password: Password,
-}
-
-async fn on_setup(
+pub async fn handler(
State(app): State<App>,
RequestedAt(setup_at): RequestedAt,
identity: IdentityToken,
- Json(request): Json<SetupRequest>,
-) -> Result<(IdentityToken, StatusCode), SetupError> {
+ Json(request): Json<Request>,
+) -> Result<(IdentityToken, StatusCode), Error> {
let secret = app
.setup()
.initial(&request.name, &request.password, &setup_at)
.await
- .map_err(SetupError)?;
+ .map_err(Error)?;
let identity = identity.set(secret);
Ok((identity, StatusCode::NO_CONTENT))
}
+#[derive(serde::Deserialize)]
+pub struct Request {
+ pub name: String,
+ pub password: Password,
+}
+
#[derive(Debug)]
-struct SetupError(app::Error);
+pub struct Error(pub app::Error);
-impl IntoResponse for SetupError {
+impl IntoResponse for Error {
fn into_response(self) -> Response {
let Self(error) = self;
match error {