diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index e249ab7..40846a2 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -35,12 +35,27 @@ jobs: run: | VERSION=0.13.5 curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | sudo bash -s -- --version=$VERSION -p /usr/local - + + mkdir -p /usr/local/lib/wasmedge + wget https://github.com/WasmEdge/WasmEdge/releases/download/$VERSION/WasmEdge-plugin-wasmedge_rustls-$VERSION-ubuntu20.04_x86_64.tar.gz + tar -zxf WasmEdge-plugin-wasmedge_rustls-$VERSION-ubuntu20.04_x86_64.tar.gz + sudo mv libwasmedge_rustls.so /usr/local/lib/wasmedge + - name: Client example run: | cargo build --target wasm32-wasi --release - wasmedgec target/wasm32-wasi/release/wasmedge_reqwest_demo.wasm wasmedge_reqwest_demo.wasm - resp=$(wasmedge wasmedge_reqwest_demo.wasm 2>&1) + wasmedgec target/wasm32-wasi/release/http.wasm http.wasm + wasmedgec target/wasm32-wasi/release/https.wasm https.wasm + resp=$(wasmedge http.wasm 2>&1) + echo "$resp" + if [[ $resp == *"WasmEdge"* ]]; then + echo -e "Execution Success!" + else + echo -e "Execution Fail!" + exit 1 + fi + + resp=$(wasmedge https.wasm 2>&1) echo "$resp" if [[ $resp == *"WasmEdge"* ]]; then echo -e "Execution Success!" diff --git a/Cargo.toml b/Cargo.toml index d7fc5ac..bc1ea31 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,5 +4,13 @@ version = "0.1.0" edition = "2021" [dependencies] -reqwest_wasi = "0.11" -tokio_wasi = { version = "1", features = ["rt", "macros", "net", "time"]} +reqwest_wasi = { version = "0.11", features = ["wasmedge-tls"] } +tokio_wasi = { version = "1", features = ["rt", "macros", "net", "time"] } + +[[bin]] +name = "http" +path = "src/http.rs" + +[[bin]] +name = "https" +path = "src/https.rs" diff --git a/src/main.rs b/src/http.rs similarity index 100% rename from src/main.rs rename to src/http.rs diff --git a/src/https.rs b/src/https.rs new file mode 100644 index 0000000..78dabb6 --- /dev/null +++ b/src/https.rs @@ -0,0 +1,37 @@ +#[tokio::main(flavor = "current_thread")] +async fn main() -> Result<(), reqwest::Error> { + // Some simple CLI args requirements... + let url = "https://eu.httpbin.org/get?msg=WasmEdge"; + + eprintln!("Fetching {:?}...", url); + + let res = reqwest::get(url).await?; + + eprintln!("Response: {:?} {}", res.version(), res.status()); + eprintln!("Headers: {:#?}\n", res.headers()); + + let body = res.text().await?; + println!("GET: {}", body); + + let client = reqwest::Client::new(); + + let res = client + .post("https://eu.httpbin.org/post") + .body("msg=WasmEdge") + .send() + .await?; + let body = res.text().await?; + + println!("POST: {}", body); + + let res = client + .put("https://eu.httpbin.org/put") + .body("msg=WasmEdge") + .send() + .await?; + let body = res.text().await?; + + println!("PUT: {}", body); + + Ok(()) +}