diff options
| author | Adam Soltys <[email protected]> | 2020-07-16 12:06:25 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2020-07-16 12:06:25 -0700 |
| commit | 79c9febb88035422e950349b214cc1fc1a4ab615 (patch) | |
| tree | c2e2b82dda2185508ec26932780bf2bbfef906e7 | |
| parent | dabde17d34eda659292382343026382907b76fe4 (diff) | |
| download | coinos-server-79c9febb88035422e950349b214cc1fc1a4ab615.tar.gz coinos-server-79c9febb88035422e950349b214cc1fc1a4ab615.zip | |
url codes
| -rw-r--r-- | db/index.js | 1 | ||||
| -rw-r--r-- | db/models/codes.js | 31 | ||||
| -rw-r--r-- | routes/lnurl.js | 25 |
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); |
