aboutsummaryrefslogtreecommitdiffstats
path: root/lib/nostr.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-01-16 23:40:25 -0800
committerAdam Soltys <[email protected]>2023-01-16 23:40:25 -0800
commit91e847126c832efa25ab0bf8d6f3b7e537378fa7 (patch)
tree4a42b6e3bec6eb0f640ed44533b54e6d3d6a5e0e /lib/nostr.js
parent6bafea9bffe24d2227d269812a73a9a513d92ddf (diff)
downloadcoinos-server-91e847126c832efa25ab0bf8d6f3b7e537378fa7.tar.gz
coinos-server-91e847126c832efa25ab0bf8d6f3b7e537378fa7.zip
shuffle things around
Diffstat (limited to 'lib/nostr.js')
-rw-r--r--lib/nostr.js80
1 files changed, 42 insertions, 38 deletions
diff --git a/lib/nostr.js b/lib/nostr.js
index 08ed8b61..93370587 100644
--- a/lib/nostr.js
+++ b/lib/nostr.js
@@ -3,16 +3,15 @@ import config from "$config";
import { Relay, RelayPool } from "nostr";
import { broadcast } from "$lib/sockets";
import store from "$lib/store";
-import redis from "$lib/redis";
+import { g, s, db } from "$lib/db";
import { nada, wait } from "$lib/utils";
export let pool;
try {
pool = RelayPool(config.relays);
-} catch(e) {
- console.log(e)
-}
-
+} catch (e) {
+ console.log(e);
+}
pool.on("open", relay => {
if (relay.url.includes(config.relay)) coinos = relay;
@@ -32,7 +31,7 @@ export let q = async (
let start = Date.now();
let seen = [];
let rejected;
- query.since = await redis.get(`since:${sub}`);
+ query.since = await g(`since:${sub}`);
if (now() - query.since < since) return r();
let done = { [sub]: [] };
@@ -56,7 +55,7 @@ export let q = async (
clearTimeout(this.timer);
delete timeouts[sub];
pool.unsubscribe(sub);
- await redis.set(`since:${sub}`, now());
+ await s(`since:${sub}`, now());
},
extend(ev) {
if (ev) {
@@ -93,7 +92,7 @@ export let q = async (
let seen = [];
let getUser = async pubkey =>
- JSON.parse(await redis.get(`user:${pubkey}`)) || {
+ JSON.parse(await g(`user:${pubkey}`)) || {
username: pubkey.substr(0, 6),
pubkey,
anon: true
@@ -141,37 +140,38 @@ pool.on("event", async (relay, sub, ev) => {
updated: ev.created_at
};
- await redis.set(`user:${pubkey}`, JSON.stringify(user));
+ await s(`user:${pubkey}`, JSON.stringify(user));
coinos.send(ev);
} else if (sub.includes("follows")) {
let pubkey = sub.split(":")[0];
- await redis.set(`${pubkey}:follows`, JSON.stringify(ev.tags));
+ await s(`${pubkey}:follows`, JSON.stringify(ev.tags));
for (let f of ev.tags) {
let [_, followPubkey] = f;
- await redis.sAdd(`${followPubkey}:followers`, pubkey);
+ await db.sAdd(`${followPubkey}:followers`, pubkey);
}
coinos.send(ev);
} else if (sub.includes("followers")) {
let followed = sub.split(":")[0];
let { pubkey } = ev;
- await redis.sAdd(`${followed}:followers`, pubkey);
+ await db.sAdd(`${followed}:followers`, pubkey);
coinos.send(ev);
} else if (sub.includes("notes")) {
let pubkey = sub.split(":")[0];
- await redis.sAdd(pubkey, ev.id);
- await redis.set(`ev:${ev.id}`, JSON.stringify(ev));
+ await db.sAdd(pubkey, ev.id);
+ await s(`ev:${ev.id}`, JSON.stringify(ev));
}
} catch (e) {
console.log(e);
}
});
-app.get("/event/:id", async (req, res) => {
+export default {
+async event (req, res) {
try {
- let event = JSON.parse(await redis.get(`ev:${req.params.id}`));
+ let event = JSON.parse(await g(`ev:${req.params.id}`));
let { pubkey } = event;
- event.user = JSON.parse(await redis.get(`user:${pubkey}`)) || {
+ event.user = JSON.parse(await g(`user:${pubkey}`)) || {
username: pubkey.substr(0, 6),
pubkey,
anon: true,
@@ -183,13 +183,13 @@ app.get("/event/:id", async (req, res) => {
} catch (e) {
res.code(500).send("Problem fetching event");
}
-});
+},
-app.get("/:pubkey/notes", async (req, res) => {
+async notes (req, res) {
try {
let { pubkey } = req.params;
- let user = JSON.parse(await redis.get(`user:${pubkey}`));
+ let user = JSON.parse(await g(`user:${pubkey}`));
if (!user) {
user = await db.User.findOne({
@@ -215,12 +215,12 @@ app.get("/:pubkey/notes", async (req, res) => {
{ since: 0 }
).catch(nada);
- await redis.set(`user:${pubkey}`, JSON.stringify(user));
+ await g(`user:${pubkey}`, JSON.stringify(user));
- let ids = await redis.sMembers(pubkey);
+ let ids = await db.sMembers(pubkey);
let events = ids.length
- ? (await redis.mGet(ids.map(k => "ev:" + k))).map(JSON.parse)
+ ? (await db.mGet(ids.map(k => "ev:" + k))).map(JSON.parse)
: [];
res.send(events.map(e => ({ ...e, user })));
@@ -228,15 +228,15 @@ app.get("/:pubkey/notes", async (req, res) => {
console.log(e);
res.code(500).send("problem fetching user events");
}
-});
+},
-app.post("/event", async (req, res) => {
+async broadcast (req, res) {
let { event } = req.body;
pool.send(["EVENT", event]);
res.send(event);
-});
+},
-app.get("/:pubkey/follows", async (req, res) => {
+async follows (req, res) {
try {
let { pubkey } = req.params;
let { tagsonly } = req.query;
@@ -252,7 +252,7 @@ app.get("/:pubkey/follows", async (req, res) => {
{ timeout: 60000, eager: 60000 }
).catch(nada);
- let tags = JSON.parse(await redis.get(`${pubkey}:follows`)) || [];
+ let tags = JSON.parse(await g(`${pubkey}:follows`)) || [];
if (tagsonly) return res.send(tags);
let follows = [];
@@ -265,7 +265,7 @@ app.get("/:pubkey/follows", async (req, res) => {
authors: [pubkey]
}).catch(nada);
- let user = JSON.parse(await redis.get(`user:${pubkey}`));
+ let user = JSON.parse(await g(`user:${pubkey}`));
if (!user)
user = {
@@ -287,14 +287,14 @@ app.get("/:pubkey/follows", async (req, res) => {
}
});
-app.get("/:pubkey/followers", async (req, res) => {
+async (req, res) followers {
try {
let { pubkey } = req.params;
let pubkeys = [
...new Set([
...(await got(`${config.nostr}/followers?pubkey=${pubkey}`).json()),
- ...(await redis.sMembers(`${pubkey}:followers`))
+ ...(await db.sMembers(`${pubkey}:followers`))
])
];
@@ -307,7 +307,7 @@ app.get("/:pubkey/followers", async (req, res) => {
).catch(nada);
for (let pubkey of pubkeys) {
- let user = JSON.parse(await redis.get(`user:${pubkey}`));
+ let user = JSON.parse(await g(`user:${pubkey}`));
if (!user || !user.updated) {
q(`${pubkey}:profile:f2`, {
limit: 1,
@@ -315,7 +315,7 @@ app.get("/:pubkey/followers", async (req, res) => {
authors: [pubkey]
}).catch(nada);
- user = JSON.parse(await redis.get(`user:${pubkey}`));
+ user = JSON.parse(await g(`user:${pubkey}`));
}
if (!user)
@@ -336,11 +336,15 @@ app.get("/:pubkey/followers", async (req, res) => {
console.log(e);
res.code(500).send(e && e.message);
}
-});
+},
-app.get('/nostr.json', async (req, res) => {
+async identities (req, res) {
res.send({
- names: { adam: "566c166f3adab0c8fba5da015b0b3bcc8eb3696b455f2a1d43bfbd97059646a8", asoltys: "566c166f3adab0c8fba5da015b0b3bcc8eb3696b455f2a1d43bfbd97059646a8" }
+ names: {
+ adam: "566c166f3adab0c8fba5da015b0b3bcc8eb3696b455f2a1d43bfbd97059646a8",
+ asoltys:
+ "566c166f3adab0c8fba5da015b0b3bcc8eb3696b455f2a1d43bfbd97059646a8"
+ }
});
-});
-
+}
+}