document tts endpoint, add /v1/ mounted version

This commit is contained in:
Brandon Thomas committed 2024-04-03 13:20:45 -04:00
1 parent a648899dbf
commit dbe5b5af22
3 files changed
+36 -6

No files matched your search

@@ -39,6 +39,7 @@ use crate::http_server::endpoints::inference_job::get_inference_job_status::*;
use crate::http_server::endpoints::inference_job::terminate_inference_job_handler::*;
use crate::http_server::endpoints::media_files::batch_get_media_files_handler::*;
use crate::http_server::endpoints::media_files::change_media_file_visibility_handler::*;
use crate::http_server::endpoints::tts::enqueue_infer_tts_handler::enqueue_infer_tts_handler::*;
use crate::http_server::endpoints::media_files::delete_media_file::*;
use crate::http_server::endpoints::media_files::get_media_file::*;
use crate::http_server::endpoints::media_files::list::list_featured_media_files::*;
@@ -93,6 +94,7 @@ use crate::http_server::web_utils::response_success_helpers::*;
crate::http_server::endpoints::media_files::rename_media_file_handler::rename_media_file_handler,
crate::http_server::endpoints::media_files::upload::upload_engine_asset::upload_engine_asset_media_file_handler::upload_engine_asset_media_file_handler,
crate::http_server::endpoints::media_files::upload::upload_generic::upload_media_file_handler::upload_media_file_handler,
crate::http_server::endpoints::tts::enqueue_infer_tts_handler::enqueue_infer_tts_handler::enqueue_infer_tts_handler,
crate::http_server::endpoints::media_files::upload::upload_video::upload_video_media_file_handler::upload_video_media_file_handler,
crate::http_server::endpoints::media_files::upsert_write::write_engine_asset::write_engine_asset_media_file_handler::write_engine_asset_media_file_handler,
crate::http_server::endpoints::media_files::upsert_write::write_scene_file::write_scene_file_media_file_handler::write_scene_file_media_file_handler,
@@ -168,6 +170,10 @@ use crate::http_server::web_utils::response_success_helpers::*;
BatchGetUserBookmarksError,
BatchGetUserBookmarksQueryParams,
BatchGetUserBookmarksResponse,
InferTtsSuccessResponse,
InferTtsRequest,
InferenceJobTokenType,
InferTtsError,
BatchGetUserRatingError,
BatchGetUserRatingQueryParams,
BatchGetUserRatingResponse,
@@ -13,6 +13,7 @@ use log::{info, warn};
use r2d2_redis::redis::Commands;
use rand::Rng;
use rand::seq::SliceRandom;
use utoipa::ToSchema;
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobType;
@@ -64,7 +65,7 @@ const USER_NEWS_STORY_USER_TOKEN : &str = "U:XAWRARC1N89X6";
/// Safety guard against plans supporting too lengthy TTS inference text.
const MAX_TTS_LENGTH : usize = 10_000;
#[derive(Deserialize)]
#[derive(Deserialize, ToSchema)]
pub struct InferTtsRequest {
uuid_idempotency_token: String,
tts_model_token: String,
@@ -73,7 +74,7 @@ pub struct InferTtsRequest {
is_storyteller_demo: Option<bool>,
}
#[derive(Serialize)]
#[derive(Serialize, ToSchema)]
pub struct InferTtsSuccessResponse {
pub success: bool,
pub inference_job_token: String,
@@ -82,7 +83,7 @@ pub struct InferTtsSuccessResponse {
}
/// Tell the frontend how to deal with the tts queue.
#[derive(Serialize)]
#[derive(Serialize, ToSchema)]
pub enum InferenceJobTokenType {
/// Legacy TTS inference job
#[serde(rename = "legacy_tts")]
@@ -94,7 +95,7 @@ pub enum InferenceJobTokenType {
Generic,
}
#[derive(Debug)]
#[derive(Debug, ToSchema)]
pub enum InferTtsError {
BadInput(String),
NotAuthorized,
@@ -134,6 +135,22 @@ impl fmt::Display for InferTtsError {
}
}
#[utoipa::path(
post,
path = "/v1/tts/inference",
responses(
(
status = 200,
description = "Success response",
body = InferTtsSuccessResponse,
),
(status = 400, description = "Bad input", body = InferTtsError),
(status = 401, description = "Not authorized", body = InferTtsError),
(status = 429, description = "Rate limited", body = InferTtsError),
(status = 500, description = "Server error", body = InferTtsError)
),
params(("request" = InferTtsRequest, description = "Payload for Request"))
)]
pub async fn enqueue_infer_tts_handler(
http_request: HttpRequest,
request: web::Json<InferTtsRequest>,
@@ -8,6 +8,7 @@ use actix_helpers::route_builder::RouteBuilder;
use billing_component::default_routes::add_suggested_stripe_billing_routes;
use reusable_types::server_environment::ServerEnvironment;
use users_component::default_routes::add_suggested_api_v1_account_creation_and_session_routes;
use users_component::endpoints::create_account_handler::create_account_handler;
use users_component::endpoints::edit_profile_handler::edit_profile_handler;
use users_component::endpoints::get_profile_handler::get_profile_handler;
@@ -312,8 +313,14 @@ fn add_tts_routes<T, B> (app: App<T>) -> App<T>
InitError = (),
>,
{
app.service(
web::scope("/tts")
// NB(bt,2024-04-03): Newer /v1/tts/* routes don't have public use, but we'll start using it
app.service(web::resource("/v1/tts/inference")
.route(web::post().to(enqueue_infer_tts_handler))
.route(web::head().to(|| HttpResponse::Ok()))
)
// NB(bt,2024-04-03): Older root /tts/* routes should be drained of traffic. They are used in the Twitch Streamer API though.
.service(
web::scope("/tts")
.service(
web::resource("/upload")
.route(web::post().to(upload_tts_model_handler))