From 63a42858303fc0306ff70fb1189a462d536d5af1 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 27 Aug 2024 17:39:19 -0400 Subject: [PATCH] don't return raw http responses --- .../get/batch_get_media_files_handler.rs | 17 +++++------------ .../media_files/get/get_media_file_handler.rs | 13 ++++--------- .../search_featured_media_files_handler.rs | 15 ++++----------- .../search_session_media_files_handler.rs | 15 ++++----------- 4 files changed, 17 insertions(+), 43 deletions(-) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs index b99d1cd47d..9f095b41e3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use actix_web::{HttpMessage, HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::StatusCode; -use actix_web::web::Path; +use actix_web::web::{Json, Path}; use actix_web_lab::extract::Query; use chrono::{DateTime, Utc}; use futures_old_for_limiter::future::result; @@ -250,8 +250,8 @@ impl fmt::Display for BatchGetMediaFilesError { pub async fn batch_get_media_files_handler( http_request: HttpRequest, query: Query, - server_state: web::Data>) -> Result -{ + server_state: web::Data> +) -> Result, BatchGetMediaFilesError> { let maybe_user_session = server_state .session_checker .maybe_get_user_session(&http_request, &server_state.mysql_pool) @@ -392,15 +392,8 @@ pub async fn batch_get_media_files_handler( }) .collect(); - let response = BatchGetMediaFilesSuccessResponse { + Ok(Json(BatchGetMediaFilesSuccessResponse { success: true, media_files, - }; - - let body = serde_json::to_string(&response) - .map_err(|e| BatchGetMediaFilesError::ServerError)?; - - Ok(HttpResponse::Ok() - .content_type("application/json") - .body(body)) + })) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs index f59a57f039..d9edbd86ec 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use actix_web::{HttpMessage, HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::{StatusCode, Uri}; -use actix_web::web::Path; +use actix_web::web::{Json, Path}; use chrono::{DateTime, Utc}; use log::warn; use url::Url; @@ -245,8 +245,8 @@ impl fmt::Display for GetMediaFileError { pub async fn get_media_file_handler( http_request: HttpRequest, path: Path, - server_state: web::Data>) -> Result -{ + server_state: web::Data> +) -> Result, GetMediaFileError> { let media_file_token = path.into_inner().token; let maybe_user_session = server_state @@ -280,12 +280,7 @@ pub async fn get_media_file_handler( modern_media_file_lookup(&media_file_token, show_deleted_results, &server_state).await? }; - let body = serde_json::to_string(&response) - .map_err(|e| GetMediaFileError::ServerError)?; - - Ok(HttpResponse::Ok() - .content_type("application/json") - .body(body)) + Ok(Json(response)) } async fn modern_media_file_lookup( diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs index 2db7d8837b..e71694e0ae 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use actix_web::{HttpMessage, HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::StatusCode; -use actix_web::web::Query; +use actix_web::web::{Json, Query}; use chrono::{DateTime, Utc}; use log::warn; use utoipa::{IntoParams, ToSchema}; @@ -190,7 +190,7 @@ pub async fn search_featured_media_files_handler( http_request: HttpRequest, query: Query, server_state: web::Data> -) -> Result +) -> Result, SearchFeaturedMediaFilesError> { let mut maybe_filter_media_types = get_scoped_media_types(query.filter_media_type.as_deref()); let mut maybe_filter_media_classes = get_scoped_media_classes(query.filter_media_classes.as_deref()); @@ -273,15 +273,8 @@ pub async fn search_featured_media_files_handler( }) .collect::>(); - let response = SearchFeaturedMediaFilesSuccessResponse { + Ok(Json(SearchFeaturedMediaFilesSuccessResponse { success: true, results, - }; - - let body = serde_json::to_string(&response) - .map_err(|e| SearchFeaturedMediaFilesError::ServerError)?; - - Ok(HttpResponse::Ok() - .content_type("application/json") - .body(body)) + })) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs index bca5976e40..22e547f7fb 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use actix_web::{HttpMessage, HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::StatusCode; -use actix_web::web::Query; +use actix_web::web::{Json, Query}; use chrono::{DateTime, Utc}; use log::warn; use url::Url; @@ -197,7 +197,7 @@ pub async fn search_session_media_files_handler( http_request: HttpRequest, query: Query, server_state: web::Data> -) -> Result +) -> Result, SearchMediaFilesError> { // NB(bt,2024-07-01): This isn't great. Though we HMAC our cookies, this could // result in bad situations where we don't invalidate sessions, etc. We're only @@ -303,15 +303,8 @@ pub async fn search_session_media_files_handler( }) .collect::>(); - let response = SearchMediaFilesSuccessResponse { + Ok(Json(SearchMediaFilesSuccessResponse { success: true, results, - }; - - let body = serde_json::to_string(&response) - .map_err(|e| SearchMediaFilesError::ServerError)?; - - Ok(HttpResponse::Ok() - .content_type("application/json") - .body(body)) + })) }