From deb0ebc5e9022190869b112e1a9fa0150b03e14e Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Fri, 20 Sep 2024 03:36:31 -0400 Subject: [PATCH] document endpoints --- .../web/storyteller_web/src/docs/api_doc.rs | 7 ++++++ .../endpoints/users/create_account_handler.rs | 25 +++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/crates/service/web/storyteller_web/src/docs/api_doc.rs b/crates/service/web/storyteller_web/src/docs/api_doc.rs index 3afc2a34a5..8bc9436211 100644 --- a/crates/service/web/storyteller_web/src/docs/api_doc.rs +++ b/crates/service/web/storyteller_web/src/docs/api_doc.rs @@ -133,6 +133,7 @@ use crate::http_server::endpoints::users::login_handler::*; use crate::http_server::endpoints::users::logout_handler::*; use crate::http_server::endpoints::users::session_info_handler::*; use crate::http_server::endpoints::users::create_account_from_google_sign_in_handler::*; +use crate::http_server::endpoints::users::create_account_handler::*; use crate::http_server::endpoints::users::session_token_info_handler::*; use crate::http_server::endpoints::voice_conversion::enqueue_voice_conversion_inference_handler::*; use crate::http_server::endpoints::voice_designer::inference::enqueue_tts_request::*; @@ -213,6 +214,7 @@ use crate::http_server::web_utils::response_success_helpers::*; crate::http_server::endpoints::moderation::user_feature_flags::edit_user_feature_flags_handler::edit_user_feature_flags_handler, crate::http_server::endpoints::prompts::get_prompt_handler::get_prompt_handler, crate::http_server::endpoints::service::status_alert_handler::status_alert_handler, + crate::http_server::endpoints::users::create_account_handler::create_account_handler, crate::http_server::endpoints::stats::get_unified_queue_stats_handler::get_unified_queue_stats_handler, crate::http_server::endpoints::tts::enqueue_infer_tts_handler::enqueue_infer_tts_handler::enqueue_infer_tts_handler, crate::http_server::endpoints::user_bookmarks::batch_get_user_bookmarks_handler::batch_get_user_bookmarks_handler, @@ -353,6 +355,11 @@ use crate::http_server::web_utils::response_success_helpers::*; GoogleCreateAccountRequest, GoogleCreateAccountErrorResponse, GoogleCreateAccountSuccessResponse, + GoogleCreateAccountErrorType, + CreateAccountRequest, + CreateAccountErrorResponse, + CreateAccountErrorType, + CreateAccountSuccessResponse, ChangeMediaFileEngineCategoryError, ChangeMediaFileEngineCategoryRequest, ChangeMediaFileVisibilityError, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/users/create_account_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/users/create_account_handler.rs index 96c31d8a44..5485d7d149 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/users/create_account_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/users/create_account_handler.rs @@ -12,7 +12,7 @@ use actix_web::error::ResponseError; use actix_web::http::StatusCode; use log::{info, warn}; use sqlx::MySqlPool; - +use utoipa::ToSchema; use actix_helpers::extractors::get_request_origin_uri::get_request_origin_uri; use http_server_common::request::get_request_ip::get_request_ip; use http_server_common::response::serialize_as_json_error::serialize_as_json_error; @@ -30,7 +30,7 @@ use crate::http_server::validations::validate_username::validate_username; use crate::util::email_to_gravatar::email_to_gravatar; use crate::util::enroll_in_studio::enroll_in_studio; -#[derive(Deserialize)] +#[derive(ToSchema, Deserialize)] pub struct CreateAccountRequest { pub username: String, pub password: String, @@ -38,7 +38,7 @@ pub struct CreateAccountRequest { pub email_address: String, } -#[derive(Serialize)] +#[derive(ToSchema, Serialize)] pub struct CreateAccountSuccessResponse { pub success: bool, @@ -48,14 +48,14 @@ pub struct CreateAccountSuccessResponse { pub signed_session: String, } -#[derive(Serialize, Debug)] +#[derive(ToSchema, Serialize, Debug)] pub struct CreateAccountErrorResponse { pub success: bool, pub error_type: CreateAccountErrorType, pub error_fields: HashMap, } -#[derive(Copy, Clone, Debug, Serialize)] +#[derive(ToSchema, Copy, Clone, Debug, Serialize)] pub enum CreateAccountErrorType { BadRequest, // Other request malformed errors, eg. bad Origin header BadInput, @@ -107,6 +107,21 @@ impl ResponseError for CreateAccountErrorResponse { } } +/// Create a new account with username and password +#[utoipa::path( + post, + tag = "Users", + path = "/v1/create_account", + responses( + (status = 200, description = "Success", body = CreateAccountSuccessResponse), + (status = 400, description = "Bad input", body = CreateAccountErrorResponse), + (status = 401, description = "Not authorized", body = CreateAccountErrorResponse), + (status = 500, description = "Server error", body = CreateAccountErrorResponse), + ), + params( + ("request" = CreateAccountRequest, description = "Payload for Request"), + ) +)] pub async fn create_account_handler( http_request: HttpRequest, request: web::Json,