Files
vsix-hpl-toolbox/standalone/settings.go
2026-06-22 15:10:22 +08:00

90 lines
2.5 KiB
Go

package main
import (
"encoding/json"
"fmt"
"net/http"
"strings"
)
func SettingsSaveEndpoint(w http.ResponseWriter, r *http.Request) {
var req struct {
Plec struct {
UploadUrl string `json:"uploadUrl"`
OriginUrl string `json:"originUrl"`
PreviewBase string `json:"previewBase"`
SkipExistsCheck bool `json:"skipExistsCheck"`
} `json:"plec"`
Applovin struct {
Cookie string `json:"cookie"`
DelayMs int `json:"delayMs"`
RandomizeUserAgent *bool `json:"randomizeUserAgent"`
} `json:"applovin"`
SendToMobile struct {
Port int `json:"port"`
} `json:"sendToMobile"`
DeviceSimulator struct {
DevicesURL string `json:"devicesUrl"`
LanguagesURL string `json:"languagesUrl"`
} `json:"deviceSimulator"`
ProjectInitManifestURL string `json:"projectInitManifestUrl"`
}
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
writeJSON(w, map[string]any{"ok": false, "error": err.Error()})
return
}
cfg := LoadConfig()
cfg.Plec.UploadUrl = strings.TrimSpace(req.Plec.UploadUrl)
cfg.Plec.OriginUrl = strings.TrimSpace(req.Plec.OriginUrl)
cfg.Plec.PreviewBase = strings.TrimSpace(req.Plec.PreviewBase)
cfg.Plec.SkipExistsCheck = req.Plec.SkipExistsCheck
cfg.Applovin.Cookie = strings.TrimSpace(req.Applovin.Cookie)
cfg.Applovin.DelayMs = req.Applovin.DelayMs
cfg.Applovin.RandomizeUserAgent = req.Applovin.RandomizeUserAgent
cfg.SendToMobile.Port = req.SendToMobile.Port
cfg.DeviceSimulator.DevicesURL = strings.TrimSpace(req.DeviceSimulator.DevicesURL)
cfg.DeviceSimulator.LanguagesURL = strings.TrimSpace(req.DeviceSimulator.LanguagesURL)
if req.ProjectInitManifestURL != "" {
cfg.ProjectInitManifestURL = strings.TrimSpace(req.ProjectInitManifestURL)
}
// Invalidate remote cache when URLs change
simCache.mu.Lock()
if simCache.devURL != cfg.DeviceSimulator.DevicesURL {
simCache.devURL = ""
simCache.devices = ""
}
if simCache.langURL != cfg.DeviceSimulator.LanguagesURL {
simCache.langURL = ""
simCache.languages = ""
}
simCache.mu.Unlock()
if err := SaveConfig(cfg); err != nil {
writeJSON(w, map[string]any{"ok": false, "error": err.Error()})
return
}
writeJSON(w, map[string]any{"ok": true})
}
func htmlEsc(s string) string {
s = strings.ReplaceAll(s, "&", "&")
s = strings.ReplaceAll(s, "<", "&lt;")
s = strings.ReplaceAll(s, ">", "&gt;")
s = strings.ReplaceAll(s, `"`, "&#34;")
return s
}
func checkedAttr(v bool) string {
if v {
return "checked"
}
return ""
}
func intStr(n int) string {
return fmt.Sprintf("%d", n)
}