1 use anyhow::Context; 2 use test_programs::p3::wasi::http::types::{Method, Scheme}; 3 4 struct Component; 5 6 test_programs::p3::export!(Component); 7 8 impl test_programs::p3::exports::wasi::cli::run::Guest for Component { 9 async fn run() -> Result<(), ()> { 10 let addr = test_programs::p3::wasi::cli::environment::get_environment() 11 .into_iter() 12 .find_map(|(k, v)| k.eq("HTTP_SERVER").then_some(v)) 13 .unwrap(); 14 let res = test_programs::p3::http::request( 15 Method::Get, 16 Scheme::Http, 17 &addr, 18 "/get?some=arg&goes=here", 19 None, 20 None, 21 None, 22 None, 23 None, 24 ) 25 .await 26 .context("/get") 27 .unwrap(); 28 29 println!("{addr} /get: {res:?}"); 30 assert_eq!(res.status, 200); 31 let method = res.header("x-wasmtime-test-method").unwrap(); 32 assert_eq!(std::str::from_utf8(method).unwrap(), "GET"); 33 let uri = res.header("x-wasmtime-test-uri").unwrap(); 34 assert_eq!( 35 std::str::from_utf8(uri).unwrap(), 36 format!("/get?some=arg&goes=here") 37 ); 38 assert_eq!(res.body, b""); 39 Ok(()) 40 } 41 } 42 43 fn main() {} 44