From 57cf8e7a3f26260450af58404f8a8379f7bf1a04 Mon Sep 17 00:00:00 2001 From: Ophestra Umiker <cat@ophivana.moe> Date: Wed, 16 Oct 2024 21:44:10 +0900 Subject: [PATCH] feat(api)!: create API return structs using newMessage This also returns a success state making it easier for clients to understand the API response. Signed-off-by: Ophestra Umiker <cat@ophivana.moe> --- register.go | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/register.go b/register.go index 02b4f60..acf1525 100644 --- a/register.go +++ b/register.go @@ -22,11 +22,9 @@ func routeRegister(app *fiber.App, db *leveldb.DB, captcha fiber.Handler) { // Parse and validate the request if err := c.Bind().Body(req); err != nil { if verbose { - log.Printf("invalid request from %q: %v", c.IP(), err) + log.Printf("invalid json from %q: %v", c.IP(), err) } - return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ - "message": "Invalid request", - }) + return c.Status(fiber.StatusBadRequest).JSON(newMessage(false, "Invalid request")) } // Validate email format @@ -34,37 +32,27 @@ func routeRegister(app *fiber.App, db *leveldb.DB, captcha fiber.Handler) { if verbose { log.Printf("invalid email from %q: %s", c.IP(), req.Email) } - return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ - "message": "Invalid email format", - }) + return c.Status(fiber.StatusBadRequest).JSON(newMessage(false, "Invalid email address")) } // Check if email is already registered if ok, err := db.Has([]byte(req.Email), nil); err != nil { log.Printf("cannot check for existence of email %q: %v", req.Email, err) - return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "message": "Error checking registration status", - }) + return c.Status(fiber.StatusInternalServerError).JSON(newMessage(false, "Cannot check registration status")) } else if ok { if verbose { log.Printf("duplicate email from %q: %s", c.IP(), req.Email) } - return c.Status(fiber.StatusConflict).JSON(fiber.Map{ - "message": "Email already registered", - }) + return c.Status(fiber.StatusConflict).JSON(newMessage(false, "Email already registered")) } // Save the email to the waitlist if err := db.Put([]byte(req.Email), []byte{'x'}, nil); err != nil { log.Printf("cannot register email %q: %v", req.Email, err) - return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "message": "Error registering email", - }) + return c.Status(fiber.StatusInternalServerError).JSON(newMessage(false, "Cannot register email")) } log.Printf("registered email %q", req.Email) - return c.JSON(fiber.Map{ - "message": "Email registered successfully", - }) + return c.JSON(newMessage(true, "Email registered successfully")) }, captcha) } -- GitLab