From e5ba2803814e6c403837cd6148581692b9bac5ae Mon Sep 17 00:00:00 2001 From: Guillaume Dorce Date: Fri, 26 Aug 2022 17:43:02 +0200 Subject: [PATCH] install multer but i will change to formidable or busboy --- package.json | 3 + pnpm-lock.yaml | 106 ++++++++++++++++++++++++++++++- src/api/posts/index.ts | 4 +- src/api/posts/newPost.ts | 2 + src/controller/FileController.ts | 0 src/index.ts | 2 +- 6 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 src/controller/FileController.ts diff --git a/package.json b/package.json index 169231b..38beb06 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@types/express": "^4.17.13", "@types/jsonwebtoken": "^8.5.8", "@types/ms": "^0.7.31", + "@types/multer": "^1.4.7", "@types/node": "^18.7.4", "nodemon": "^2.0.19", "prisma": "^4.2.1", @@ -29,11 +30,13 @@ "dependencies": { "@prisma/client": "^4.2.1", "bcrypt": "^5.0.1", + "body-parser": "^1.20.0", "cors": "^2.8.5", "dotenv": "^16.0.1", "express": "^4.18.1", "jsonwebtoken": "^8.5.1", "ms": "^2.1.3", + "multer": "1.4.5-lts.1", "zod": "^3.18.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36a7e6e..b21a085 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,13 +7,16 @@ specifiers: '@types/express': ^4.17.13 '@types/jsonwebtoken': ^8.5.8 '@types/ms': ^0.7.31 + '@types/multer': ^1.4.7 '@types/node': ^18.7.4 bcrypt: ^5.0.1 + body-parser: ^1.20.0 cors: ^2.8.5 dotenv: ^16.0.1 express: ^4.18.1 jsonwebtoken: ^8.5.1 ms: ^2.1.3 + multer: 1.4.5-lts.1 nodemon: ^2.0.19 prisma: ^4.2.1 ts-node: ^10.9.1 @@ -24,11 +27,13 @@ specifiers: dependencies: '@prisma/client': 4.2.1_prisma@4.2.1 bcrypt: 5.0.1 + body-parser: 1.20.0 cors: 2.8.5 dotenv: 16.0.1 express: 4.18.1 jsonwebtoken: 8.5.1 ms: 2.1.3 + multer: 1.4.5-lts.1 zod: 3.18.0 devDependencies: @@ -37,6 +42,7 @@ devDependencies: '@types/express': 4.17.13 '@types/jsonwebtoken': 8.5.8 '@types/ms': 0.7.31 + '@types/multer': 1.4.7 '@types/node': 18.7.4 nodemon: 2.0.19 prisma: 4.2.1 @@ -179,6 +185,12 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true + /@types/multer/1.4.7: + resolution: {integrity: sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==} + dependencies: + '@types/express': 4.17.13 + dev: true + /@types/node/18.7.4: resolution: {integrity: sha512-RzRcw8c0B8LzryWOR4Wj7YOTFXvdYKwvrb6xQQyuDfnlTxwYXGCV5RZ/TEbq5L5kn+w3rliHAUyRcG1RtbmTFg==} dev: true @@ -242,6 +254,10 @@ packages: picomatch: 2.3.1 dev: true + /append-field/1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + dev: false + /aproba/2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: false @@ -319,6 +335,17 @@ packages: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: false + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + + /busboy/1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + /bytes/3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -359,6 +386,16 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: false + /console-control-strings/1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false @@ -384,6 +421,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + /cors/2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -721,6 +762,10 @@ packages: engines: {node: '>=0.12.0'} dev: true + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} @@ -843,7 +888,6 @@ packages: /minimist/1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: true /minipass/3.3.4: resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} @@ -860,6 +904,13 @@ packages: yallist: 4.0.0 dev: false + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.6 + dev: false + /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -877,6 +928,19 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + /multer/1.4.5-lts.1: + resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} + engines: {node: '>= 6.0.0'} + dependencies: + append-field: 1.0.0 + busboy: 1.6.0 + concat-stream: 1.6.2 + mkdirp: 0.5.6 + object-assign: 4.1.1 + type-is: 1.6.18 + xtend: 4.0.2 + dev: false + /negotiator/0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -994,6 +1058,10 @@ packages: dependencies: '@prisma/engines': 4.2.1 + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + /proxy-addr/2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -1028,6 +1096,18 @@ packages: unpipe: 1.0.0 dev: false + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -1051,6 +1131,10 @@ packages: glob: 7.2.3 dev: false + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false @@ -1146,6 +1230,11 @@ packages: engines: {node: '>= 0.8'} dev: false + /streamsearch/1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -1155,6 +1244,12 @@ packages: strip-ansi: 6.0.1 dev: false + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -1263,6 +1358,10 @@ packages: mime-types: 2.1.35 dev: false + /typedarray/0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: false + /typescript/4.7.4: resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} engines: {node: '>=4.2.0'} @@ -1317,6 +1416,11 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: false diff --git a/src/api/posts/index.ts b/src/api/posts/index.ts index 794e64b..297fb82 100644 --- a/src/api/posts/index.ts +++ b/src/api/posts/index.ts @@ -1,6 +1,6 @@ import { NextFunction, Request, Response, Router } from 'express'; import getPosts from './getPosts'; -import postPost from './newPost'; +import newPost from './newPost'; import putPost from './editPost'; import deletePost from './deletePost'; import likePost from './likePost'; @@ -32,7 +32,7 @@ const checkAuth = (req: Request, res: Response, next: NextFunction) => { posts.use(checkAuth); posts.get('/', getPosts); -posts.post('/new', postPost); +posts.post('/new', newPost); posts.put('/edit/:id', putPost); posts.delete('/delete/:id', deletePost); posts.put('/like/:id', likePost); diff --git a/src/api/posts/newPost.ts b/src/api/posts/newPost.ts index db27ed5..0d3f3d8 100644 --- a/src/api/posts/newPost.ts +++ b/src/api/posts/newPost.ts @@ -11,6 +11,8 @@ export default async (req: Request, res: Response) => { return res.status(200).send(newPost); } catch (error) { + console.log(error); + return res.status(500).send(error); } }; diff --git a/src/controller/FileController.ts b/src/controller/FileController.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/index.ts b/src/index.ts index 3287280..f63f60f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -37,7 +37,7 @@ const checkExpiredTokenTimer = ms(process.env.CHECK_EXPIRED_TOKEN_EVERY || '60s' const app = express(); app.use(cors()); -app.use(urlencoded({ extended: true })); +app.use(urlencoded({ extended: true, limit: '50mb' })); app.use(json()); app.use('/api', api);