ngyn_vercel/
lib.rs

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}