// Copyright 2023 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package setting import ( "sync" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting/config" ) type PictureStruct struct { DisableGravatar *config.Value[bool] EnableFederatedAvatar *config.Value[bool] } type ConfigStruct struct { Picture *PictureStruct } var ( defaultConfig *ConfigStruct defaultConfigOnce sync.Once ) func initDefaultConfig() { config.SetCfgSecKeyGetter(&cfgSecKeyGetter{}) defaultConfig = &ConfigStruct{ Picture: &PictureStruct{ DisableGravatar: config.Bool(false, config.CfgSecKey{Sec: "picture", Key: "DISABLE_GRAVATAR"}, "picture.disable_gravatar"), EnableFederatedAvatar: config.Bool(false, config.CfgSecKey{Sec: "picture", Key: "ENABLE_FEDERATED_AVATAR"}, "picture.enable_federated_avatar"), }, } } func Config() *ConfigStruct { defaultConfigOnce.Do(initDefaultConfig) return defaultConfig } type cfgSecKeyGetter struct{} func (c cfgSecKeyGetter) GetValue(sec, key string) (v string, has bool) { cfgSec, err := CfgProvider.GetSection(sec) if err != nil { log.Error("Unable to get config section: %q", sec) return "", false } cfgKey := ConfigSectionKey(cfgSec, key) if cfgKey == nil { return "", false } return cfgKey.Value(), true }