From d7aa3a3f0276c9e6387c93e9803a3556884b78e6 Mon Sep 17 00:00:00 2001 From: nyne Date: Thu, 16 Jan 2025 17:59:22 +0800 Subject: [PATCH] Update venera api --- _venera_.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/_venera_.js b/_venera_.js index 7994a0b..242cff1 100644 --- a/_venera_.js +++ b/_venera_.js @@ -486,6 +486,36 @@ let Network = { }, }; +/** + * [fetch] function for sending HTTP requests. Same api as the browser fetch. + * @param url {string} + * @param options {{method: string, headers: Object, body: any}} + * @returns {Promise<{ok: boolean, status: number, statusText: string, headers: {}, arrayBuffer: (function(): Promise), text: (function(): Promise), json: (function(): Promise)}>} + */ +async function fetch(url, options) { + let method = 'GET'; + let headers = {}; + let data = null; + + if (options) { + method = options.method || method; + headers = options.headers || headers; + data = options.body || data; + } + + let result = await Network.fetchBytes(method, url, headers, data); + + return { + ok: result.status >= 200 && result.status < 300, + status: result.status, + statusText: '', + headers: result.headers, + arrayBuffer: async () => result.body, + text: async () => Convert.decodeUtf8(result.body), + json: async () => JSON.parse(Convert.decodeUtf8(result.body)), + } +} + /** * HtmlDocument class for parsing HTML and querying elements. */