From e7bb190b43aa76220edc456f818e555a1e55a4a3 Mon Sep 17 00:00:00 2001 From: Ji Seungmin Date: Sun, 20 Aug 2023 04:52:14 +0900 Subject: [PATCH] =?UTF-8?q?[feat]:=20=EC=B1=84=ED=8C=85=EB=B0=A9=EC=97=90?= =?UTF-8?q?=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=9E=85=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=84=20=EC=8B=9C=20=EC=B1=84=ED=8C=85?= =?UTF-8?q?=EB=B0=A9=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 2 ++ routes/checkRoom.js | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 routes/checkRoom.js diff --git a/index.js b/index.js index 8524474..cbea3c6 100644 --- a/index.js +++ b/index.js @@ -27,11 +27,13 @@ const finAllRoom = require('./routes/finAllRoom'); const createRoom = require('./routes/createRoom'); const findRoom = require('./routes/findRoom'); const leaveRoom = require('./routes/leaveRoom'); +const checkRoom = require('./routes/checkRoom'); app.use('/chat/room/all', finAllRoom); app.use('/chat/room/create', createRoom); app.use('/chat/room', findRoom); app.use('/chat/room', leaveRoom); +app.use('/chat/room', checkRoom); server.listen(port, () => { console.log(`App listening at http://localhost:${port}`) diff --git a/routes/checkRoom.js b/routes/checkRoom.js new file mode 100644 index 0000000..7c21150 --- /dev/null +++ b/routes/checkRoom.js @@ -0,0 +1,46 @@ +const express = require('express'); +const axios = require('axios'); +const { chat, chatroom } = require('../schemas'); + +const router = express.Router(); + +const resource_url = process.env.OAUTH_URL; + +//메시지가 존재하는지 체크하는 메서드 +router.get('/:roomId/check/message', async (req, res) => { + + const token = req.headers.authorization; // 헤더에서 액세스 토큰 추출 + const roomId = req.params.roomId; // route parameter로부터 roomId를 추출 + + //엑세스 토큰이 존재하지 않을 경우 + if (!token) { + res.status(400).json({ message: "JWT Token이 존재하지 않습니다.", code: 10100 }); + return; + } + + //리소스에 접급 + try { + const response = await axios.get(resource_url, { + headers: { + 'Authorization': `${token}` + } + }); + } catch (error) { + res.status(400).json({ message: "유효하지 않은 JWT Token 입니다.", code: 10101 }); + } + + try { + const chatCount = await chat.countDocuments({ roomId: roomId }); + + if(chatCount === 0) { + await chatroom.deleteOne({ roomId: roomId }); + res.json({ message: "채팅방이 삭제되었습니다.", code: 200 }); + } else { + res.json({ message: "채팅방에 메시지가 존재합니다.", code: 70002 }); + } + } catch (error) { + res.status(500).json({ message: "서버 내부 오류가 발생하였습니다.", code: 50002 }); + } + }); + +module.exports = router; \ No newline at end of file