From 5159d7ef1414f101e66a1907da6a4ea9579589b2 Mon Sep 17 00:00:00 2001 From: CAtlas0784 Date: Sat, 17 Oct 2026 10:28:54 +0700 Subject: [PATCH] feat(sdkserver): support catalog proxying in apiGachabaseFetch --- internal/sdkserver/api.go | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/internal/sdkserver/api.go b/internal/sdkserver/api.go index 9325abf..10b8df8 100644 --- a/internal/sdkserver/api.go +++ b/internal/sdkserver/api.go @@ -523,17 +523,27 @@ func apiGachabaseFetch(w http.ResponseWriter, r *http.Request) { lang = "en" } - if targetURL == "" && targetID != "" && targetType != "" { - switch targetType { - case "character", "avatar": - targetURL = fmt.Sprintf("https://hsr.gachabase.net/characters/%s/slug/%s?lang=%s", targetID, branch, lang) - case "lightcone", "lc": - targetURL = fmt.Sprintf("https://hsr.gachabase.net/lightcones/%s/slug/%s?lang=%s", targetID, branch, lang) - case "relic": - targetURL = fmt.Sprintf("https://hsr.gachabase.net/relics/%s/slug/%s?lang=%s", targetID, branch, lang) + if targetURL == "" && targetType != "" { + if targetID != "" { + switch targetType { + case "character", "avatar": + targetURL = fmt.Sprintf("https://hsr.gachabase.net/characters/%s/slug/%s?lang=%s", targetID, branch, lang) + case "lightcone", "lc": + targetURL = fmt.Sprintf("https://hsr.gachabase.net/lightcones/%s/slug/%s?lang=%s", targetID, branch, lang) + case "relic": + targetURL = fmt.Sprintf("https://hsr.gachabase.net/relics/%s/slug/%s?lang=%s", targetID, branch, lang) + } + } else { + switch targetType { + case "characters", "avatars": + targetURL = fmt.Sprintf("https://hsr.gachabase.net/characters?branch=%s&lang=%s", branch, lang) + case "lightcones", "lcs": + targetURL = fmt.Sprintf("https://hsr.gachabase.net/lightcones?branch=%s&lang=%s", branch, lang) + } } } + if targetURL == "" { writeJSON(w, map[string]any{"error": "missing url or id/type parameters", "status": 400}) return