mirror of
https://github.com/storytold/artcraft.git
synced 2026-10-24 10:39:28 -04:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd2fbcbb82 | ||
|
|
ffbff22098 |
@@ -1,4 +1,4 @@
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use enums::common::payments_namespace::PaymentsNamespace;
|
||||
use errors::AnyhowResult;
|
||||
use log::{error, info};
|
||||
@@ -22,7 +22,7 @@ pub async fn attempt_wallet_deduction_else_common_web_error(
|
||||
maybe_reference_token: Option<&str>,
|
||||
amount_to_deduct: u64,
|
||||
connection: &mut PoolConnection<MySql>
|
||||
) -> Result<WalletDeductionResult, CommonWebError> {
|
||||
) -> Result<WalletDeductionResult, AdvancedCommonWebError> {
|
||||
|
||||
let result = try_wallet_deduction(
|
||||
user_token,
|
||||
@@ -37,23 +37,23 @@ pub async fn attempt_wallet_deduction_else_common_web_error(
|
||||
Err(err) => Err(match err {
|
||||
WalletSpendError::InvalidAmountToSpend => {
|
||||
log::error!("invalid spend amount charged");
|
||||
CommonWebError::PaymentRequired
|
||||
AdvancedCommonWebError::PaymentRequired
|
||||
}
|
||||
WalletSpendError::InsufficientBalance { requested_to_spend_amount, available_amount } => {
|
||||
log::error!("payment is required - requested: {}, available: {}", requested_to_spend_amount, available_amount);
|
||||
CommonWebError::PaymentRequired
|
||||
AdvancedCommonWebError::PaymentRequired
|
||||
}
|
||||
WalletSpendError::SelectError(err) => {
|
||||
log::error!("SQL error (select) in attempt_wallet_deduction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
}
|
||||
WalletSpendError::SelectOptionalError(err) => {
|
||||
log::error!("SQL error (select optional) in attempt_wallet_deduction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
}
|
||||
WalletSpendError::SqlxError(err) => {
|
||||
log::error!("SQL error (sqlx) in attempt_wallet_deduction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
}
|
||||
}),
|
||||
}
|
||||
|
||||
+10
-13
@@ -1,7 +1,6 @@
|
||||
use std::fmt::{Display, Formatter};
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::session::session_checker_error::SessionCheckerError;
|
||||
use crate::http_server::web_utils::user_session::require_user_session::RequireUserSessionError;
|
||||
use actix_artcraft::sessions::anonymous_visitor_tracking::avt_cookie_payload_error::AvtCookiePayloadError;
|
||||
@@ -9,6 +8,7 @@ use actix_artcraft::sessions::user_sessions::http_user_session_payload_error::Ht
|
||||
use actix_http::StatusCode;
|
||||
use actix_web::{HttpResponse, HttpResponseBuilder, ResponseError};
|
||||
use anyhow::anyhow;
|
||||
use mysql_queries::errors::mysql_error::{MysqlCrateErrorSubtype, MysqlError};
|
||||
|
||||
/// An error type for actix-web handlers that wraps causal errors for debugging
|
||||
/// and paging while presenting safe, generic HTTP responses to users.
|
||||
@@ -241,6 +241,15 @@ impl From<sqlx::Error> for AdvancedCommonWebError {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> From<MysqlError<T>> for AdvancedCommonWebError
|
||||
where
|
||||
T: MysqlCrateErrorSubtype + Send + Sync + 'static,
|
||||
{
|
||||
fn from(err: MysqlError<T>) -> Self {
|
||||
Self::from_error(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<anyhow::Error> for AdvancedCommonWebError {
|
||||
fn from(err: anyhow::Error) -> Self {
|
||||
// anyhow::Error doesn't impl std::error::Error, so we go through Box -> Arc.
|
||||
@@ -299,18 +308,6 @@ impl From<SessionCheckerError> for AdvancedCommonWebError {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<CommonWebError> for AdvancedCommonWebError {
|
||||
fn from(value: CommonWebError) -> Self {
|
||||
match value {
|
||||
CommonWebError::BadInputWithSimpleMessage(msg) => Self::BadInputWithSimpleMessage(msg),
|
||||
CommonWebError::NotAuthorized => Self::NotAuthorized,
|
||||
CommonWebError::NotFound => Self::NotFound,
|
||||
CommonWebError::PaymentRequired => Self::PaymentRequired,
|
||||
CommonWebError::ServerError => Self::from_error(value),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// =============== Serialization helpers (private) ===============
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
|
||||
-147
@@ -1,147 +0,0 @@
|
||||
use actix_http::StatusCode;
|
||||
use actix_web::{HttpResponse, HttpResponseBuilder, ResponseError};
|
||||
use log::{error, warn};
|
||||
use mysql_queries::errors::mysql_error::{MysqlCrateErrorSubtype, MysqlError};
|
||||
use std::error::Error;
|
||||
use std::fmt::{Display, Formatter};
|
||||
use crate::http_server::session::session_checker_error::SessionCheckerError;
|
||||
use crate::http_server::web_utils::user_session::require_user_session::RequireUserSessionError;
|
||||
|
||||
#[derive(Debug, utoipa::ToSchema)]
|
||||
pub enum CommonWebError {
|
||||
// TODO: Bad input with error fields vector.
|
||||
/// Bad input with a user-facing error message.
|
||||
BadInputWithSimpleMessage(String),
|
||||
/// Entity not found.
|
||||
NotFound,
|
||||
/// Not authorized to perform the action.
|
||||
NotAuthorized,
|
||||
/// Server error with no reason.
|
||||
ServerError,
|
||||
/// Payment required with no extra info
|
||||
PaymentRequired,
|
||||
}
|
||||
|
||||
impl Error for CommonWebError {}
|
||||
|
||||
impl Display for CommonWebError {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:?}", self)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
struct SerializeSimpleErrorWithoutMessage<'a> {
|
||||
success: bool,
|
||||
error_code: u16,
|
||||
error_code_str: Option<&'a str>,
|
||||
}
|
||||
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
struct SerializeSimpleErrorWithMessage<'a> {
|
||||
success: bool,
|
||||
error_code: u16,
|
||||
error_code_str: Option<&'a str>,
|
||||
message: &'a str,
|
||||
}
|
||||
|
||||
impl ResponseError for CommonWebError {
|
||||
fn status_code(&self) -> StatusCode {
|
||||
match self {
|
||||
CommonWebError::BadInputWithSimpleMessage(_) => StatusCode::BAD_REQUEST,
|
||||
CommonWebError::NotFound => StatusCode::NOT_FOUND,
|
||||
CommonWebError::NotAuthorized => StatusCode::UNAUTHORIZED,
|
||||
CommonWebError::ServerError => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
CommonWebError::PaymentRequired => StatusCode::PAYMENT_REQUIRED,
|
||||
}
|
||||
}
|
||||
|
||||
fn error_response(&self) -> HttpResponse {
|
||||
match self {
|
||||
CommonWebError::BadInputWithSimpleMessage(msg) => {
|
||||
HttpResponse::BadRequest()
|
||||
.json(SerializeSimpleErrorWithMessage {
|
||||
success: false,
|
||||
error_code: self.status_code().as_u16(),
|
||||
error_code_str: self.status_code().canonical_reason(),
|
||||
message: msg,
|
||||
})
|
||||
},
|
||||
_ => {
|
||||
HttpResponseBuilder::new(self.status_code())
|
||||
.json(SerializeSimpleErrorWithoutMessage {
|
||||
success: false,
|
||||
error_code: self.status_code().as_u16(),
|
||||
error_code_str: self.status_code().canonical_reason(),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<sqlx::Error> for CommonWebError {
|
||||
fn from(value: sqlx::Error) -> Self {
|
||||
error!("SQLx error: {:?}", value);
|
||||
CommonWebError::ServerError
|
||||
}
|
||||
}
|
||||
|
||||
impl From<anyhow::Error> for CommonWebError {
|
||||
fn from(value: anyhow::Error) -> Self {
|
||||
error!("Uncaught anyhow::Error being coerced to CommonWebError : {:?}", value);
|
||||
CommonWebError::ServerError
|
||||
}
|
||||
}
|
||||
|
||||
impl <T: MysqlCrateErrorSubtype> From<MysqlError<T>> for CommonWebError {
|
||||
fn from(value: MysqlError<T>) -> Self {
|
||||
error!("MysqlError being coerced to CommonWebError : {:?}", value);
|
||||
CommonWebError::ServerError
|
||||
}
|
||||
}
|
||||
|
||||
impl From<RequireUserSessionError> for CommonWebError {
|
||||
fn from(value: RequireUserSessionError) -> Self {
|
||||
match value {
|
||||
RequireUserSessionError::NotAuthorized => Self::NotAuthorized,
|
||||
RequireUserSessionError::ServerError => Self::ServerError,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<SessionCheckerError> for CommonWebError {
|
||||
fn from(value: SessionCheckerError) -> Self {
|
||||
match value {
|
||||
// Bad / forged session cookie → 401
|
||||
// NOTE: If there's an elevated rate of across-the-board 401s,
|
||||
// then we probably misconfigured the HMAC secret
|
||||
SessionCheckerError::SessionPayload(_) => Self::NotAuthorized,
|
||||
// Underlying DB / cache errors → 500
|
||||
SessionCheckerError::Sqlx(err) => {
|
||||
error!("SessionChecker sqlx error: {:?}", err);
|
||||
Self::ServerError
|
||||
},
|
||||
// Likely Redis caching middleware
|
||||
SessionCheckerError::OtherError(err) => {
|
||||
error!("SessionChecker other error: {:?}", err);
|
||||
Self::ServerError
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use actix_http::body::MessageBody;
|
||||
|
||||
#[test]
|
||||
fn test_bad_input_json() {
|
||||
let error = CommonWebError::BadInputWithSimpleMessage("foo bar baz".to_string());
|
||||
let response = error.error_response();
|
||||
let bytes = response.into_body().try_into_bytes().unwrap();
|
||||
let body = String::from_utf8(bytes.to_vec()).unwrap();
|
||||
assert_eq!(body, "{\"success\":false,\"error_code\":400,\"error_code_str\":\"Bad Request\",\"message\":\"foo bar baz\"}");
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
pub mod advanced_common_web_error;
|
||||
pub mod common_web_error;
|
||||
pub mod media;
|
||||
pub mod media_file_origin_details;
|
||||
pub mod media_file_social_meta_lite;
|
||||
|
||||
+5
-5
@@ -1,4 +1,4 @@
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use log::{error, info};
|
||||
use mysql_queries::queries::wallets::refund::try_to_refund_ledger_entry::{try_to_refund_ledger_entry, WalletRefundOutcome};
|
||||
use sqlx::Acquire;
|
||||
@@ -7,13 +7,13 @@ use tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken;
|
||||
pub async fn refund_wallet_after_api_failure(
|
||||
ledger_entry_token: &WalletLedgerEntryToken,
|
||||
connection: &mut sqlx::pool::PoolConnection<sqlx::MySql>,
|
||||
) -> Result<(), CommonWebError> {
|
||||
) -> Result<(), AdvancedCommonWebError> {
|
||||
let mut transaction = connection.begin().await.map_err(|err| {
|
||||
error!(
|
||||
"Failed to begin refund transaction after API failure (ledger {}): {:?}",
|
||||
ledger_entry_token.as_str(), err
|
||||
);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
match try_to_refund_ledger_entry(ledger_entry_token, &mut transaction).await {
|
||||
@@ -29,7 +29,7 @@ pub async fn refund_wallet_after_api_failure(
|
||||
"Failed to commit refund after API failure (ledger {}): {:?}",
|
||||
ledger_entry_token.as_str(), err
|
||||
);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
Ok(WalletRefundOutcome::AlreadyRefunded) => {
|
||||
@@ -45,7 +45,7 @@ pub async fn refund_wallet_after_api_failure(
|
||||
ledger_entry_token.as_str(), err
|
||||
);
|
||||
let _ = transaction.rollback().await;
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_helpers::extractors::get_request_user_agent::get_request_user_agent;
|
||||
use actix_web::web::{Json, Query};
|
||||
@@ -33,7 +33,7 @@ pub async fn log_app_active_user_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Query<LogAppActiveUserRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<LogAppActiveUserResponse>, CommonWebError>
|
||||
) -> Result<Json<LogAppActiveUserResponse>, AdvancedCommonWebError>
|
||||
{
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
@@ -45,7 +45,7 @@ pub async fn log_app_active_user_handler(
|
||||
.await?;
|
||||
|
||||
let user_token = maybe_user_session
|
||||
.ok_or(CommonWebError::NotAuthorized)?
|
||||
.ok_or(AdvancedCommonWebError::NotAuthorized)?
|
||||
.user_token;
|
||||
|
||||
let ip_address = get_request_ip(&http_request);
|
||||
@@ -143,10 +143,10 @@ pub async fn log_app_active_user_handler(
|
||||
}))
|
||||
}
|
||||
|
||||
fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), CommonWebError> {
|
||||
fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), AdvancedCommonWebError> {
|
||||
if !app_session_token.as_str().starts_with(AppSessionToken::token_prefix()) {
|
||||
warn!("App session token has invalid prefix: {}", app_session_token.as_str());
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string()));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_helpers::extractors::get_request_user_agent::get_request_user_agent;
|
||||
use actix_web::web::Json;
|
||||
@@ -29,7 +29,7 @@ pub async fn log_app_active_user_json_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<LogAppActiveUserRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<LogAppActiveUserResponse>, CommonWebError>
|
||||
) -> Result<Json<LogAppActiveUserResponse>, AdvancedCommonWebError>
|
||||
{
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
@@ -41,7 +41,7 @@ pub async fn log_app_active_user_json_handler(
|
||||
.await?;
|
||||
|
||||
let user_token = maybe_user_session
|
||||
.ok_or(CommonWebError::NotAuthorized)?
|
||||
.ok_or(AdvancedCommonWebError::NotAuthorized)?
|
||||
.user_token;
|
||||
|
||||
let ip_address = get_request_ip(&http_request);
|
||||
@@ -139,10 +139,10 @@ pub async fn log_app_active_user_json_handler(
|
||||
}))
|
||||
}
|
||||
|
||||
fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), CommonWebError> {
|
||||
fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), AdvancedCommonWebError> {
|
||||
if !app_session_token.as_str().starts_with(AppSessionToken::token_prefix()) {
|
||||
warn!("App session token has invalid prefix: {}", app_session_token.as_str());
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string()));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
+6
-6
@@ -1,7 +1,7 @@
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_web::web::{Json, Path};
|
||||
@@ -38,14 +38,14 @@ pub async fn get_session_credits_handler(
|
||||
http_request: HttpRequest,
|
||||
path: Path<GetSessionCreditsPathInfo>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GetSessionCreditsResponse>, CommonWebError>
|
||||
) -> Result<Json<GetSessionCreditsResponse>, AdvancedCommonWebError>
|
||||
{
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error acquiring MySQL connection: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_user_session = server_state
|
||||
@@ -54,12 +54,12 @@ pub async fn get_session_credits_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let user_token = match maybe_user_session {
|
||||
Some(session) => session.user_token,
|
||||
None => return Err(CommonWebError::NotAuthorized),
|
||||
None => return Err(AdvancedCommonWebError::NotAuthorized),
|
||||
};
|
||||
|
||||
let maybe_wallet = find_primary_wallet_for_owner_using_connection(
|
||||
@@ -68,7 +68,7 @@ pub async fn get_session_credits_handler(
|
||||
&mut mysql_connection,
|
||||
).await.map_err(|err| {
|
||||
error!("Error finding primary wallet for user: {:?}, error: {:?}", user_token, err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let free_credits = 0u64;
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
|
||||
pub fn payments_error_test(prompt: &str) -> Result<(), CommonWebError> {
|
||||
pub fn payments_error_test(prompt: &str) -> Result<(), AdvancedCommonWebError> {
|
||||
let prompt = prompt.trim().to_ascii_lowercase();
|
||||
|
||||
if prompt == "trigger_payment_failure" {
|
||||
return Err(CommonWebError::PaymentRequired);
|
||||
return Err(AdvancedCommonWebError::PaymentRequired);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
+12
-12
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -44,10 +44,10 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Flux2LoraEditImageAngleRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Flux2LoraEditImageAngleResponse>, CommonWebError> {
|
||||
) -> Result<Json<Flux2LoraEditImageAngleResponse>, AdvancedCommonWebError> {
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -60,7 +60,7 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -70,7 +70,7 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -84,14 +84,14 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
).await?
|
||||
.ok_or_else(|| {
|
||||
warn!("No image URLs found for media token");
|
||||
CommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string())
|
||||
})?;
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -148,14 +148,14 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
Err(err) => {
|
||||
warn!("Error calling enqueue_flux_2_lora_edit_image_angle_webhook: {:?}", err);
|
||||
refund_wallet_after_api_failure(&wallet_deduction.ledger_entry_token, &mut mysql_connection).await?;
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -167,7 +167,7 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let prompt_result = insert_prompt(InsertPromptArgs {
|
||||
@@ -251,7 +251,7 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -260,7 +260,7 @@ pub async fn flux_2_lora_edit_image_angle_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Flux2LoraEditImageAngleResponse {
|
||||
|
||||
+12
-12
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -44,10 +44,10 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<QwenEdit2511EditImageAngleRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<QwenEdit2511EditImageAngleResponse>, CommonWebError> {
|
||||
) -> Result<Json<QwenEdit2511EditImageAngleResponse>, AdvancedCommonWebError> {
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -60,7 +60,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -70,7 +70,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -84,14 +84,14 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
).await?
|
||||
.ok_or_else(|| {
|
||||
warn!("No image URLs found for media token");
|
||||
CommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string())
|
||||
})?;
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -149,14 +149,14 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
Err(err) => {
|
||||
warn!("Error calling enqueue_qwen_edit_2511_edit_image_angle_webhook: {:?}", err);
|
||||
refund_wallet_after_api_failure(&wallet_deduction.ledger_entry_token, &mut mysql_connection).await?;
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -168,7 +168,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let prompt_result = insert_prompt(InsertPromptArgs {
|
||||
@@ -252,7 +252,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -261,7 +261,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(QwenEdit2511EditImageAngleResponse {
|
||||
|
||||
+12
-12
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
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::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
@@ -39,7 +39,7 @@ pub async fn remove_image_background_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<RemoveImageBackgroundRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<RemoveImageBackgroundResponse>, CommonWebError> {
|
||||
) -> Result<Json<RemoveImageBackgroundResponse>, AdvancedCommonWebError> {
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
.await?;
|
||||
@@ -50,7 +50,7 @@ pub async fn remove_image_background_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -71,19 +71,19 @@ pub async fn remove_image_background_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
const IS_MOD : bool = false;
|
||||
|
||||
@@ -97,16 +97,16 @@ pub async fn remove_image_background_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", media_file_token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -135,13 +135,13 @@ pub async fn remove_image_background_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling remove_background_rembg_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -167,7 +167,7 @@ pub async fn remove_image_background_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+14
-14
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -47,7 +47,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<FluxProKontextMaxEditImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<FluxProKontextMaxEditImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<FluxProKontextMaxEditImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -61,7 +61,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -71,7 +71,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -81,12 +81,12 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
@@ -106,7 +106,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -114,7 +114,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
Some(file) => file,
|
||||
None => {
|
||||
warn!("No media files found for tokens: {:?}", media_tokens);
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
"No media files found for provided tokens".to_string()));
|
||||
}
|
||||
};
|
||||
@@ -139,7 +139,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
//// TODO: This is test code
|
||||
@@ -188,13 +188,13 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_flux_pro_kontext_max_edit_webook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -206,7 +206,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -285,7 +285,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -294,7 +294,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(FluxProKontextMaxEditImageResponse {
|
||||
|
||||
+14
-14
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -51,12 +51,12 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Gemini25FlashEditImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Gemini25FlashEditImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<Gemini25FlashEditImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -69,7 +69,7 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -79,7 +79,7 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -89,7 +89,7 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
Some(tokens) => tokens,
|
||||
None => {
|
||||
warn!("No image media tokens provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -103,13 +103,13 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if media_files.len() != tokens.len() {
|
||||
warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), tokens.len());
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}",
|
||||
media_files.len(), tokens.len())));
|
||||
}
|
||||
@@ -136,7 +136,7 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -176,13 +176,13 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_gpt_image_1_edit_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -194,7 +194,7 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -276,7 +276,7 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -285,7 +285,7 @@ pub async fn gemini_25_flash_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Gemini25FlashEditImageResponse {
|
||||
|
||||
+14
-14
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -53,12 +53,12 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GptImage1EditImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GptImage1EditImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<GptImage1EditImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -71,7 +71,7 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -81,7 +81,7 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -91,7 +91,7 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
Some(tokens) => tokens,
|
||||
None => {
|
||||
warn!("No image media tokens provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -105,13 +105,13 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if media_files.len() != tokens.len() {
|
||||
warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), tokens.len());
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}",
|
||||
media_files.len(), tokens.len())));
|
||||
}
|
||||
@@ -138,7 +138,7 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -201,13 +201,13 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_gpt_image_1_edit_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -219,7 +219,7 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -308,7 +308,7 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -317,7 +317,7 @@ pub async fn gpt_image_1_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GptImage1EditImageResponse {
|
||||
|
||||
+13
-13
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -50,7 +50,7 @@ pub async fn qwen_edit_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<QwenEditImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<QwenEditImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<QwenEditImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -64,7 +64,7 @@ pub async fn qwen_edit_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -74,12 +74,12 @@ pub async fn qwen_edit_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
@@ -99,7 +99,7 @@ pub async fn qwen_edit_image_handler(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -107,7 +107,7 @@ pub async fn qwen_edit_image_handler(
|
||||
Some(file) => file,
|
||||
None => {
|
||||
warn!("No media files found for tokens: {:?}", media_tokens);
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
"No media files found for provided tokens".to_string()));
|
||||
}
|
||||
};
|
||||
@@ -132,7 +132,7 @@ pub async fn qwen_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -181,13 +181,13 @@ pub async fn qwen_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_qwen_image_edit_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -199,7 +199,7 @@ pub async fn qwen_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -281,7 +281,7 @@ pub async fn qwen_edit_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -290,7 +290,7 @@ pub async fn qwen_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(QwenEditImageResponse {
|
||||
|
||||
+13
-13
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -46,7 +46,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<SeedEdit3EditImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<SeedEdit3EditImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<SeedEdit3EditImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -60,7 +60,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -73,12 +73,12 @@ pub async fn seededit_3_edit_image_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
@@ -98,7 +98,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -106,7 +106,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
Some(file) => file,
|
||||
None => {
|
||||
warn!("No media files found for tokens: {:?}", media_tokens);
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
"No media files found for provided tokens".to_string()));
|
||||
}
|
||||
};
|
||||
@@ -131,7 +131,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -149,13 +149,13 @@ pub async fn seededit_3_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_seededit_v3_image_edit_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -167,7 +167,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -238,7 +238,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -247,7 +247,7 @@ pub async fn seededit_3_edit_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(SeedEdit3EditImageResponse {
|
||||
|
||||
+15
-15
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -46,7 +46,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<FluxDevJuggernautInpaintImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<FluxDevJuggernautInpaintImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<FluxDevJuggernautInpaintImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -60,7 +60,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -73,12 +73,12 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
@@ -98,13 +98,13 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if media_files.len() != media_tokens.len() {
|
||||
warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), media_tokens.len());
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}",
|
||||
media_files.len(), media_tokens.len())));
|
||||
}
|
||||
@@ -115,14 +115,14 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
.find(|file| file.token == request.image_media_token)
|
||||
.ok_or_else(|| {
|
||||
warn!("Image media file not found for token: {}", request.image_media_token);
|
||||
CommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string())
|
||||
})?;
|
||||
|
||||
let mask_media_file = media_files.iter()
|
||||
.find(|file| file.token == request.mask_media_token)
|
||||
.ok_or_else(|| {
|
||||
warn!("Mask media file not found for token: {}", request.mask_media_token);
|
||||
CommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string())
|
||||
})?;
|
||||
|
||||
let image_url = {
|
||||
@@ -157,7 +157,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -185,13 +185,13 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_flux_dev_juggernaut_infill_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -203,7 +203,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -285,7 +285,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -294,7 +294,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(FluxDevJuggernautInpaintImageResponse {
|
||||
|
||||
+15
-15
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -46,7 +46,7 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<FluxPro1InpaintImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<FluxPro1InpaintImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<FluxPro1InpaintImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -60,7 +60,7 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -73,12 +73,12 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
@@ -98,13 +98,13 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if media_files.len() != media_tokens.len() {
|
||||
warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), media_tokens.len());
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}",
|
||||
media_files.len(), media_tokens.len())));
|
||||
}
|
||||
@@ -115,14 +115,14 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
.find(|file| file.token == request.image_media_token)
|
||||
.ok_or_else(|| {
|
||||
warn!("Image media file not found for token: {}", request.image_media_token);
|
||||
CommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string())
|
||||
})?;
|
||||
|
||||
let mask_media_file = media_files.iter()
|
||||
.find(|file| file.token == request.mask_media_token)
|
||||
.ok_or_else(|| {
|
||||
warn!("Mask media file not found for token: {}", request.mask_media_token);
|
||||
CommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string())
|
||||
})?;
|
||||
|
||||
let image_url = {
|
||||
@@ -157,7 +157,7 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -185,13 +185,13 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_flux_pro_1_infill_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -203,7 +203,7 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -285,7 +285,7 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -294,7 +294,7 @@ pub async fn flux_pro_1_inpaint_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(FluxPro1InpaintImageResponse {
|
||||
|
||||
+12
-12
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -46,12 +46,12 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<BytedanceSeedream5LiteMultiFunctionImageGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<BytedanceSeedream5LiteMultiFunctionImageGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<BytedanceSeedream5LiteMultiFunctionImageGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -64,7 +64,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -74,7 +74,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -95,7 +95,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -158,7 +158,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_bytedance_seedream_v5_lite_edit_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -213,14 +213,14 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_bytedance_seedream_v5_lite_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -232,7 +232,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_aspect_ratio = request.image_size.map(|size| match size {
|
||||
@@ -330,7 +330,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -339,7 +339,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(BytedanceSeedream5LiteMultiFunctionImageGenResponse {
|
||||
|
||||
+12
-12
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,7 +58,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<BytedanceSeedreamV4MultiFunctionImageGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<BytedanceSeedreamV4MultiFunctionImageGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<BytedanceSeedreamV4MultiFunctionImageGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -72,7 +72,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -82,12 +82,12 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let image_urls = match request.image_media_tokens.as_ref() {
|
||||
@@ -107,7 +107,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -175,7 +175,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_bytedance_seedream_v4_edit_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -235,14 +235,14 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_bytedance_seedream_v4_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -254,7 +254,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -351,7 +351,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -360,7 +360,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(BytedanceSeedreamV4MultiFunctionImageGenResponse {
|
||||
|
||||
+12
-12
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,7 +58,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<BytedanceSeedreamV4p5MultiFunctionImageGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<BytedanceSeedreamV4p5MultiFunctionImageGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<BytedanceSeedreamV4p5MultiFunctionImageGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -72,7 +72,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -82,12 +82,12 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let image_urls = match request.image_media_tokens.as_ref() {
|
||||
@@ -107,7 +107,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -174,7 +174,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_bytedance_seedream_v4p5_edit_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -233,14 +233,14 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_bytedance_seedream_v4p5_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -252,7 +252,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -348,7 +348,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -357,7 +357,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(BytedanceSeedreamV4p5MultiFunctionImageGenResponse {
|
||||
|
||||
+12
-12
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,12 +58,12 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GptImage1p5MultiFunctionImageGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GptImage1p5MultiFunctionImageGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<GptImage1p5MultiFunctionImageGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -76,7 +76,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -86,7 +86,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -141,7 +141,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -223,7 +223,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_gpt_image_1p5_image_edit_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -289,14 +289,14 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_gpt_image_1p5_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -308,7 +308,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -399,7 +399,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -408,7 +408,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GptImage1p5MultiFunctionImageGenResponse {
|
||||
|
||||
+12
-12
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -46,12 +46,12 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<NanaBanana2MultiFunctionImageGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<NanaBanana2MultiFunctionImageGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<NanaBanana2MultiFunctionImageGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -64,7 +64,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -74,7 +74,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -95,7 +95,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -169,7 +169,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_nano_banana_2_edit_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -236,14 +236,14 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_nano_banana_2_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -255,7 +255,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_aspect_ratio = match request.aspect_ratio {
|
||||
@@ -360,7 +360,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -369,7 +369,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(NanaBanana2MultiFunctionImageGenResponse {
|
||||
|
||||
+12
-12
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -61,12 +61,12 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<NanoBananaMultiFunctionImageGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<NanoBananaMultiFunctionImageGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<NanoBananaMultiFunctionImageGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -79,7 +79,7 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -89,7 +89,7 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -110,7 +110,7 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -173,7 +173,7 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_gemini_25_flash_edit_webhook : {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -230,14 +230,14 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_gemini_25_flash_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -249,7 +249,7 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -348,7 +348,7 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -357,7 +357,7 @@ pub async fn nano_banana_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(NanoBananaMultiFunctionImageGenResponse {
|
||||
|
||||
+12
-12
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -59,12 +59,12 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<NanoBananaProMultiFunctionImageGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<NanoBananaProMultiFunctionImageGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<NanoBananaProMultiFunctionImageGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -77,7 +77,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -87,7 +87,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -108,7 +108,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -179,7 +179,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_nano_banana_pro_image_edit_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -244,14 +244,14 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_nano_banana_pro_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -263,7 +263,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -369,7 +369,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -378,7 +378,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(NanoBananaProMultiFunctionImageGenResponse {
|
||||
|
||||
+16
-16
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::job_failure_test::test_synthetic_failure_reason;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
@@ -48,7 +48,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateFlux1DevTextToImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateFlux1DevTextToImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateFlux1DevTextToImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -62,7 +62,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -72,7 +72,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -82,19 +82,19 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
// Secret test hook: insert a synthetic "complete_failure" job without calling Fal.
|
||||
@@ -169,13 +169,13 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_flux_1_dev_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -187,7 +187,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -258,7 +258,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -267,7 +267,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateFlux1DevTextToImageResponse {
|
||||
@@ -287,7 +287,7 @@ async fn insert_mock_failure_job(
|
||||
maybe_frontend_failure_category: Option<FrontendFailureCategory>,
|
||||
maybe_failure_reason: Option<&str>,
|
||||
mysql_connection: &mut sqlx::pool::PoolConnection<sqlx::MySql>,
|
||||
) -> Result<Json<GenerateFlux1DevTextToImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateFlux1DevTextToImageResponse>, AdvancedCommonWebError> {
|
||||
let ip_address = get_request_ip(http_request);
|
||||
|
||||
let mut transaction = mysql_connection
|
||||
@@ -295,7 +295,7 @@ async fn insert_mock_failure_job(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let prompt_result = insert_prompt(InsertPromptArgs {
|
||||
@@ -346,7 +346,7 @@ async fn insert_mock_failure_job(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting mock failure job: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -355,7 +355,7 @@ async fn insert_mock_failure_job(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing mock failure transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateFlux1DevTextToImageResponse {
|
||||
|
||||
+12
-12
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -42,7 +42,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateFlux1SchnellTextToImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateFlux1SchnellTextToImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateFlux1SchnellTextToImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -56,7 +56,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -66,7 +66,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -76,19 +76,19 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
// // TODO: This is test code
|
||||
@@ -149,13 +149,13 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_flux_1_schnell_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -167,7 +167,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -238,7 +238,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -247,7 +247,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateFlux1SchnellTextToImageResponse {
|
||||
|
||||
+11
-11
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -48,7 +48,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateFluxPro11TextToImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateFluxPro11TextToImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateFluxPro11TextToImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -62,7 +62,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -72,19 +72,19 @@ pub async fn generate_flux_pro_11_text_to_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
const IS_MOD : bool = false;
|
||||
@@ -137,13 +137,13 @@ pub async fn generate_flux_pro_11_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_flux_pro_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -155,7 +155,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -228,7 +228,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -237,7 +237,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateFluxPro11TextToImageResponse {
|
||||
|
||||
+11
-11
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -48,7 +48,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateFluxPro11UltraTextToImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateFluxPro11UltraTextToImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateFluxPro11UltraTextToImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -62,7 +62,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -72,19 +72,19 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
const IS_MOD : bool = false;
|
||||
@@ -141,13 +141,13 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_flux_pro_ultra_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -159,7 +159,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -236,7 +236,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -245,7 +245,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateFluxPro11UltraTextToImageResponse {
|
||||
|
||||
+11
-11
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -50,12 +50,12 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateGptImage1TextToImageRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateGptImage1TextToImageResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateGptImage1TextToImageResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
@@ -68,7 +68,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -78,7 +78,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -90,7 +90,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -153,13 +153,13 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_gpt_image_1_text_to_image_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -171,7 +171,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -242,7 +242,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -251,7 +251,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateGptImage1TextToImageResponse {
|
||||
|
||||
+15
-15
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
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::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
@@ -47,7 +47,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateHunyuan20ImageTo3dRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateHunyuan20ImageTo3dResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateHunyuan20ImageTo3dResponse>, AdvancedCommonWebError> {
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
.await?;
|
||||
@@ -58,7 +58,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -71,7 +71,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
@@ -79,19 +79,19 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
const IS_MOD : bool = false;
|
||||
|
||||
@@ -105,16 +105,16 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", media_file_token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -143,13 +143,13 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_hunyuan2_image_to_3d_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -158,7 +158,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
|
||||
let mut transaction = mysql_connection.begin().await.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// Insert prompt record if we have a prompt
|
||||
@@ -233,13 +233,13 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
let _r = transaction.commit().await.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateHunyuan20ImageTo3dResponse {
|
||||
|
||||
+15
-15
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
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::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
@@ -46,7 +46,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateHunyuan21ImageTo3dRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateHunyuan21ImageTo3dResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateHunyuan21ImageTo3dResponse>, AdvancedCommonWebError> {
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
.await?;
|
||||
@@ -57,7 +57,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -70,7 +70,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
// Some(session) => session,
|
||||
// None => {
|
||||
// warn!("not logged in");
|
||||
// return Err(CommonWebError::NotAuthorized);
|
||||
// return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
// }
|
||||
//};
|
||||
|
||||
@@ -78,19 +78,19 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
const IS_MOD : bool = false;
|
||||
|
||||
@@ -104,16 +104,16 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", media_file_token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -142,13 +142,13 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_hunyuan_3d_2_1_image_to_3d_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -157,7 +157,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
|
||||
let mut transaction = mysql_connection.begin().await.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// Insert prompt record if we have a prompt
|
||||
@@ -232,13 +232,13 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
let _r = transaction.commit().await.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateHunyuan21ImageTo3dResponse {
|
||||
|
||||
+13
-13
@@ -1,7 +1,7 @@
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -61,7 +61,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Hunyuan3dV3MultiFunctionObjectGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<Hunyuan3dV3MultiFunctionObjectGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Hunyuan3dV3MultiFunctionObjectGenResponse>, AdvancedCommonWebError> {
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
let mut mysql_connection = server_state.mysql_pool.acquire().await?;
|
||||
@@ -72,7 +72,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -80,7 +80,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
.get_avt_token_from_request(&http_request);
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
// Collect all media tokens to look up in a single batch query
|
||||
@@ -142,7 +142,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -196,7 +196,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
"Error calling enqueue_hunyuan3d_v3_text_to_3d_webhook: {:?}",
|
||||
err
|
||||
);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
"Error calling enqueue_hunyuan3d_v3_sketch_to_3d_webhook: {:?}",
|
||||
err
|
||||
);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?
|
||||
}
|
||||
|
||||
@@ -280,13 +280,13 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
"Error calling enqueue_hunyuan3d_v3_image_to_3d_webhook: {:?}",
|
||||
err
|
||||
);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?
|
||||
}
|
||||
|
||||
// Neither prompt nor image - invalid request
|
||||
(false, false) => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
"Either prompt or image_media_token must be provided".to_string(),
|
||||
));
|
||||
}
|
||||
@@ -294,7 +294,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
|
||||
let external_job_id = fal_result.request_id.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -303,7 +303,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
|
||||
let mut transaction = mysql_connection.begin().await.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// Insert prompt record if we have a prompt
|
||||
@@ -403,13 +403,13 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler(
|
||||
"Error inserting generic inference job for FAL queue: {:?}",
|
||||
err
|
||||
);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
let _r = transaction.commit().await.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Hunyuan3dV3MultiFunctionObjectGenResponse {
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -50,7 +50,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateKling16ProImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateKling16ProImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateKling16ProImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -64,7 +64,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -74,7 +74,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -82,7 +82,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -103,19 +103,19 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
|
||||
for media_file in media_files.iter() {
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
}
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -126,7 +126,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
.map(|file| file.cdn_url)
|
||||
.ok_or_else(|| {
|
||||
warn!("Start frame media file not found after fetch");
|
||||
CommonWebError::NotFound
|
||||
AdvancedCommonWebError::NotFound
|
||||
})?;
|
||||
|
||||
let maybe_end_frame_url = match maybe_end_frame_image_media_token {
|
||||
@@ -137,7 +137,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
.map(|file| file.cdn_url)
|
||||
.ok_or_else(|| {
|
||||
warn!("End frame media file not found after fetch");
|
||||
CommonWebError::NotFound
|
||||
AdvancedCommonWebError::NotFound
|
||||
})?),
|
||||
};
|
||||
|
||||
@@ -192,13 +192,13 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_16_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -210,7 +210,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -277,7 +277,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -286,7 +286,7 @@ pub async fn generate_kling_1_6_pro_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateKling16ProImageToVideoResponse {
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -49,7 +49,7 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateKling21MasterImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateKling21MasterImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateKling21MasterImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -63,7 +63,7 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -73,7 +73,7 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -81,19 +81,19 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
const IS_MOD : bool = false;
|
||||
|
||||
@@ -107,16 +107,16 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", media_file_token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -181,13 +181,13 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_21_master_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -199,7 +199,7 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -264,7 +264,7 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -273,7 +273,7 @@ pub async fn generate_kling_2_1_master_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateKling21MasterImageToVideoResponse {
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -55,7 +55,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateKling21ProImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateKling21ProImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateKling21ProImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -69,7 +69,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -79,7 +79,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -87,7 +87,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -108,19 +108,19 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
|
||||
for media_file in media_files.iter() {
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
}
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -131,7 +131,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
.map(|file| file.cdn_url)
|
||||
.ok_or_else(|| {
|
||||
warn!("Start frame media file not found after fetch");
|
||||
CommonWebError::NotFound
|
||||
AdvancedCommonWebError::NotFound
|
||||
})?;
|
||||
|
||||
let maybe_end_frame_url = match maybe_end_frame_image_media_token {
|
||||
@@ -142,7 +142,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
.map(|file| file.cdn_url)
|
||||
.ok_or_else(|| {
|
||||
warn!("End frame media file not found after fetch");
|
||||
CommonWebError::NotFound
|
||||
AdvancedCommonWebError::NotFound
|
||||
})?),
|
||||
};
|
||||
|
||||
@@ -197,13 +197,13 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_21_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -215,7 +215,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -280,7 +280,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -289,7 +289,7 @@ pub async fn generate_kling_2_1_pro_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateKling21ProImageToVideoResponse {
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -55,7 +55,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateSeedance10LiteImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateSeedance10LiteImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateSeedance10LiteImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -69,7 +69,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -79,7 +79,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -87,7 +87,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -108,19 +108,19 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
|
||||
for media_file in media_files.iter() {
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
}
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -131,7 +131,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
.map(|file| file.cdn_url)
|
||||
.ok_or_else(|| {
|
||||
warn!("Start frame media file not found after fetch");
|
||||
CommonWebError::NotFound
|
||||
AdvancedCommonWebError::NotFound
|
||||
})?;
|
||||
|
||||
let maybe_end_frame_url = match maybe_end_frame_image_media_token {
|
||||
@@ -142,7 +142,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
.map(|file| file.cdn_url)
|
||||
.ok_or_else(|| {
|
||||
warn!("End frame media file not found after fetch");
|
||||
CommonWebError::NotFound
|
||||
AdvancedCommonWebError::NotFound
|
||||
})?),
|
||||
};
|
||||
|
||||
@@ -211,13 +211,13 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_seedance_1_lite_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -229,7 +229,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -298,7 +298,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -307,7 +307,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateSeedance10LiteImageToVideoResponse {
|
||||
|
||||
+14
-14
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -52,7 +52,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateSeedance10ProImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateSeedance10ProImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateSeedance10ProImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -66,7 +66,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -76,7 +76,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -84,7 +84,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -99,19 +99,19 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
|
||||
for media_file in media_files.iter() {
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
}
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -122,7 +122,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
.map(|file| file.cdn_url)
|
||||
.ok_or_else(|| {
|
||||
warn!("Start frame media file not found after fetch");
|
||||
CommonWebError::NotFound
|
||||
AdvancedCommonWebError::NotFound
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -185,13 +185,13 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_seedance_1_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -203,7 +203,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -272,7 +272,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -281,7 +281,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateSeedance10ProImageToVideoResponse {
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::analytics::log_browser_session_handler::LogBrowserSessionError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
@@ -56,7 +56,7 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateVeo2ImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateVeo2ImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateVeo2ImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -70,7 +70,7 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -80,7 +80,7 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -88,19 +88,19 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
const IS_MOD : bool = false;
|
||||
|
||||
@@ -114,16 +114,16 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", media_file_token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -186,13 +186,13 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_veo_2_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -204,7 +204,7 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -269,7 +269,7 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -278,7 +278,7 @@ pub async fn generate_veo_2_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateVeo2ImageToVideoResponse {
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::analytics::log_browser_session_handler::LogBrowserSessionError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
@@ -48,7 +48,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateVeo3FastImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateVeo3FastImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateVeo3FastImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -62,7 +62,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -72,7 +72,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -80,19 +80,19 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
const IS_MOD : bool = false;
|
||||
|
||||
@@ -106,16 +106,16 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", media_file_token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -190,13 +190,13 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_veo_3_fast_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -208,7 +208,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -274,7 +274,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -283,7 +283,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateVeo3FastImageToVideoResponse {
|
||||
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::analytics::log_browser_session_handler::LogBrowserSessionError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
@@ -51,7 +51,7 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<GenerateVeo3ImageToVideoRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GenerateVeo3ImageToVideoResponse>, CommonWebError> {
|
||||
) -> Result<Json<GenerateVeo3ImageToVideoResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -65,7 +65,7 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -75,7 +75,7 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -83,19 +83,19 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
Some(token) => token,
|
||||
None => {
|
||||
warn!("No media file token provided");
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string()));
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
const IS_MOD : bool = false;
|
||||
|
||||
@@ -109,16 +109,16 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", media_file_token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if !media_file.media_type.is_jpg_or_png_or_legacy_image() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string()));
|
||||
}
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
@@ -194,13 +194,13 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_veo_3_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -212,7 +212,7 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -278,7 +278,7 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -287,7 +287,7 @@ pub async fn generate_veo_3_image_to_video_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GenerateVeo3ImageToVideoResponse {
|
||||
|
||||
+14
-14
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -60,7 +60,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Kling2p5TurboProMultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Kling2p5TurboProMultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Kling2p5TurboProMultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -74,7 +74,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -84,12 +84,12 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -124,7 +124,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -134,7 +134,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -143,7 +143,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -193,7 +193,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_v2p5_turbo_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -242,14 +242,14 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_v2p5_turbo_pro_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -261,7 +261,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -357,7 +357,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -366,7 +366,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Kling2p5TurboProMultiFunctionVideoGenResponse {
|
||||
|
||||
+14
-14
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,7 +58,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Kling2p6ProMultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Kling2p6ProMultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Kling2p6ProMultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -72,7 +72,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -82,12 +82,12 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -122,7 +122,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -132,7 +132,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
// Some(token) => match image_urls_by_token.get(token) {
|
||||
// Some(url) => Some(url.to_string()),
|
||||
// None => {
|
||||
// return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
// return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
@@ -141,7 +141,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -190,7 +190,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_v2p6_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -239,14 +239,14 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_v2p6_pro_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -258,7 +258,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -354,7 +354,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -363,7 +363,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Kling2p6ProMultiFunctionVideoGenResponse {
|
||||
|
||||
+14
-14
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,7 +58,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Kling3p0ProMultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Kling3p0ProMultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Kling3p0ProMultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -72,7 +72,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -82,12 +82,12 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -121,7 +121,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -131,7 +131,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -140,7 +140,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -192,7 +192,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_3p0_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -233,14 +233,14 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_3p0_pro_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -252,7 +252,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -359,7 +359,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -368,7 +368,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Kling3p0ProMultiFunctionVideoGenResponse {
|
||||
|
||||
+14
-14
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,7 +58,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Kling3p0StandardMultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Kling3p0StandardMultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Kling3p0StandardMultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -72,7 +72,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -82,12 +82,12 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -121,7 +121,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -131,7 +131,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -140,7 +140,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -192,7 +192,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_3p0_standard_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -233,14 +233,14 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_kling_3p0_standard_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -252,7 +252,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -359,7 +359,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -368,7 +368,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Kling3p0StandardMultiFunctionVideoGenResponse {
|
||||
|
||||
+14
-14
@@ -2,7 +2,7 @@ use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use crate::state::server_state::ServerState;
|
||||
@@ -47,7 +47,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Seedance1p5ProMultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Seedance1p5ProMultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Seedance1p5ProMultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
info!("Request: {:?}", request);
|
||||
|
||||
@@ -63,7 +63,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -73,12 +73,12 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
// Collect media tokens to look up
|
||||
@@ -109,7 +109,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -119,7 +119,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -128,7 +128,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -180,7 +180,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_seedance_1p5_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -220,14 +220,14 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_seedance_1p5_pro_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -239,7 +239,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -346,7 +346,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -355,7 +355,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Seedance1p5ProMultiFunctionVideoGenResponse {
|
||||
|
||||
+14
-14
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,7 +58,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Sora2MultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Sora2MultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Sora2MultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -72,7 +72,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -82,12 +82,12 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -122,7 +122,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -132,7 +132,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
// Some(token) => match image_urls_by_token.get(token) {
|
||||
// Some(url) => Some(url.to_string()),
|
||||
// None => {
|
||||
// return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
// return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
@@ -141,7 +141,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -204,7 +204,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_sora_2_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -259,14 +259,14 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_sora_2_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -278,7 +278,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -375,7 +375,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -384,7 +384,7 @@ pub async fn sora_2_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Sora2MultiFunctionVideoGenResponse {
|
||||
|
||||
+14
-14
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -58,7 +58,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Sora2ProMultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Sora2ProMultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Sora2ProMultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -72,7 +72,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -82,12 +82,12 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -122,7 +122,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -132,7 +132,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
// Some(token) => match image_urls_by_token.get(token) {
|
||||
// Some(url) => Some(url.to_string()),
|
||||
// None => {
|
||||
// return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
// return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
@@ -141,7 +141,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -205,7 +205,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_sora_2_pro_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -261,14 +261,14 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_sora_2_pro_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -280,7 +280,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -377,7 +377,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -386,7 +386,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Sora2ProMultiFunctionVideoGenResponse {
|
||||
|
||||
+15
-15
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -57,7 +57,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Veo3p1FastMultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Veo3p1FastMultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Veo3p1FastMultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -71,7 +71,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -81,12 +81,12 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -121,7 +121,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -131,7 +131,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -140,7 +140,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -209,7 +209,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling veo_3p1_fast_first_last_frame_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -266,7 +266,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_veo_3p1_fast_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
@@ -327,14 +327,14 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_veo_3p1_fast_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -346,7 +346,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -443,7 +443,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -452,7 +452,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Veo3p1FastMultiFunctionVideoGenResponse {
|
||||
|
||||
+15
-15
@@ -3,7 +3,7 @@ use std::iter::FromIterator;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
@@ -57,7 +57,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<Veo3p1MultiFunctionVideoGenRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<Veo3p1MultiFunctionVideoGenResponse>, CommonWebError> {
|
||||
) -> Result<Json<Veo3p1MultiFunctionVideoGenResponse>, AdvancedCommonWebError> {
|
||||
|
||||
payments_error_test(&request.prompt.as_deref().unwrap_or(""))?;
|
||||
|
||||
@@ -71,7 +71,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let maybe_avt_token = server_state
|
||||
@@ -81,12 +81,12 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
let user_token = match maybe_user_session.as_ref() {
|
||||
Some(session) => &session.user_token,
|
||||
None => {
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(reason));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason));
|
||||
}
|
||||
|
||||
let mut query_media_tokens = None;
|
||||
@@ -121,7 +121,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -131,7 +131,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
Some(token) => match image_urls_by_token.get(token) {
|
||||
Some(url) => Some(url.to_string()),
|
||||
None => {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string()));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -140,7 +140,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
info!("Fal webhook URL: {}", server_state.fal.webhook_url);
|
||||
@@ -209,7 +209,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling veo_3p1_first_last_frame_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
} else {
|
||||
@@ -266,7 +266,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_veo_3p1_image_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
@@ -327,14 +327,14 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("Error calling enqueue_veo_3p1_text_to_video_webhook: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
}
|
||||
|
||||
let external_job_id = fal_result.request_id
|
||||
.ok_or_else(|| {
|
||||
warn!("Fal request_id is None");
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::server_error_with_message("Fal request_id is None")
|
||||
})?;
|
||||
|
||||
info!("Fal request_id: {}", external_job_id);
|
||||
@@ -346,7 +346,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
// NB: Don't fail the job if the query fails.
|
||||
@@ -443,7 +443,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Error inserting generic inference job for FAL queue: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -452,7 +452,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(Veo3p1MultiFunctionVideoGenResponse {
|
||||
|
||||
+6
-6
@@ -7,7 +7,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::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_user_session_using_connection::require_user_session_using_connection;
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -25,19 +25,19 @@ pub struct DismissFinishedSessionJobsSuccessResponse {
|
||||
path = "/v1/jobs/session/dismiss_finished",
|
||||
responses(
|
||||
(status = 200, body = DismissFinishedSessionJobsSuccessResponse),
|
||||
(status = 401, body = CommonWebError),
|
||||
(status = 500, body = CommonWebError),
|
||||
(status = 401, body = AdvancedCommonWebError),
|
||||
(status = 500, body = AdvancedCommonWebError),
|
||||
),
|
||||
)]
|
||||
pub async fn dismiss_finished_session_jobs_handler(
|
||||
http_request: HttpRequest,
|
||||
server_state: web::Data<Arc<ServerState>>) -> Result<Json<DismissFinishedSessionJobsSuccessResponse>, CommonWebError>
|
||||
server_state: web::Data<Arc<ServerState>>) -> Result<Json<DismissFinishedSessionJobsSuccessResponse>, AdvancedCommonWebError>
|
||||
{
|
||||
let mut mysql_connection = server_state.mysql_pool.acquire()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
error!("Could not acquire DB pool: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let user_session = require_user_session_using_connection(
|
||||
@@ -48,7 +48,7 @@ pub async fn dismiss_finished_session_jobs_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("tts job query error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(DismissFinishedSessionJobsSuccessResponse {
|
||||
|
||||
+13
-13
@@ -1,7 +1,7 @@
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
|
||||
use crate::state::server_state::ServerState;
|
||||
use crate::util::delete_role_disambiguation::{delete_role_disambiguation, DeleteRole};
|
||||
@@ -27,9 +27,9 @@ use utoipa::ToSchema;
|
||||
path = "/v1/media_files/file/{token}",
|
||||
responses(
|
||||
(status = 200, description = "Success Delete", body = SimpleGenericJsonSuccess),
|
||||
(status = 400, description = "Bad input", body = CommonWebError),
|
||||
(status = 401, description = "Not authorized", body = CommonWebError),
|
||||
(status = 500, description = "Server error", body = CommonWebError),
|
||||
(status = 400, description = "Bad input", body = AdvancedCommonWebError),
|
||||
(status = 401, description = "Not authorized", body = AdvancedCommonWebError),
|
||||
(status = 500, description = "Server error", body = AdvancedCommonWebError),
|
||||
),
|
||||
params(
|
||||
("request" = DeleteMediaFileRequest, description = "Payload for Request"),
|
||||
@@ -41,21 +41,21 @@ pub async fn delete_media_file_handler(
|
||||
path: Path<DeleteMediaFilePathInfo>,
|
||||
request: Json<DeleteMediaFileRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<SimpleGenericJsonSuccess>, CommonWebError> {
|
||||
) -> Result<Json<SimpleGenericJsonSuccess>, AdvancedCommonWebError> {
|
||||
let maybe_user_session = server_state
|
||||
.session_checker
|
||||
.maybe_get_user_session(&http_request, &server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let user_session = match maybe_user_session {
|
||||
Some(session) => session,
|
||||
None => {
|
||||
warn!("not logged in");
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -71,11 +71,11 @@ pub async fn delete_media_file_handler(
|
||||
Ok(Some(media_file)) => media_file,
|
||||
Ok(None) => {
|
||||
warn!("MediaFile not found: {:?}", path.token);
|
||||
return Err(CommonWebError::NotFound);
|
||||
return Err(AdvancedCommonWebError::NotFound);
|
||||
},
|
||||
Err(err) => {
|
||||
warn!("Error looking up media_file: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -84,7 +84,7 @@ pub async fn delete_media_file_handler(
|
||||
|
||||
if !is_creator && !is_mod {
|
||||
warn!("user is not allowed to delete this media_file: {:?}", user_session.user_token);
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
|
||||
let delete_role = delete_role_disambiguation(is_mod, is_creator, request.as_mod);
|
||||
@@ -93,7 +93,7 @@ pub async fn delete_media_file_handler(
|
||||
match delete_role {
|
||||
DeleteRole::ErrorDoNotDelete => {
|
||||
warn!("user is not allowed to delete media_files: {:?}", user_session.user_token);
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
DeleteRole::AsUser => {
|
||||
delete_media_file_as_user(
|
||||
@@ -113,7 +113,7 @@ pub async fn delete_media_file_handler(
|
||||
match delete_role {
|
||||
DeleteRole::ErrorDoNotDelete => {
|
||||
warn!("user is not allowed to undelete voices: {:?}", user_session.user_token);
|
||||
return Err(CommonWebError::NotAuthorized);
|
||||
return Err(AdvancedCommonWebError::NotAuthorized);
|
||||
}
|
||||
DeleteRole::AsUser => {
|
||||
// NB: Technically only mods can see their own media_files
|
||||
@@ -136,7 +136,7 @@ pub async fn delete_media_file_handler(
|
||||
Ok(_) => {},
|
||||
Err(err) => {
|
||||
warn!("Update media_file mod approval status DB error: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::jobs::user::list_user_jobs::{
|
||||
use mysql_queries::queries::generic_inference::web::list_user_jobs_for_moderation::list_user_jobs_for_moderation;
|
||||
|
||||
use tokens::tokens::users::UserToken;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -34,17 +34,17 @@ pub async fn list_user_jobs_handler(
|
||||
http_request: HttpRequest,
|
||||
path: Path<ListUserJobsPathInfo>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ListUserJobsResponse>, CommonWebError> {
|
||||
) -> Result<Json<ListUserJobsResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let results = list_user_jobs_for_moderation(&path.user_token, &server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("list_user_jobs error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let jobs = results.into_iter().map(|row| ListUserJobsEntry {
|
||||
|
||||
+4
-4
@@ -14,7 +14,7 @@ use mysql_queries::queries::users::user::list::list_subscribing_users_by_signup_
|
||||
ListSubscribingUsersBySignupDateArgs,
|
||||
};
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -34,11 +34,11 @@ pub async fn moderator_list_subscribing_users_by_signup_date_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<ModeratorListSubscribingUsersBySignupDateRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ModeratorListSubscribingUsersBySignupDateResponse>, CommonWebError> {
|
||||
) -> Result<Json<ModeratorListSubscribingUsersBySignupDateResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let result = list_subscribing_users_by_signup_date_for_moderation(
|
||||
ListSubscribingUsersBySignupDateArgs {
|
||||
@@ -49,7 +49,7 @@ pub async fn moderator_list_subscribing_users_by_signup_date_handler(
|
||||
).await
|
||||
.map_err(|err| {
|
||||
warn!("moderator_list_subscribing_users_by_signup_date error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let users = result.users.into_iter().map(|u| ModeratorListSubscribingUsersBySignupDateEntry {
|
||||
|
||||
+4
-4
@@ -14,7 +14,7 @@ use mysql_queries::queries::users::user::list::list_users_by_signup_date_for_mod
|
||||
ListUsersBySignupDateArgs,
|
||||
};
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -34,11 +34,11 @@ pub async fn moderator_list_users_by_signup_date_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<ModeratorListUsersBySignupDateRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ModeratorListUsersBySignupDateResponse>, CommonWebError> {
|
||||
) -> Result<Json<ModeratorListUsersBySignupDateResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let result = list_users_by_signup_date_for_moderation(
|
||||
ListUsersBySignupDateArgs {
|
||||
@@ -49,7 +49,7 @@ pub async fn moderator_list_users_by_signup_date_handler(
|
||||
).await
|
||||
.map_err(|err| {
|
||||
warn!("moderator_list_users_by_signup_date error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let users = result.users.into_iter().map(|u| ModeratorListUsersBySignupDateEntry {
|
||||
|
||||
+4
-4
@@ -11,7 +11,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::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -31,11 +31,11 @@ pub async fn moderator_user_lookup_by_stripe_customer_id_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<ModeratorUserLookupByStripeCustomerIdRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ModeratorUserLookupByStripeCustomerIdResponse>, CommonWebError> {
|
||||
) -> Result<Json<ModeratorUserLookupByStripeCustomerIdResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let stripe_customer_id = request.stripe_customer_id.trim();
|
||||
|
||||
@@ -50,7 +50,7 @@ pub async fn moderator_user_lookup_by_stripe_customer_id_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("moderator_user_lookup_by_stripe_customer_id error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let users = results.into_iter().map(|row| ModeratorUserLookupByStripeCustomerIdEntry {
|
||||
|
||||
+4
-4
@@ -16,7 +16,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::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -38,11 +38,11 @@ pub async fn moderator_user_lookup_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<ModeratorUserLookupRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ModeratorUserLookupSuccessResponse>, CommonWebError> {
|
||||
) -> Result<Json<ModeratorUserLookupSuccessResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let search = request.search.trim();
|
||||
|
||||
@@ -64,7 +64,7 @@ pub async fn moderator_user_lookup_handler(
|
||||
let maybe_user = maybe_result
|
||||
.map_err(|err| {
|
||||
warn!("moderator_user_lookup error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_user_details = maybe_user.map(|user| ModeratorUserLookupUserDetails {
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallet_ledger_entries::list_wallet_ledger_ent
|
||||
use mysql_queries::queries::wallet_ledger_entries::list_wallet_ledger_entries_by_wallet::list_wallet_ledger_entries_by_wallet;
|
||||
|
||||
use tokens::tokens::wallets::WalletToken;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -34,17 +34,17 @@ pub async fn list_wallet_ledger_entries_by_wallet_handler(
|
||||
http_request: HttpRequest,
|
||||
path: Path<ListWalletLedgerEntriesByWalletPathInfo>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ListWalletLedgerEntriesByWalletResponse>, CommonWebError> {
|
||||
) -> Result<Json<ListWalletLedgerEntriesByWalletResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let results = list_wallet_ledger_entries_by_wallet(&path.wallet_token, &server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("list_wallet_ledger_entries_by_wallet error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let entries = results.into_iter().map(|row| ListWalletLedgerEntriesByWalletEntry {
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallet_ledger_entries::moderator_get_wallet_l
|
||||
use mysql_queries::queries::wallet_ledger_entries::get_wallet_ledger_entry_for_moderation::get_wallet_ledger_entry_for_moderation;
|
||||
|
||||
use tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -34,17 +34,17 @@ pub async fn moderator_get_wallet_ledger_entry_handler(
|
||||
http_request: HttpRequest,
|
||||
path: Path<ModeratorGetWalletLedgerEntryPathInfo>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ModeratorGetWalletLedgerEntryResponse>, CommonWebError> {
|
||||
) -> Result<Json<ModeratorGetWalletLedgerEntryResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let maybe_entry = get_wallet_ledger_entry_for_moderation(&path.wallet_ledger_entry_token, &server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("moderator_get_wallet_ledger_entry error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_entry_details = maybe_entry.map(|entry| ModeratorGetWalletLedgerEntryDetails {
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallets::list_user_wallets::{
|
||||
use mysql_queries::queries::wallets::list_user_wallets_for_moderation::list_user_wallets_for_moderation;
|
||||
|
||||
use tokens::tokens::users::UserToken;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -34,17 +34,17 @@ pub async fn list_user_wallets_handler(
|
||||
http_request: HttpRequest,
|
||||
path: Path<ListUserWalletsPathInfo>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ListUserWalletsResponse>, CommonWebError> {
|
||||
) -> Result<Json<ListUserWalletsResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let results = list_user_wallets_for_moderation(&path.user_token, &server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("list_user_wallets error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let wallets = results.into_iter().map(|row| ListUserWalletsEntry {
|
||||
|
||||
+11
-11
@@ -14,7 +14,7 @@ use mysql_queries::queries::users::user::get::get_username_by_user_token::get_us
|
||||
use mysql_queries::queries::wallets::create_new_wallet_for_owner_user::create_new_wallet_for_owner_user;
|
||||
use mysql_queries::queries::wallets::find_primary_wallet_token_for_owner::find_primary_wallet_token_for_owner_using_connection;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -35,25 +35,25 @@ pub async fn moderator_create_wallet_for_user_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<ModeratorCreateWalletForUserRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ModeratorCreateWalletForUserResponse>, CommonWebError> {
|
||||
) -> Result<Json<ModeratorCreateWalletForUserResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let user_token = request.user_token.as_ref()
|
||||
.ok_or_else(|| CommonWebError::BadInputWithSimpleMessage("user_token is required".to_string()))?;
|
||||
.ok_or_else(|| AdvancedCommonWebError::BadInputWithSimpleMessage("user_token is required".to_string()))?;
|
||||
|
||||
// Verify user exists
|
||||
let maybe_user = get_username_by_user_token(user_token, &server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("moderator_create_wallet_for_user user lookup error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
if maybe_user.is_none() {
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage("User not found".to_string()));
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("User not found".to_string()));
|
||||
}
|
||||
|
||||
let namespace = request.payments_namespace.unwrap_or(PaymentsNamespace::Artcraft);
|
||||
@@ -64,7 +64,7 @@ pub async fn moderator_create_wallet_for_user_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error acquiring MySQL connection: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_wallet_token = find_primary_wallet_token_for_owner_using_connection(
|
||||
@@ -73,7 +73,7 @@ pub async fn moderator_create_wallet_for_user_handler(
|
||||
&mut mysql_connection,
|
||||
).await.map_err(|err| {
|
||||
error!("Error finding wallet for user {:?}: {:?}", user_token, err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
if let Some(wallet_token) = maybe_wallet_token {
|
||||
@@ -89,7 +89,7 @@ pub async fn moderator_create_wallet_for_user_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let wallet_token = create_new_wallet_for_owner_user(
|
||||
@@ -98,7 +98,7 @@ pub async fn moderator_create_wallet_for_user_handler(
|
||||
&mut transaction,
|
||||
).await.map_err(|err| {
|
||||
error!("Error creating wallet for user {:?}: {:?}", user_token, err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
transaction
|
||||
@@ -106,7 +106,7 @@ pub async fn moderator_create_wallet_for_user_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(ModeratorCreateWalletForUserResponse {
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallets::moderator_get_wallet::{
|
||||
use mysql_queries::queries::wallets::get_wallet_for_moderation::get_wallet_for_moderation;
|
||||
|
||||
use tokens::tokens::wallets::WalletToken;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase};
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
@@ -34,17 +34,17 @@ pub async fn moderator_get_wallet_handler(
|
||||
http_request: HttpRequest,
|
||||
path: Path<ModeratorGetWalletPathInfo>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ModeratorGetWalletResponse>, CommonWebError> {
|
||||
) -> Result<Json<ModeratorGetWalletResponse>, AdvancedCommonWebError> {
|
||||
|
||||
let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection)
|
||||
.await
|
||||
.map_err(|_| CommonWebError::NotAuthorized)?;
|
||||
.map_err(|_| AdvancedCommonWebError::NotAuthorized)?;
|
||||
|
||||
let maybe_wallet = get_wallet_for_moderation(&path.wallet_token, &server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|err| {
|
||||
warn!("moderator_get_wallet error: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_anyhow_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_wallet_details = maybe_wallet.map(|wallet| ModeratorGetWalletDetails {
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::configs::omni_gen::image_models::OMNI_GEN_IMAGE_MODELS_AND_PROVIDERS;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_web::web::{Json, Query};
|
||||
use actix_web::{web, HttpRequest};
|
||||
@@ -25,7 +25,7 @@ pub async fn omni_gen_image_models_handler(
|
||||
_http_request: HttpRequest,
|
||||
_query: Query<OmniGenImageModelsQuery>,
|
||||
_server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<OmniGenImageModelsResponse>, CommonWebError> {
|
||||
) -> Result<Json<OmniGenImageModelsResponse>, AdvancedCommonWebError> {
|
||||
let response = (*OMNI_GEN_IMAGE_MODELS_AND_PROVIDERS).clone();
|
||||
Ok(Json(response))
|
||||
}
|
||||
|
||||
-1
@@ -2,7 +2,6 @@ use std::sync::Arc;
|
||||
|
||||
use crate::configs::omni_gen::video_models::OMNI_GEN_VIDEO_MODELS_AND_PROVIDERS;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_web::web::{Json, Query};
|
||||
|
||||
+5
-5
@@ -5,7 +5,7 @@
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_web::web::Json;
|
||||
use actix_web::{web, HttpRequest};
|
||||
@@ -33,7 +33,7 @@ pub async fn create_prompt_handler(
|
||||
http_request: HttpRequest,
|
||||
request: Json<CreatePromptRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<CreatePromptResponse>, CommonWebError>
|
||||
) -> Result<Json<CreatePromptResponse>, AdvancedCommonWebError>
|
||||
{
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
@@ -45,7 +45,7 @@ pub async fn create_prompt_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
//let maybe_avt_token = server_state
|
||||
@@ -56,7 +56,7 @@ pub async fn create_prompt_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error inserting idempotency token: {:?}", err);
|
||||
CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string())
|
||||
})?;
|
||||
|
||||
let ip_address = get_request_ip(&http_request);
|
||||
@@ -95,7 +95,7 @@ pub async fn create_prompt_handler(
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
error!("error inserting prompt: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+6
-6
@@ -1,7 +1,7 @@
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_web::web::{Json, Path};
|
||||
@@ -44,14 +44,14 @@ pub async fn get_session_subscription_handler(
|
||||
http_request: HttpRequest,
|
||||
path: Path<GetSessionSubscriptionPathInfo>,
|
||||
server_state: web::Data<Arc<ServerState>>
|
||||
) -> Result<Json<GetSessionSubscriptionResponse>, CommonWebError>
|
||||
) -> Result<Json<GetSessionSubscriptionResponse>, AdvancedCommonWebError>
|
||||
{
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error acquiring MySQL connection: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_user_session = server_state
|
||||
@@ -60,12 +60,12 @@ pub async fn get_session_subscription_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let user_token = match maybe_user_session {
|
||||
Some(session) => session.user_token,
|
||||
None => return Err(CommonWebError::NotAuthorized),
|
||||
None => return Err(AdvancedCommonWebError::NotAuthorized),
|
||||
};
|
||||
|
||||
let maybe_subscription = find_subscription_for_owner_user_using_connection(
|
||||
@@ -74,7 +74,7 @@ pub async fn get_session_subscription_handler(
|
||||
&mut mysql_connection
|
||||
).await.map_err(|err| {
|
||||
error!("Error looking up user's ({}) existing subscription: {:?}", &user_token, err);
|
||||
CommonWebError::ServerError // NB: This was probably *our* fault.
|
||||
AdvancedCommonWebError::from_error(err) // NB: This was probably *our* fault.
|
||||
})?;
|
||||
|
||||
Ok(Json(GetSessionSubscriptionResponse {
|
||||
|
||||
+9
-9
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::state::server_state::ServerState;
|
||||
use actix_web::web::Json;
|
||||
use actix_web::{web, HttpRequest};
|
||||
@@ -33,13 +33,13 @@ pub struct GetOrCreateSessionArtcraftWalletResponse {
|
||||
pub async fn get_or_create_session_artcraft_wallet_handler(
|
||||
http_request: HttpRequest,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<GetOrCreateSessionArtcraftWalletResponse>, CommonWebError> {
|
||||
) -> Result<Json<GetOrCreateSessionArtcraftWalletResponse>, AdvancedCommonWebError> {
|
||||
let mut mysql_connection = server_state.mysql_pool
|
||||
.acquire()
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error acquiring MySQL connection: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let maybe_user_session = server_state
|
||||
@@ -48,12 +48,12 @@ pub async fn get_or_create_session_artcraft_wallet_handler(
|
||||
.await
|
||||
.map_err(|e| {
|
||||
warn!("Session checker error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
let user_token = match maybe_user_session {
|
||||
Some(session) => session.user_token,
|
||||
None => return Err(CommonWebError::NotAuthorized),
|
||||
None => return Err(AdvancedCommonWebError::NotAuthorized),
|
||||
};
|
||||
|
||||
let maybe_wallet_token = find_primary_wallet_token_for_owner_using_connection(
|
||||
@@ -62,7 +62,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler(
|
||||
&mut mysql_connection,
|
||||
).await.map_err(|err| {
|
||||
error!("Error finding primary artcraft wallet for user {:?}: {:?}", user_token, err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
if let Some(wallet_token) = maybe_wallet_token {
|
||||
@@ -77,7 +77,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error starting MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
let wallet_token = create_new_artcraft_wallet_for_owner_user(
|
||||
@@ -85,7 +85,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler(
|
||||
&mut transaction,
|
||||
).await.map_err(|err| {
|
||||
error!("Error creating artcraft wallet for user {:?}: {:?}", user_token, err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
transaction
|
||||
@@ -93,7 +93,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler(
|
||||
.await
|
||||
.map_err(|err| {
|
||||
error!("Error committing MySQL transaction: {:?}", err);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(err)
|
||||
})?;
|
||||
|
||||
Ok(Json(GetOrCreateSessionArtcraftWalletResponse {
|
||||
|
||||
+7
-7
@@ -9,7 +9,7 @@ use http_server_common::request::get_request_ip::get_request_ip;
|
||||
use mysql_queries::queries::web_referrals::insert_web_referral::{insert_web_referral, InsertWebReferralArgs};
|
||||
use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
/// Record a web referral for analytics tracking.
|
||||
@@ -26,7 +26,7 @@ pub async fn log_web_referral_handler(
|
||||
http_request: HttpRequest,
|
||||
request: web::Json<LogWebReferralRequest>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<HttpResponse, CommonWebError> {
|
||||
) -> Result<HttpResponse, AdvancedCommonWebError> {
|
||||
|
||||
// 1. Try to get the referral URL from the request body, falling back to the Referer header.
|
||||
let referral_url = request.maybe_referral_url.as_deref()
|
||||
@@ -82,7 +82,7 @@ pub async fn log_web_referral_handler(
|
||||
.make_new_cookie_with_apriori_token(&token)
|
||||
.map_err(|e| {
|
||||
warn!("AVT cookie creation error: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
(token, Some(cookie))
|
||||
}
|
||||
@@ -106,7 +106,7 @@ pub async fn log_web_referral_handler(
|
||||
maybe_anonymous_visitor_token: Some(&avt_token_str),
|
||||
}).await.map_err(|e| {
|
||||
warn!("Error inserting web referral: {:?}", e);
|
||||
CommonWebError::ServerError
|
||||
AdvancedCommonWebError::from_error(e)
|
||||
})?;
|
||||
|
||||
info!("Recorded web referral: {}", referral_url);
|
||||
@@ -117,7 +117,7 @@ pub async fn log_web_referral_handler(
|
||||
};
|
||||
|
||||
let body = serde_json::to_string(&response)
|
||||
.map_err(|_| CommonWebError::ServerError)?;
|
||||
.map_err(AdvancedCommonWebError::from_error)?;
|
||||
|
||||
let mut response_builder = HttpResponse::Ok();
|
||||
|
||||
@@ -130,13 +130,13 @@ pub async fn log_web_referral_handler(
|
||||
.body(body))
|
||||
}
|
||||
|
||||
fn ok_response() -> Result<HttpResponse, CommonWebError> {
|
||||
fn ok_response() -> Result<HttpResponse, AdvancedCommonWebError> {
|
||||
let response = LogWebReferralResponse {
|
||||
success: true,
|
||||
};
|
||||
|
||||
let body = serde_json::to_string(&response)
|
||||
.map_err(|_| CommonWebError::ServerError)?;
|
||||
.map_err(AdvancedCommonWebError::from_error)?;
|
||||
|
||||
Ok(HttpResponse::Ok()
|
||||
.content_type("application/json")
|
||||
|
||||
+1
-15
@@ -7,11 +7,9 @@ use actix_web::Error;
|
||||
use pager::client::pager::Pager;
|
||||
|
||||
use super::handlers::check_advanced_common_web_error::check_advanced_common_web_error;
|
||||
use super::handlers::check_common_web_error::check_common_web_error;
|
||||
use super::handlers::check_status_code_fallback::check_status_code_fallback;
|
||||
use super::request_debugging_metadata::RequestDebuggingMetadata;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::state::flags::paging_flags::PagingFlags;
|
||||
|
||||
// ======================== Transform (factory) ========================
|
||||
@@ -19,7 +17,7 @@ use crate::state::flags::paging_flags::PagingFlags;
|
||||
/// Middleware that intercepts error responses and enqueues pager alerts.
|
||||
///
|
||||
/// Inspects errors in two ways:
|
||||
/// 1. **Typed error matching** via downcast (e.g. `CommonWebError::ServerError`)
|
||||
/// 1. **Typed error matching** via downcast (e.g. `AdvancedCommonWebError::UncaughtServerError`)
|
||||
/// 2. **Status code fallback** for untyped 500s that slip through
|
||||
///
|
||||
/// Both `PagingFlags.is_paging_enabled` and `PagingFlags.is_paging_for_500s_enabled`
|
||||
@@ -132,12 +130,6 @@ fn check_ok_response_for_alerts<B>(
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(common_err) = err.as_error::<CommonWebError>() {
|
||||
if check_common_web_error(pager, method, path, metadata, common_err) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// --- Status code fallback ---
|
||||
@@ -160,12 +152,6 @@ fn check_err_for_alerts(
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(common_err) = err.as_error::<CommonWebError>() {
|
||||
if check_common_web_error(pager, method, path, metadata, common_err) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// --- Status code fallback ---
|
||||
let status = err.as_response_error().status_code();
|
||||
check_status_code_fallback(pager, method, path, metadata, status.as_u16());
|
||||
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
use log::{debug, warn};
|
||||
|
||||
use pager::client::pager::Pager;
|
||||
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::middleware::error_alerting_middleware::request_debugging_metadata::RequestDebuggingMetadata;
|
||||
|
||||
/// Check `CommonWebError` and alert on server errors.
|
||||
/// Returns `true` if the error was handled (alerted or intentionally skipped).
|
||||
pub(crate) fn check_common_web_error(
|
||||
pager: &Pager,
|
||||
method: &str,
|
||||
path: &str,
|
||||
metadata: &RequestDebuggingMetadata,
|
||||
error: &CommonWebError,
|
||||
) -> bool {
|
||||
match error {
|
||||
CommonWebError::ServerError => {
|
||||
let summary = format!("CommonWebError::ServerError on {} {}", method, path);
|
||||
let description = format!(
|
||||
"A CommonWebError::ServerError was returned.\n\n\
|
||||
Endpoint: {} {}\n\
|
||||
Error: {:?}\n\
|
||||
Time: {}",
|
||||
method, path, error,
|
||||
chrono::Utc::now().format("%Y-%m-%d %H:%M:%S UTC"),
|
||||
);
|
||||
|
||||
let notification = NotificationDetailsBuilder::from_title(summary)
|
||||
.set_description(Some(description))
|
||||
.set_urgency(Some(NotificationUrgency::Medium))
|
||||
.set_http_method(Some(method.to_string()))
|
||||
.set_http_path(Some(path.to_string()))
|
||||
.set_http_status_code(Some(500))
|
||||
.set_request_ip_address(metadata.request_ip_address.clone())
|
||||
.set_avt_cookie_token(metadata.avt_cookie_token.clone())
|
||||
.set_session_token(metadata.session_token.clone())
|
||||
.set_session_user_token(metadata.session_user_token.clone())
|
||||
.build();
|
||||
|
||||
if let Err(err) = pager.enqueue_page(notification) {
|
||||
warn!("Error alerting middleware: failed to enqueue page: {:?}", err);
|
||||
} else {
|
||||
debug!("Error alerting middleware: enqueued alert for CommonWebError::ServerError");
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
// Don't alert on client errors (400, 401, 404, 402).
|
||||
CommonWebError::BadInputWithSimpleMessage(_) => true,
|
||||
CommonWebError::NotFound => true,
|
||||
CommonWebError::NotAuthorized => true,
|
||||
CommonWebError::PaymentRequired => true,
|
||||
}
|
||||
}
|
||||
-1
@@ -1,3 +1,2 @@
|
||||
pub(super) mod check_advanced_common_web_error;
|
||||
pub(super) mod check_common_web_error;
|
||||
pub(super) mod check_status_code_fallback;
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
use log::{error, warn};
|
||||
use mysql_queries::queries::media_files::get::batch_get_media_files_by_tokens::{batch_get_media_files_by_tokens_with_connection, MediaFilesByTokensRecord};
|
||||
use sqlx::pool::PoolConnection;
|
||||
@@ -11,7 +11,7 @@ const CAN_SEE_DELETED: bool = false;
|
||||
pub async fn fetch_all_required_media_files(
|
||||
mysql_connection: &mut PoolConnection<MySql>,
|
||||
media_file_tokens: &[MediaFileToken],
|
||||
) -> Result<Vec<MediaFilesByTokensRecord>, CommonWebError> {
|
||||
) -> Result<Vec<MediaFilesByTokensRecord>, AdvancedCommonWebError> {
|
||||
let result = batch_get_media_files_by_tokens_with_connection(
|
||||
mysql_connection,
|
||||
&media_file_tokens,
|
||||
@@ -22,13 +22,13 @@ pub async fn fetch_all_required_media_files(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
if media_files.len() != media_file_tokens.len() {
|
||||
warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), media_file_tokens.len());
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}",
|
||||
media_files.len(), media_file_tokens.len())));
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
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 actix_web::HttpRequest;
|
||||
@@ -18,7 +18,7 @@ pub async fn lookup_image_urls_as_map(
|
||||
mysql_connection: &mut PoolConnection<MySql>,
|
||||
server_environment: ServerEnvironment,
|
||||
tokens: &[MediaFileToken],
|
||||
) -> Result<HashMap<MediaFileToken, String>, CommonWebError> {
|
||||
) -> Result<HashMap<MediaFileToken, String>, AdvancedCommonWebError> {
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
|
||||
let result = batch_get_media_files_by_tokens_with_connection(
|
||||
@@ -31,7 +31,7 @@ pub async fn lookup_image_urls_as_map(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -45,7 +45,7 @@ pub async fn lookup_image_urls_as_map(
|
||||
.cloned()
|
||||
.collect::<Vec<&MediaFileToken>>();
|
||||
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}",
|
||||
media_files.len(), tokens.len(), diff, requested, returned)));
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
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 actix_web::HttpRequest;
|
||||
@@ -18,7 +18,7 @@ pub async fn lookup_image_urls_as_optional_list(
|
||||
mysql_connection: &mut PoolConnection<MySql>,
|
||||
server_environment: ServerEnvironment,
|
||||
tokens: &[MediaFileToken],
|
||||
) -> Result<Option<Vec<String>>, CommonWebError> {
|
||||
) -> Result<Option<Vec<String>>, AdvancedCommonWebError> {
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
|
||||
let result = batch_get_media_files_by_tokens_with_connection(
|
||||
@@ -31,7 +31,7 @@ pub async fn lookup_image_urls_as_optional_list(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -45,7 +45,7 @@ pub async fn lookup_image_urls_as_optional_list(
|
||||
.cloned()
|
||||
.collect::<Vec<&MediaFileToken>>();
|
||||
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}",
|
||||
media_files.len(), tokens.len(), diff, requested, returned)));
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
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 actix_web::HttpRequest;
|
||||
@@ -19,7 +19,7 @@ pub async fn lookup_media_file_urls_as_map(
|
||||
mysql_connection: &mut PoolConnection<MySql>,
|
||||
server_environment: ServerEnvironment,
|
||||
tokens: &[MediaFileToken],
|
||||
) -> Result<HashMap<MediaFileToken, Url>, CommonWebError> {
|
||||
) -> Result<HashMap<MediaFileToken, Url>, AdvancedCommonWebError> {
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
|
||||
let result = batch_get_media_files_by_tokens_with_connection(
|
||||
@@ -32,7 +32,7 @@ pub async fn lookup_media_file_urls_as_map(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -46,7 +46,7 @@ pub async fn lookup_media_file_urls_as_map(
|
||||
.cloned()
|
||||
.collect::<Vec<&MediaFileToken>>();
|
||||
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}",
|
||||
media_files.len(), tokens.len(), diff, requested, returned)));
|
||||
}
|
||||
|
||||
+4
-4
@@ -10,7 +10,7 @@ use sqlx::pool::PoolConnection;
|
||||
use sqlx::MySql;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError;
|
||||
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;
|
||||
|
||||
@@ -28,7 +28,7 @@ pub async fn lookup_media_files_as_cdn_url_list_and_map(
|
||||
mysql_connection: &mut PoolConnection<MySql>,
|
||||
server_environment: ServerEnvironment,
|
||||
tokens: &[MediaFileToken],
|
||||
) -> Result<MediaFilesAsCdnUrlListAndMap, CommonWebError> {
|
||||
) -> Result<MediaFilesAsCdnUrlListAndMap, AdvancedCommonWebError> {
|
||||
const CAN_SEE_DELETED: bool = false;
|
||||
|
||||
if tokens.is_empty() {
|
||||
@@ -48,7 +48,7 @@ pub async fn lookup_media_files_as_cdn_url_list_and_map(
|
||||
Ok(files) => files,
|
||||
Err(err) => {
|
||||
error!("Error getting media files by tokens: {:?}", err);
|
||||
return Err(CommonWebError::ServerError);
|
||||
return Err(AdvancedCommonWebError::from_anyhow_error(err));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -62,7 +62,7 @@ pub async fn lookup_media_files_as_cdn_url_list_and_map(
|
||||
.cloned()
|
||||
.collect::<Vec<&MediaFileToken>>();
|
||||
|
||||
return Err(CommonWebError::BadInputWithSimpleMessage(
|
||||
return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(
|
||||
format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}",
|
||||
media_files.len(), tokens.len(), diff, requested, returned)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user