diff options
| author | Adam Soltys <[email protected]> | 2023-01-16 23:40:25 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-01-16 23:40:25 -0800 |
| commit | 91e847126c832efa25ab0bf8d6f3b7e537378fa7 (patch) | |
| tree | 4a42b6e3bec6eb0f640ed44533b54e6d3d6a5e0e /lib/nostr.js | |
| parent | 6bafea9bffe24d2227d269812a73a9a513d92ddf (diff) | |
| download | coinos-server-91e847126c832efa25ab0bf8d6f3b7e537378fa7.tar.gz coinos-server-91e847126c832efa25ab0bf8d6f3b7e537378fa7.zip | |
shuffle things around
Diffstat (limited to 'lib/nostr.js')
| -rw-r--r-- | lib/nostr.js | 80 |
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" + } }); -}); - +} +} |
