diff --git a/additional/env.js b/additional/env.js index 62f5e57..e1d5b2e 100644 --- a/additional/env.js +++ b/additional/env.js @@ -685,33 +685,13 @@ let env = { const response = await fetch(urlStr); const result = await response.text(); - const ptr = writeStringToWasm(result); - - const { ExecuteFetchHandler} = window.crafter_webbuild_wasi.instance.exports; - ExecuteFetchHandler(handlerID, ptr); - WasmFree(ptr); - - } catch (error) { - return 0; - } - }, - fetchWithBody: async function(url, urlLenght, body, bodyLength, handlerID) { - try { - const urlStr = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, url, urlLenght)); - const bodyStr = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, body, bodyLength)); - - const response = await fetch(urlStr, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: bodyStr - }); - const result = await response.text(); + console.log(result); const ptr = writeStringToWasm(result); + console.log(ptr); const { ExecuteFetchHandler} = window.crafter_webbuild_wasi.instance.exports; + console.log("callback"); ExecuteFetchHandler(handlerID, ptr); WasmFree(ptr); diff --git a/examples/FetchExample/README.md b/examples/FetchExample/README.md deleted file mode 100644 index debb776..0000000 --- a/examples/FetchExample/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# FetchExample - -This sample demonstrates how to use the Fetch API in Crafter.CppDOM to make HTTP requests. - -## Features - -- Shows how to perform HTTP GET requests -- Demonstrates asynchronous response handling -- Illustrates how to update the DOM with fetched data - -## Usage - -```cpp -import Crafter.CppDOM; -import std; -using namespace Crafter::CppDOMBindings; - -int main(){ - void* body = GetElementById("body"); - SetInnerHTML(body, "

Fetch Example

Testing HTTP requests...

"); - - Fetch("https://httpbin.org/get", [body](std::string result){ - if (!result.empty()) { - SetInnerHTML(body, "

Fetch Example

Response: " + result + "

"); - } else { - SetInnerHTML(body, "

Fetch Example

Failed to fetch data

"); - } - FreeJs(body); - }); -} -``` - -## Building and Running - -```bash -crafter-build build executable -run.sh -``` - -Then navigate to `http://localhost:8080/` in your browser. - -If caddy is not installed, you can use your favorite static file server instead. \ No newline at end of file diff --git a/interfaces/Crafter.CppDOM-BindingsExport.cppm b/interfaces/Crafter.CppDOM-BindingsExport.cppm index 15b59c5..d287705 100644 --- a/interfaces/Crafter.CppDOM-BindingsExport.cppm +++ b/interfaces/Crafter.CppDOM-BindingsExport.cppm @@ -217,15 +217,9 @@ extern "C" { export namespace Crafter::CppDOMBindings { __attribute__((import_module("env"), import_name("fetch"))) void Fetch(const char* url, std::int32_t urlLenght, std::int32_t handlerID); - __attribute__((import_module("env"), import_name("fetchWithBody"))) void FetchWithBody(const char* url, std::int32_t urlLenght, const char* body, std::int32_t bodyLength, std::int32_t handlerID); void Fetch(const std::string_view url, std::function callback) { std::int32_t id = fetchHandlerMaxId++; CppDOMBindings::fetchHandlers->insert({id, callback}); Fetch(url.data(), url.size(), id); } - void Fetch(const std::string_view url, const std::string_view body, std::function callback) { - std::int32_t id = fetchHandlerMaxId++; - CppDOMBindings::fetchHandlers->insert({id, callback}); - FetchWithBody(url.data(), url.size(), body.data(), body.size(), id); - } } \ No newline at end of file