aboutsummaryrefslogtreecommitdiff
path: root/routers
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-09-24 19:50:14 +0530
committerBobby <[email protected]>2025-09-24 19:50:14 +0530
commit935d3a22363cac775d0f5f6757367ffbecf5183f (patch)
tree687dfa53a89eeea2d4390d39dad0a488bc37e5d0 /routers
parenta42336fec9c5ed6cd47e7dc0437c931ae06cfc0a (diff)
downloadthunderbird-ai-compose-server-935d3a22363cac775d0f5f6757367ffbecf5183f.tar.xz
thunderbird-ai-compose-server-935d3a22363cac775d0f5f6757367ffbecf5183f.zip
added gemini generator. cleaned up folder structure
Diffstat (limited to 'routers')
-rw-r--r--routers/router.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/routers/router.go b/routers/router.go
new file mode 100644
index 0000000..cae38db
--- /dev/null
+++ b/routers/router.go
@@ -0,0 +1,53 @@
+package routers
+
+import (
+ "errors"
+ "thunderbird-ai-compose-server/config"
+ "thunderbird-ai-compose-server/generators"
+ "thunderbird-ai-compose-server/generators/gemini"
+ "thunderbird-ai-compose-server/types"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func Setup(router *fiber.App) {
+ router.Post("/generate", func(c *fiber.Ctx) error {
+ var payload types.Payload
+
+ if err := c.BodyParser(&payload); err != nil {
+ return c.Status(fiber.StatusBadRequest).JSON(types.ErrorResponse{
+ Error: "Invalid request payload",
+ })
+ }
+
+ prompt := generators.BuildPrompt(payload)
+
+ var response string
+ var err error
+
+ switch config.Config.Provider {
+ case types.Gemini:
+ response, err = gemini.GenerateResponse(prompt)
+ default:
+ err = errors.New("unsupported AI provider")
+ }
+
+ if err != nil {
+ return c.Status(fiber.StatusInternalServerError).JSON(types.ErrorResponse{
+ Error: err.Error(),
+ })
+ }
+
+ return c.JSON(types.SuccessResponse{
+ Response: response,
+ Payload: payload,
+ })
+ })
+
+ // 404 default
+ router.Use(func(c *fiber.Ctx) error {
+ return c.Status(fiber.StatusNotFound).JSON(types.ErrorResponse{
+ Error: "Endpoint not found",
+ })
+ })
+}