tokenFactory/controller/docs_config.go

97 lines
3.3 KiB
Go

package controller
import (
"net/http"
"strings"
"github.com/QuantumNous/new-api/common"
"github.com/gin-gonic/gin"
)
type docsConfigResponse struct {
BrandName string `json:"brandName"`
SiteName map[string]string `json:"siteName"`
LogoUrl string `json:"logoUrl"`
HomeUrl string `json:"homeUrl"`
GithubUrl string `json:"githubUrl"`
MetaKeywords []string `json:"metaKeywords"`
Business docsBusinessConfigResponse `json:"business"`
Raw map[string]string `json:"raw"`
}
type docsBusinessConfigResponse struct {
Phone string `json:"phone"`
PhoneHref string `json:"phoneHref"`
WorkTime map[string]string `json:"workTime"`
WechatQrUrl string `json:"wechatQrUrl"`
}
func docsOptionValue(key string) string {
return strings.TrimSpace(common.OptionMap[key])
}
func splitDocsKeywords(value string) []string {
if strings.TrimSpace(value) == "" {
return []string{}
}
parts := strings.Split(value, ",")
keywords := make([]string, 0, len(parts))
for _, part := range parts {
keyword := strings.TrimSpace(part)
if keyword != "" {
keywords = append(keywords, keyword)
}
}
return keywords
}
func GetDocsConfig(c *gin.Context) {
common.OptionMapRWMutex.RLock()
defer common.OptionMapRWMutex.RUnlock()
raw := map[string]string{
"DocsBrandName": docsOptionValue("DocsBrandName"),
"DocsSiteNameEn": docsOptionValue("DocsSiteNameEn"),
"DocsSiteNameZh": docsOptionValue("DocsSiteNameZh"),
"DocsSiteNameJa": docsOptionValue("DocsSiteNameJa"),
"DocsLogoUrl": docsOptionValue("DocsLogoUrl"),
"DocsHomeUrl": docsOptionValue("DocsHomeUrl"),
"DocsGithubUrl": docsOptionValue("DocsGithubUrl"),
"DocsMetaKeywords": docsOptionValue("DocsMetaKeywords"),
"DocsBusinessPhone": docsOptionValue("DocsBusinessPhone"),
"DocsBusinessPhoneHref": docsOptionValue("DocsBusinessPhoneHref"),
"DocsBusinessWorkTimeZh": docsOptionValue("DocsBusinessWorkTimeZh"),
"DocsBusinessWorkTimeEn": docsOptionValue("DocsBusinessWorkTimeEn"),
"DocsBusinessWorkTimeJa": docsOptionValue("DocsBusinessWorkTimeJa"),
"DocsBusinessWechatQrUrl": docsOptionValue("DocsBusinessWechatQrUrl"),
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"message": "",
"data": docsConfigResponse{
BrandName: docsOptionValue("DocsBrandName"),
SiteName: map[string]string{
"en": docsOptionValue("DocsSiteNameEn"),
"zh": docsOptionValue("DocsSiteNameZh"),
"ja": docsOptionValue("DocsSiteNameJa"),
},
LogoUrl: docsOptionValue("DocsLogoUrl"),
HomeUrl: docsOptionValue("DocsHomeUrl"),
GithubUrl: docsOptionValue("DocsGithubUrl"),
MetaKeywords: splitDocsKeywords(docsOptionValue("DocsMetaKeywords")),
Business: docsBusinessConfigResponse{
Phone: docsOptionValue("DocsBusinessPhone"),
PhoneHref: docsOptionValue("DocsBusinessPhoneHref"),
WorkTime: map[string]string{
"en": docsOptionValue("DocsBusinessWorkTimeEn"),
"zh": docsOptionValue("DocsBusinessWorkTimeZh"),
"ja": docsOptionValue("DocsBusinessWorkTimeJa"),
},
WechatQrUrl: docsOptionValue("DocsBusinessWechatQrUrl"),
},
Raw: raw,
},
})
}