Files

99 lines
3.7 KiB
Go

package main
import (
"log"
"net/http"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/go-chi/cors"
)
func main() {
r := chi.NewRouter()
rps := GetEnvFloat("RATE_LIMIT_RPS", 2.0)
burst := GetEnvInt("RATE_LIMIT_BURST", 5)
// *CORS
r.Use(middleware.RequestID)
r.Use(middleware.RealIP)
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
r.Use(cors.Handler(cors.Options{
//AllowedOrigins: []string{"https://*", "http://*"}, //* Use this for development
AllowedOrigins: GetEnvList("ALLOWED_ORIGINS", []string{"https://utils.fernandovideira.com"}), //* Use this for production
AllowedMethods: []string{"GET"},
AllowedHeaders: []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"},
ExposedHeaders: []string{"Link"},
AllowCredentials: false,
MaxAge: 300,
}))
r.Use(RefererCheck(GetEnvList("ALLOWED_ORIGINS", []string{"https://utils.fernandovideira.com"})))
r.Use(RateLimiter(rps, burst))
r.Route("/v1", func(r chi.Router) {
r.Route("/fantasy", func(r chi.Router) {
r.Get("/elf-names", ElfNamesHandler)
r.Get("/dwarf-names", DwarfNamesHandler)
r.Get("/arakocra-names", ArakocraNamesHandler)
r.Get("/aasimar-names", AasimarNamesHandler)
r.Get("/bugbear-names", BugbearNamesHandler)
r.Get("/centaur-names", CentaurNamesHandler)
r.Get("/changeling-names", ChangelingNamesHandler)
r.Get("/deep-gnome-names", DeepGnomeNamesHandler)
r.Get("/deva-names", DevaNamesHandler)
r.Get("/dragonborn-names", DragonbornNamesHandler)
r.Get("/drow-names", DrowNamesHandler)
r.Get("/duergar-names", DuergarNamesHandler)
r.Get("/eladrin-names", EladrinNamesHandler)
r.Get("/fairy-names", FairyNamesHandler)
r.Get("/firbolg-names", ElfNamesHandler)
r.Get("/genasi-names", GenasiNamesHandler)
r.Get("/githyanki-names", GithyankiNamesHandler)
r.Get("/githzerai-names", GithzeraiNamesHandler)
r.Get("/gnome-names", GnomeNamesHandler)
r.Get("/goblin-names", GoblinNamesHandler)
r.Get("/goliath-names", GoliathNamesHandler)
r.Get("/grung-names", GrungNamesHandler)
r.Get("/half-elf-names", HalfElfNamesHandler)
r.Get("/half-orc-names", HalfOrcNamesHandler)
r.Get("/halfling-names", HalflingNamesHandler)
r.Get("/harengon-names", HarengonNamesHandler)
r.Get("/hobgoblin-names", HobgoblinNamesHandler)
r.Get("/human-names", HumanNamesHandler)
r.Get("/kalashtar-names", KalashtarNamesHandler)
r.Get("/kenku-names", KenkuNamesHandler)
r.Get("/kobold-names", KoboldNamesHandler)
r.Get("/leonin-names", LeoninNamesHandler)
r.Get("/lizardfolk-names", LizardfolkNamesHandler)
r.Get("/locathah-names", LocathahNamesHandler)
r.Get("/loxodon-names", LoxodonNamesHandler)
r.Get("/minotaur-names", MinotaurNamesHandler)
r.Get("/orc-names", OrcNamesHandler)
r.Get("/satyr-names", SatyrNamesHandler)
r.Get("/shadar-kai-names", ShadarKaiNamesHandler)
r.Get("/shardmind-names", ShardmindNamesHandler)
r.Get("/shifter-names", ShifterNamesHandler)
r.Get("/simic-hybrid-names", SimicHybridNamesHandler)
r.Get("/tabaxi-names", TabaxiNamesHandler)
r.Get("/tiefling-names", TieflingNamesHandler)
r.Get("/tortle-names", TortleNamesHandler)
r.Get("/triton-names", TritonNamesHandler)
r.Get("/vedalken-names", VedalkenNamesHandler)
r.Get("/verdan-names", VerdanNamesHandler)
r.Get("/warforged-names", WarforgedNamesHandler)
r.Get("/wilden-names", WildenNamesHandler)
r.Get("/yuan-ti-names", YuanTiNamesHandler)
})
r.Route("/modern", func(r chi.Router) {
r.Get("/english", ModernEnglishNamesHandler)
r.Get("/portuguese", ModernPortugueseNamesHandler)
})
})
log.Println("Listening on :8080")
log.Fatal(http.ListenAndServe(":8080", r))
}