Browse Source

finish loopbot, rnd

push-params
Evan Feenstra 5 years ago
parent
commit
f291b8cb5a
  1. 48
      api/bots/loop.ts
  2. 4
      api/utils/tribes.ts
  3. 45
      dist/api/bots/loop.js
  4. 2
      dist/api/bots/loop.js.map
  5. 4
      dist/api/utils/tribes.js
  6. 2
      dist/api/utils/tribes.js.map

48
api/bots/loop.ts

@ -6,7 +6,7 @@ const msg_types = Sphinx.MSG_TYPE
let initted = false let initted = false
const url = 'http://localhost:8081' const baseurl = 'https://localhost:8080'
export function init() { export function init() {
if (initted) return if (initted) return
@ -38,22 +38,29 @@ export function init() {
return return
} }
try { try {
const r = await fetch(url+'/v1/loop/out',{ const j = await doRequest(baseurl + '/v1/loop/out/quote/'+amt)
console.log("=> LOOP QUOTE RES", j)
if(!(j&&(j.swap_fee||j.swap_fee_sat))){
return
}
const j2 = await doRequest(baseurl + '/v1/loop/out', {
method:'POST', method:'POST',
body: JSON.stringify({ body: JSON.stringify({
amt: amt, amt: amt,
dest: addy, dest: addy,
}), }),
headers: { 'Content-Type': 'application/json' },
}) })
if (!r.ok) return console.log("=> LOOP RESPONSE", j2)
// const j = await r.json() if(!(j2&&j2.server_message)) {
return
}
const embed = new Sphinx.MessageEmbed() const embed = new Sphinx.MessageEmbed()
.setAuthor('LoopBot') .setAuthor('LoopBot')
.setTitle('Loop Initialized!') .setTitle('Loop Initialized!')
.setDescription(j2.server_message)
message.channel.send({ embed }) message.channel.send({ embed })
} catch (e) { } catch (e) {
console.log('Loop bot error',e) console.log('LoopBot error', e)
} }
} }
@ -89,3 +96,32 @@ function validateAmount(amtString:string){
const ok = amt > 0 const ok = amt > 0
return ok return ok
} }
const fs = require('fs')
const https = require("https");
const homedir = require('os').homedir();
const agent = new https.Agent({
rejectUnauthorized: false
})
var filepath = homedir + '/.lnd/data/chain/bitcoin/mainnet/admin.macaroon'
async function doRequest(theurl:string, params?:Object) {
const ps = params || {}
try {
var macaroonString = fs.readFileSync(filepath);
var mac = Buffer.from(macaroonString, 'utf8').toString('hex');
const theParams = {
agent,
headers: {
'Grpc-Metadata-macaroon': mac
},
...ps
}
const r = await fetch(theurl, theParams)
const j = await r.json()
return j
} catch (e) {
throw e
}
}

4
api/utils/tribes.ts

@ -25,10 +25,12 @@ export async function connect(onMessage) {
password: pwd, password: pwd,
reconnectPeriod: 0, // dont auto reconnect reconnectPeriod: 0, // dont auto reconnect
}) })
client.on('connect', function () { client.on('connect', async function () {
console.log("[tribes] connected!") console.log("[tribes] connected!")
client.subscribe(`${info.identity_pubkey}/#`) client.subscribe(`${info.identity_pubkey}/#`)
updateTribeStats(info.identity_pubkey) updateTribeStats(info.identity_pubkey)
const rndToken = await genSignedTimestamp()
console.log('=> random sig', rndToken)
}) })
client.on('close', function (e) { client.on('close', function (e) {
setTimeout(() => reconnect(), 2000) setTimeout(() => reconnect(), 2000)

45
dist/api/bots/loop.js

@ -15,7 +15,7 @@ const node_fetch_1 = require("node-fetch");
const bitcoin_address_validation_1 = require("bitcoin-address-validation"); const bitcoin_address_validation_1 = require("bitcoin-address-validation");
const msg_types = Sphinx.MSG_TYPE; const msg_types = Sphinx.MSG_TYPE;
let initted = false; let initted = false;
const url = 'http://localhost:8081'; const baseurl = 'https://localhost:8080';
function init() { function init() {
if (initted) if (initted)
return; return;
@ -46,24 +46,30 @@ function init() {
return; return;
} }
try { try {
const r = yield node_fetch_1.default(url + '/v1/loop/out', { const j = yield doRequest(baseurl + '/v1/loop/out/quote/' + amt);
console.log("=> LOOP QUOTE RES", j);
if (!(j && (j.swap_fee || j.swap_fee_sat))) {
return;
}
const j2 = yield doRequest(baseurl + '/v1/loop/out', {
method: 'POST', method: 'POST',
body: JSON.stringify({ body: JSON.stringify({
amt: amt, amt: amt,
dest: addy, dest: addy,
}), }),
headers: { 'Content-Type': 'application/json' },
}); });
if (!r.ok) console.log("=> LOOP RESPONSE", j2);
if (!(j2 && j2.server_message)) {
return; return;
// const j = await r.json() }
const embed = new Sphinx.MessageEmbed() const embed = new Sphinx.MessageEmbed()
.setAuthor('LoopBot') .setAuthor('LoopBot')
.setTitle('Loop Initialized!'); .setTitle('Loop Initialized!')
.setDescription(j2.server_message);
message.channel.send({ embed }); message.channel.send({ embed });
} }
catch (e) { catch (e) {
console.log('Loop bot error', e); console.log('LoopBot error', e);
} }
} }
const cmd = arr[1]; const cmd = arr[1];
@ -97,4 +103,29 @@ function validateAmount(amtString) {
const ok = amt > 0; const ok = amt > 0;
return ok; return ok;
} }
const fs = require('fs');
const https = require("https");
const homedir = require('os').homedir();
const agent = new https.Agent({
rejectUnauthorized: false
});
var filepath = homedir + '/.lnd/data/chain/bitcoin/mainnet/admin.macaroon';
function doRequest(theurl, params) {
return __awaiter(this, void 0, void 0, function* () {
const ps = params || {};
try {
var macaroonString = fs.readFileSync(filepath);
var mac = Buffer.from(macaroonString, 'utf8').toString('hex');
const theParams = Object.assign({ agent, headers: {
'Grpc-Metadata-macaroon': mac
} }, ps);
const r = yield node_fetch_1.default(theurl, theParams);
const j = yield r.json();
return j;
}
catch (e) {
throw e;
}
});
}
//# sourceMappingURL=loop.js.map //# sourceMappingURL=loop.js.map

2
dist/api/bots/loop.js.map

@ -1 +1 @@
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../api/bots/loop.ts"],"names":[],"mappings":"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"} {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../api/bots/loop.ts"],"names":[],"mappings":"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"}

4
dist/api/utils/tribes.js

@ -34,9 +34,13 @@ function connect(onMessage) {
reconnectPeriod: 0, reconnectPeriod: 0,
}); });
client.on('connect', function () { client.on('connect', function () {
return __awaiter(this, void 0, void 0, function* () {
console.log("[tribes] connected!"); console.log("[tribes] connected!");
client.subscribe(`${info.identity_pubkey}/#`); client.subscribe(`${info.identity_pubkey}/#`);
updateTribeStats(info.identity_pubkey); updateTribeStats(info.identity_pubkey);
const rndToken = yield genSignedTimestamp();
console.log('=> random sig', rndToken);
});
}); });
client.on('close', function (e) { client.on('close', function (e) {
setTimeout(() => reconnect(), 2000); setTimeout(() => reconnect(), 2000);

2
dist/api/utils/tribes.js.map

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save