1*6f6a514bSRoman Volosatovs use test_programs::p3::wasi::http::types::{ErrorCode, Method, Scheme};
2*6f6a514bSRoman Volosatovs
3*6f6a514bSRoman Volosatovs struct Component;
4*6f6a514bSRoman Volosatovs
5*6f6a514bSRoman Volosatovs test_programs::p3::export!(Component);
6*6f6a514bSRoman Volosatovs
7*6f6a514bSRoman Volosatovs impl test_programs::p3::exports::wasi::cli::run::Guest for Component {
run() -> Result<(), ()>8*6f6a514bSRoman Volosatovs async fn run() -> Result<(), ()> {
9*6f6a514bSRoman Volosatovs let addr = test_programs::p3::wasi::cli::environment::get_environment()
10*6f6a514bSRoman Volosatovs .into_iter()
11*6f6a514bSRoman Volosatovs .find_map(|(k, v)| k.eq("HTTP_SERVER").then_some(v))
12*6f6a514bSRoman Volosatovs .unwrap();
13*6f6a514bSRoman Volosatovs let res = test_programs::p3::http::request(
14*6f6a514bSRoman Volosatovs Method::Connect,
15*6f6a514bSRoman Volosatovs Scheme::Http,
16*6f6a514bSRoman Volosatovs &addr,
17*6f6a514bSRoman Volosatovs "/",
18*6f6a514bSRoman Volosatovs None,
19*6f6a514bSRoman Volosatovs Some(&[]),
20*6f6a514bSRoman Volosatovs None,
21*6f6a514bSRoman Volosatovs None,
22*6f6a514bSRoman Volosatovs None,
23*6f6a514bSRoman Volosatovs )
24*6f6a514bSRoman Volosatovs .await;
25*6f6a514bSRoman Volosatovs
26*6f6a514bSRoman Volosatovs assert!(matches!(
27*6f6a514bSRoman Volosatovs res.unwrap_err()
28*6f6a514bSRoman Volosatovs .downcast::<ErrorCode>()
29*6f6a514bSRoman Volosatovs .expect("expected a wasi-http ErrorCode"),
30*6f6a514bSRoman Volosatovs ErrorCode::HttpProtocolError,
31*6f6a514bSRoman Volosatovs ));
32*6f6a514bSRoman Volosatovs Ok(())
33*6f6a514bSRoman Volosatovs }
34*6f6a514bSRoman Volosatovs }
35*6f6a514bSRoman Volosatovs
main()36*6f6a514bSRoman Volosatovs fn main() {}
37