godprotocol
Version:
A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.
48 lines (40 loc) • 1.3 kB
JavaScript
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;