1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use reqores::ServerRequest;
use worker::Request;
pub struct CfWorkerServerRequest {
request: Request,
body: Vec<u8>,
}
impl CfWorkerServerRequest {
pub async fn new(mut request: Request) -> worker::Result<Self> {
let body = request.bytes().await?;
Ok(Self { request, body })
}
}
impl ServerRequest for CfWorkerServerRequest {
fn body(&self) -> &[u8] {
&self.body
}
fn header(&self, key: &str) -> Option<String> {
self.request.headers().get(key).ok().flatten()
}
}
pub async fn decode_request(request: Request) -> worker::Result<CfWorkerServerRequest> {
CfWorkerServerRequest::new(request).await
}