99 lines
3.7 KiB
Go
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))
|
|
}
|