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 0000000000000000000000000000000000000000..44f447eb050a6d2cd0321ebbd572a95cc66d47b9 --- /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}) + }) +}); +