diff --git a/src/server/traits.rs b/src/server/traits.rs index 8d755d6..5963523 100644 --- a/src/server/traits.rs +++ b/src/server/traits.rs @@ -16,7 +16,10 @@ pub trait ResponseFor { #[async_trait] pub trait ResponseJsonFor { - async fn response_json(&self, req: Request) -> Result; + async fn response_json( + &self, + req: Request, + ) -> Result, PixivDownloaderError>; } #[async_trait] @@ -27,6 +30,7 @@ where { async fn response(&self, req: Request) -> Result, PixivDownloaderError> { let re = self.response_json(req).await?; - Ok(Response::new(Body::from(re.to_string()))) + let (parts, body) = re.into_parts(); + Ok(Response::from_parts(parts, Body::from(body.to_string()))) } } diff --git a/src/server/version.rs b/src/server/version.rs index 4386edd..bbdc9e9 100644 --- a/src/server/version.rs +++ b/src/server/version.rs @@ -4,6 +4,7 @@ use super::traits::ResponseJsonFor; use crate::error::PixivDownloaderError; use hyper::Body; use hyper::Request; +use hyper::Response; use json::JsonValue; use regex::Regex; @@ -19,8 +20,11 @@ impl VersionContext { #[async_trait] impl ResponseJsonFor for VersionContext { - async fn response_json(&self, _req: Request) -> Result { - Ok(json::object! {"version": [0, 0, 1, 0]}) + async fn response_json( + &self, + _req: Request, + ) -> Result, PixivDownloaderError> { + Ok(Response::new(json::object! {"version": [0, 0, 1, 0]})) } }