diff options
| author | Adam Soltys <[email protected]> | 2024-09-04 20:40:35 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-09-04 20:51:14 -0700 |
| commit | 33d67e431416ea8b69b424e7d043ef63953c355a (patch) | |
| tree | 58d8fed75e94d6d6fcb21d83b8b860670659fe5d | |
| parent | dfde1c88ebb52e50f983f5a36e8868dd0938c3fc (diff) | |
| download | coinos-server-33d67e431416ea8b69b424e7d043ef63953c355a.tar.gz coinos-server-33d67e431416ea8b69b424e7d043ef63953c355a.zip | |
fx endpoint
| -rw-r--r-- | config.ts.sample (renamed from config.js.sample) | 3 | ||||
| -rw-r--r-- | index.ts | 1 | ||||
| -rw-r--r-- | lib/invoices.ts | 12 | ||||
| -rw-r--r-- | lib/rates.ts | 15 | ||||
| -rw-r--r-- | lib/rpc.ts | 6 | ||||
| -rw-r--r-- | routes/rates.ts | 13 | ||||
| -rw-r--r-- | routes/users.ts | 1 | ||||
| -rwxr-xr-x | setup.sh | 4 |
8 files changed, 33 insertions, 22 deletions
diff --git a/config.js.sample b/config.ts.sample index 2a27f694..d5726fc4 100644 --- a/config.js.sample +++ b/config.ts.sample @@ -29,4 +29,7 @@ export default { btc: "5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225" }, lightning: "/app/data/lightning/regtest/lightning-rpc" + fee: 0.001, + adminpass: "pwa", + support: "[email protected]" }; @@ -36,6 +36,7 @@ setInterval(sendHeartbeat, 2000); app.get("/balances", info.balances); app.post("/email", email.send); +app.get("/fx", rates.fx); app.get("/rate", rates.last); app.get("/rates", rates.index); diff --git a/lib/invoices.ts b/lib/invoices.ts index 04e1200b..ee0eb73d 100644 --- a/lib/invoices.ts +++ b/lib/invoices.ts @@ -1,16 +1,16 @@ -import crypto from "crypto"; -import store from "$lib/store"; -import { l } from "$lib/logging"; import { emit } from "$lib/sockets"; import { db, g, s } from "$lib/db"; import { getUser, bip21, fail, SATS } from "$lib/utils"; import { types } from "$lib/payments"; import { v4 } from "uuid"; -import lq from "$lib/liquid"; -import bc from "$lib/bitcoin"; +import bc_ from "$lib/bitcoin"; +import lq_ from "$lib/liquid"; import ln from "$lib/ln"; +let bc = bc_ as any; +let lq = lq_ as any; + export let generate = async ({ invoice, user, sender = undefined }) => { let { bolt11, @@ -37,7 +37,7 @@ export let generate = async ({ invoice, user, sender = undefined }) => { else if (sender) user = await getUser(sender.username); if (!user) fail("user not provided"); - let rates = await g('rates'); + let rates = await g("rates"); if (!currency) currency = user.currency; if (!rate) rate = rates[currency]; if (fiat) amount = Math.round((SATS * fiat) / rate); diff --git a/lib/rates.ts b/lib/rates.ts index fe942453..f840592e 100644 --- a/lib/rates.ts +++ b/lib/rates.ts @@ -1,7 +1,6 @@ import got from "got"; import config from "$config"; -import store from "$lib/store"; -import { err, warn } from "$lib/logging"; +import { err } from "$lib/logging"; import { g, s } from "$lib/db"; import { sleep } from "$lib/utils"; import WebSocket from "ws"; @@ -51,10 +50,14 @@ export let getFx = async () => { if (Date.now() - date > 24 * 60 * 60 * 1000) { date = Date.now(); try { - let r = await got( - `http://data.fixer.io/api/latest?access_key=${config.fixer}`, - ).json(); - let { rates: fx } = r; + if (config.fixer) { + ({ rates: fx } = (await got( + `http://data.fixer.io/api/latest?access_key=${config.fixer}`, + ).json()) as any); + } else { + ({ fx } = (await got("https://coinos.io/api/fx").json()) as any); + } + let USD = fx["USD"]; Object.keys(fx).map((k) => { @@ -1,11 +1,11 @@ import got from "got"; -export default ({ host, port, wallet, username, password }) => +export default ({ host, port, wallet, username, password })=> new Proxy( {}, { get: - (target, prop) => + (_, prop) => (...params) => ((method, ...params) => { let url = `http://${host}:${port}/wallet/${wallet}`; @@ -23,6 +23,6 @@ export default ({ host, port, wallet, username, password }) => }) .json() .then(({ result }) => result); - })(prop.toLowerCase(), ...params), + })((prop as string).toLowerCase(), ...params), }, ); diff --git a/routes/rates.ts b/routes/rates.ts index 828e5b2c..f75afc57 100644 --- a/routes/rates.ts +++ b/routes/rates.ts @@ -1,11 +1,16 @@ import { g } from "$lib/db"; export default { - async last(req, res) { - res.send(await g('rate')); + async fx(_, res) { + let { fx } = await g("fx"); + res.send({fx}); }, - async index(req, res) { - res.send(await g('rates')); + async last(_, res) { + res.send(await g("rate")); + }, + + async index(_, res) { + res.send(await g("rates")); }, }; diff --git a/routes/users.ts b/routes/users.ts index e6044a47..3fcaad66 100644 --- a/routes/users.ts +++ b/routes/users.ts @@ -16,7 +16,6 @@ import upload from "$lib/upload"; const { encode, decode, fromWords, toWords } = bech32; -console.log("HI"); export default { upload, @@ -1,9 +1,9 @@ -cp config.js.sample config.js +cp config.ts.sample config.ts cp compose.yml.sample compose.yml cp -r sampledata data sudo chown 100:100 data/nostr/data docker compose up -d -docker run -it -v $(pwd):/app --entrypoint pnpm asoltys/coinos-server i +docker run -it -v $(pwd):/app --entrypoint bun asoltys/coinos-server i docker exec -it bc bitcoin-cli createwallet coinos docker exec -it bc bitcoin-cli rescanblockchain docker exec -it bc bitcoin-cli generatetoaddress 500 $(docker exec -it bc bitcoin-cli getnewaddress "" "p2sh-segwit") |
