package v1 import ( "adams549659584/go-proxy-bingai/common" "encoding/json" "net/http" "strings" binglib "github.com/Harry-zklcdc/bing-lib" ) func ModelHandler(w http.ResponseWriter, r *http.Request) { w.Header().Add("Access-Control-Allow-Origin", "*") w.Header().Add("Access-Control-Allow-Methods", "*") w.Header().Add("Access-Control-Allow-Headers", "*") if apikey != "" && r.Header.Get("Authorization") != "Bearer "+apikey { w.WriteHeader(http.StatusUnauthorized) w.Write([]byte("Unauthorized")) return } parts := strings.Split(r.URL.Path, "/") modelId := parts[len(parts)-1] if modelId == "" { ModelsHandler(w, r) return } if !common.IsInArray([]string{DALL_E_3, GPT_35_TURBO, GPT_4_TURBO_PREVIEW, GPT_35_TURBO_16K, GPT_4_32K, GPT_4_VISION}, modelId) && !common.IsInArray(binglib.ChatModels[:], strings.ReplaceAll(modelId, "-vision", "")) { w.WriteHeader(http.StatusNotFound) w.Write([]byte("Not Found")) return } resp := modelStruct{ Id: modelId, Object: "model", Created: 1687579610, OwnedBy: "Go-Proxy-BingAI", } respData, err := json.Marshal(resp) if err != nil { w.WriteHeader(http.StatusInternalServerError) w.Write([]byte(err.Error())) common.Logger.Error("ModelHandler Marshal Error: %v", err) return } w.Header().Set("Content-Type", "application/json") w.Write(respData) }