85 lines
2.7 KiB
JavaScript
85 lines
2.7 KiB
JavaScript
const express = require("express")
|
|
const controller = require("../controllers/db")
|
|
const router = express.Router()
|
|
|
|
router.get("/", (req, res) => {
|
|
const roomsRequest = controller.listRooms()
|
|
if (!roomsRequest.success) {
|
|
res.status(roomsRequest.code).json({
|
|
error: roomsRequest.error,
|
|
code: roomsRequest.code
|
|
})
|
|
}
|
|
const rooms = []
|
|
for (const room of roomsRequest.rooms) {
|
|
const playersRequest = controller.getPlayersFromRoom(room.id)
|
|
if (!playersRequest.success) {
|
|
res.status(playersRequest.code).json({
|
|
error: playersRequest.error,
|
|
code: playersRequest.code
|
|
})
|
|
break
|
|
}
|
|
delete room.password
|
|
room.players = playersRequest.players
|
|
rooms.push(room)
|
|
}
|
|
res.json(rooms)
|
|
})
|
|
|
|
//TO-DO : Finish it
|
|
router.post("/:roomId", controller.login, (req, res) => {
|
|
const { roomId } = req.params
|
|
const roomGetRequest = controller.getRoom(roomId)
|
|
if (roomGetRequest.success) {
|
|
if (roomGetRequest.room.owner == req.user.username) {
|
|
|
|
} else {
|
|
res.status(401).json({ success: false, error: "You must be the owner of this room to update it.", code: 401 })
|
|
}
|
|
} else {
|
|
res.status(roomGetRequest.code).json(roomGetRequest)
|
|
}
|
|
})
|
|
|
|
router.post("/:roomId/room", controller.login, (req, res) => {
|
|
const { roomId } = req.params
|
|
const { password } = req.body
|
|
const roomGetRequest = controller.getRoom(roomId)
|
|
if (roomGetRequest.success) {
|
|
if (!roomGetRequest.room.hasPassword) {
|
|
res.status(200).send()
|
|
} else {
|
|
if (!password) {
|
|
res.status(422).json({
|
|
code: 422,
|
|
message: "Missing parameter in body (password)"
|
|
})
|
|
}
|
|
if (password == roomGetRequest.room.password) {
|
|
res.status(200).send()
|
|
} else {
|
|
res.status(401).json({ code: 401, error: "Invalid credential." })
|
|
}
|
|
}
|
|
} else {
|
|
res.status(roomGetRequest.code).json(roomGetRequest)
|
|
}
|
|
})
|
|
|
|
router.delete("/:roomId", controller.login, (req, res) => {
|
|
const { roomId } = req.params
|
|
const roomGetRequest = controller.getRoom(roomId)
|
|
if (roomGetRequest.success) {
|
|
if (roomGetRequest.room.owner == req.user.username) {
|
|
const roomDeleteRequest = controller.deleteRoom()
|
|
res.json(roomDeleteRequest)
|
|
} else {
|
|
res.status(401).json({ success: false, error: "You must be the owner of this room to delete it.", code: 401 })
|
|
}
|
|
} else {
|
|
res.status(roomGetRequest.code).json(roomGetRequest)
|
|
}
|
|
})
|
|
|
|
module.exports = router |