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 { 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 30 fn main() {} 31