You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.1 KiB
89 lines
3.1 KiB
package serializer
|
|
|
|
import (
|
|
model "github.com/cloudreve/Cloudreve/v3/models"
|
|
"time"
|
|
)
|
|
|
|
// SiteConfig 站点全局设置序列
|
|
type SiteConfig struct {
|
|
SiteName string `json:"title"`
|
|
LoginCaptcha bool `json:"loginCaptcha"`
|
|
RegCaptcha bool `json:"regCaptcha"`
|
|
ForgetCaptcha bool `json:"forgetCaptcha"`
|
|
EmailActive bool `json:"emailActive"`
|
|
Themes string `json:"themes"`
|
|
DefaultTheme string `json:"defaultTheme"`
|
|
HomepageViewMethod string `json:"home_view_method"`
|
|
ShareViewMethod string `json:"share_view_method"`
|
|
Authn bool `json:"authn"`
|
|
User User `json:"user"`
|
|
ReCaptchaKey string `json:"captcha_ReCaptchaKey"`
|
|
CaptchaType string `json:"captcha_type"`
|
|
TCaptchaCaptchaAppId string `json:"tcaptcha_captcha_app_id"`
|
|
RegisterEnabled bool `json:"registerEnabled"`
|
|
}
|
|
|
|
type task struct {
|
|
Status int `json:"status"`
|
|
Type int `json:"type"`
|
|
CreateDate time.Time `json:"create_date"`
|
|
Progress int `json:"progress"`
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
// BuildTaskList 构建任务列表响应
|
|
func BuildTaskList(tasks []model.Task, total int) Response {
|
|
res := make([]task, 0, len(tasks))
|
|
for _, t := range tasks {
|
|
res = append(res, task{
|
|
Status: t.Status,
|
|
Type: t.Type,
|
|
CreateDate: t.CreatedAt,
|
|
Progress: t.Progress,
|
|
Error: t.Error,
|
|
})
|
|
}
|
|
|
|
return Response{Data: map[string]interface{}{
|
|
"total": total,
|
|
"tasks": res,
|
|
}}
|
|
}
|
|
|
|
func checkSettingValue(setting map[string]string, key string) string {
|
|
if v, ok := setting[key]; ok {
|
|
return v
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// BuildSiteConfig 站点全局设置
|
|
func BuildSiteConfig(settings map[string]string, user *model.User) Response {
|
|
var userRes User
|
|
if user != nil {
|
|
userRes = BuildUser(*user)
|
|
} else {
|
|
userRes = BuildUser(*model.NewAnonymousUser())
|
|
}
|
|
res := Response{
|
|
Data: SiteConfig{
|
|
SiteName: checkSettingValue(settings, "siteName"),
|
|
LoginCaptcha: model.IsTrueVal(checkSettingValue(settings, "login_captcha")),
|
|
RegCaptcha: model.IsTrueVal(checkSettingValue(settings, "reg_captcha")),
|
|
ForgetCaptcha: model.IsTrueVal(checkSettingValue(settings, "forget_captcha")),
|
|
EmailActive: model.IsTrueVal(checkSettingValue(settings, "email_active")),
|
|
Themes: checkSettingValue(settings, "themes"),
|
|
DefaultTheme: checkSettingValue(settings, "defaultTheme"),
|
|
HomepageViewMethod: checkSettingValue(settings, "home_view_method"),
|
|
ShareViewMethod: checkSettingValue(settings, "share_view_method"),
|
|
Authn: model.IsTrueVal(checkSettingValue(settings, "authn_enabled")),
|
|
User: userRes,
|
|
ReCaptchaKey: checkSettingValue(settings, "captcha_ReCaptchaKey"),
|
|
CaptchaType: checkSettingValue(settings, "captcha_type"),
|
|
TCaptchaCaptchaAppId: checkSettingValue(settings, "captcha_TCaptcha_CaptchaAppId"),
|
|
RegisterEnabled: model.IsTrueVal(checkSettingValue(settings, "register_enabled")),
|
|
}}
|
|
return res
|
|
}
|