freed/api/api.go

45 lines
940 B
Go

package api
import (
"errors"
"freed/database"
"os"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/keyauth"
)
type Handlers struct {
Repo *database.Repository
}
func NewHandlers(repo *database.Repository) *Handlers {
return &Handlers{Repo: repo}
}
func Setup(app *fiber.App, repository *database.Repository) error {
apiKey := os.Getenv("API_KEY")
if apiKey == "" {
return errors.New("Could not read API_KEY from ENV file.")
}
api := app.Group("/api", keyauth.New(keyauth.Config{
SuccessHandler: successHandler,
ErrorHandler: errHandler,
KeyLookup: "header:x-api-key",
ContextKey: "apiKey",
Validator: apiKeyValidator(apiKey),
}))
handlers := NewHandlers(repository)
v1 := api.Group("/v1")
v1.Get("/users", handlers.FetchAllUsersHandler)
return nil
}
func (h *Handlers) FetchAllUsersHandler(ctx *fiber.Ctx) error {
return ctx.JSON(&fiber.Map{"users": "none"})
}