aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-09-04 20:40:35 -0700
committerAdam Soltys <[email protected]>2024-09-04 20:51:14 -0700
commit33d67e431416ea8b69b424e7d043ef63953c355a (patch)
tree58d8fed75e94d6d6fcb21d83b8b860670659fe5d
parentdfde1c88ebb52e50f983f5a36e8868dd0938c3fc (diff)
downloadcoinos-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.ts1
-rw-r--r--lib/invoices.ts12
-rw-r--r--lib/rates.ts15
-rw-r--r--lib/rpc.ts6
-rw-r--r--routes/rates.ts13
-rw-r--r--routes/users.ts1
-rwxr-xr-xsetup.sh4
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]"
};
diff --git a/index.ts b/index.ts
index ce0723b0..b2072952 100644
--- a/index.ts
+++ b/index.ts
@@ -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) => {
diff --git a/lib/rpc.ts b/lib/rpc.ts
index bb57d075..bcf695a4 100644
--- a/lib/rpc.ts
+++ b/lib/rpc.ts
@@ -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,
diff --git a/setup.sh b/setup.sh
index 1c5115a8..07bd2c36 100755
--- a/setup.sh
+++ b/setup.sh
@@ -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")