1use ngyn_shared::{
2 core::engine::{NgynHttpPlatform, PlatformData},
3 server::response::ReadBytes,
4};
5use vercel_runtime::{Body, Error, Request, Response as VercelResponse};
6
7#[derive(Default)]
8pub struct VercelApplication {
9 data: PlatformData,
10}
11
12impl NgynHttpPlatform for VercelApplication {
13 fn data_mut(&mut self) -> &mut PlatformData {
14 &mut self.data
15 }
16}
17
18impl VercelApplication {
19 pub async fn handle(self, request: Request) -> Result<VercelResponse<Body>, Error> {
20 let request = request.map(|b| b.to_vec());
21 let mut response = self.data.respond(request).await;
22
23 let body = response
24 .read_bytes()
25 .await
26 .expect("Response hasn't been set");
27
28 let (parts, ..) = response.into_parts();
29
30 Ok(VercelResponse::from_parts(parts, Body::from(body.to_vec())))
31 }
32}