diff options
| author | Bobby <[email protected]> | 2025-09-24 19:50:14 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-09-24 19:50:14 +0530 |
| commit | 935d3a22363cac775d0f5f6757367ffbecf5183f (patch) | |
| tree | 687dfa53a89eeea2d4390d39dad0a488bc37e5d0 /routers | |
| parent | a42336fec9c5ed6cd47e7dc0437c931ae06cfc0a (diff) | |
| download | thunderbird-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.go | 53 |
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", + }) + }) +} |
