feat: a pretty decent, tested, working SDK + CLI
[crowdnode.js/.git] / bin / insight-websocket.js
1 #!/usr/bin/env node
2
3 "use strict";
4
5 require("dotenv").config({ path: ".env" });
6 require("dotenv").config({ path: ".env.secret" });
7
8 //let Https = require("https");
9
10 // only needed for insight APIs hosted behind an AWS load balancer
11 let Cookies = require("../lib/cookies.js");
12 let Ws = require("../lib/ws.js");
13
14 let baseUrl = `https://insight.dash.org`;
15
16 function help() {
17   console.info(``);
18   console.info(`Usage:`);
19   //console.info(`        insight-websocket [eventname1,eventname2,]`);
20   console.info(`        insight-websocket # listens for 'inv' events`);
21   console.info(``);
22   /*
23   console.info(`Example:`);
24   console.info(`        insight-websocket inv,addresstxid`);
25   console.info(``);
26   */
27
28   // TODO Ws.waitForVout()
29 }
30
31 async function main() {
32   // ex: inv,dashd/addresstxid
33   let eventnames = (process.argv[2] || "inv").split(",");
34
35   if (["help", "--help", "-h"].includes(eventnames[0])) {
36     help();
37     process.exit(0);
38     return;
39   }
40
41   // TODO check validity
42   if (!eventnames.length) {
43     help();
44     process.exit(1);
45     return;
46   }
47
48   // TODO pass eventnames
49   let ws = Ws.create({
50     baseUrl: baseUrl,
51     cookieStore: Cookies,
52     debug: true,
53   });
54
55   await ws.init();
56 }
57
58 main().catch(function (err) {
59   console.error("Fail:");
60   console.error(err.stack || err);
61 });