feat: load oss media config from sys config

This commit is contained in:
richjohnrambo
2026-09-08 22:19:00 +08:00
parent 0f984b0ab4
commit aae13c9265
10 changed files with 224 additions and 9 deletions
+36
View File
@@ -131,6 +131,10 @@ func (oh *ossHandler) loadSysConfig() error {
"oss_access_key_id",
"oss_access_key_secret",
"oss_presign_ttl",
"oss_serve_url",
"oss_cache_control",
"oss_cors_origins",
"oss_verify_bucket",
)
if err != nil {
return errors.New("failed to load OSS config from sys config: " + err.Error())
@@ -146,6 +150,14 @@ func (oh *ossHandler) loadSysConfig() error {
applyString(&oh.conf.RegionID, values["oss_region_id"])
applyString(&oh.conf.AccessKeyID, values["oss_access_key_id"])
applyString(&oh.conf.AccessKeySecret, values["oss_access_key_secret"])
applyString(&oh.conf.ServeURL, values["oss_serve_url"])
applyString(&oh.conf.CacheControl, values["oss_cache_control"])
if origins := parseStringList(values["oss_cors_origins"]); len(origins) > 0 {
oh.conf.CorsOrigins = origins
}
if verify := strings.TrimSpace(values["oss_verify_bucket"]); verify != "" {
oh.conf.VerifyBucket = truthy(verify)
}
if ttl := strings.TrimSpace(values["oss_presign_ttl"]); ttl != "" {
parsed, err := strconv.Atoi(ttl)
if err != nil {
@@ -156,6 +168,30 @@ func (oh *ossHandler) loadSysConfig() error {
return nil
}
func parseStringList(value string) []string {
value = strings.TrimSpace(value)
if value == "" {
return nil
}
var items []string
if strings.HasPrefix(value, "[") {
if err := json.Unmarshal([]byte(value), &items); err == nil {
return compactStrings(items)
}
}
return compactStrings(strings.Split(value, ","))
}
func compactStrings(values []string) []string {
items := make([]string, 0, len(values))
for _, value := range values {
if value = strings.TrimSpace(value); value != "" {
items = append(items, value)
}
}
return items
}
func applyString(target *string, value string) {
if value = strings.TrimSpace(value); value != "" {
*target = value