From 52f95eec43b5b67778ed6f4202106c572ceb25da Mon Sep 17 00:00:00 2001 From: Matt Kirby <MattJKirby@outlook.com> Date: Sat, 15 Apr 2023 01:31:07 +0100 Subject: [PATCH] Added request routs --- .../src/Routes/RequestsRouter.ts | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 backend-services/friend-service/src/Routes/RequestsRouter.ts diff --git a/backend-services/friend-service/src/Routes/RequestsRouter.ts b/backend-services/friend-service/src/Routes/RequestsRouter.ts new file mode 100644 index 00000000..44f447eb --- /dev/null +++ b/backend-services/friend-service/src/Routes/RequestsRouter.ts @@ -0,0 +1,82 @@ +import express, { Request, Response } from 'express' +import { FriendManager } from '../Friends/FriendManager'; +import { CustomJWTRequest } from '../Middleware/Auth'; +import { RequestManager } from '../Requests/RequestManager' + +export const RequestRouter = express.Router(); +const friendManager = new FriendManager(); +const requestManager = new RequestManager(friendManager); + +/** + * GET '/' + * Returns a string + */ +RequestRouter.get('/', async (req:CustomJWTRequest, res:Response): Promise<void> => { + const {token} = req; + + return requestManager.GetRequests(token as string).then((result) => { + res.status(200).json({requests: result}) + }).catch((error: Error) => { + res.status(401).json({error: error.message}) + }); +}); + +/** + * POST '/' + * Creates a friend request + */ +RequestRouter.post('/', async (req:CustomJWTRequest, res:Response): Promise<Response> => { + const {requester_id, receiver_id} = req.body; + const {token} = req + + if(requester_id !== token){ + return res.status(401).json({error: "unathorised"}) + } + + return requestManager.NewRequest(requester_id, receiver_id).then((result) => { + return res.sendStatus(200) + }).catch((error:Error) => { + return res.status(400).json({error: error.message}) + }); +}); + +/** + * PUT '/accept' + */ +RequestRouter.put('/accept', async (req:CustomJWTRequest, res:Response): Promise<Response> => { + const {request_id} = req.body; + const {token} = req; + + await requestManager.GetSingleRequest(request_id).then(result => { + if(result.TargetUser !== token){ + return res.status(400).json({error: "unauthorised"}) + } + }) + + return requestManager.AcceptRequest(request_id).then((result) => { + return res.sendStatus(200) + }).catch((error: Error) => { + return res.status(400).json({error: error.message}) + }) +}); + +/** + * PUT '/reject' + */ +RequestRouter.put('/reject', async (req:CustomJWTRequest, res:Response): Promise<Response> => { + const {request_id} = req.body; + const {token} = req; + + await requestManager.GetSingleRequest(request_id).then(result => { + if(result.TargetUser !== token){ + return res.status(400).json({error: "unauthorised"}) + } + }) + + return requestManager.RejectRequest(request_id).then((result) => { + return res.sendStatus(200) + }).catch((error: Error) => { + return res.status(400).json({error: error.message}) + }) +}); + -- GitLab