aboutsummaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-10-24 22:13:47 -0700
committerAdam Soltys <[email protected]>2020-10-24 22:33:52 -0700
commit12091db2a92bc52e3ae97eab98a4d9f7c1a3dd08 (patch)
treee8767781dbd19d62f089277c1bc979ac97aeae48 /routes
parentae9e9e0fa9cffd2545aa210321b34ce2bb5c4b8b (diff)
downloadcoinos-server-12091db2a92bc52e3ae97eab98a4d9f7c1a3dd08.tar.gz
coinos-server-12091db2a92bc52e3ae97eab98a4d9f7c1a3dd08.zip
funding and withdrawals
Diffstat (limited to 'routes')
-rw-r--r--routes/assets.js8
-rw-r--r--routes/funding.js82
-rw-r--r--routes/swaps.js2
3 files changed, 89 insertions, 3 deletions
diff --git a/routes/assets.js b/routes/assets.js
index 52509cd9..324acb7b 100644
--- a/routes/assets.js
+++ b/routes/assets.js
@@ -26,10 +26,14 @@ app.get(
group: ["asset"]
});
- Object.keys(assets).map(a => (assets[a].registered = true));
+ Object.keys(assets).map(a => {
+ assets[a].registered = true;
+ assets[a].asset = assets[a].asset_id;
+ });
accounts.map(a => {
- if (!assets[a.asset]) assets[a.asset] = a;
+ if (!a.asset) console.log(a.id);
+ if (!assets[a.asset]) assets[a.asset] = a.get({ plain: true });
});
res.send(assets);
diff --git a/routes/funding.js b/routes/funding.js
new file mode 100644
index 00000000..3a5f30e0
--- /dev/null
+++ b/routes/funding.js
@@ -0,0 +1,82 @@
+const multer = require("multer");
+
+const storage = multer.diskStorage({
+ destination: (req, file, cb) => {
+ cb(null, "uploads");
+ },
+ filename: (req, file, cb) => {
+ const parts = file.originalname.split(".");
+ const ext = parts.length > 1 ? parts[parts.length - 1] : 'bin';
+ cb(null, `${req.user.username}-${file.fieldname}.${ext}`)
+ }
+});
+
+const upload = multer({
+ storage,
+ onFileUploadStart: (file, req, res) => {
+ const maxSize = 32 * 1000 * 1000;
+ if (req.files.file.length > maxSize) {
+ return false;
+ }
+ }
+});
+
+app.post("/id", auth, upload.single("id"), ah(async (req, res) => {
+ const { user } = req;
+ if (user.verified === 'proof') user.verified = 'pending';
+ else user.verified = 'id';
+ await user.save();
+ emit(user.username, "user", user);
+
+ res.end();
+}));
+
+app.post("/proof", auth, upload.single("proof"), ah(async (req, res) => {
+ const { user } = req;
+ if (user.verified === 'id') user.verified = 'pending';
+ else user.verified = 'proof';
+ await user.save();
+ emit(user.username, "user", user);
+
+ res.end();
+}));
+
+app.post("/funding", auth, ah(async (req, res) => {
+ try {
+ const { amount, code } = req.body;
+ if (!parseFloat(amount) || parseFloat(amount) < 0) throw new Error("Invalid amount");
+
+ await db.Deposit.create({
+ user_id: req.user.id,
+ amount,
+ code,
+ });
+
+ res.end();
+ } catch(e) {
+ l.error("funding error", e.message);
+ res.status(500).send("Funding request failed");
+ }
+}));
+
+app.post("/withdrawal", auth, ah(async (req, res) => {
+ try {
+ const { account, amount, email, institution, transit, notes } = req.body;
+ if (!parseFloat(amount) || parseFloat(amount) < 0) throw new Error("Invalid amount");
+
+ await db.Withdrawal.create({
+ user_id: req.user.id,
+ account,
+ amount,
+ email,
+ institution,
+ transit,
+ notes,
+ });
+
+ res.end();
+ } catch(e) {
+ l.error("withdrawal error", e.message);
+ res.status(500).send("Withdrawal request failed");
+ }
+}));
diff --git a/routes/swaps.js b/routes/swaps.js
index 10beb0b2..e12dd450 100644
--- a/routes/swaps.js
+++ b/routes/swaps.js
@@ -1000,4 +1000,4 @@ setInterval(async () => {
}
}
});
-}, 20000);
+}, 2000);