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