1 use test_programs::proxy;
2 use test_programs::wasi::http::types::{
3     Fields, IncomingRequest, OutgoingResponse, ResponseOutparam,
4 };
5 
6 struct T;
7 
8 proxy::export!(T);
9 
10 impl proxy::exports::wasi::http::incoming_handler::Guest for T {
handle(request: IncomingRequest, outparam: ResponseOutparam)11     fn handle(request: IncomingRequest, outparam: ResponseOutparam) {
12         let headers = request.headers();
13         let header_key = "env".to_string();
14         let env_var = headers.get(&header_key);
15         assert!(env_var.len() == 1, "should have exactly one `env` header");
16         let key = std::str::from_utf8(&env_var[0]).unwrap();
17         let fields = Fields::new();
18         if let Ok(val) = std::env::var(key) {
19             fields.set(&header_key, &[val.into_bytes()]).unwrap();
20         }
21         let resp = OutgoingResponse::new(fields);
22         ResponseOutparam::set(outparam, Ok(resp));
23     }
24 }
25 
main()26 fn main() {}
27