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