Compare commits

..
Author SHA1 Message Date
Brandon Thomas 8a0fa62cd7 jsonify actix handlers 2026-06-16 00:27:24 -04:00
242 changed files with 675 additions and 834 deletions
+3 -12
View File
@@ -19,18 +19,9 @@ Handlers in `storyteller_web` follow this structure:
### Session/Auth
Helpers live in `storyteller_web` under `http_server/web_utils/user_session/`. Each takes a
generic `mysql_executor: E` (any `sqlx::Executor`), so whether it reuses a connection or acquires
its own depends on the **argument you pass**:
- `require_user_session(http_request, session_checker, mysql_executor)` — require a logged-in user.
- `require_user_session_extended(...)` — same, with extra session detail.
- `require_moderator(http_request, session_checker, mysql_executor)` — admin-only endpoints.
PREFER passing an already-open connection (`&mut *conn`) so the helper reuses it. Passing
`&server_state.mysql_pool` makes it acquire a fresh connection — avoid that when the handler
already holds one (the double-acquire adds pool pressure; this crate has had pool-timeout
incidents). There is no `*_using_connection` variant — the reuse/acquire choice is the argument.
- `require_user_session_using_connection()` reuses an open DB connection (preferred)
- `require_user_session()` acquires its own connection (deprecated)
- `require_moderator()` for admin-only endpoints
### API Type Definitions
+4 -5
View File
@@ -7,11 +7,10 @@
- `#[macro_use] extern crate serde_derive;` is used in binary crates; library crates use `use serde_derive::{Serialize, Deserialize};`
- Never use `println!` or `eprintln!` outside of tests; use `log` crate macros (`info!`, `warn!`, `error!`, `debug!`, `trace!`) instead
- Use `anyhow::Result` / `AnyhowResult` for fallible functions in application code; new database queries should use `Result<T, sqlx::Error>` instead
- SQLx: MySQL queries belong in the `mysql_queries` crate. Do NOT write `sqlx::query!` /
`sqlx::query()` in application/service crates (e.g. `storyteller-web`, which has zero direct
SQLx queries) — add or reuse a function in `mysql_queries` and call it. The compile-time
`query!` / `query_as!` macro conventions for that crate are documented in
`crates/schema/database/mysql_queries/CLAUDE.md`.
- SQLx queries: prefer `sqlx::query!` and `sqlx::query_as!` compile-time checked macros over
runtime `sqlx::query()` / `sqlx::query_as()`. The macros catch SQL typos, column mismatches,
and type errors at build time. Use runtime queries only when assembling complicated
dynamic/branching queries that cannot be expressed as a compile-time macro.
- Enum Display/Debug: use `impl_enum_display_and_debug_using_to_str!` macro, not `derive_more::Display` (CLion doesn't understand it)
- Fields that are optional use the `maybe_` prefix: `maybe_creator_user_token`, `maybe_prompt_token`
- When implementing `fmt::Display` for error types, use the pattern: `write!(f, "{:?}", self)`
+1 -1
View File
@@ -58,7 +58,7 @@ artcraft/
- Rust with no minimum supported version
- Actix-web for HTTP services
- SQLx for MySQL and SQLite. MySQL queries belong in the `mysql_queries` crate, not in application/service crates like `storyteller-web` — call those query functions instead of embedding `sqlx::query!` / `sqlx::query()` in handlers. (Query-writing conventions live in `crates/schema/database/mysql_queries/CLAUDE.md`.)
- SQLx for MySQL and SQLite; prefer `sqlx::query!` / `sqlx::query_as!` compile-time checked macros over runtime `sqlx::query()` whenever possible
- A mix of wreq and reqwest for Rust HTTP clients
- Never use `println!` or `eprintln!` outside of tests; use `log` crate macros instead
- When two crates export the same type name, alias imports with a suffix: `use foo::Bar as BarFoo;`
+2 -15
View File
@@ -28,21 +28,8 @@ deprecated or only used when setting other HTTP headers, like cookies.
Prefer `CommonWebError` for new handlers unless you need custom error variants.
The session helpers (`require_user_session`, `require_user_session_extended`, `require_moderator`
in `http_server/web_utils/user_session/`) take a generic `mysql_executor` argument. Pass an
already-open connection (`&mut *conn`) so the helper reuses it; do NOT pass
`&server_state.mysql_pool` when the handler already holds a connection, since that self-acquires a
second one and adds pool pressure (this crate has had pool-timeout incidents). There is no
`require_user_session_using_connection` / `require_moderator_using_connection` — the
reuse-vs-acquire behavior is determined by the argument.
## Database Access
Do NOT write SQLx queries in this crate. `storyteller-web` contains **zero** direct SQLx queries —
all MySQL access goes through the `mysql_queries` crate. Add a function there (or reuse an existing
one) and call it from the handler; never embed `sqlx::query!` / `sqlx::query()` in a handler or
helper here. See `crates/schema/database/mysql_queries/CLAUDE.md` for the query-writing conventions
(compile-time `query!` / `query_as!` macros, offline cache, the `Args`/`Executor` pattern, etc.).
When a handler uses `require_user_session`, prefer `require_user_session_using_connection`
which reuses an existing DB connection.
## api_doc.rs
@@ -3,7 +3,7 @@ use actix_web::HttpRequest;
use redis_caching::redis_ttl_cache::RedisTtlCache;
use redis_common::redis_cache_keys::RedisCacheKeys;
use user_traits_component::traits::internal_session_cache_purge::InternalSessionCachePurge;
use crate::http_server::user_lookup::user_session::session_utils::session_checker::SessionChecker;
use crate::http_server::session::session_checker::SessionChecker;
pub struct InternalSessionCachePurgeImpl {
session_checker: SessionChecker,
@@ -1,4 +1,4 @@
use crate::http_server::user_lookup::user_session::session_utils::session_checker::SessionChecker;
use crate::http_server::session::session_checker::SessionChecker;
use actix_web::HttpRequest;
use async_trait::async_trait;
use chrono::Utc;
@@ -5,7 +5,7 @@ use server_environment::ServerEnvironment;
use crate::configs::plans::plan::Plan;
use crate::configs::plans::plan_list::{DEVELOPMENT_PREMIUM_PLANS_BY_SLUG, FREE_LOGGED_IN_PLAN, FREE_LOGGED_OUT_PLAN, LOYALTY_PLANS_BY_SLUG, PRODUCTION_PREMIUM_PLANS_BY_SLUG};
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
/// Look up the most appropriate plan for the session.
/// This will probably grow to include a lot of factors.
@@ -70,7 +70,7 @@ pub mod tests {
use crate::configs::plans::get_correct_plan_for_session::get_correct_plan_for_session;
use crate::configs::plans::plan_list::{ALL_PLANS_BY_SLUG, FREE_LOGGED_IN_PLAN, FREE_LOGGED_OUT_PLAN};
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::{UserSessionExtended, UserSessionSubscriptionPlan};
use crate::http_server::session::lookup::user_session_extended::{UserSessionExtended, UserSessionSubscriptionPlan};
#[test]
fn test_free_logged_out_plan() {
@@ -1,7 +1,7 @@
use std::fmt::{Display, Formatter};
use std::sync::Arc;
use crate::http_server::user_lookup::user_session::session_utils::session_checker_error::SessionCheckerError;
use crate::http_server::session::session_checker_error::SessionCheckerError;
use actix_artcraft::sessions::anonymous_visitor_tracking::avt_cookie_payload_error::AvtCookiePayloadError;
use actix_artcraft::sessions::user_sessions::http_user_session_payload_error::HttpUserSessionPayloadError;
use actix_http::StatusCode;
@@ -28,7 +28,7 @@ use tokens::tokens::voice_conversion_results::VoiceConversionResultToken;
use crate::configs::plans::get_correct_plan_for_session::get_correct_plan_for_session;
use crate::http_server::requests::request_headers::get_routing_tag_header::get_routing_tag_header;
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::state::server_state::ServerState;
@@ -10,7 +10,7 @@ use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest, HttpResponse};
use log::{info, warn};
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobType;
use enums::by_table::generic_inference_jobs::inference_model_type::InferenceModelType;
@@ -8,7 +8,7 @@ use actix_web::{web, HttpMessage, HttpRequest, HttpResponse};
use chrono::{DateTime, Utc};
use log::warn;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use enums::by_table::media_uploads::media_upload_type::MediaUploadType;
use enums::common::visibility::Visibility;
@@ -10,7 +10,7 @@ use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest, HttpResponse};
use log::{error, info, warn};
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobType;
use enums::by_table::generic_inference_jobs::inference_model_type::InferenceModelType;
@@ -28,7 +28,7 @@ use crate::http_server::requests::request_headers::get_routing_tag_header::get_r
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::user_lookup::user_session::require_user_session_extended::require_user_session_extended;
use crate::http_server::web_utils::user_session::require_user_session_extended::require_user_session_extended;
use crate::state::server_state::ServerState;
use crate::util::cleaners::empty_media_file_token_to_null::empty_media_file_token_to_null;
@@ -29,7 +29,7 @@ use crate::http_server::requests::request_headers::get_routing_tag_header::get_r
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::user_lookup::user_session::require_user_session_extended::require_user_session_extended;
use crate::http_server::web_utils::user_session::require_user_session_extended::require_user_session_extended;
use crate::state::server_state::ServerState;
use crate::util::cleaners::empty_media_file_token_to_null::empty_media_file_token_to_null;
@@ -36,7 +36,7 @@ use crate::http_server::deprecated_endpoints::workflows::enqueue::vst_common::vs
use crate::http_server::deprecated_endpoints::workflows::enqueue::vst_common::vst_response::VstSuccessResponse;
use crate::http_server::requests::request_headers::get_routing_tag_header::get_routing_tag_header;
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::state::server_state::ServerState;
use crate::util::allowed_video_style_transfer_access::allowed_video_style_transfer_access;
@@ -37,7 +37,7 @@ use crate::http_server::deprecated_endpoints::workflows::enqueue::vst_common::vs
use crate::http_server::requests::get_request_domain_branding::{get_request_domain_branding, DomainBranding};
use crate::http_server::requests::request_headers::get_routing_tag_header::get_routing_tag_header;
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::state::server_state::ServerState;
use crate::util::allowed_video_style_transfer_access::allowed_video_style_transfer_access;
@@ -32,7 +32,7 @@ use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::configs::plans::plan_category::PlanCategory;
use crate::http_server::requests::request_headers::get_routing_tag_header::get_routing_tag_header;
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::state::server_state::ServerState;
use crate::util::allowed_video_style_transfer_access::allowed_video_style_transfer_access;
@@ -33,7 +33,7 @@ use crate::configs::plans::plan_category::PlanCategory;
use crate::http_server::deprecated_endpoints::workflows::coordinate_workflow_args::{coordinate_workflow_args, CoordinatedWorkflowArgs};
use crate::http_server::requests::request_headers::get_routing_tag_header::get_routing_tag_header;
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::state::server_state::ServerState;
use crate::util::allowed_video_style_transfer_access::allowed_video_style_transfer_access;
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest, HttpResponse};
use log::warn;
@@ -88,9 +87,9 @@ impl fmt::Display for LogBrowserSessionError {
)]
pub async fn log_browser_session_handler(
http_request: HttpRequest,
request: Json<LogBrowserSessionRequest>,
request: web::Json<LogBrowserSessionRequest>,
server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<LogBrowserSessionSuccessResponse>, LogBrowserSessionError>
) -> Result<web::Json<LogBrowserSessionSuccessResponse>, LogBrowserSessionError>
{
let mut mysql_connection = server_state.mysql_pool
.acquire()
@@ -132,6 +131,6 @@ pub async fn log_browser_session_handler(
log_token: token,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -10,8 +10,8 @@ use http_server_common::request::get_request_ip::get_request_ip;
use mysql_queries::queries::api_keys::insert_api_key::{insert_api_key, InsertApiKeyArgs};
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
use crate::util::generate_api_key::generate_api_key;
@@ -14,7 +14,7 @@ use mysql_queries::queries::api_keys::get_api_key_by_token::{
use tokens::tokens::api_keys::ApiKeyToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// Soft-delete an API key by `token`, scoped to the logged-in user.
@@ -14,7 +14,7 @@ use tokens::tokens::api_keys::ApiKeyToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::endpoints::api_keys::api_key_info_conversion::api_key_row_to_info;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// Fetch a single API key by its `token`, scoped to the logged-in user.
@@ -12,7 +12,7 @@ use mysql_queries::queries::api_keys::list_api_keys_for_user::{
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::endpoints::api_keys::api_key_info_conversion::api_key_row_to_info;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const DEFAULT_LIMIT: u32 = 100;
@@ -15,7 +15,7 @@ use mysql_queries::queries::api_keys::update_api_key::{update_api_key, UpdateApi
use tokens::tokens::api_keys::ApiKeyToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_DESCRIPTION_LEN: usize = 512;
@@ -1,4 +1,4 @@
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::{UserSessionExtended, UserSessionRoleAndPermissions};
use crate::http_server::session::lookup::user_session_extended::{UserSessionExtended, UserSessionRoleAndPermissions};
use enums::by_table::users::user_feature_flag::UserFeatureFlag;
use std::collections::BTreeSet;
use utoipa::ToSchema;
@@ -1,4 +1,4 @@
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use utoipa::ToSchema;
#[derive(Serialize, ToSchema)]
@@ -1,5 +1,5 @@
use crate::http_server::common_responses::user_details_lite::UserDefaultAvatarInfo;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_extended::UserSessionExtended;
use crate::http_server::session::lookup::user_session_extended::UserSessionExtended;
use tokens::tokens::users::UserToken;
use utoipa::ToSchema;
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use log::warn;
@@ -15,7 +14,7 @@ use mysql_queries::queries::users::user_profiles::get_user_profile_by_username::
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const MAXIMUM_KEYS : u32 = 100;
@@ -57,9 +56,9 @@ pub struct CreateBetaKeysSuccessResponse {
)]
pub async fn create_beta_keys_handler(
http_request: HttpRequest,
request: Json<CreateBetaKeysRequest>,
request: web::Json<CreateBetaKeysRequest>,
server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<CreateBetaKeysSuccessResponse>, CommonWebError>
) -> Result<web::Json<CreateBetaKeysSuccessResponse>, CommonWebError>
{
let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?;
@@ -107,6 +106,6 @@ pub async fn create_beta_keys_handler(
beta_keys,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpRequest};
@@ -15,7 +14,7 @@ use tokens::tokens::w2l_results::W2lResultToken;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// For the URL PathInfo
@@ -54,10 +53,10 @@ pub struct EditBetaKeyDistributedFlagSuccessResponse {
)]
pub async fn edit_beta_key_distributed_flag_handler(
http_request: HttpRequest,
request: Json<EditBetaKeyDistributedFlagRequest>,
request: web::Json<EditBetaKeyDistributedFlagRequest>,
path: Path<EditBetaKeyDistributedFlagPathInfo>,
server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<EditBetaKeyDistributedFlagSuccessResponse>, CommonWebError>
) -> Result<web::Json<EditBetaKeyDistributedFlagSuccessResponse>, CommonWebError>
{
let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?;
@@ -72,5 +71,5 @@ pub async fn edit_beta_key_distributed_flag_handler(
success: true,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpRequest};
@@ -14,7 +13,7 @@ use tokens::tokens::beta_keys::BetaKeyToken;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// For the URL PathInfo
@@ -53,10 +52,10 @@ pub struct EditBetaKeyNoteSuccessResponse {
)]
pub async fn edit_beta_key_note_handler(
http_request: HttpRequest,
request: Json<EditBetaKeyNoteRequest>,
request: web::Json<EditBetaKeyNoteRequest>,
path: Path<EditBetaKeyNotePathInfo>,
server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<EditBetaKeyNoteSuccessResponse>, CommonWebError>
) -> Result<web::Json<EditBetaKeyNoteSuccessResponse>, CommonWebError>
{
let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?;
@@ -76,5 +75,5 @@ pub async fn edit_beta_key_note_handler(
success: true,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Query;
use actix_web::{web, HttpRequest};
@@ -18,7 +17,7 @@ use tokens::tokens::beta_keys::BetaKeyToken;
use crate::http_server::common_responses::pagination_page::PaginationPage;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::common_responses::user_details_lite::UserDetailsLight;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
#[derive(Copy, Clone, Deserialize, ToSchema)]
@@ -108,7 +107,7 @@ pub async fn list_beta_keys_handler(
http_request: HttpRequest,
query: Query<ListBetaKeysQueryParams>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<ListBetaKeysSuccessResponse>, CommonWebError> {
) -> Result<web::Json<ListBetaKeysSuccessResponse>, CommonWebError> {
let user_session = require_user_session(&http_request, &server_state.session_checker, &server_state.mysql_pool)
.await?;
@@ -213,5 +212,5 @@ pub async fn list_beta_keys_handler(
}
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -1,12 +1,11 @@
use std::sync::Arc;
use actix_web::{web, HttpRequest};
use actix_web::web::Json;
use log::warn;
use utoipa::ToSchema;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use enums::by_table::beta_keys::beta_key_product::BetaKeyProduct;
use enums::by_table::users::user_feature_flag::UserFeatureFlag;
use http_server_common::request::get_request_ip::get_request_ip;
@@ -17,7 +16,7 @@ use mysql_queries::queries::users::user::update::set_user_feature_flags_transact
use mysql_queries::queries::users::user_sessions::get_user_session_by_token::SessionUserRecord;
use crate::http_server::web_utils::try_delete_session_cache::try_delete_session_cache;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
#[derive(Deserialize, ToSchema)]
@@ -49,9 +48,9 @@ pub struct RedeemBetaKeySuccessResponse {
)]
pub async fn redeem_beta_key_handler(
http_request: HttpRequest,
request: Json<RedeemBetaKeyRequest>,
request: web::Json<RedeemBetaKeyRequest>,
server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<RedeemBetaKeySuccessResponse>, CommonWebError>
) -> Result<web::Json<RedeemBetaKeySuccessResponse>, CommonWebError>
{
let user_session = require_user_session(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?;
@@ -91,7 +90,7 @@ pub async fn redeem_beta_key_handler(
success: true,
};
Ok(Json(response))
Ok(web::Json(response))
}
async fn enroll_in_studio(
@@ -10,7 +10,7 @@ use mysql_queries::queries::characters::delete_character::delete_character;
use mysql_queries::queries::characters::get_character_by_token_including_deleted::get_character_by_token_including_deleted;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// Delete a character.
@@ -11,7 +11,7 @@ use seedance2pro_client::creds::seedance2pro_session::Seedance2ProSession;
use seedance2pro_client::requests::update_character::update_character::{update_character, UpdateCharacterArgs};
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// Edit a character's name or description.
@@ -16,7 +16,7 @@ use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::common_responses::media::media_domain::MediaDomain;
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// List characters for the current session.
@@ -7,7 +7,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest, HttpResponse};
use log::warn;
@@ -96,9 +95,9 @@ impl fmt::Display for CreateCommentError {
)]
pub async fn create_comment_handler(
http_request: HttpRequest,
request: Json<CreateCommentRequest>,
request: web::Json<CreateCommentRequest>,
server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<CreateCommentSuccessResponse>, CreateCommentError>
) -> Result<web::Json<CreateCommentSuccessResponse>, CreateCommentError>
{
// NB(bt,2023-12-14): Kasisnu found that we're getting entity type mismatches in production. Apart from
// querying the database for entity existence, this is the next best way to prevent incorrect comment
@@ -189,5 +188,5 @@ pub async fn create_comment_handler(
comment_token,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -7,7 +7,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpRequest, HttpResponse};
@@ -90,9 +89,9 @@ impl fmt::Display for DeleteCommentError {
pub async fn delete_comment_handler(
http_request: HttpRequest,
path: Path<DeleteCommentPathInfo>,
request: Json<DeleteCommentRequest>,
request: web::Json<DeleteCommentRequest>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<SimpleGenericJsonSuccess>, DeleteCommentError> {
) -> Result<web::Json<SimpleGenericJsonSuccess>, DeleteCommentError> {
let mut mysql_connection = server_state.mysql_pool
.acquire()
.await
@@ -166,5 +165,5 @@ pub async fn delete_comment_handler(
}
};
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -7,7 +7,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpRequest, HttpResponse};
@@ -130,7 +129,7 @@ pub async fn list_comments_handler(
_http_request: HttpRequest,
path: Path<ListCommentsPathInfo>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<ListCommentsSuccessResponse>, ListCommentsError>
) -> Result<web::Json<ListCommentsSuccessResponse>, ListCommentsError>
{
let entity_token = CommentEntityToken::from_entity_type_and_token(
path.entity_type, &path.entity_token);
@@ -175,5 +174,5 @@ pub async fn list_comments_handler(
.collect(),
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest, HttpResponse};
use log::{info, warn};
@@ -70,8 +69,8 @@ impl fmt::Display for EnqueueGenericDownloadError {
pub async fn enqueue_generic_download_handler(
http_request: HttpRequest,
request: Json<EnqueueGenericDownloadRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<Json<EnqueueGenericDownloadSuccessResponse>, EnqueueGenericDownloadError>
request: web::Json<EnqueueGenericDownloadRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<web::Json<EnqueueGenericDownloadSuccessResponse>, EnqueueGenericDownloadError>
{
if let Err(_err) = server_state.redis_rate_limiters.model_upload.rate_limit_request(&http_request).await {
return Err(EnqueueGenericDownloadError::RateLimited);
@@ -151,5 +150,5 @@ pub async fn enqueue_generic_download_handler(
job_token: job_token.to_string(),
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpMessage, HttpRequest, HttpResponse};
@@ -88,7 +87,7 @@ impl fmt::Display for GetGenericDownloadJobStatusError {
pub async fn get_generic_download_job_status_handler(
http_request: HttpRequest,
path: Path<GetGenericDownloadJobStatusPathInfo>,
server_state: web::Data<Arc<ServerState>>) -> Result<Json<GetGenericDownloadJobStatusSuccessResponse>, GetGenericDownloadJobStatusError>
server_state: web::Data<Arc<ServerState>>) -> Result<web::Json<GetGenericDownloadJobStatusSuccessResponse>, GetGenericDownloadJobStatusError>
{
let maybe_job_status = get_generic_download_job_status(
&path.token,
@@ -143,5 +142,5 @@ pub async fn get_generic_download_job_status_handler(
state: model_for_response,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use log::{error, warn};
@@ -51,9 +50,9 @@ pub struct CreateFeaturedItemSuccessResponse {
)]
pub async fn create_featured_item_handler(
http_request: HttpRequest,
request: Json<CreateFeaturedItemRequest>,
request: web::Json<CreateFeaturedItemRequest>,
server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<CreateFeaturedItemSuccessResponse>, CommonWebError>
) -> Result<web::Json<CreateFeaturedItemSuccessResponse>, CommonWebError>
{
// NB(bt,2023-12-14): Kasisnu found that we're getting entity type mismatches in production. Apart from
// querying the database for entity existence, this is the next best way to prevent incorrect comment
@@ -164,5 +163,5 @@ pub async fn create_featured_item_handler(
success: true,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use log::{error, warn};
@@ -47,9 +46,9 @@ pub struct DeleteFeaturedItemRequest {
)]
pub async fn delete_featured_item_handler(
http_request: HttpRequest,
request: Json<DeleteFeaturedItemRequest>,
request: web::Json<DeleteFeaturedItemRequest>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError> {
) -> Result<web::Json<SimpleGenericJsonSuccess>, CommonWebError> {
// NB(bt,2023-12-14): Kasisnu found that we're getting entity type mismatches in production. Apart from
// querying the database for entity existence, this is the next best way to prevent incorrect comment
@@ -138,5 +137,5 @@ pub async fn delete_featured_item_handler(
}
};
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -17,7 +17,7 @@ use mysql_queries::queries::folders::folder::update_folder_color_code::{
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_COLOR_CODE_LEN: usize = 16;
@@ -23,7 +23,7 @@ use tokens::tokens::folders::FolderToken;
use tokens::tokens::media_files::MediaFileToken;
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// Set or clear the custom cover image on a folder.
@@ -17,7 +17,7 @@ use crate::http_server::endpoints::folders::folder::folder_info_conversion::{
build_folder_thumbnails_lookup, folder_row_to_info,
};
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_NAME_LEN: usize = 255;
@@ -12,7 +12,7 @@ use mysql_queries::queries::folders::folder::soft_delete_folder::{
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// Soft-delete a folder. Children retain their parent pointer and become
@@ -16,7 +16,7 @@ use crate::http_server::endpoints::folders::folder::folder_info_conversion::{
build_folder_thumbnails_lookup, folder_row_to_info,
};
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
/// Fetch a single folder owned by the logged-in user.
@@ -17,7 +17,7 @@ use crate::http_server::endpoints::folders::folder::folder_info_conversion::{
build_folder_thumbnails_lookup, folder_row_to_info,
};
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "folders_all";
@@ -17,7 +17,7 @@ use mysql_queries::queries::folders::folder::update_folder_name::{
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_NAME_LEN: usize = 255;
@@ -17,7 +17,7 @@ use mysql_queries::queries::folders::folder::update_folder_has_star::{
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
#[utoipa::path(
@@ -27,7 +27,7 @@ use mysql_queries::queries::folders::media_files::recompute_folder_last_media_fi
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_BULK: usize = 500;
@@ -30,7 +30,7 @@ use mysql_queries::queries::folders::media_files::recompute_folder_last_media_fi
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_BULK: usize = 500;
@@ -24,7 +24,7 @@ use tokens::tokens::folders::FolderToken;
use tokens::tokens::media_files::MediaFileToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_BULK: usize = 500;
@@ -32,7 +32,7 @@ use crate::http_server::common_responses::media::media_domain::MediaDomain;
use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails;
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "folder_mf";
@@ -25,7 +25,7 @@ use mysql_queries::queries::folders::subfolder::filter_existing_owned_folder_tok
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_BULK: usize = 500;
@@ -14,7 +14,7 @@ use mysql_queries::queries::folders::subfolder::bulk_clear_parent_folder::{
use tokens::tokens::folders::FolderToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const MAX_BULK: usize = 500;
@@ -21,7 +21,7 @@ use crate::http_server::endpoints::folders::folder::folder_info_conversion::{
build_folder_thumbnails_lookup, folder_row_to_info,
};
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "subfolders";
@@ -6,7 +6,7 @@ use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure;
use crate::http_server::endpoints::generate::common::map_seedance2pro_web_errors::map_seedance2pro_error_to_web_error;
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::http_server::web_utils::get_request_platform_type::get_request_platform_type;
use crate::state::server_state::ServerState;
@@ -3,7 +3,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use log::warn;
@@ -53,8 +52,8 @@ pub struct KillInferenceJobsResponse {
pub async fn kill_generic_inference_jobs_handler(
http_request: HttpRequest,
request: Json<KillInferenceJobsRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<Json<KillInferenceJobsResponse>, CommonWebError>
request: web::Json<KillInferenceJobsRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<web::Json<KillInferenceJobsResponse>, CommonWebError>
{
let maybe_user_session = server_state
.session_checker
@@ -107,5 +106,5 @@ pub async fn kill_generic_inference_jobs_handler(
success: true,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -8,7 +8,7 @@ use utoipa::ToSchema;
use mysql_queries::queries::generic_inference::web::dismiss_finished_jobs_for_user::dismiss_finished_jobs_for_user;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
#[derive(Serialize, ToSchema)]
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpMessage, HttpRequest};
@@ -48,7 +47,7 @@ pub struct TerminateInferenceJobSuccessResponse {
pub async fn terminate_inference_job_handler(
http_request: HttpRequest,
path: Path<TerminateInferenceJobPathInfo>,
server_state: web::Data<Arc<ServerState>>) -> Result<Json<TerminateInferenceJobSuccessResponse>, CommonWebError>
server_state: web::Data<Arc<ServerState>>) -> Result<web::Json<TerminateInferenceJobSuccessResponse>, CommonWebError>
{
let mut mysql_connection = server_state.mysql_pool.acquire()
.await
@@ -106,5 +105,5 @@ pub async fn terminate_inference_job_handler(
success: true,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -17,7 +17,7 @@ use mysql_queries::queries::media_files::get::get_media_file::get_media_file;
use crate::http_server::common_requests::media_file_token_path_info::MediaFileTokenPathInfo;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::common_responses::simple_response::SimpleResponse;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
#[derive(Deserialize, ToSchema)]
@@ -16,7 +16,7 @@ use mysql_queries::queries::media_files::get::get_media_file::get_media_file;
use crate::http_server::common_requests::media_file_token_path_info::MediaFileTokenPathInfo;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::common_responses::simple_response::SimpleResponse;
use crate::http_server::user_lookup::user_session::require_user_session::require_user_session;
use crate::http_server::web_utils::user_session::require_user_session::require_user_session;
use crate::state::server_state::ServerState;
#[derive(Deserialize, ToSchema)]
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::web::Path;
use actix_web::web::Json;
use actix_web::{web, HttpRequest};
use log::warn;
use utoipa::ToSchema;
@@ -44,8 +43,8 @@ pub struct ChangeMediaFileVisibilityRequest {
pub async fn change_media_file_visibility_handler(
http_request: HttpRequest,
path: Path<MediaFileTokenPathInfo>,
request: Json<ChangeMediaFileVisibilityRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError>
request: web::Json<ChangeMediaFileVisibilityRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<web::Json<SimpleGenericJsonSuccess>, CommonWebError>
{
let maybe_user_session = server_state
.session_checker
@@ -124,5 +123,5 @@ pub async fn change_media_file_visibility_handler(
}
};
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::web::Path;
use actix_web::web::Json;
use actix_web::{web, HttpRequest};
use log::warn;
use utoipa::ToSchema;
@@ -43,9 +42,9 @@ pub struct RenameMediaFileRequest {
pub async fn rename_media_file_handler(
http_request: HttpRequest,
path: Path<MediaFileTokenPathInfo>,
request: Json<RenameMediaFileRequest>,
request: web::Json<RenameMediaFileRequest>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError>{
) -> Result<web::Json<SimpleGenericJsonSuccess>, CommonWebError>{
let maybe_user_session = server_state
.session_checker
.maybe_get_user_session(&http_request, &server_state.mysql_pool)
@@ -100,5 +99,5 @@ pub async fn rename_media_file_handler(
CommonWebError::from_anyhow_error(err)
})?;
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::web::Path;
use actix_web::web::Json;
use actix_web::{web, HttpRequest};
use log::{info, warn};
use utoipa::ToSchema;
@@ -49,9 +48,9 @@ pub struct SetMediaFileCoverImageRequest {
pub async fn set_media_file_cover_image_handler(
http_request: HttpRequest,
path: Path<MediaFileTokenPathInfo>,
request: Json<SetMediaFileCoverImageRequest>,
request: web::Json<SetMediaFileCoverImageRequest>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError>{
) -> Result<web::Json<SimpleGenericJsonSuccess>, CommonWebError>{
let maybe_user_session = server_state
.session_checker
.maybe_get_user_session(&http_request, &server_state.mysql_pool)
@@ -153,5 +152,5 @@ pub async fn set_media_file_cover_image_handler(
}
};
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::web::Path;
use actix_web::web::Json;
use actix_web::{web, HttpRequest};
use log::warn;
@@ -37,8 +36,8 @@ pub struct UpdateMediaFilePathInfo {
pub async fn update_media_file_handler(
http_request: HttpRequest,
path: Path<UpdateMediaFilePathInfo>,
request: Json<UpdateMediaFileRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<Json<UpdateMediaFileResponse>, CommonWebError>
request: web::Json<UpdateMediaFileRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<web::Json<UpdateMediaFileResponse>, CommonWebError>
{
let maybe_user_session = server_state
.session_checker
@@ -117,5 +116,5 @@ pub async fn update_media_file_handler(
}
};
Ok(Json(UpdateMediaFileResponse { success: true }))
Ok(web::Json(UpdateMediaFileResponse { success: true }))
}
@@ -24,7 +24,7 @@ use crate::http_server::endpoints::media_files::upload::upload_error::MediaFileU
use crate::http_server::endpoints::media_files::upload::upload_pmx::extract_and_upload_pmx_files::{extract_and_upload_pmx_files, PmxError};
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// Form-multipart request fields.
@@ -25,7 +25,7 @@ use crate::http_server::endpoints::media_files::upload::upload_studio_shot::extr
use crate::http_server::endpoints::media_files::upload::upload_studio_shot::ffmpeg_frames_to_mp4::ffmpeg_frames_to_mp4;
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::http_server::user_lookup::user_session::require_user_session_extended::require_user_session_extended;
use crate::http_server::web_utils::user_session::require_user_session_extended::require_user_session_extended;
use crate::state::server_state::ServerState;
const DEFAULT_FPS : u8 = 12;
@@ -28,7 +28,7 @@ use crate::http_server::requests::request_headers::get_routing_tag_header::get_r
use crate::http_server::requests::request_headers::has_debug_header::has_debug_header;
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
use crate::http_server::validations::validate_model_title::validate_model_title;
use crate::http_server::user_lookup::user_session::require_user_session_extended::require_user_session_extended;
use crate::http_server::web_utils::user_session::require_user_session_extended::require_user_session_extended;
use crate::state::server_state::ServerState;
#[derive(Deserialize, ToSchema)]
@@ -14,7 +14,7 @@ use mysql_queries::queries::staff_audit_logs::insert_staff_audit_log::{
use pager::notification::notification_details_builder::NotificationDetailsBuilder;
use pager::notification::notification_urgency::NotificationUrgency;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// Send a test alert via the pager system. Moderators only.
@@ -15,7 +15,7 @@ use tokens::tokens::non_unique::debug_logs_event_token::DebugLogEventToken;
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
// ── Path params ──
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpRequest};
@@ -26,7 +25,7 @@ use tokens::tokens::users::UserToken;
use crate::http_server::web_utils::serialize_as_json_error::serialize_as_json_error;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// For the URL PathInfo
@@ -59,7 +58,7 @@ pub async fn moderator_get_token_info_handler(
path: Path<ModeratorTokenInfoPath>,
http_request: HttpRequest,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<ModeratorTokenInfoResponse>, CommonWebError> {
) -> Result<web::Json<ModeratorTokenInfoResponse>, CommonWebError> {
let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?;
@@ -76,7 +75,7 @@ pub async fn moderator_get_token_info_handler(
maybe_payload: maybe_result,
};
Ok(Json(response))
Ok(web::Json(response))
}
const LEGACY_USER_TOKEN_PREFIX : &str = "U:";
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use log::{info, warn};
@@ -24,9 +23,9 @@ pub struct AddIpBanRequest {
// NB: Not using derive_more::Display since Clion doesn't understand it.
pub async fn add_ip_ban_handler(
http_request: HttpRequest,
request: Json<AddIpBanRequest>,
request: web::Json<AddIpBanRequest>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError> {
) -> Result<web::Json<SimpleGenericJsonSuccess>, CommonWebError> {
let maybe_user_session = server_state
.session_checker
@@ -71,5 +70,5 @@ pub async fn add_ip_ban_handler(
CommonWebError::from_anyhow_error(err)
})?;
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpRequest};
@@ -28,9 +27,9 @@ pub struct DeleteIpBanRequest {
pub async fn delete_ip_ban_handler(
http_request: HttpRequest,
path: Path<DeleteIpBanPathInfo>,
request: Json<DeleteIpBanRequest>,
request: web::Json<DeleteIpBanRequest>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError> {
) -> Result<web::Json<SimpleGenericJsonSuccess>, CommonWebError> {
let maybe_user_session = server_state
.session_checker
@@ -78,5 +77,5 @@ pub async fn delete_ip_ban_handler(
}
};
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::web::Path;
use actix_web::{web, HttpRequest};
@@ -43,7 +42,7 @@ pub async fn get_ip_ban_handler(
http_request: HttpRequest,
path: Path<GetIpBanPathInfo>,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<GetIpBanResponse>, CommonWebError> {
) -> Result<web::Json<GetIpBanResponse>, CommonWebError> {
let maybe_user_session = server_state
.session_checker
@@ -98,5 +97,5 @@ pub async fn get_ip_ban_handler(
ip_address_ban: result,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -1,7 +1,6 @@
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use chrono::{DateTime, Utc};
@@ -35,7 +34,7 @@ pub struct IpBanRecordForList {
pub async fn list_ip_bans_handler(
http_request: HttpRequest,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<ListIpBansResponse>, CommonWebError> {
) -> Result<web::Json<ListIpBansResponse>, CommonWebError> {
let maybe_user_session = server_state
.session_checker
@@ -86,5 +85,5 @@ pub async fn list_ip_bans_handler(
ip_address_bans: results,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use log::warn;
@@ -35,7 +34,7 @@ pub struct GetTtsInferenceQueueCountResponse {
pub async fn get_tts_inference_queue_count_handler(
http_request: HttpRequest,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<GetTtsInferenceQueueCountResponse>, CommonWebError> {
) -> Result<web::Json<GetTtsInferenceQueueCountResponse>, CommonWebError> {
let maybe_user_session = server_state
.session_checker
@@ -86,5 +85,5 @@ pub async fn get_tts_inference_queue_count_handler(
attempt_failed_count: result.attempt_failed_count,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -47,7 +47,7 @@ impl fmt::Display for GetW2lInferenceQueueCountError {
pub async fn get_w2l_inference_queue_count_handler(
http_request: HttpRequest,
server_state: web::Data<Arc<ServerState>>
) -> Result<Json<GetW2lInferenceQueueCountResponse>, GetW2lInferenceQueueCountError> {
) -> Result<web::Json<GetW2lInferenceQueueCountResponse>, GetW2lInferenceQueueCountError> {
let maybe_user_session = server_state
.session_checker
@@ -92,5 +92,5 @@ pub async fn get_w2l_inference_queue_count_handler(
seconds_since_first: result.seconds_since_first,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -2,7 +2,6 @@ use std::fmt;
use std::sync::Arc;
use actix_web::error::ResponseError;
use actix_web::web::Json;
use actix_web::http::StatusCode;
use actix_web::{web, HttpRequest};
use log::{error, warn};
@@ -46,8 +45,8 @@ pub struct KillTtsInferenceJobsResponse {
pub async fn kill_tts_inference_jobs_handler(
http_request: HttpRequest,
request: Json<KillTtsInferenceJobsRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<Json<KillTtsInferenceJobsResponse>, CommonWebError>
request: web::Json<KillTtsInferenceJobsRequest>,
server_state: web::Data<Arc<ServerState>>) -> Result<web::Json<KillTtsInferenceJobsResponse>, CommonWebError>
{
let maybe_user_session = server_state
.session_checker
@@ -89,5 +88,5 @@ pub async fn kill_tts_inference_jobs_handler(
success: true,
};
Ok(Json(response))
Ok(web::Json(response))
}
@@ -16,7 +16,7 @@ use tokens::tokens::prompts::PromptToken;
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
// ── Path params ──
@@ -13,7 +13,7 @@ use mysql_queries::queries::generic_inference::web::list_user_jobs_for_moderatio
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// List jobs for a user (moderation)
@@ -13,7 +13,7 @@ use tokens::tokens::staff_audit_logs::StaffAuditLogToken;
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "modstfaud";
@@ -15,7 +15,7 @@ use mysql_queries::queries::users::user::list::list_subscribing_users_by_signup_
};
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// List subscribing users by signup date (descending), for moderators.
@@ -15,7 +15,7 @@ use mysql_queries::queries::users::user::list::list_users_by_signup_date_for_mod
};
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// List users by signup date (descending), for moderators.
@@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::user::user_lookup_by_stripe_customer_id::{
use mysql_queries::queries::users::user_subscriptions::lookup_users_by_stripe_customer_id::lookup_users_by_stripe_customer_id;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// Moderator User Lookup by Stripe Customer ID
@@ -17,7 +17,7 @@ use mysql_queries::queries::users::user::get::lookup_user_for_moderation::{
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const LEGACY_USER_TOKEN_PREFIX: &str = "U:";
@@ -18,7 +18,7 @@ use mysql_queries::queries::users::user::update::set_user_ban_status::{
use mysql_queries::queries::users::user_profiles::get_user_profile_by_username::get_user_profile_by_username;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
// --- Request ---
@@ -24,7 +24,7 @@ use users::email::email_to_gravatar_hash::email_to_gravatar_hash;
use users::email::validate_email_address_format::validate_email_address_format;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
// --- Request ---
@@ -15,7 +15,7 @@ use mysql_queries::queries::users::user_email_changes::list_user_email_changes_f
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "modemchg";
@@ -23,10 +23,10 @@ use mysql_queries::queries::users::user::update::set_user_feature_flags::{set_us
use mysql_queries::queries::users::user_profiles::get_user_profile_by_token::get_user_profile_by_token;
use tokens::tokens::users::UserToken;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
use artcraft_api_defs::common::responses::simple_generic_json_success::SimpleGenericJsonSuccess;
@@ -84,7 +84,7 @@ pub async fn moderator_edit_user_feature_flags_handler(
request: Json<EditUserFeatureFlagsRequest>,
server_state: Data<Arc<ServerState>>,
redis_pool: Data<r2d2::Pool<Client>>,
) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError> {
) -> Result<web::Json<SimpleGenericJsonSuccess>, CommonWebError> {
let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?;
@@ -189,5 +189,5 @@ pub async fn moderator_edit_user_feature_flags_handler(
let _r: Result<Option<String>, _> = redis.del(&cache_key);
}
Ok(Json(SimpleGenericJsonSuccess { success: true }))
Ok(web::Json(SimpleGenericJsonSuccess { success: true }))
}
@@ -8,7 +8,7 @@ use utoipa::ToSchema;
use enums::by_table::users::user_feature_flag::UserFeatureFlag;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
// ── Response ──
@@ -11,8 +11,8 @@ use mysql_queries::queries::users::user_profiles::get_user_profile_by_token::get
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::session_utils::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
// ── Request ──
@@ -13,7 +13,7 @@ use mysql_queries::queries::user_referrals::list_global_user_referrals::{
};
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "modusrref";
@@ -16,7 +16,7 @@ use mysql_queries::queries::user_referrals::list_user_referrals_for_user::{
};
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "modusrrefu";
@@ -12,7 +12,7 @@ use mysql_queries::queries::user_impersonation_requests::list_user_impersonation
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "moduserimp";
@@ -12,7 +12,7 @@ use mysql_queries::queries::user_impersonation_requests::list_user_impersonation
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
const CURSOR_NAME: &str = "modallimp";
@@ -25,7 +25,7 @@ use mysql_queries::queries::users::user::get::lookup_user_for_moderation::{
};
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
// --- Request ---
@@ -16,7 +16,7 @@ use mysql_queries::queries::users::user_subscriptions::list_stripe_customer_ids_
use tokens::tokens::users::UserToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// Get all stripe customer ids on file for a user (moderation)
@@ -13,7 +13,7 @@ use mysql_queries::queries::wallet_ledger_entries::list_wallet_ledger_entries_by
use tokens::tokens::wallets::WalletToken;
use crate::http_server::common_responses::common_web_error::CommonWebError;
use crate::http_server::user_lookup::user_session::require_moderator::require_moderator;
use crate::http_server::web_utils::user_session::require_moderator::require_moderator;
use crate::state::server_state::ServerState;
/// List wallet ledger entries by wallet token (moderation)

Some files were not shown because too many files have changed in this diff Show More