From 218edb55068d4b536b1fec2df9459f835ee714c0 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Wed, 7 May 2025 16:40:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?download=5Fhandler=E6=94=B9=E4=B8=BArawresp?= =?UTF-8?q?onse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cores/handlers/datamgr/route.rs | 35 ++++++++++++++----- src/cores/servers/actix_web/mod.rs | 3 +- .../data-namerawdata-owner | 1 + 3 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 storage.replica.location/data-namerawdata-owner diff --git a/src/cores/handlers/datamgr/route.rs b/src/cores/handlers/datamgr/route.rs index 1bd4fe9..3bbcdfa 100644 --- a/src/cores/handlers/datamgr/route.rs +++ b/src/cores/handlers/datamgr/route.rs @@ -241,34 +241,41 @@ pub async fn query_data_handler( pub async fn download_data_handler( _: Arc, server_request: ServerRequest, -) -> ServerResult { +) -> ServerResponse { let headers = server_request.headers; let params_data_type = server_request.params.get("data_type").unwrap(); + let bad_request = |body_str| { + ServerRawResponse::bad_request() + .body(Vec::from(body_str)) + .build() + .into() + }; + let data_type = match CString::new(params_data_type.as_str()) { Ok(cstr) => cstr, - Err(_) => return Err(ServerError::bad_request("Invalid data type")), + Err(_) => return bad_request("Invalid data type"), }; let header_cloud_name = match headers.get("x-cloud-name") { Some(value) => value.to_string(), - None => return Err(ServerError::bad_request("Missing x-cloud-name header")), + None => return bad_request("Missing x-cloud-name header"), }; let cloud_name = match CString::new(header_cloud_name) { Ok(cstr) => cstr, - Err(_) => return Err(ServerError::bad_request("Invalid cloud name")), + Err(_) => return bad_request("Invalid cloud name"), }; let header_cloud_from = match headers.get("x-cloud-from") { Some(value) => value.to_string(), - None => return Err(ServerError::bad_request("Missing x-cloud-from header")), + None => return bad_request("Missing x-cloud-from header"), }; let cloud_from = match CString::new(header_cloud_from) { Ok(cstr) => cstr, - Err(_) => return Err(ServerError::bad_request("Invalid cloud from")), + Err(_) => return bad_request("Invalid cloud from"), }; unsafe { @@ -283,11 +290,17 @@ pub async fn download_data_handler( ); if ret <= 0 { - return Err(ServerError::internal_error("DownloadData failed")); + return ServerRawResponse::internal_error() + .body(Vec::from("DownloadData failed")) + .build() + .into(); } if data.is_null() { - return Err(ServerError::internal_error("Received null pointer")); + return ServerRawResponse::internal_error() + .body(Vec::from("Received null pointer")) + .build() + .into(); } let result = { @@ -298,7 +311,11 @@ pub async fn download_data_handler( datamgr_api::FreeMem(data); let body_str = String::from_utf8_lossy(&result).to_string(); - Ok(body_str.into()) + + ServerRawResponse::ok() + .body(body_str.into_bytes()) + .build() + .into() } } diff --git a/src/cores/servers/actix_web/mod.rs b/src/cores/servers/actix_web/mod.rs index d2046ed..fbe70d6 100644 --- a/src/cores/servers/actix_web/mod.rs +++ b/src/cores/servers/actix_web/mod.rs @@ -741,8 +741,7 @@ pub mod datamgr { "DataMgr" ); - define_json_response_method!( - body_unrequired + define_raw_response_method!( download_data, get, "/Download/{data_type}", diff --git a/storage.replica.location/data-namerawdata-owner b/storage.replica.location/data-namerawdata-owner new file mode 100644 index 0000000..f534a09 --- /dev/null +++ b/storage.replica.location/data-namerawdata-owner @@ -0,0 +1 @@ +test-file! -- Gitee From 78c3d33bff87d41a8bc04aee80aef8f63b82c2a9 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Wed, 7 May 2025 16:40:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?download=5Fhandler=E6=94=B9=E4=B8=BArawresp?= =?UTF-8?q?onse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- storage.replica.location/data-namerawdata-owner | 1 - 1 file changed, 1 deletion(-) delete mode 100644 storage.replica.location/data-namerawdata-owner diff --git a/storage.replica.location/data-namerawdata-owner b/storage.replica.location/data-namerawdata-owner deleted file mode 100644 index f534a09..0000000 --- a/storage.replica.location/data-namerawdata-owner +++ /dev/null @@ -1 +0,0 @@ -test-file! -- Gitee