diff --git a/src/routes/reviews.ts b/src/routes/reviews.ts index bde3d6a..b49aeb9 100644 --- a/src/routes/reviews.ts +++ b/src/routes/reviews.ts @@ -22,20 +22,33 @@ export class MessagesResponder extends ApiRoute { }); this.server.get(`${this.routeName}/:id`, (req: IdRequest, res: Response) => { + // "req.params.id" is the review ID that was receieved + // "result" is the review that is identified by that ID, if any + const receiver = req.headers["user-agent"]; const result = data.getReviewById(req.params.id); + let err = false; - if (Object.keys(result).length) { - res.writeHead(200, typeJson); - res.write(JSON.stringify(result)); - res.end(); + if (req.params.id.length === 6) { + if (Object.keys(result).length) { + res.writeHead(200, typeJson); + res.write(JSON.stringify(result)); + res.end(); + } else { + res.writeHead(404, typeJson); + res.write(Responder.notFoundError("review not found")); + res.end(); + err = true; + } } else { - res.writeHead(404, typeJson); - res.write(Responder.requestError("review not found")); + res.writeHead(400, typeJson); + res.write(Responder.requestError("review id must be 6 characters")); res.end(); + err = true; } - this.logger.log(`${Logger.emp(receiver)} <~ "${req.path}"`); + // If an error was returned to the client, mark their user agent red in the logs + this.logger.log(`${err ? Logger.err(receiver) : Logger.emp(receiver)} <~ "${req.path}"`); }); this.complete(); diff --git a/src/utils/responder.ts b/src/utils/responder.ts index ca2c21e..81d4f3d 100644 --- a/src/utils/responder.ts +++ b/src/utils/responder.ts @@ -42,4 +42,13 @@ export class Responder { }, }); } + + public static notFoundError(errorMessage: string): string { + return JSON.stringify({ + error: { + type: "notFoundError", + message: errorMessage + } + }); + } }