48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package sdkserver
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"gac-hkrpg-go/internal/common"
|
|
)
|
|
|
|
func apiMonsterSettingsCatalog(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
catalog, err := common.LoadMonsterSettingsCatalog()
|
|
if err != nil {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
writeJSON(w, map[string]any{"error": err.Error(), "status": 500})
|
|
return
|
|
}
|
|
cfg, err := common.LoadRuntimeConfig()
|
|
if err != nil {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
writeJSON(w, map[string]any{"error": err.Error(), "status": 500})
|
|
return
|
|
}
|
|
response := map[string]any{
|
|
"status": 200,
|
|
"modes": catalog.Modes,
|
|
"monster_ids": catalog.MonsterIDs,
|
|
"monsters": catalog.Monsters,
|
|
"levels": catalog.Levels,
|
|
"sources": catalog.Sources,
|
|
"client_version": cfg.ClientVersion,
|
|
}
|
|
if metadata, metadataErr := common.LoadNanokaMonsterMetadata(cfg.ClientVersion); metadataErr != nil {
|
|
response["metadata_error"] = metadataErr.Error()
|
|
response["sources"] = append(catalog.Sources, "Nanoka metadata unavailable")
|
|
} else {
|
|
catalog.ApplyNanokaMonsterMetadata(metadata)
|
|
response["monsters"] = catalog.Monsters
|
|
response["modes"] = catalog.Modes
|
|
response["sources"] = catalog.Sources
|
|
response["metadata_version"] = metadata.Version
|
|
response["metadata_source"] = "Nanoka"
|
|
}
|
|
writeJSON(w, response)
|
|
}
|