UNPKG

godprotocol

Version:

A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.

48 lines (40 loc) 1.3 kB
import { gen_random_int } from "generalised-datastore/utils/functions.js"; import { post_request } from "../../utils/services.js"; const net = async (args, { vm, chain, no_then, call_config, thread }) => { let { server, path, account, payload } = args; thread.status = "waiting"; path = await path.literal(); if (no_then) { payload.body = await payload.body.config; } else payload = await payload.literal(); let serv = server && [no_then ? server : await server.literal()]; account = account ? await account.literal() : vm.account.name; if (!serv && account) { serv = await vm.account.manager.oracle.get_servers(`Accounts/${account}`); } let s = gen_random_int(serv.length - 1); let servr = serv[s]; post_request({ options: { hostname: servr.hostname, port: servr.port, path: `/${path}`, method: payload.header.method.toUpperCase(), headers: { ...payload.header, }, }, data: payload.body && JSON.stringify(payload.body), }) .then(async (res) => { if (no_then) return; let adr = await vm.parse_aircode(res, { chain }); thread.results[thread.pointer - 1] = adr; thread.status = "active"; }) .catch((e) => { console.log(e); }); return; }; export default net;