Skip to content
Snippets Groups Projects
Verified Commit 57cf8e7a authored by Ophestra's avatar Ophestra
Browse files

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: default avatarOphestra Umiker <cat@ophivana.moe>
parent a270ca91
No related branches found
No related tags found
1 merge request!5Fix up API paths and responses
......@@ -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)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment