mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-11-05 21:02:11 +08:00
refactor: unified naming for module startup functions.
This commit is contained in:
parent
131b38caff
commit
56f0cc7489
4
go.sum
4
go.sum
@ -20,8 +20,8 @@ github.com/IBM/sarama v1.42.2 h1:VoY4hVIZ+WQJ8G9KNY/SQlWguBQXQ9uvFPOnrcu8hEw=
|
|||||||
github.com/IBM/sarama v1.42.2/go.mod h1:FLPGUGwYqEs62hq2bVG6Io2+5n+pS6s/WOXVKWSLFtE=
|
github.com/IBM/sarama v1.42.2/go.mod h1:FLPGUGwYqEs62hq2bVG6Io2+5n+pS6s/WOXVKWSLFtE=
|
||||||
github.com/OpenIMSDK/protocol v0.0.56 h1:mbVFyDBachEsmJLfYW5AU1z2KL8AUEpoHG8RPCIxjgg=
|
github.com/OpenIMSDK/protocol v0.0.56 h1:mbVFyDBachEsmJLfYW5AU1z2KL8AUEpoHG8RPCIxjgg=
|
||||||
github.com/OpenIMSDK/protocol v0.0.56/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y=
|
github.com/OpenIMSDK/protocol v0.0.56/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y=
|
||||||
github.com/OpenIMSDK/tools v0.0.46-alpha.5 h1:jFirsgpSIT1G0ue0li7EiS6d4P2hp4rWc4DVBH+all4=
|
github.com/OpenIMSDK/tools v0.0.46-alpha.6 h1:QJ+IQh8s+Z7K7xx5wnjVU1VZY0qNy+zvqxGpUWOADl8=
|
||||||
github.com/OpenIMSDK/tools v0.0.46-alpha.5/go.mod h1:kGgLtr1egGJnnGaBsF7SNcylx7KB4Md5MyRqz+GUMS0=
|
github.com/OpenIMSDK/tools v0.0.46-alpha.6/go.mod h1:kGgLtr1egGJnnGaBsF7SNcylx7KB4Md5MyRqz+GUMS0=
|
||||||
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
|
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
|
||||||
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs=
|
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs=
|
||||||
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
|
github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
|
||||||
|
|||||||
@ -16,6 +16,7 @@ package fcm
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/OpenIMSDK/tools/errs"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
firebase "firebase.google.com/go"
|
firebase "firebase.google.com/go"
|
||||||
@ -39,21 +40,24 @@ type Fcm struct {
|
|||||||
|
|
||||||
// NewClient initializes a new FCM client using the Firebase Admin SDK.
|
// NewClient initializes a new FCM client using the Firebase Admin SDK.
|
||||||
// It requires the FCM service account credentials file located within the project's configuration directory.
|
// It requires the FCM service account credentials file located within the project's configuration directory.
|
||||||
func NewClient(pushConf *config.Push, cache cache.MsgModel) *Fcm {
|
func NewClient(pushConf *config.Push, cache cache.MsgModel) (*Fcm, error) {
|
||||||
projectRoot := config.GetProjectRoot()
|
projectRoot, err := config.GetProjectRoot()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
credentialsFilePath := filepath.Join(projectRoot, "config", pushConf.Fcm.ServiceAccount)
|
credentialsFilePath := filepath.Join(projectRoot, "config", pushConf.Fcm.ServiceAccount)
|
||||||
opt := option.WithCredentialsFile(credentialsFilePath)
|
opt := option.WithCredentialsFile(credentialsFilePath)
|
||||||
fcmApp, err := firebase.NewApp(context.Background(), nil, opt)
|
fcmApp, err := firebase.NewApp(context.Background(), nil, opt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil, errs.Wrap(err)
|
||||||
}
|
}
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fcmMsgClient, err := fcmApp.Messaging(ctx)
|
fcmMsgClient, err := fcmApp.Messaging(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil, errs.Wrap(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Fcm{fcmMsgCli: fcmMsgClient, cache: cache}
|
return &Fcm{fcmMsgCli: fcmMsgClient, cache: cache}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Fcm) Push(ctx context.Context, userIDs []string, title, content string, opts *offlinepush.Opts) error {
|
func (f *Fcm) Push(ctx context.Context, userIDs []string, title, content string, opts *offlinepush.Opts) error {
|
||||||
|
|||||||
@ -40,7 +40,10 @@ func Start(config *config.GlobalConfig, client discoveryregistry.SvcDiscoveryReg
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
cacheModel := cache.NewMsgCacheModel(rdb, config.MsgCacheTimeout, &config.Redis)
|
cacheModel := cache.NewMsgCacheModel(rdb, config.MsgCacheTimeout, &config.Redis)
|
||||||
offlinePusher := NewOfflinePusher(&config.Push, &config.IOSPush, cacheModel)
|
offlinePusher, err := NewOfflinePusher(&config.Push, &config.IOSPush, cacheModel)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
database := controller.NewPushDatabase(cacheModel)
|
database := controller.NewPushDatabase(cacheModel)
|
||||||
groupRpcClient := rpcclient.NewGroupRpcClient(client, config.RpcRegisterName.OpenImGroupName)
|
groupRpcClient := rpcclient.NewGroupRpcClient(client, config.RpcRegisterName.OpenImGroupName)
|
||||||
conversationRpcClient := rpcclient.NewConversationRpcClient(client, config.RpcRegisterName.OpenImConversationName)
|
conversationRpcClient := rpcclient.NewConversationRpcClient(client, config.RpcRegisterName.OpenImConversationName)
|
||||||
|
|||||||
@ -75,19 +75,19 @@ func NewPusher(config *config.GlobalConfig, discov discoveryregistry.SvcDiscover
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewOfflinePusher(pushConf *config.Push, iOSPushConf *config.IOSPush, cache cache.MsgModel) offlinepush.OfflinePusher {
|
func NewOfflinePusher(pushConf *config.Push, iOSPushConf *config.IOSPush, cache cache.MsgModel) (offlinepush.OfflinePusher, error) {
|
||||||
var offlinePusher offlinepush.OfflinePusher
|
var offlinePusher offlinepush.OfflinePusher
|
||||||
switch pushConf.Enable {
|
switch pushConf.Enable {
|
||||||
case "getui":
|
case "getui":
|
||||||
offlinePusher = getui.NewClient(pushConf, cache)
|
offlinePusher = getui.NewClient(pushConf, cache)
|
||||||
case "fcm":
|
case "fcm":
|
||||||
offlinePusher = fcm.NewClient(pushConf, cache)
|
return fcm.NewClient(pushConf, cache)
|
||||||
case "jpush":
|
case "jpush":
|
||||||
offlinePusher = jpush.NewClient(pushConf, iOSPushConf)
|
offlinePusher = jpush.NewClient(pushConf, iOSPushConf)
|
||||||
default:
|
default:
|
||||||
offlinePusher = dummy.NewClient()
|
offlinePusher = dummy.NewClient()
|
||||||
}
|
}
|
||||||
return offlinePusher
|
return offlinePusher, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pusher) DeleteMemberAndSetConversationSeq(ctx context.Context, groupID string, userIDs []string) error {
|
func (p *Pusher) DeleteMemberAndSetConversationSeq(ctx context.Context, groupID string, userIDs []string) error {
|
||||||
|
|||||||
@ -62,7 +62,6 @@ func WithLogName(logName string) func(*CmdOpts) {
|
|||||||
func NewRootCmd(processName, name string, opts ...func(*CmdOpts)) *RootCmd {
|
func NewRootCmd(processName, name string, opts ...func(*CmdOpts)) *RootCmd {
|
||||||
rootCmd := &RootCmd{processName: processName, Name: name, config: config.NewGlobalConfig()}
|
rootCmd := &RootCmd{processName: processName, Name: name, config: config.NewGlobalConfig()}
|
||||||
cmd := cobra.Command{
|
cmd := cobra.Command{
|
||||||
Use: "Start openIM application",
|
|
||||||
Short: fmt.Sprintf(`Start %s `, name),
|
Short: fmt.Sprintf(`Start %s `, name),
|
||||||
Long: fmt.Sprintf(`Start %s `, name),
|
Long: fmt.Sprintf(`Start %s `, name),
|
||||||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
||||||
@ -76,7 +75,7 @@ func NewRootCmd(processName, name string, opts ...func(*CmdOpts)) *RootCmd {
|
|||||||
|
|
||||||
func (rc *RootCmd) persistentPreRun(cmd *cobra.Command, opts ...func(*CmdOpts)) error {
|
func (rc *RootCmd) persistentPreRun(cmd *cobra.Command, opts ...func(*CmdOpts)) error {
|
||||||
if err := rc.initializeConfiguration(cmd); err != nil {
|
if err := rc.initializeConfiguration(cmd); err != nil {
|
||||||
return fmt.Errorf("failed to get configuration from command: %w", err)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdOpts := rc.applyOptions(opts...)
|
cmdOpts := rc.applyOptions(opts...)
|
||||||
@ -178,7 +177,6 @@ func (r *RootCmd) GetPrometheusPortFlag() int {
|
|||||||
|
|
||||||
func (r *RootCmd) getConfFromCmdAndInit(cmdLines *cobra.Command) error {
|
func (r *RootCmd) getConfFromCmdAndInit(cmdLines *cobra.Command) error {
|
||||||
configFolderPath, _ := cmdLines.Flags().GetString(constant.FlagConf)
|
configFolderPath, _ := cmdLines.Flags().GetString(constant.FlagConf)
|
||||||
fmt.Println("The directory of the configuration file to start the process:", configFolderPath)
|
|
||||||
return config2.InitConfig(r.config, configFolderPath)
|
return config2.InitConfig(r.config, configFolderPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,6 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
@ -41,28 +40,27 @@ const (
|
|||||||
func GetDefaultConfigPath() (string, error) {
|
func GetDefaultConfigPath() (string, error) {
|
||||||
executablePath, err := os.Executable()
|
executablePath, err := os.Executable()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("GetDefaultConfigPath error:", err.Error())
|
return "", errs.WrapMsg(err, "failed to get executable path")
|
||||||
return "", nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
configPath, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../config/"))
|
configPath, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../config/"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err)
|
return "", errs.WrapMsg(err, "failed to get output directory", "outDir", filepath.Join(filepath.Dir(executablePath), "../config/"))
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
return configPath, nil
|
return configPath, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getProjectRoot returns the absolute path of the project root directory.
|
// getProjectRoot returns the absolute path of the project root directory.
|
||||||
func GetProjectRoot() string {
|
func GetProjectRoot() (string, error) {
|
||||||
executablePath, _ := os.Executable()
|
executablePath, err := os.Executable()
|
||||||
|
if err != nil {
|
||||||
|
return "", errs.Wrap(err)
|
||||||
|
}
|
||||||
projectRoot, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../../../../.."))
|
projectRoot, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../../../../.."))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err)
|
return "", errs.Wrap(err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
return projectRoot
|
return projectRoot, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetOptionsByNotification(cfg NotificationConf) msgprocessor.Options {
|
func GetOptionsByNotification(cfg NotificationConf) msgprocessor.Options {
|
||||||
@ -94,7 +92,11 @@ func initConfig(config any, configName, configFolderPath string) error {
|
|||||||
if !os.IsNotExist(err) {
|
if !os.IsNotExist(err) {
|
||||||
return errs.WrapMsg(err, "stat config path error", "config Folder Path", configFolderPath)
|
return errs.WrapMsg(err, "stat config path error", "config Folder Path", configFolderPath)
|
||||||
}
|
}
|
||||||
configFolderPath = filepath.Join(GetProjectRoot(), "config", configName)
|
path, err := GetProjectRoot()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
configFolderPath = filepath.Join(path, "config", configName)
|
||||||
}
|
}
|
||||||
data, err := os.ReadFile(configFolderPath)
|
data, err := os.ReadFile(configFolderPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user