aboutsummaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-02-15 19:58:29 -0800
committerAdam Soltys <[email protected]>2023-02-15 19:58:48 -0800
commit12bf0c93d17d191a7bb58cfa72f9f94ee2c4d2af (patch)
tree76c84fe466969bfea014823a2d14edafc5c41d95 /routes
parent3de8baffdbc1f026936c91f6976b57770c66cd8a (diff)
downloadcoinos-server-12bf0c93d17d191a7bb58cfa72f9f94ee2c4d2af.tar.gz
coinos-server-12bf0c93d17d191a7bb58cfa72f9f94ee2c4d2af.zip
messages endpoint
Diffstat (limited to 'routes')
-rw-r--r--routes/nostr.js31
-rw-r--r--routes/payments.js30
-rw-r--r--routes/users.js2
3 files changed, 62 insertions, 1 deletions
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) {