package handlers import ( "fmt" "github.com/gorilla/mux" "mazeratsgen/internal/tables" "net/http" ) func LoadHandlers(r *mux.Router) { r.HandleFunc("/api/generate/name", GenName) r.HandleFunc("/api/generate/spell", GenSpell) r.HandleFunc("/api/generate/mutation", GenMutation) r.HandleFunc("/api/generate/insanity", GenInsanity) r.HandleFunc("/api/generate/catastrophe", GenCatastrophe) r.HandleFunc("/api/generate/monster", GenMonster) r.HandleFunc("/api/monster/{seed}", Monster) r.HandleFunc("/api/generate/character", GenCharacter) r.HandleFunc("/api/character/{seed}", Character) r.HandleFunc("/api/generate/city", GenCity) r.HandleFunc("/api/city/{seed}", City) r.HandleFunc("/api/generate/dungeon", GenDungeon) r.HandleFunc("/api/dungeon/{seed}", Dungeon) r.HandleFunc("/api/roll/{xdy}", Roll) } func WriteResponse(w http.ResponseWriter, r *http.Request, i interface{}, t string) { var response interface{} var err error if r.Header.Get("Accept") == "text/plain" { w.Header().Set("Content-Type", "text/plain") response, err = tables.ConvertToText(i, t) if err != nil { // TODO: Return json error w.WriteHeader(http.StatusInternalServerError) w.Write([]byte(err.Error())) return } } else { w.Header().Set("Content-Type", "application/json") response, err = tables.ConvertToJSON(i) if err != nil { // TODO: Return json error w.WriteHeader(http.StatusInternalServerError) w.Write([]byte(err.Error())) return } } w.WriteHeader(http.StatusOK) switch response.(type) { case []byte: w.Write(response.([]byte)) case string: w.Write([]byte(response.(string))) default: err := fmt.Sprintf("Error writing response, '%v' not handled", response) w.Write([]byte(err)) } }