MCPcopy Create free account
hub / github.com/bytecodealliance/wstd / proxy

Function proxy

examples/http_server_proxy.rs:34–57  ·  view source on GitHub ↗
(server_req: Request<Body>, target_url: Uri)

Source from the content-addressed store, hash-verified

32}
33
34async fn proxy(server_req: Request<Body>, target_url: Uri) -> Result<Response<Body>, Error> {
35 let client = Client::new();
36 let mut client_req = Request::builder();
37 client_req = client_req.uri(target_url).method(server_req.method());
38
39 // Copy headers from `server_req` to the `client_req`.
40 for (key, value) in server_req.headers() {
41 client_req = client_req.header(key, value);
42 }
43
44 // Stream the request body.
45 let client_req = client_req.body(server_req.into_body())?;
46 // Send the request.
47 let client_resp = client.send(client_req).await?;
48 // Copy headers from `client_resp` to `server_resp`.
49 let mut server_resp = Response::builder();
50 for (key, value) in client_resp.headers() {
51 server_resp
52 .headers_mut()
53 .expect("no errors could be in ResponseBuilder")
54 .append(key, value.clone());
55 }
56 Ok(server_resp.body(client_resp.into_body())?)
57}
58
59fn http_not_found(_request: Request<Body>) -> Response<Body> {
60 Response::builder()

Callers 1

mainFunction · 0.85

Calls 1

sendMethod · 0.45

Tested by

no test coverage detected