1*b315a0a8SYosh use test_programs::proxy;
2*b315a0a8SYosh use test_programs::wasi::{
3*b315a0a8SYosh     http::types::{Fields, IncomingRequest, OutgoingBody, OutgoingResponse, ResponseOutparam},
4*b315a0a8SYosh     keyvalue,
5*b315a0a8SYosh };
6*b315a0a8SYosh 
7*b315a0a8SYosh struct T;
8*b315a0a8SYosh 
9*b315a0a8SYosh proxy::export!(T);
10*b315a0a8SYosh 
11*b315a0a8SYosh impl proxy::exports::wasi::http::incoming_handler::Guest for T {
handle(_: IncomingRequest, outparam: ResponseOutparam)12*b315a0a8SYosh     fn handle(_: IncomingRequest, outparam: ResponseOutparam) {
13*b315a0a8SYosh         let fields = Fields::new();
14*b315a0a8SYosh         let resp = OutgoingResponse::new(fields);
15*b315a0a8SYosh         let body = resp.body().expect("outgoing response");
16*b315a0a8SYosh 
17*b315a0a8SYosh         ResponseOutparam::set(outparam, Ok(resp));
18*b315a0a8SYosh 
19*b315a0a8SYosh         let out = body.write().expect("outgoing stream");
20*b315a0a8SYosh         let bucket = keyvalue::store::open("").unwrap();
21*b315a0a8SYosh         let data = bucket.get("hello").unwrap().unwrap();
22*b315a0a8SYosh         out.blocking_write_and_flush(&data)
23*b315a0a8SYosh             .expect("writing response");
24*b315a0a8SYosh 
25*b315a0a8SYosh         drop(out);
26*b315a0a8SYosh         OutgoingBody::finish(body, None).expect("outgoing-body.finish");
27*b315a0a8SYosh     }
28*b315a0a8SYosh }
29*b315a0a8SYosh 
main()30*b315a0a8SYosh fn main() {}
31