diff --git a/internal/api/config_manager.go b/internal/api/config_manager.go new file mode 100644 index 000000000..aa6615e30 --- /dev/null +++ b/internal/api/config_manager.go @@ -0,0 +1,29 @@ +package api + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" + "github.com/openimsdk/tools/apiresp" + "gopkg.in/yaml.v3" +) + +type ConfigManager struct { + apiConfig *config.API +} + +func NewConfigManager(api *config.API) *ConfigManager { + return &ConfigManager{ + apiConfig: api, + } +} + +func (cm *ConfigManager) LoadApiConfig(c *gin.Context) { + b, err := yaml.Marshal(cm.apiConfig) + if err != nil { + apiresp.GinError(c, err) // args option error + return + } + c.Data(http.StatusOK, "text/yaml; charset=utf-8", b) +} diff --git a/internal/api/router.go b/internal/api/router.go index d6bf4e130..44ca37d26 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -68,7 +68,7 @@ func newGinRouter(disCov discovery.SvcDiscoveryRegistry, config *Config) *gin.En u := NewUserApi(disCov, config.Discovery.RpcService.MessageGateway) m := NewMessageApi(config.Share.IMAdminUserID) j := jssdk.NewJSSdkApi() - pd := NewPrometheusDiscoveryApi(config, disCov) + userRouterGroup := r.Group("/user") { userRouterGroup.POST("/user_register", u.UserRegister) @@ -245,6 +245,7 @@ func newGinRouter(disCov discovery.SvcDiscoveryRegistry, config *Config) *gin.En jssdk.POST("/get_conversations", j.GetConversations) jssdk.POST("/get_active_conversations", j.GetActiveConversations) + pd := NewPrometheusDiscoveryApi(config, disCov) proDiscoveryGroup := r.Group("/prometheus_discovery", pd.Enable) proDiscoveryGroup.GET("/api", pd.Api) proDiscoveryGroup.GET("/user", pd.User) @@ -258,6 +259,9 @@ func newGinRouter(disCov discovery.SvcDiscoveryRegistry, config *Config) *gin.En proDiscoveryGroup.GET("/msg_gateway", pd.MessageGateway) proDiscoveryGroup.GET("/msg_transfer", pd.MessageTransfer) + cm := NewConfigManager(&config.API) + configGroup := r.Group("/config") + configGroup.GET("/api", cm.LoadApiConfig) return r } diff --git a/pkg/common/config/load_config_test.go b/pkg/common/config/load_config_test.go index e575b27a9..612d44335 100644 --- a/pkg/common/config/load_config_test.go +++ b/pkg/common/config/load_config_test.go @@ -23,7 +23,7 @@ func TestLoadMongoConfig(t *testing.T) { // os.Setenv("IMENV_MONGODB_URI", "openIM123") // os.Setenv("IMENV_MONGODB_USERNAME", "openIM123") err := Load("../../../config/", "mongodb.yml", "IMENV_MONGODB", "source", &mongo) - // err := LoadConfig("../../../config/mongodb.yml", "IMENV_MONGODB", &mongo) + // err := LoadApiConfig("../../../config/mongodb.yml", "IMENV_MONGODB", &mongo) assert.Nil(t, err) t.Log(mongo.Password)