Removes external api package

This commit is contained in:
Dennis Schoepf 2024-04-28 19:14:30 +02:00
parent f45ecfebcc
commit b059fa25cb
2 changed files with 0 additions and 101 deletions

View file

@ -1,45 +0,0 @@
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"})
}

View file

@ -1,56 +0,0 @@
package api
import (
"crypto/sha256"
"crypto/subtle"
"regexp"
"strings"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/keyauth"
)
var (
apiKey = "willbechanged"
protectedURLs = []*regexp.Regexp{
regexp.MustCompile("^/api$"),
}
errForbidden = &fiber.Error{
Code: 403,
Message: "API Key is missing or invalid",
}
)
func apiKeyValidator(apiKey string) func(*fiber.Ctx, string) (bool, error) {
return func(_ *fiber.Ctx, key string) (bool, error) {
hashedAPIKey := sha256.Sum256([]byte(apiKey))
hashedKey := sha256.Sum256([]byte(key))
if subtle.ConstantTimeCompare(hashedAPIKey[:], hashedKey[:]) == 1 {
return true, nil
}
return false, keyauth.ErrMissingOrMalformedAPIKey
}
}
func protectedRoutesFilter(ctx *fiber.Ctx) bool {
originalURL := strings.ToLower(ctx.OriginalURL())
for _, pattern := range protectedURLs {
if pattern.MatchString(originalURL) {
return false
}
}
return true
}
func successHandler(ctx *fiber.Ctx) error {
return ctx.Next()
}
func errHandler(ctx *fiber.Ctx, err error) error {
ctx.Status(fiber.StatusForbidden)
return ctx.JSON(errForbidden)
}