aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-09-02 07:16:59 -0700
committerAdam Soltys <[email protected]>2022-09-02 07:17:01 -0700
commit4ce441443b13e3cece375595f764f10e7ac0564a (patch)
treecf853807fafc13d7b15788f8e5781ce5fb7fbe93
parent3bb9af967d972617179d666060c4f50180199bf9 (diff)
downloadcoinos-server-4ce441443b13e3cece375595f764f10e7ac0564a.tar.gz
coinos-server-4ce441443b13e3cece375595f764f10e7ac0564a.zip
refactor upload endpoint
-rw-r--r--index.js1
-rw-r--r--lib/upload.js33
-rw-r--r--package.json1
-rw-r--r--pnpm-lock.yaml63
-rw-r--r--routes/funding.js22
5 files changed, 90 insertions, 30 deletions
diff --git a/index.js b/index.js
index 1c1b171c..4e52cbc6 100644
--- a/index.js
+++ b/index.js
@@ -68,6 +68,7 @@ require("./lib/sockets");
require("./lib/webhooks");
require("./lib/passport");
require("./lib/register");
+require("./lib/upload");
require("./lib/send");
require("./lib/sync");
diff --git a/lib/upload.js b/lib/upload.js
new file mode 100644
index 00000000..452bf5c9
--- /dev/null
+++ b/lib/upload.js
@@ -0,0 +1,33 @@
+const multer = require("multer");
+
+const storage = multer.diskStorage({
+ destination: (req, file, cb) => {
+ cb(null, "uploads");
+ },
+ filename: async (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}`);
+ }
+});
+
+upload = multer({
+ storage,
+ onFileUploadStart: (file, req, res) => {
+ console.log("CHECKING SIZE")
+ const maxSize = 32 * 1000 * 1000;
+ if (req.files.file.length > maxSize) {
+ return false;
+ }
+ }
+});
+
+app.post(
+ "/profile",
+ auth,
+ upload.single("squirt"),
+ ah(async (req, res) => {
+ let { filename } = req.file;
+ res.send({ filename });
+ })
+);
diff --git a/package.json b/package.json
index de2ae8dd..c8bc0a00 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"express-async-handler": "^1.1.4",
"express-pino-logger": "^6.0.0",
"express-session": "^1.16.2",
+ "file-type": "^18.0.0",
"http-proxy-middleware": "^0.20.0",
"imap": "^0.8.19",
"jsonwebtoken": "^8.5.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 80997de8..0bf0af24 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -22,6 +22,7 @@ specifiers:
express-async-handler: ^1.1.4
express-pino-logger: ^6.0.0
express-session: ^1.16.2
+ file-type: ^18.0.0
http-proxy-middleware: ^0.20.0
imap: ^0.8.19
jsonwebtoken: ^8.5.1
@@ -78,6 +79,7 @@ dependencies:
express-async-handler: 1.1.4
express-pino-logger: 6.0.0
express-session: 1.17.2
+ file-type: 18.0.0
http-proxy-middleware: 0.20.0
imap: 0.8.19
jsonwebtoken: 8.5.1
@@ -374,6 +376,10 @@ packages:
defer-to-connect: 1.1.3
dev: false
+ /@tokenizer/token/0.3.0:
+ resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
+ dev: false
+
/@tootallnate/once/1.1.2:
resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
engines: {node: '>= 6'}
@@ -1032,7 +1038,7 @@ packages:
dev: false
/brorand/1.1.0:
- resolution: {integrity: sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=}
+ resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
dev: false
/browserify-aes/1.2.0:
@@ -1909,6 +1915,15 @@ packages:
resolution: {integrity: sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=}
dev: false
+ /file-type/18.0.0:
+ resolution: {integrity: sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ readable-web-to-node-stream: 3.0.2
+ strtok3: 7.0.0
+ token-types: 5.0.1
+ dev: false
+
/file-uri-to-path/1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: false
@@ -2214,7 +2229,7 @@ packages:
optional: true
/has-flag/3.0.0:
- resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
dev: false
@@ -2256,7 +2271,7 @@ packages:
dev: false
/hmac-drbg/1.0.1:
- resolution: {integrity: sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=}
+ resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
dependencies:
hash.js: 1.1.7
minimalistic-assert: 1.0.1
@@ -2379,6 +2394,10 @@ packages:
safer-buffer: 2.1.2
dev: false
+ /ieee754/1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ dev: false
+
/ignore-by-default/1.0.1:
resolution: {integrity: sha1-SMptcvbGo68Aqa1K5odr44ieKwk=}
dev: false
@@ -2425,7 +2444,7 @@ packages:
dev: false
/inherits/2.0.3:
- resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=}
+ resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
dev: false
/inherits/2.0.4:
@@ -2996,7 +3015,7 @@ packages:
dev: false
/minimalistic-crypto-utils/1.0.1:
- resolution: {integrity: sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=}
+ resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
dev: false
/minimatch/3.0.4:
@@ -3537,6 +3556,11 @@ packages:
sha.js: 2.4.11
dev: false
+ /peek-readable/5.0.0:
+ resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==}
+ engines: {node: '>=14.16'}
+ dev: false
+
/performance-now/2.1.0:
resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=}
dev: false
@@ -3992,6 +4016,13 @@ packages:
util-deprecate: 1.0.2
dev: false
+ /readable-web-to-node-stream/3.0.2:
+ resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
+ engines: {node: '>=8'}
+ dependencies:
+ readable-stream: 3.6.0
+ dev: false
+
/readdirp/3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -4466,7 +4497,7 @@ packages:
dev: false
/string_decoder/0.10.31:
- resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=}
+ resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
dev: false
/string_decoder/1.1.1:
@@ -4505,6 +4536,14 @@ packages:
engines: {node: '>=8'}
dev: false
+ /strtok3/7.0.0:
+ resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ '@tokenizer/token': 0.3.0
+ peek-readable: 5.0.0
+ dev: false
+
/supports-color/5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -4617,6 +4656,14 @@ packages:
engines: {node: '>=0.6'}
dev: false
+ /token-types/5.0.1:
+ resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ '@tokenizer/token': 0.3.0
+ ieee754: 1.2.1
+ dev: false
+
/toposort-class/1.0.1:
resolution: {integrity: sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=}
dev: false
@@ -4793,7 +4840,7 @@ packages:
dev: false
/util-deprecate/1.0.2:
- resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: false
/utils-merge/1.0.1:
@@ -4901,7 +4948,7 @@ packages:
dev: false
/wif/2.0.6:
- resolution: {integrity: sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=}
+ resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==}
dependencies:
bs58check: 2.1.2
dev: false
diff --git a/routes/funding.js b/routes/funding.js
index 0cb6c858..d9cf3097 100644
--- a/routes/funding.js
+++ b/routes/funding.js
@@ -1,26 +1,4 @@
const mailgun = require("mailgun-js")(config.mailgun);
-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",