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 {
run() -> Result<(), ()>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 
main()43 fn main() {}
44