From 29b96b8dec3c9fc426dadd478b683a2976fc499a Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 23 Sep 2025 22:05:04 -0400 Subject: [PATCH] three routes packages --- .../src/http_server/routes/add_routes.rs | 104 +----------------- .../add_application_routes.rs | 52 +++++++++ .../add_control_plane_routes.rs | 0 .../add_credits_routes.rs | 0 .../add_generate_routes.rs | 0 .../add_stripe_artcraft_routes.rs | 0 .../add_subscription_routes.rs | 0 .../add_tts_routes.rs | 0 .../add_webhook_routes.rs | 0 .../featured_item_routes.rs | 0 .../{ => application_routes}/job_routes.rs | 0 .../media_files_routes.rs | 0 .../routes/application_routes/mod.rs | 16 +++ .../moderation_routes.rs | 0 .../{ => application_routes}/tag_routes.rs | 0 .../application_routes/user_rating_routes.rs | 37 +++++++ .../{ => application_routes}/user_routes.rs | 0 .../weights_routes.rs | 0 .../routes/legacy_routes/add_legacy_routes.rs | 8 ++ .../src/http_server/routes/mod.rs | 18 +-- .../src/http_server/routes/service_routes.rs | 44 ++++++++ 21 files changed, 166 insertions(+), 113 deletions(-) create mode 100644 crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_application_routes.rs rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/add_control_plane_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/add_credits_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/add_generate_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/add_stripe_artcraft_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/add_subscription_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/add_tts_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/add_webhook_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/featured_item_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/job_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/media_files_routes.rs (100%) create mode 100644 crates/service/web/storyteller_web/src/http_server/routes/application_routes/mod.rs rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/moderation_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/tag_routes.rs (100%) create mode 100644 crates/service/web/storyteller_web/src/http_server/routes/application_routes/user_rating_routes.rs rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/user_routes.rs (100%) rename crates/service/web/storyteller_web/src/http_server/routes/{ => application_routes}/weights_routes.rs (100%) create mode 100644 crates/service/web/storyteller_web/src/http_server/routes/service_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/add_routes.rs index 64d7de9280..8d3e8d863d 100644 --- a/crates/service/web/storyteller_web/src/http_server/routes/add_routes.rs +++ b/crates/service/web/storyteller_web/src/http_server/routes/add_routes.rs @@ -8,18 +8,12 @@ use actix_helpers::route_builder::RouteBuilder; use billing_component::default_routes::add_suggested_stripe_billing_routes; use reusable_types::server_environment::ServerEnvironment; -use crate::http_server::deprecated_endpoints::events::list_events::list_events_handler; use crate::http_server::endpoints::app_state::get_app_state_handler::get_app_state_handler; use crate::http_server::endpoints::comments::create_comment_handler::create_comment_handler; use crate::http_server::endpoints::comments::delete_comment_handler::delete_comment_handler; use crate::http_server::endpoints::comments::list_comments_handler::list_comments_handler; -use crate::http_server::endpoints::misc::default_route_404::default_route_404; -use crate::http_server::endpoints::misc::detect_locale_handler::detect_locale_handler; -use crate::http_server::endpoints::misc::root_index::get_root_index; use crate::http_server::endpoints::prompts::create_prompt_handler::create_prompt_handler; use crate::http_server::endpoints::prompts::get_prompt_handler::get_prompt_handler; -use crate::http_server::endpoints::service::health_check_handler::get_health_check_handler; -use crate::http_server::endpoints::service::public_info_handler::get_public_info_handler; use crate::http_server::endpoints::service::status_alert_handler::status_alert_handler; use crate::http_server::endpoints::stats::get_unified_queue_stats_handler::get_unified_queue_stats_handler; use crate::http_server::endpoints::user_bookmarks::batch_get_user_bookmarks_handler::batch_get_user_bookmarks_handler; @@ -27,27 +21,12 @@ use crate::http_server::endpoints::user_bookmarks::create_user_bookmark_handler: use crate::http_server::endpoints::user_bookmarks::delete_user_bookmark_handler::delete_user_bookmark_handler; use crate::http_server::endpoints::user_bookmarks::list_user_bookmarks_for_entity_handler::list_user_bookmarks_for_entity_handler; use crate::http_server::endpoints::user_bookmarks::list_user_bookmarks_for_user_handler::list_user_bookmarks_for_user_handler; -use crate::http_server::endpoints::user_ratings::batch_get_user_rating_handler::batch_get_user_rating_handler; -use crate::http_server::endpoints::user_ratings::get_user_rating_handler::get_user_rating_handler; -use crate::http_server::endpoints::user_ratings::set_user_rating_handler::set_user_rating_handler; use crate::http_server::endpoints::voice_conversion::enqueue_seed_vc_inference_handler::enqueue_infer_seed_vc_handler; use crate::http_server::endpoints::voice_conversion::enqueue_voice_conversion_inference_handler::enqueue_voice_conversion_inference_handler; use crate::http_server::endpoints::voice_conversion::list_voice_conversion_models_handler::list_voice_conversion_models_handler; -use crate::http_server::routes::add_control_plane_routes::add_control_plane_routes; -use crate::http_server::routes::add_credits_routes::add_credits_routes; -use crate::http_server::routes::add_generate_routes::add_generate_routes; -use crate::http_server::routes::add_stripe_artcraft_routes::add_stripe_artcraft_routes; -use crate::http_server::routes::add_subscription_routes::add_subscription_routes; -use crate::http_server::routes::add_tts_routes::add_tts_routes; -use crate::http_server::routes::add_webhook_routes::add_webhook_routes; -use crate::http_server::routes::featured_item_routes::add_featured_item_routes; -use crate::http_server::routes::job_routes::add_job_routes; +use crate::http_server::routes::application_routes::add_application_routes::add_application_routes; use crate::http_server::routes::legacy_routes::add_legacy_routes::add_legacy_routes; -use crate::http_server::routes::media_files_routes::add_media_file_routes; -use crate::http_server::routes::moderation_routes::add_moderator_routes; -use crate::http_server::routes::tag_routes::add_tag_routes; -use crate::http_server::routes::user_routes::add_user_routes; -use crate::http_server::routes::weights_routes::add_weights_routes; +use crate::http_server::routes::service_routes::add_service_routes; pub fn add_routes (app: App, server_environment: ServerEnvironment) -> App where @@ -60,25 +39,9 @@ pub fn add_routes (app: App, server_environment: ServerEnvironment) -> InitError = (), >, { - let mut app = add_moderator_routes(app); // /moderation - - app = add_legacy_routes(app); // various routes, mostly deprecated - - app = add_user_routes(app); // /create_account, /session, /login, /logout, etc. - app = add_tts_routes(app); // /tts - app = add_web_vc_routes(app); // /v1/voice_conversion - app = add_media_file_routes(app); // /v1/media_files/... - app = add_user_rating_routes(app); // /v1/user_rating/... - app = add_featured_item_routes(app); // /v1/featured_item/... - app = add_subscription_routes(app); // /v1/subscriptions/... - app = add_weights_routes(app); - app = add_tag_routes(app); // /v1/tags - app = add_job_routes(app); - app = add_control_plane_routes(app); // /v1/control_plane/... - app = add_generate_routes(app); // /v1/generate/... - app = add_webhook_routes(app); // /v1/webhooks/... - app = add_stripe_artcraft_routes(app); // /v1/stripe_artcraft/... - app = add_credits_routes(app); // /v1/credits/... + let mut app = add_legacy_routes(app); // various legacy routes, mostly deprecated + app = add_application_routes(app); // Primary product service area routes + app = add_service_routes(app); // Essential service routes (status, health, info, etc.) // app = add_image_gen_routes(app); @@ -132,33 +95,7 @@ pub fn add_routes (app: App, server_environment: ServerEnvironment) -> app = add_suggested_stripe_billing_routes(app); // /stripe, billing, webhooks, etc. - // ==================== SERVICE ==================== - app.service( - web::resource("/_status") - .route(web::get().to(get_health_check_handler)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - .service( - web::resource("/server_info") // NB/TODO(bt,2023-01-21): Couldn't scope to /v1/, actix routing table might not like collision - .route(web::get().to(get_public_info_handler)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - // ==================== MISC ==================== - .service( - web::resource("/events") - .route(web::get().to(list_events_handler)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - .service( - web::resource("/detect_locale") - .route(web::get().to(detect_locale_handler)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - .service(web::resource("/") - .route(web::get().to(get_root_index)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - .default_service( web::route().to(default_route_404)) + app } @@ -196,32 +133,3 @@ fn add_web_vc_routes (app: App) -> App ) } -// ==================== USER RATING ROUTES ==================== - -fn add_user_rating_routes (app: App) -> App - where - B: MessageBody, - T: ServiceFactory< - ServiceRequest, - Config = (), - Response = ServiceResponse, - Error = Error, - InitError = (), - >, -{ - app.service(web::scope("/v1/user_rating") - .service(web::resource("/batch") - .route(web::get().to(batch_get_user_rating_handler)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - .service(web::resource("/rate") - .route(web::post().to(set_user_rating_handler)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - .service(web::resource("/view/{entity_type}/{entity_token}") - .route(web::get().to(get_user_rating_handler)) - .route(web::head().to(|| HttpResponse::Ok())) - ) - ) -} - diff --git a/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_application_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_application_routes.rs new file mode 100644 index 0000000000..f2b2fc7fb5 --- /dev/null +++ b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_application_routes.rs @@ -0,0 +1,52 @@ +use crate::http_server::routes::application_routes::add_control_plane_routes::add_control_plane_routes; +use crate::http_server::routes::application_routes::add_credits_routes::add_credits_routes; +use crate::http_server::routes::application_routes::add_generate_routes::add_generate_routes; +use crate::http_server::routes::application_routes::add_stripe_artcraft_routes::add_stripe_artcraft_routes; +use crate::http_server::routes::application_routes::add_subscription_routes::add_subscription_routes; +use crate::http_server::routes::application_routes::add_tts_routes::add_tts_routes; +use crate::http_server::routes::application_routes::add_webhook_routes::add_webhook_routes; +use crate::http_server::routes::application_routes::featured_item_routes::add_featured_item_routes; +use crate::http_server::routes::application_routes::job_routes::add_job_routes; +use crate::http_server::routes::application_routes::media_files_routes::add_media_file_routes; +use crate::http_server::routes::application_routes::moderation_routes::add_moderator_routes; +use crate::http_server::routes::application_routes::tag_routes::add_tag_routes; +use crate::http_server::routes::application_routes::user_rating_routes::add_user_rating_routes; +use crate::http_server::routes::application_routes::user_routes::add_user_routes; +use crate::http_server::routes::application_routes::weights_routes::add_weights_routes; +use actix_http::body::MessageBody; +use actix_service::ServiceFactory; +use actix_web::dev::{ServiceRequest, ServiceResponse}; +use actix_web::{App, Error}; + +/// Add the core application routes. +pub fn add_application_routes (app: App) -> App +where + B: MessageBody, + T: ServiceFactory< + ServiceRequest, + Config = (), + Response = ServiceResponse, + Error = Error, + InitError = (), + >, +{ + + let mut app = add_moderator_routes(app); // /moderation + + app = add_user_routes(app); // /create_account, /session, /login, /logout, etc. + app = add_tts_routes(app); // /tts + app = add_media_file_routes(app); // /v1/media_files/... + app = add_featured_item_routes(app); // /v1/featured_item/... + app = add_subscription_routes(app); // /v1/subscriptions/... + app = add_weights_routes(app); + app = add_user_rating_routes(app); // /v1/user_rating/... + app = add_tag_routes(app); // /v1/tags + app = add_job_routes(app); + app = add_control_plane_routes(app); // /v1/control_plane/... + app = add_generate_routes(app); // /v1/generate/... + app = add_webhook_routes(app); // /v1/webhooks/... + app = add_stripe_artcraft_routes(app); // /v1/stripe_artcraft/... + app = add_credits_routes(app); // /v1/credits/... + + app +} diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_control_plane_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_control_plane_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/add_control_plane_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_control_plane_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_credits_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_credits_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/add_credits_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_credits_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_generate_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_generate_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_stripe_artcraft_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_stripe_artcraft_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/add_stripe_artcraft_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_stripe_artcraft_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_subscription_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_subscription_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/add_subscription_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_subscription_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_tts_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_tts_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/add_tts_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_tts_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_webhook_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_webhook_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/add_webhook_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/add_webhook_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/featured_item_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/featured_item_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/featured_item_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/featured_item_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/job_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/job_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/job_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/job_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/media_files_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/media_files_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/media_files_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/media_files_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/application_routes/mod.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/mod.rs new file mode 100644 index 0000000000..1490ba20be --- /dev/null +++ b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/mod.rs @@ -0,0 +1,16 @@ +pub (super) mod add_control_plane_routes; +pub (super) mod add_credits_routes; +pub (super) mod add_generate_routes; +pub (super) mod add_stripe_artcraft_routes; +pub (super) mod add_subscription_routes; +pub (super) mod add_tts_routes; +pub (super) mod add_webhook_routes; +pub (super) mod featured_item_routes; +pub (super) mod job_routes; +pub (super) mod media_files_routes; +pub (super) mod moderation_routes; +pub (super) mod tag_routes; +pub (super) mod user_routes; +pub (super) mod weights_routes; +pub mod add_application_routes; +pub (super) mod user_rating_routes; \ No newline at end of file diff --git a/crates/service/web/storyteller_web/src/http_server/routes/moderation_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/moderation_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/moderation_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/moderation_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/tag_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/tag_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/tag_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/tag_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/application_routes/user_rating_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/user_rating_routes.rs new file mode 100644 index 0000000000..d243fa5e2a --- /dev/null +++ b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/user_rating_routes.rs @@ -0,0 +1,37 @@ +use actix_http::body::MessageBody; +use actix_service::ServiceFactory; +use actix_web::dev::{ServiceRequest, ServiceResponse}; +use actix_web::error::Error; +use actix_web::{web, App, HttpResponse}; + +use crate::http_server::endpoints::user_ratings::batch_get_user_rating_handler::batch_get_user_rating_handler; +use crate::http_server::endpoints::user_ratings::get_user_rating_handler::get_user_rating_handler; +use crate::http_server::endpoints::user_ratings::set_user_rating_handler::set_user_rating_handler; + + +pub fn add_user_rating_routes (app: App) -> App +where + B: MessageBody, + T: ServiceFactory< + ServiceRequest, + Config = (), + Response = ServiceResponse, + Error = Error, + InitError = (), + >, +{ + app.service(web::scope("/v1/user_rating") + .service(web::resource("/batch") + .route(web::get().to(batch_get_user_rating_handler)) + .route(web::head().to(|| HttpResponse::Ok())) + ) + .service(web::resource("/rate") + .route(web::post().to(set_user_rating_handler)) + .route(web::head().to(|| HttpResponse::Ok())) + ) + .service(web::resource("/view/{entity_type}/{entity_token}") + .route(web::get().to(get_user_rating_handler)) + .route(web::head().to(|| HttpResponse::Ok())) + ) + ) +} diff --git a/crates/service/web/storyteller_web/src/http_server/routes/user_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/user_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/user_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/user_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/weights_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/application_routes/weights_routes.rs similarity index 100% rename from crates/service/web/storyteller_web/src/http_server/routes/weights_routes.rs rename to crates/service/web/storyteller_web/src/http_server/routes/application_routes/weights_routes.rs diff --git a/crates/service/web/storyteller_web/src/http_server/routes/legacy_routes/add_legacy_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/legacy_routes/add_legacy_routes.rs index 1942bda315..a026f32a8b 100644 --- a/crates/service/web/storyteller_web/src/http_server/routes/legacy_routes/add_legacy_routes.rs +++ b/crates/service/web/storyteller_web/src/http_server/routes/legacy_routes/add_legacy_routes.rs @@ -81,6 +81,7 @@ use actix_service::ServiceFactory; use actix_web::dev::{ServiceRequest, ServiceResponse}; use actix_web::error::Error; use actix_web::{web, App, HttpResponse}; +use crate::http_server::deprecated_endpoints::events::list_events::list_events_handler; pub fn add_legacy_routes (app: App) -> App where @@ -105,6 +106,7 @@ where app = add_voice_designer_routes(app); // /v1/voice_designer app = add_beta_key_routes(app); // /v1/beta_keys app = add_model_download_routes(app); + app = add_web_vc_routes(app); // /v1/voice_conversion app = add_studio_gen2_routes(app); app = add_image_studio_routes(app); app = add_workflow_routes(app); @@ -143,6 +145,12 @@ where .route(web::get().to(leaderboard_handler)) .route(web::head().to(|| HttpResponse::Ok())) ); + + let app = app.service( + web::resource("/events") + .route(web::get().to(list_events_handler)) + .route(web::head().to(|| HttpResponse::Ok())) + ); let app = app .service(enable_alpha_handler) diff --git a/crates/service/web/storyteller_web/src/http_server/routes/mod.rs b/crates/service/web/storyteller_web/src/http_server/routes/mod.rs index fa858cfc6a..4e3ca292ac 100644 --- a/crates/service/web/storyteller_web/src/http_server/routes/mod.rs +++ b/crates/service/web/storyteller_web/src/http_server/routes/mod.rs @@ -1,16 +1,4 @@ -mod add_control_plane_routes; -mod add_credits_routes; -mod add_generate_routes; -mod add_stripe_artcraft_routes; -mod add_subscription_routes; -mod add_webhook_routes; -mod job_routes; -mod media_files_routes; -mod moderation_routes; -mod tag_routes; -mod user_routes; -mod weights_routes; +pub (super) mod add_routes; +pub (super) mod application_routes; pub (super) mod legacy_routes; -pub mod add_routes; -mod add_tts_routes; -mod featured_item_routes; \ No newline at end of file +mod service_routes; \ No newline at end of file diff --git a/crates/service/web/storyteller_web/src/http_server/routes/service_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/service_routes.rs new file mode 100644 index 0000000000..a09867d7fe --- /dev/null +++ b/crates/service/web/storyteller_web/src/http_server/routes/service_routes.rs @@ -0,0 +1,44 @@ +use crate::http_server::endpoints::misc::default_route_404::default_route_404; +use crate::http_server::endpoints::misc::detect_locale_handler::detect_locale_handler; +use crate::http_server::endpoints::misc::root_index::get_root_index; +use crate::http_server::endpoints::service::health_check_handler::get_health_check_handler; +use crate::http_server::endpoints::service::public_info_handler::get_public_info_handler; +use actix_http::body::MessageBody; +use actix_service::ServiceFactory; +use actix_web::dev::{ServiceRequest, ServiceResponse}; +use actix_web::{web, App, Error, HttpResponse}; + +/// Add the core service routes. +pub fn add_service_routes (app: App) -> App +where + B: MessageBody, + T: ServiceFactory< + ServiceRequest, + Config = (), + Response = ServiceResponse, + Error = Error, + InitError = (), + >, +{ + app + .service( + web::resource("/_status") + .route(web::get().to(get_health_check_handler)) + .route(web::head().to(|| HttpResponse::Ok())) + ) + .service( + web::resource("/server_info") // NB/TODO(bt,2023-01-21): Couldn't scope to /v1/, actix routing table might not like collision + .route(web::get().to(get_public_info_handler)) + .route(web::head().to(|| HttpResponse::Ok())) + ) + .service( + web::resource("/detect_locale") + .route(web::get().to(detect_locale_handler)) + .route(web::head().to(|| HttpResponse::Ok())) + ) + .service(web::resource("/") + .route(web::get().to(get_root_index)) + .route(web::head().to(|| HttpResponse::Ok())) + ) + .default_service( web::route().to(default_route_404)) +}