Refactor endpoint initialization code (#47)

- Refactored code in the `initEndpoints` function to improve readability
and organization.
- Consolidated duplicate code blocks and removed unnecessary setTimeout
calls.
- Updated logging and error handling for better debugging and error
messages.
- Added comments to explain the purpose of certain code blocks.
This commit is contained in:
AtHeartEngineer
2023-08-23 20:04:22 -04:00
committed by GitHub

View File

@@ -45,10 +45,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) {
.then((room: RoomI) => {
if (!room) {
// This is set as a timeout to prevent someone from trying to brute force room ids
setTimeout(
() => res.status(500).json({ error: 'Internal Server Error' }),
1000
);
setTimeout(() => res.status(500).json({ error: 'Internal Server Error' }), 1000);
} else {
const {
roomId,
@@ -93,11 +90,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) {
['/rooms/:idc', '/api/rooms/:idc'],
asyncHandler(async (req: Request, res: Response) => {
try {
pp(
String(
'Express: fetching rooms by identityCommitment ' + req.params.idc
)
);
pp(String('Express: fetching rooms by identityCommitment ' + req.params.idc));
res.status(200).json(await getRoomsByIdentity(req.params.idc));
} catch (error) {
console.error(error);
@@ -117,9 +110,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) {
const parsedBody: JoinData = req.body as JoinData;
if (!parsedBody.code || !parsedBody.idc) {
res
.status(400)
.json({ message: '{code: string, idc: string} expected' });
res.status(400).json({ message: '{code: string, idc: string} expected' });
}
const { code, idc } = parsedBody;
console.debug('Invite Code:', code);
@@ -223,7 +214,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) {
})
.then((messages) => {
messages.map((message: MessageI) => {
message.timeStamp = new Date(message.timeStamp as Date).toString();
message.timeStamp = new Date(message.timeStamp as Date).getTime();
message.proof = JSON.parse(message.proof as string) as RLNFullProof;
});
pp('Express: fetching messages for room ' + id);
@@ -245,79 +236,73 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) {
};
const query = all ? undefined : { where: { roomId: { in: rooms } } };
const codes = genClaimCodeArray(numCodes);
return await prisma.rooms.findMany(query).then((rooms) => {
const roomIds = rooms.map((room) => room.id);
const createCodes = codes.map(async (code, index) => {
return await prisma.claimCodes.create({
data: {
claimcode: code.claimcode,
claimed: false,
roomIds: roomIds,
rooms: {
connect: {
roomId: rooms[index].roomId ? rooms[index].roomId : undefined
}
return await prisma.rooms.findMany(query).then((rooms) => {
const roomIds = rooms.map((room) => room.id);
const createCodes = codes.map(async (code, index) => {
return await prisma.claimCodes.create({
data: {
claimcode: code.claimcode,
claimed: false,
roomIds: roomIds,
rooms: {
connect: {
roomId: rooms[index].roomId ? rooms[index].roomId : undefined
}
}
});
}
});
return Promise.all(createCodes)
.then(() => {
res
.status(200)
.json({ message: 'Claim codes added successfully' });
})
.catch((err) => {
console.error(err);
res.status(500).json({ error: 'Internal Server Error' });
});
});
return Promise.all(createCodes)
.then(() => {
res.status(200).json({ message: 'Claim codes added successfully' });
})
.catch((err) => {
console.error(err);
res.status(500).json({ error: 'Internal Server Error' });
});
});
})
);
app.post(
['/room/:roomId/addcode', '/api/room/:roomId/addcode'],
adminAuth,
(req, res) => {
const { roomId } = req.params;
const { numCodes } = req.body as { numCodes: number };
const codes = genClaimCodeArray(numCodes);
app.post(['/room/:roomId/addcode', '/api/room/:roomId/addcode'], adminAuth, (req, res) => {
const { roomId } = req.params;
const { numCodes } = req.body as { numCodes: number };
const codes = genClaimCodeArray(numCodes);
prisma.rooms
.findUnique({
where: { roomId: roomId },
include: { claimCodes: true }
})
.then((room) => {
if (!room) {
res.status(404).json({ error: 'Room not found' });
return;
}
prisma.rooms
.findUnique({
where: { roomId: roomId },
include: { claimCodes: true }
})
.then((room) => {
if (!room) {
res.status(404).json({ error: 'Room not found' });
return;
}
const createCodes = codes.map((code) => {
return prisma.claimCodes.create({
data: {
claimcode: code.claimcode,
claimed: false,
rooms: {
connect: {
roomId: roomId
}
const createCodes = codes.map((code) => {
return prisma.claimCodes.create({
data: {
claimcode: code.claimcode,
claimed: false,
rooms: {
connect: {
roomId: roomId
}
}
});
}
});
return Promise.all(createCodes);
})
.then(() => {
res.status(200).json({ message: 'Claim codes added successfully' });
})
.catch((err) => {
console.error(err);
res.status(500).json({ error: 'Internal Server Error' });
});
}
);
return Promise.all(createCodes);
})
.then(() => {
res.status(200).json({ message: 'Claim codes added successfully' });
})
.catch((err) => {
console.error(err);
res.status(500).json({ error: 'Internal Server Error' });
});
});
app.get(['/logclaimcodes', '/api/logclaimcodes'], adminAuth, (req, res) => {
pp('Express: fetching claim codes');
@@ -367,9 +352,7 @@ export function initEndpoints(app: Express, adminAuth: RequestHandler) {
asyncHandler(async (req: Request, res: Response) => {
const { roomId } = req.params;
const { message } = req.body as { message: string };
pp(
String('Express: sending system message: ' + message + ' to ' + roomId)
);
pp(String('Express: sending system message: ' + message + ' to ' + roomId));
try {
await createSystemMessages(message, roomId);
res.status(200).json({ message: 'Message sent to room ' + roomId });