From 12bf0c93d17d191a7bb58cfa72f9f94ee2c4d2af Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 15 Feb 2023 19:58:29 -0800 Subject: messages endpoint --- routes/nostr.js | 31 +++++++++++++++++++++++++++++++ routes/payments.js | 30 ++++++++++++++++++++++++++++++ routes/users.js | 2 +- 3 files changed, 62 insertions(+), 1 deletion(-) (limited to 'routes') diff --git a/routes/nostr.js b/routes/nostr.js index 53ad4c29..ad9f55aa 100644 --- a/routes/nostr.js +++ b/routes/nostr.js @@ -49,6 +49,37 @@ export default { res.send(events.map(e => ({ ...e, user }))); }, + async messages({ params: { pubkey, since = 0 } }, res) { + let params = { + kinds: [4], + authors: [pubkey] + }; + + let opts = { since }; + + await q(`${pubkey}:messages`, params, opts).catch(nada); + + params = { + kinds: [4], + "#p": [pubkey] + }; + + await q(`${pubkey}:messages`, params, opts).catch(nada); + + let messages = await db.sMembers(`${pubkey}:messages`); + messages = await Promise.all( + messages.map(async id => { + let m = await g(`ev:${id}`); + let k = m.pubkey === pubkey ? m.tags[0].p : m.pubkey; + let uid = await g(`user:${k}`); + m.user = await g(`user:${uid}`); + return m; + }) + ); + + res.send(messages); + }, + async broadcast(req, res) { let { event } = req.body; pool.send(["EVENT", event]); diff --git a/routes/payments.js b/routes/payments.js index 60e3bdd2..6619c031 100644 --- a/routes/payments.js +++ b/routes/payments.js @@ -253,4 +253,34 @@ export default { res.send({ txid }); }, + + async buy({ body: { amount, number, month, year, cvc } }, res) { + let stripe = "https://api.stripe.com/v1"; + let { STRIPE: username } = process.env; + + let { id: source } = await got.post(`${stripe}/tokens`, { + form: { + "card[number]": number, + "card[exp_month]": month, + "card[exp_year]": year, + "card[cvc]": cvc + }, + username + }); + + let { status } = await got.post(`${stripe}/charges`, { + form: { + amount, + currency: "cad", + source, + description: "starter coupon" + }, + username + }); + + if (status !== "succeeded") + throw error(500, { message: "Card payment failed" }); + + res.send(status); + } }; diff --git a/routes/users.js b/routes/users.js index c6fb848d..c48c7599 100644 --- a/routes/users.js +++ b/routes/users.js @@ -171,7 +171,7 @@ export default { ]; for (let a of attributes) { - if (body[a]) user[a] = body[a]; + if (typeof body[a] !== "undefined") user[a] = body[a]; } if (password && password === confirm) { -- cgit v1.2.3