sendingnetwork-bot-sdk
Version:
TypeScript/JavaScript SDK for SDN bots
67 lines • 3.63 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const src_1 = require("../src");
const commands_1 = require("./commands");
const readline = require("node:readline/promises");
const node_process_1 = require("node:process");
const fs = require("fs/promises");
const web3_1 = require("web3");
src_1.LogService.setLogger(new src_1.RichConsoleLogger());
src_1.LogService.setLevel(src_1.LogLevel.INFO);
src_1.LogService.muteModule("Metrics");
src_1.LogService.trace = src_1.LogService.debug;
const configFilePath = "./examples/storage/bot.creds.json";
const storage = new src_1.SimpleFsStorageProvider("./examples/storage/bot.json");
function login(nodeUrl, address, key, developerKey) {
return __awaiter(this, void 0, void 0, function* () {
const auth = new src_1.SDNAuth(nodeUrl);
let loginMessage = yield auth.didPreLogin(address);
let web3 = new web3_1.default();
// sign with wallet account key
let walletSignature = web3.eth.accounts.sign(loginMessage["message"], key);
// sign with developer key (add '0x' prefix if necessary)
let developerKeySignature = web3.eth.accounts.sign(loginMessage["message"], developerKey);
//did login
let loginResp = yield auth.didLoginWithAppToken(address, loginMessage["did"], loginMessage["message"], walletSignature["signature"], developerKeySignature["signature"], loginMessage["random_server"], loginMessage["updated"]);
return loginResp["access_token"];
});
}
(function () {
return __awaiter(this, void 0, void 0, function* () {
let configRaw = yield fs.readFile(configFilePath);
let configJson = JSON.parse(configRaw.toString());
let nodeUrl = configJson['nodeUrl'];
let walletAddress = configJson['walletAddress'];
let privateKey = configJson['privateKey'];
let developerKey = configJson['developerKey'];
let accessToken = configJson['accessToken'];
if (accessToken == "" || accessToken == undefined) {
accessToken = yield login(nodeUrl, walletAddress, privateKey, developerKey);
configJson["accessToken"] = accessToken;
fs.writeFile(configFilePath, JSON.stringify(configJson, null, 4));
}
const client = new src_1.SDNClient(nodeUrl, accessToken, storage);
// register message listener
client.on("room.message", (roomId, event) => __awaiter(this, void 0, void 0, function* () {
src_1.LogService.info("index", roomId, event);
}));
// start syncing
yield client.start();
const rl = readline.createInterface({ input: node_process_1.stdin, output: node_process_1.stdout });
while (true) {
const inputCommand = yield rl.question('[input command]');
yield (0, commands_1.execCommand)(client, inputCommand);
}
rl.close();
});
})();
//# sourceMappingURL=bot.js.map