aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-07-16 12:06:25 -0700
committerAdam Soltys <[email protected]>2020-07-16 12:06:25 -0700
commit79c9febb88035422e950349b214cc1fc1a4ab615 (patch)
treec2e2b82dda2185508ec26932780bf2bbfef906e7
parentdabde17d34eda659292382343026382907b76fe4 (diff)
downloadcoinos-server-79c9febb88035422e950349b214cc1fc1a4ab615.tar.gz
coinos-server-79c9febb88035422e950349b214cc1fc1a4ab615.zip
url codes
-rw-r--r--db/index.js1
-rw-r--r--db/models/codes.js31
-rw-r--r--routes/lnurl.js25
3 files changed, 56 insertions, 1 deletions
diff --git a/db/index.js b/db/index.js
index 4142de33..1b4cc0e4 100644
--- a/db/index.js
+++ b/db/index.js
@@ -9,6 +9,7 @@ db = new Sequelize(conf.database, conf.username, conf.password, {
});
require("./models/accounts.js");
+require("./models/codes.js");
require("./models/invoices.js");
require("./models/keys.js");
require("./models/payments.js");
diff --git a/db/models/codes.js b/db/models/codes.js
new file mode 100644
index 00000000..9d967d11
--- /dev/null
+++ b/db/models/codes.js
@@ -0,0 +1,31 @@
+const { DataTypes } = require('sequelize');
+
+const attributes = {
+ code: {
+ type: DataTypes.STRING(64),
+ allowNull: false,
+ defaultValue: null,
+ primaryKey: true,
+ autoIncrement: true,
+ comment: null,
+ field: "code"
+ },
+ text: {
+ type: DataTypes.TEXT,
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "text"
+ },
+};
+
+const options = {
+ tableName: "codes",
+ comment: "",
+ indexes: [],
+ timestamps: false
+};
+
+db["Code"] = db.define("codes_model", attributes, options);
diff --git a/routes/lnurl.js b/routes/lnurl.js
index 709e1fc5..82f0f575 100644
--- a/routes/lnurl.js
+++ b/routes/lnurl.js
@@ -17,17 +17,40 @@ var optionalAuth = function (req, res, next) {
})(req, res, next);
};
+app.get("/url", async (req, res) => {
+ try {
+ const { text } = await db.Code.findOne({
+ where: {
+ code: req.query.code,
+ },
+ });
+
+ if (text) {
+ res.send(text);
+ } else {
+ throw new Error('code not found');
+ }
+ } catch (e) {
+ l.error("couldn't find url", e.message);
+ }
+});
+
app.get("/withdraw", auth, async (req, res) => {
const { min, max } = req.query;
try {
const result = await lnurlServer.generateNewUrl("withdrawRequest", {
minWithdrawable: min * 1000,
maxWithdrawable: max * 1000,
- defaultDescription: "coinos withdrawal",
+ defaultDescription: "coinos voucher",
});
withdrawals[result.secret] = req.user;
+ await db.Code.create({
+ code: result.encoded.substr(64),
+ text: result.encoded,
+ });
+
res.send(result);
} catch (e) {
l.error("problem generating withdrawl url", e.message);