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