feat: add openim env

This commit is contained in:
Xinwei Xiong (cubxxw) 2024-03-18 21:58:38 +08:00
parent f499cecc3c
commit 817153be37
43 changed files with 94 additions and 138 deletions

View File

@ -169,12 +169,12 @@ linters-settings:
- '*.Embedded' - '*.Embedded'
- '*.External' - '*.External'
# forbidigo: forbidigo:
# # Forbid the following identifiers (identifiers are written using regexp): # # Forbid the following identifiers (identifiers are written using regexp):
# forbid: forbid:
# - ^print.*$ # - ^print.*$
# - 'fmt\.Print.*' - 'fmt\.Print.*'
# - fmt.Println.* # too much log noise - fmt.Println.* # too much log noise
# - ginkgo\\.F.* # these are used just for local development # - ginkgo\\.F.* # these are used just for local development
# # Exclude godoc examples from forbidigo checks. Default is true. # # Exclude godoc examples from forbidigo checks. Default is true.
# exclude_godoc_examples: false # exclude_godoc_examples: false
@ -454,7 +454,6 @@ linters-settings:
# # specify an error message to output when a blacklisted package is used # # specify an error message to output when a blacklisted package is used
# - github.com/Sirupsen/logrus: "logging is allowed only by logutils.Log" # - github.com/Sirupsen/logrus: "logging is allowed only by logutils.Log"
importas: importas:
# if set to `true`, force to use alias. # if set to `true`, force to use alias.
no-unaliased: true no-unaliased: true
@ -672,6 +671,7 @@ linters-settings:
- errors.New( - errors.New(
- errors.Unwrap( - errors.Unwrap(
- .Wrap( - .Wrap(
- .WrapMsg(
- .Wrapf( - .Wrapf(
- .WithMessage( - .WithMessage(
- .WithMessagef( - .WithMessagef(
@ -679,6 +679,7 @@ linters-settings:
ignorePackageGlobs: ignorePackageGlobs:
- encoding/* - encoding/*
- github.com/pkg/* - github.com/pkg/*
- github.com/openimsdk/*
wsl: wsl:
# If true append is only allowed to be cuddled if appending value is # If true append is only allowed to be cuddled if appending value is
@ -705,7 +706,6 @@ linters-settings:
# Allow only slices initialized with a length of zero. Default is false. # Allow only slices initialized with a length of zero. Default is false.
always: false always: false
# The custom section can be used to define linter plugins to be loaded at runtime. See README doc # The custom section can be used to define linter plugins to be loaded at runtime. See README doc
# for more info. # for more info.
#custom: #custom:
@ -731,6 +731,7 @@ linters:
- errcheck - errcheck
- decorder - decorder
- ineffassign - ineffassign
- forbidigo
- revive - revive
- reassign - reassign
- tparallel - tparallel

View File

@ -86,6 +86,7 @@ func Start(config *config.GlobalConfig, client registry.SvcDiscoveryRegistry, se
&msgRpcClient, &msgRpcClient,
notification.WithRpcFunc(userRpcClient.GetUsersInfo), notification.WithRpcFunc(userRpcClient.GetUsersInfo),
) )
// Register Friend server with refactored MongoDB and Redis integrations // Register Friend server with refactored MongoDB and Redis integrations
pbfriend.RegisterFriendServer(server, &friendServer{ pbfriend.RegisterFriendServer(server, &friendServer{
friendDatabase: controller.NewFriendDatabase( friendDatabase: controller.NewFriendDatabase(
@ -128,7 +129,7 @@ func (s *friendServer) ApplyToAddFriend(ctx context.Context, req *pbfriend.Apply
return nil, err return nil, err
} }
if in1 && in2 { if in1 && in2 {
return nil, errs.ErrRelationshipAlready.WrapMsg("has f") return nil, errs.ErrRelationshipAlready.WrapMsg("already friends has f")
} }
if err = s.friendDatabase.AddFriendRequest(ctx, req.FromUserID, req.ToUserID, req.ReqMsg, req.Ex); err != nil { if err = s.friendDatabase.AddFriendRequest(ctx, req.FromUserID, req.ToUserID, req.ReqMsg, req.Ex); err != nil {
return nil, err return nil, err

View File

@ -298,6 +298,7 @@ func CallbackAfterTransferGroupOwner(ctx context.Context, cfg *GroupEventCallbac
} }
return nil return nil
} }
func CallbackBeforeInviteUserToGroup(ctx context.Context, cfg *GroupEventCallbackConfig, req *group.InviteUserToGroupReq) (err error) { func CallbackBeforeInviteUserToGroup(ctx context.Context, cfg *GroupEventCallbackConfig, req *group.InviteUserToGroupReq) (err error) {
if !cfg.BeforeCreateGroup.Enable { if !cfg.BeforeCreateGroup.Enable {
return nil return nil

View File

@ -70,18 +70,22 @@ func Start(config *config.GlobalConfig, client discoveryregistry.SvcDiscoveryReg
if err != nil { if err != nil {
return err return err
} }
groupDB, err := mgo.NewGroupMongo(mongo.GetDatabase(config.Mongo.Database)) groupDB, err := mgo.NewGroupMongo(mongo.GetDatabase(config.Mongo.Database))
if err != nil { if err != nil {
return err return err
} }
groupMemberDB, err := mgo.NewGroupMember(mongo.GetDatabase(config.Mongo.Database)) groupMemberDB, err := mgo.NewGroupMember(mongo.GetDatabase(config.Mongo.Database))
if err != nil { if err != nil {
return err return err
} }
groupRequestDB, err := mgo.NewGroupRequestMgo(mongo.GetDatabase(config.Mongo.Database)) groupRequestDB, err := mgo.NewGroupRequestMgo(mongo.GetDatabase(config.Mongo.Database))
if err != nil { if err != nil {
return err return err
} }
userRpcClient := rpcclient.NewUserRpcClient(client, config.RpcRegisterName.OpenImUserName, &config.Manager, &config.IMAdmin) userRpcClient := rpcclient.NewUserRpcClient(client, config.RpcRegisterName.OpenImUserName, &config.Manager, &config.IMAdmin)
msgRpcClient := rpcclient.NewMessageRpcClient(client, config.RpcRegisterName.OpenImMsgName) msgRpcClient := rpcclient.NewMessageRpcClient(client, config.RpcRegisterName.OpenImMsgName)
conversationRpcClient := rpcclient.NewConversationRpcClient(client, config.RpcRegisterName.OpenImConversationName) conversationRpcClient := rpcclient.NewConversationRpcClient(client, config.RpcRegisterName.OpenImConversationName)
@ -206,13 +210,16 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbgroup.CreateGroupR
if !utils.Contain(opUserID, userIDs...) { if !utils.Contain(opUserID, userIDs...) {
userIDs = append(userIDs, opUserID) userIDs = append(userIDs, opUserID)
} }
if utils.Duplicate(userIDs) { if utils.Duplicate(userIDs) {
return nil, errs.ErrArgs.WrapMsg("group member repeated") return nil, errs.ErrArgs.WrapMsg("group member repeated")
} }
userMap, err := s.User.GetUsersInfoMap(ctx, userIDs) userMap, err := s.User.GetUsersInfoMap(ctx, userIDs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(userMap) != len(userIDs) { if len(userMap) != len(userIDs) {
return nil, errs.ErrUserIDNotFound.WrapMsg("user not found") return nil, errs.ErrUserIDNotFound.WrapMsg("user not found")
} }
@ -397,9 +404,11 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(userMap) != len(req.InvitedUserIDs) { if len(userMap) != len(req.InvitedUserIDs) {
return nil, errs.ErrRecordNotFound.WrapMsg("user not found") return nil, errs.ErrRecordNotFound.WrapMsg("user not found")
} }
var groupMember *relationtb.GroupMemberModel var groupMember *relationtb.GroupMemberModel
var opUserID string var opUserID string
if !authverify.IsAppManagerUid(ctx, &s.config.Manager, &s.config.IMAdmin) { if !authverify.IsAppManagerUid(ctx, &s.config.Manager, &s.config.IMAdmin) {

View File

@ -23,9 +23,9 @@ import (
) )
func (s *groupServer) GetJoinedSuperGroupList(context.Context, *pbgroup.GetJoinedSuperGroupListReq) (*pbgroup.GetJoinedSuperGroupListResp, error) { func (s *groupServer) GetJoinedSuperGroupList(context.Context, *pbgroup.GetJoinedSuperGroupListReq) (*pbgroup.GetJoinedSuperGroupListResp, error) {
return nil, errs.Wrap(errors.New("GetJoinedSuperGroupList is deprecated"), "This feature is deprecated and no longer supported.") return nil, errs.WrapMsg(errors.New("GetJoinedSuperGroupList is deprecated"), "This feature is deprecated and no longer supported.")
} }
func (s *groupServer) GetSuperGroupsInfo(context.Context, *pbgroup.GetSuperGroupsInfoReq) (resp *pbgroup.GetSuperGroupsInfoResp, err error) { func (s *groupServer) GetSuperGroupsInfo(context.Context, *pbgroup.GetSuperGroupsInfoReq) (resp *pbgroup.GetSuperGroupsInfoResp, err error) {
return nil, errs.Wrap(errors.New("GetSuperGroupsInfo is deprecated"), "This feature is deprecated and no longer supported.") return nil, errs.WrapMsg(errors.New("GetSuperGroupsInfo is deprecated"), "This feature is deprecated and no longer supported.")
} }

View File

@ -114,6 +114,7 @@ func (m *msgServer) MarkMsgsAsRead(ctx context.Context, req *msg.MarkMsgsAsReadR
if err != nil && errs.Unwrap(err) != redis.Nil { if err != nil && errs.Unwrap(err) != redis.Nil {
return return
} }
if hasReadSeq > currentHasReadSeq { if hasReadSeq > currentHasReadSeq {
err = m.MsgDatabase.SetHasReadSeq(ctx, req.UserID, req.ConversationID, hasReadSeq) err = m.MsgDatabase.SetHasReadSeq(ctx, req.UserID, req.ConversationID, hasReadSeq)
if err != nil { if err != nil {

View File

@ -42,11 +42,8 @@ func (m *msgServer) validateDeleteSyncOpt(opt *msg.DeleteSyncOpt) (isSyncSelf, i
return opt.IsSyncSelf, opt.IsSyncOther return opt.IsSyncSelf, opt.IsSyncOther
} }
func (m *msgServer) ClearConversationsMsg( func (m *msgServer) ClearConversationsMsg(ctx context.Context, req *msg.ClearConversationsMsgReq) (*msg.ClearConversationsMsgResp, error) {
ctx context.Context, if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
req *msg.ClearConversationsMsgReq,
) (*msg.ClearConversationsMsgResp, error) {
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil {
return nil, err return nil, err
} }
if err := m.clearConversation(ctx, req.ConversationIDs, req.UserID, req.DeleteSyncOpt); err != nil { if err := m.clearConversation(ctx, req.ConversationIDs, req.UserID, req.DeleteSyncOpt); err != nil {
@ -55,11 +52,8 @@ func (m *msgServer) ClearConversationsMsg(
return &msg.ClearConversationsMsgResp{}, nil return &msg.ClearConversationsMsgResp{}, nil
} }
func (m *msgServer) UserClearAllMsg( func (m *msgServer) UserClearAllMsg(ctx context.Context, req *msg.UserClearAllMsgReq) (*msg.UserClearAllMsgResp, error) {
ctx context.Context, if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
req *msg.UserClearAllMsgReq,
) (*msg.UserClearAllMsgResp, error) {
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil {
return nil, err return nil, err
} }
conversationIDs, err := m.ConversationLocalCache.GetConversationIDs(ctx, req.UserID) conversationIDs, err := m.ConversationLocalCache.GetConversationIDs(ctx, req.UserID)
@ -74,7 +68,7 @@ func (m *msgServer) UserClearAllMsg(
} }
func (m *msgServer) DeleteMsgs(ctx context.Context, req *msg.DeleteMsgsReq) (*msg.DeleteMsgsResp, error) { func (m *msgServer) DeleteMsgs(ctx context.Context, req *msg.DeleteMsgsReq) (*msg.DeleteMsgsResp, error) {
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil { if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
return nil, err return nil, err
} }
isSyncSelf, isSyncOther := m.validateDeleteSyncOpt(req.DeleteSyncOpt) isSyncSelf, isSyncOther := m.validateDeleteSyncOpt(req.DeleteSyncOpt)
@ -107,10 +101,7 @@ func (m *msgServer) DeleteMsgs(ctx context.Context, req *msg.DeleteMsgsReq) (*ms
return &msg.DeleteMsgsResp{}, nil return &msg.DeleteMsgsResp{}, nil
} }
func (m *msgServer) DeleteMsgPhysicalBySeq( func (m *msgServer) DeleteMsgPhysicalBySeq(ctx context.Context, req *msg.DeleteMsgPhysicalBySeqReq) (*msg.DeleteMsgPhysicalBySeqResp, error) {
ctx context.Context,
req *msg.DeleteMsgPhysicalBySeqReq,
) (*msg.DeleteMsgPhysicalBySeqResp, error) {
err := m.MsgDatabase.DeleteMsgsPhysicalBySeqs(ctx, req.ConversationID, req.Seqs) err := m.MsgDatabase.DeleteMsgsPhysicalBySeqs(ctx, req.ConversationID, req.Seqs)
if err != nil { if err != nil {
return nil, err return nil, err
@ -118,11 +109,8 @@ func (m *msgServer) DeleteMsgPhysicalBySeq(
return &msg.DeleteMsgPhysicalBySeqResp{}, nil return &msg.DeleteMsgPhysicalBySeqResp{}, nil
} }
func (m *msgServer) DeleteMsgPhysical( func (m *msgServer) DeleteMsgPhysical(ctx context.Context, req *msg.DeleteMsgPhysicalReq) (*msg.DeleteMsgPhysicalResp, error) {
ctx context.Context, if err := authverify.CheckAdmin(ctx, &m.config.Manager, &m.config.IMAdmin); err != nil {
req *msg.DeleteMsgPhysicalReq,
) (*msg.DeleteMsgPhysicalResp, error) {
if err := authverify.CheckAdmin(ctx, m.config); err != nil {
return nil, err return nil, err
} }
remainTime := utils.GetCurrentTimestampBySecond() - req.Timestamp remainTime := utils.GetCurrentTimestampBySecond() - req.Timestamp

View File

@ -42,7 +42,7 @@ func (m *msgServer) RevokeMsg(ctx context.Context, req *msg.RevokeMsgReq) (*msg.
if req.Seq < 0 { if req.Seq < 0 {
return nil, errs.ErrArgs.WrapMsg("seq is invalid") return nil, errs.ErrArgs.WrapMsg("seq is invalid")
} }
if err := authverify.CheckAccessV3(ctx, req.UserID, m.config); err != nil { if err := authverify.CheckAccessV3(ctx, req.UserID, &m.config.Manager, &m.config.IMAdmin); err != nil {
return nil, err return nil, err
} }
user, err := m.UserLocalCache.GetUserInfo(ctx, req.UserID) user, err := m.UserLocalCache.GetUserInfo(ctx, req.UserID)
@ -63,10 +63,10 @@ func (m *msgServer) RevokeMsg(ctx context.Context, req *msg.RevokeMsgReq) (*msg.
data, _ := json.Marshal(msgs[0]) data, _ := json.Marshal(msgs[0])
log.ZInfo(ctx, "GetMsgBySeqs", "conversationID", req.ConversationID, "seq", req.Seq, "msg", string(data)) log.ZInfo(ctx, "GetMsgBySeqs", "conversationID", req.ConversationID, "seq", req.Seq, "msg", string(data))
var role int32 var role int32
if !authverify.IsAppManagerUid(ctx, m.config) { if !authverify.IsAppManagerUid(ctx, &m.config.Manager, &m.config.IMAdmin) {
switch msgs[0].SessionType { switch msgs[0].SessionType {
case constant.SingleChatType: case constant.SingleChatType:
if err := authverify.CheckAccessV3(ctx, msgs[0].SendID, m.config); err != nil { if err := authverify.CheckAccessV3(ctx, msgs[0].SendID, &m.config.Manager, &m.config.IMAdmin); err != nil {
return nil, err return nil, err
} }
role = user.AppMangerLevel role = user.AppMangerLevel

View File

@ -49,15 +49,11 @@ func (m *msgServer) SendMsg(ctx context.Context, req *pbmsg.SendMsgReq) (resp *p
default: default:
return nil, errs.ErrArgs.WrapMsg("unknown sessionType") return nil, errs.ErrArgs.WrapMsg("unknown sessionType")
} }
} else {
return nil, errs.ErrArgs.WrapMsg("msgData is nil")
} }
return nil, errs.ErrArgs.WrapMsg("msgData is nil")
} }
func (m *msgServer) sendMsgSuperGroupChat( func (m *msgServer) sendMsgSuperGroupChat(ctx context.Context, req *pbmsg.SendMsgReq) (resp *pbmsg.SendMsgResp, err error) {
ctx context.Context,
req *pbmsg.SendMsgReq,
) (resp *pbmsg.SendMsgResp, err error) {
if err = m.messageVerification(ctx, req); err != nil { if err = m.messageVerification(ctx, req); err != nil {
prommetrics.GroupChatMsgProcessFailedCounter.Inc() prommetrics.GroupChatMsgProcessFailedCounter.Inc()
return nil, err return nil, err
@ -119,19 +115,15 @@ func (m *msgServer) setConversationAtInfo(nctx context.Context, msg *sdkws.MsgDa
if err != nil { if err != nil {
log.ZWarn(ctx, "SetConversations", err, "userID", memberUserIDList, "conversation", conversation) log.ZWarn(ctx, "SetConversations", err, "userID", memberUserIDList, "conversation", conversation)
} }
} else { }
conversation.GroupAtType = &wrapperspb.Int32Value{Value: constant.AtMe} conversation.GroupAtType = &wrapperspb.Int32Value{Value: constant.AtMe}
err := m.Conversation.SetConversations(ctx, msg.AtUserIDList, conversation) err := m.Conversation.SetConversations(ctx, msg.AtUserIDList, conversation)
if err != nil { if err != nil {
log.ZWarn(ctx, "SetConversations", err, msg.AtUserIDList, conversation) log.ZWarn(ctx, "SetConversations", err, msg.AtUserIDList, conversation)
}
} }
} }
func (m *msgServer) sendMsgNotification( func (m *msgServer) sendMsgNotification(ctx context.Context, req *pbmsg.SendMsgReq) (resp *pbmsg.SendMsgResp, err error) {
ctx context.Context,
req *pbmsg.SendMsgReq,
) (resp *pbmsg.SendMsgResp, err error) {
if err := m.MsgDatabase.MsgToMQ(ctx, utils.GenConversationUniqueKeyForSingle(req.MsgData.SendID, req.MsgData.RecvID), req.MsgData); err != nil { if err := m.MsgDatabase.MsgToMQ(ctx, utils.GenConversationUniqueKeyForSingle(req.MsgData.SendID, req.MsgData.RecvID), req.MsgData); err != nil {
return nil, err return nil, err
} }

View File

@ -29,6 +29,7 @@ type PictureElem struct {
BigPicture PictureBaseInfo `mapstructure:"bigPicture" validate:"required"` BigPicture PictureBaseInfo `mapstructure:"bigPicture" validate:"required"`
SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture" validate:"required"` SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture" validate:"required"`
} }
type SoundElem struct { type SoundElem struct {
UUID string `mapstructure:"uuid"` UUID string `mapstructure:"uuid"`
SoundPath string `mapstructure:"soundPath"` SoundPath string `mapstructure:"soundPath"`
@ -36,6 +37,7 @@ type SoundElem struct {
DataSize int64 `mapstructure:"dataSize"` DataSize int64 `mapstructure:"dataSize"`
Duration int64 `mapstructure:"duration" validate:"required,min=1"` Duration int64 `mapstructure:"duration" validate:"required,min=1"`
} }
type VideoElem struct { type VideoElem struct {
VideoPath string `mapstructure:"videoPath"` VideoPath string `mapstructure:"videoPath"`
VideoUUID string `mapstructure:"videoUUID"` VideoUUID string `mapstructure:"videoUUID"`
@ -50,6 +52,7 @@ type VideoElem struct {
SnapshotWidth int32 `mapstructure:"snapshotWidth" validate:"required"` SnapshotWidth int32 `mapstructure:"snapshotWidth" validate:"required"`
SnapshotHeight int32 `mapstructure:"snapshotHeight" validate:"required"` SnapshotHeight int32 `mapstructure:"snapshotHeight" validate:"required"`
} }
type FileElem struct { type FileElem struct {
FilePath string `mapstructure:"filePath"` FilePath string `mapstructure:"filePath"`
UUID string `mapstructure:"uuid"` UUID string `mapstructure:"uuid"`

View File

@ -23,7 +23,6 @@ import (
"github.com/OpenIMSDK/tools/tokenverify" "github.com/OpenIMSDK/tools/tokenverify"
"github.com/OpenIMSDK/tools/utils" "github.com/OpenIMSDK/tools/utils"
"github.com/golang-jwt/jwt/v4" "github.com/golang-jwt/jwt/v4"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
) )

View File

@ -16,7 +16,6 @@ package callbackstruct
import ( import (
common "github.com/OpenIMSDK/protocol/sdkws" common "github.com/OpenIMSDK/protocol/sdkws"
"github.com/openimsdk/open-im-server/v3/pkg/apistruct" "github.com/openimsdk/open-im-server/v3/pkg/apistruct"
) )

View File

@ -20,6 +20,7 @@ type CallbackAfterRevokeMsgReq struct {
Seq int64 `json:"seq"` Seq int64 `json:"seq"`
UserID string `json:"userID"` UserID string `json:"userID"`
} }
type CallbackAfterRevokeMsgResp struct { type CallbackAfterRevokeMsgResp struct {
CommonCallbackResp CommonCallbackResp
} }

View File

@ -26,6 +26,7 @@ type CallbackBeforeUpdateUserInfoReq struct {
FaceURL *string `json:"faceURL"` FaceURL *string `json:"faceURL"`
Ex *string `json:"ex"` Ex *string `json:"ex"`
} }
type CallbackBeforeUpdateUserInfoResp struct { type CallbackBeforeUpdateUserInfoResp struct {
CommonCallbackResp CommonCallbackResp
Nickname *string `json:"nickName"` Nickname *string `json:"nickName"`

View File

@ -153,5 +153,5 @@ func (a *RpcCmd) GetRpcRegisterNameFromConfig() (string, error) {
case RpcUserServer: case RpcUserServer:
return a.config.RpcRegisterName.OpenImUserName, nil return a.config.RpcRegisterName.OpenImUserName, nil
} }
return "", errs.Wrap(errors.New("can not get rpc register name"), a.Name) return "", errs.WrapMsg(errors.New("unrecognized RPC server name"), "providedName", a.Name, "hint", "Check if the server name is correctly configured")
} }

View File

@ -19,9 +19,8 @@ import (
"time" "time"
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"gopkg.in/yaml.v3"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"gopkg.in/yaml.v3"
) )
var Config GlobalConfig var Config GlobalConfig

View File

@ -21,10 +21,10 @@ import (
"path/filepath" "path/filepath"
"github.com/OpenIMSDK/protocol/constant" "github.com/OpenIMSDK/protocol/constant"
"gopkg.in/yaml.v3" "github.com/OpenIMSDK/tools/errs"
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor" "github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
"github.com/openimsdk/open-im-server/v3/pkg/util/genutil" "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"gopkg.in/yaml.v3"
) )
//go:embed version //go:embed version
@ -37,11 +37,11 @@ const (
) )
// return absolude path join ../config/, this is k8s container config path. // return absolude path join ../config/, this is k8s container config path.
func GetDefaultConfigPath() string { func GetDefaultConfigPath() (string, error) {
executablePath, err := os.Executable() executablePath, err := os.Executable()
if err != nil { if err != nil {
fmt.Println("GetDefaultConfigPath error:", err.Error()) fmt.Println("GetDefaultConfigPath error:", err.Error())
return "" return "", nil
} }
configPath, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../config/")) configPath, err := genutil.OutDir(filepath.Join(filepath.Dir(executablePath), "../config/"))
@ -49,7 +49,7 @@ func GetDefaultConfigPath() string {
fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err) fmt.Fprintf(os.Stderr, "failed to get output directory: %v\n", err)
os.Exit(1) os.Exit(1)
} }
return configPath return configPath, nil
} }
// getProjectRoot returns the absolute path of the project root directory. // getProjectRoot returns the absolute path of the project root directory.
@ -91,31 +91,31 @@ func initConfig(config any, configName, configFolderPath string) error {
_, err := os.Stat(configFolderPath) _, err := os.Stat(configFolderPath)
if err != nil { if err != nil {
if !os.IsNotExist(err) { if !os.IsNotExist(err) {
fmt.Println("stat config path error:", err.Error()) return errs.WrapMsg(err, "stat config path error", "config Folder Path", configFolderPath)
return fmt.Errorf("stat config path error: %w", err)
} }
configFolderPath = filepath.Join(GetProjectRoot(), "config", configName) configFolderPath = filepath.Join(GetProjectRoot(), "config", configName)
fmt.Println("flag's path,enviment's path,default path all is not exist,using project path:", configFolderPath)
} }
data, err := os.ReadFile(configFolderPath) data, err := os.ReadFile(configFolderPath)
if err != nil { if err != nil {
return fmt.Errorf("read file error: %w", err) return errs.WrapMsg(err, "read file error", "config Folder Path", configFolderPath)
} }
if err = yaml.Unmarshal(data, config); err != nil { if err = yaml.Unmarshal(data, config); err != nil {
return fmt.Errorf("unmarshal yaml error: %w", err) return errs.WrapMsg(err, "unmarshal yaml error", "config Folder Path", configFolderPath)
} }
fmt.Println("The path of the configuration file to start the process:", configFolderPath)
return nil return nil
} }
func InitConfig(config *GlobalConfig, configFolderPath string) error { func InitConfig(config *GlobalConfig, configFolderPath string) (err error) {
if configFolderPath == "" { if configFolderPath == "" {
envConfigPath := os.Getenv("OPENIMCONFIG") envConfigPath := os.Getenv("OPENIMCONFIG")
if envConfigPath != "" { if envConfigPath != "" {
configFolderPath = envConfigPath configFolderPath = envConfigPath
} else { } else {
configFolderPath = GetDefaultConfigPath() configFolderPath, err = GetDefaultConfigPath()
if err != nil {
return err
}
} }
} }

View File

@ -101,23 +101,8 @@ type CommonMsgDatabase interface {
MsgToPushMQ(ctx context.Context, key, conversarionID string, msg2mq *sdkws.MsgData) (int32, int64, error) MsgToPushMQ(ctx context.Context, key, conversarionID string, msg2mq *sdkws.MsgData) (int32, int64, error)
MsgToMongoMQ(ctx context.Context, key, conversarionID string, msgs []*sdkws.MsgData, lastSeq int64) error MsgToMongoMQ(ctx context.Context, key, conversarionID string, msgs []*sdkws.MsgData, lastSeq int64) error
RangeUserSendCount( RangeUserSendCount(ctx context.Context, start time.Time, end time.Time, group bool, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, users []*unrelationtb.UserCount, dateCount map[string]int64, err error)
ctx context.Context, RangeGroupSendCount(ctx context.Context, start time.Time, end time.Time, ase bool, pageNumber int32, showNumber int32) (msgCount int64, userCount int64, groups []*unrelationtb.GroupCount, dateCount map[string]int64, err error)
start time.Time,
end time.Time,
group bool,
ase bool,
pageNumber int32,
showNumber int32,
) (msgCount int64, userCount int64, users []*unrelationtb.UserCount, dateCount map[string]int64, err error)
RangeGroupSendCount(
ctx context.Context,
start time.Time,
end time.Time,
ase bool,
pageNumber int32,
showNumber int32,
) (msgCount int64, userCount int64, groups []*unrelationtb.GroupCount, dateCount map[string]int64, err error)
ConvertMsgsDocLen(ctx context.Context, conversationIDs []string) ConvertMsgsDocLen(ctx context.Context, conversationIDs []string)
} }
@ -388,10 +373,10 @@ func (db *commonMsgDatabase) BatchInsertChat2Cache(ctx context.Context, conversa
} }
lenList := len(msgs) lenList := len(msgs)
if int64(lenList) > db.msg.GetSingleGocMsgNum() { if int64(lenList) > db.msg.GetSingleGocMsgNum() {
return 0, false, errors.New("too large") return 0, false, errs.WrapMsg(errors.New("message count exceeds limit"), "limit", db.msg.GetSingleGocMsgNum())
} }
if lenList < 1 { if lenList < 1 {
return 0, false, errors.New("too short as 0") return 0, false, errs.WrapMsg(errors.New("no messages to insert"), "minCount", 1)
} }
if errs.Unwrap(err) == redis.Nil { if errs.Unwrap(err) == redis.Nil {
isNew = true isNew = true
@ -403,6 +388,7 @@ func (db *commonMsgDatabase) BatchInsertChat2Cache(ctx context.Context, conversa
m.Seq = currentMaxSeq m.Seq = currentMaxSeq
userSeqMap[m.SendID] = m.Seq userSeqMap[m.SendID] = m.Seq
} }
failedNum, err := db.cache.SetMessageToCache(ctx, conversationID, msgs) failedNum, err := db.cache.SetMessageToCache(ctx, conversationID, msgs)
if err != nil { if err != nil {
prommetrics.MsgInsertRedisFailedCounter.Add(float64(failedNum)) prommetrics.MsgInsertRedisFailedCounter.Add(float64(failedNum))
@ -410,11 +396,13 @@ func (db *commonMsgDatabase) BatchInsertChat2Cache(ctx context.Context, conversa
} else { } else {
prommetrics.MsgInsertRedisSuccessCounter.Inc() prommetrics.MsgInsertRedisSuccessCounter.Inc()
} }
err = db.cache.SetMaxSeq(ctx, conversationID, currentMaxSeq) err = db.cache.SetMaxSeq(ctx, conversationID, currentMaxSeq)
if err != nil { if err != nil {
log.ZError(ctx, "db.cache.SetMaxSeq error", err, "conversationID", conversationID) log.ZError(ctx, "db.cache.SetMaxSeq error", err, "conversationID", conversationID)
prommetrics.SeqSetFailedCounter.Inc() prommetrics.SeqSetFailedCounter.Inc()
} }
err = db.cache.SetHasReadSeqs(ctx, conversationID, userSeqMap) err = db.cache.SetHasReadSeqs(ctx, conversationID, userSeqMap)
if err != nil { if err != nil {
log.ZError(ctx, "SetHasReadSeqs error", err, "userSeqMap", userSeqMap, "conversationID", conversationID) log.ZError(ctx, "SetHasReadSeqs error", err, "userSeqMap", userSeqMap, "conversationID", conversationID)

View File

@ -19,11 +19,10 @@ import (
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewBlackMongo(db *mongo.Database) (relation.BlackModelInterface, error) { func NewBlackMongo(db *mongo.Database) (relation.BlackModelInterface, error) {

View File

@ -22,11 +22,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewConversationMongo(db *mongo.Database) (*ConversationMgo, error) { func NewConversationMongo(db *mongo.Database) (*ConversationMgo, error) {

View File

@ -19,11 +19,10 @@ import (
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
// FriendMgo implements FriendModelInterface using MongoDB as the storage backend. // FriendMgo implements FriendModelInterface using MongoDB as the storage backend.

View File

@ -19,11 +19,10 @@ import (
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewFriendRequestMongo(db *mongo.Database) (relation.FriendRequestModelInterface, error) { func NewFriendRequestMongo(db *mongo.Database) (relation.FriendRequestModelInterface, error) {

View File

@ -22,11 +22,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewGroupMongo(db *mongo.Database) (relation.GroupModelInterface, error) { func NewGroupMongo(db *mongo.Database) (relation.GroupModelInterface, error) {

View File

@ -21,11 +21,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewGroupMember(db *mongo.Database) (relation.GroupMemberModelInterface, error) { func NewGroupMember(db *mongo.Database) (relation.GroupMemberModelInterface, error) {

View File

@ -20,11 +20,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewGroupRequestMgo(db *mongo.Database) (relation.GroupRequestModelInterface, error) { func NewGroupRequestMgo(db *mongo.Database) (relation.GroupRequestModelInterface, error) {

View File

@ -20,11 +20,10 @@ import (
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewLogMongo(db *mongo.Database) (relation.LogInterface, error) { func NewLogMongo(db *mongo.Database) (relation.LogInterface, error) {

View File

@ -19,11 +19,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewS3Mongo(db *mongo.Database) (relation.ObjectInfoModelInterface, error) { func NewS3Mongo(db *mongo.Database) (relation.ObjectInfoModelInterface, error) {

View File

@ -22,12 +22,11 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/mgoutil" "github.com/OpenIMSDK/tools/mgoutil"
"github.com/OpenIMSDK/tools/pagination" "github.com/OpenIMSDK/tools/pagination"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
) )
func NewUserMongo(db *mongo.Database) (relation.UserModelInterface, error) { func NewUserMongo(db *mongo.Database) (relation.UserModelInterface, error) {

View File

@ -30,9 +30,8 @@ import (
"time" "time"
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/tencentyun/cos-go-sdk-v5"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/s3" "github.com/openimsdk/open-im-server/v3/pkg/common/db/s3"
"github.com/tencentyun/cos-go-sdk-v5"
) )
const ( const (

View File

@ -32,7 +32,6 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/s3" "github.com/openimsdk/open-im-server/v3/pkg/common/db/s3"
) )

View File

@ -21,11 +21,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/tools/log"
"github.com/openimsdk/localcache" "github.com/openimsdk/localcache"
"github.com/redis/go-redis/v9"
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey" "github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient" "github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
"github.com/redis/go-redis/v9"
) )
func NewConversationLocalCache(client rpcclient.ConversationRpcClient, cli redis.UniversalClient) *ConversationLocalCache { func NewConversationLocalCache(client rpcclient.ConversationRpcClient, cli redis.UniversalClient) *ConversationLocalCache {

View File

@ -19,11 +19,10 @@ import (
"github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/tools/log"
"github.com/openimsdk/localcache" "github.com/openimsdk/localcache"
"github.com/redis/go-redis/v9"
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey" "github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient" "github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
"github.com/redis/go-redis/v9"
) )
func NewFriendLocalCache(client rpcclient.FriendRpcClient, cli redis.UniversalClient) *FriendLocalCache { func NewFriendLocalCache(client rpcclient.FriendRpcClient, cli redis.UniversalClient) *FriendLocalCache {

View File

@ -21,11 +21,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/tools/log"
"github.com/openimsdk/localcache" "github.com/openimsdk/localcache"
"github.com/redis/go-redis/v9"
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey" "github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient" "github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
"github.com/redis/go-redis/v9"
) )
func NewGroupLocalCache(client rpcclient.GroupRpcClient, cli redis.UniversalClient) *GroupLocalCache { func NewGroupLocalCache(client rpcclient.GroupRpcClient, cli redis.UniversalClient) *GroupLocalCache {

View File

@ -21,11 +21,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/tools/log"
"github.com/openimsdk/localcache" "github.com/openimsdk/localcache"
"github.com/redis/go-redis/v9"
"github.com/openimsdk/open-im-server/v3/pkg/common/cachekey" "github.com/openimsdk/open-im-server/v3/pkg/common/cachekey"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient" "github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
"github.com/redis/go-redis/v9"
) )
func NewUserLocalCache(client rpcclient.UserRpcClient, cli redis.UniversalClient) *UserLocalCache { func NewUserLocalCache(client rpcclient.UserRpcClient, cli redis.UniversalClient) *UserLocalCache {

View File

@ -19,9 +19,8 @@ import (
"github.com/OpenIMSDK/protocol/auth" "github.com/OpenIMSDK/protocol/auth"
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"google.golang.org/grpc"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"google.golang.org/grpc"
) )
func NewAuth(discov discoveryregistry.SvcDiscoveryRegistry, rpcRegisterName string) *Auth { func NewAuth(discov discoveryregistry.SvcDiscoveryRegistry, rpcRegisterName string) *Auth {

View File

@ -21,10 +21,9 @@ import (
pbconversation "github.com/OpenIMSDK/protocol/conversation" pbconversation "github.com/OpenIMSDK/protocol/conversation"
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"google.golang.org/grpc"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"google.golang.org/grpc"
) )
type Conversation struct { type Conversation struct {

View File

@ -20,9 +20,8 @@ import (
"github.com/OpenIMSDK/protocol/friend" "github.com/OpenIMSDK/protocol/friend"
sdkws "github.com/OpenIMSDK/protocol/sdkws" sdkws "github.com/OpenIMSDK/protocol/sdkws"
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"google.golang.org/grpc"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"google.golang.org/grpc"
) )
type Friend struct { type Friend struct {

View File

@ -24,7 +24,6 @@ import (
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/utils" "github.com/OpenIMSDK/tools/utils"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
) )

View File

@ -26,11 +26,10 @@ import (
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/tools/log"
"github.com/OpenIMSDK/tools/utils" "github.com/OpenIMSDK/tools/utils"
"google.golang.org/grpc"
"google.golang.org/protobuf/proto"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"google.golang.org/grpc"
"google.golang.org/protobuf/proto"
) )
func newContentTypeConf(conf *config.Notification) map[int32]config.NotificationConf { func newContentTypeConf(conf *config.Notification) map[int32]config.NotificationConf {

View File

@ -19,9 +19,8 @@ import (
"github.com/OpenIMSDK/protocol/push" "github.com/OpenIMSDK/protocol/push"
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"google.golang.org/grpc"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"google.golang.org/grpc"
) )
type Push struct { type Push struct {

View File

@ -19,9 +19,8 @@ import (
"github.com/OpenIMSDK/protocol/third" "github.com/OpenIMSDK/protocol/third"
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"google.golang.org/grpc"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"google.golang.org/grpc"
) )
type Third struct { type Third struct {

View File

@ -18,17 +18,15 @@ import (
"context" "context"
"strings" "strings"
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/OpenIMSDK/protocol/sdkws" "github.com/OpenIMSDK/protocol/sdkws"
"github.com/OpenIMSDK/protocol/user" "github.com/OpenIMSDK/protocol/user"
"github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/discoveryregistry"
"github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/utils" "github.com/OpenIMSDK/tools/utils"
"google.golang.org/grpc" "github.com/openimsdk/open-im-server/v3/pkg/authverify"
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil" util "github.com/openimsdk/open-im-server/v3/pkg/util/genutil"
"google.golang.org/grpc"
) )
// User represents a structure holding connection details for the User RPC client. // User represents a structure holding connection details for the User RPC client.

View File

@ -38,7 +38,6 @@ func main() {
// } // }
latestVersion := defaultTemplateVersion latestVersion := defaultTemplateVersion
// getLatestVersion
// getLatestVersion // getLatestVersion
// Construct the download URL // Construct the download URL
@ -101,7 +100,6 @@ func main() {
select {} select {}
} }
// getLatestVersion fetches the latest version number from a given URL.
/* func getLatestVersion(url string) (string, error) { /* func getLatestVersion(url string) (string, error) {
resp, err := http.Get(url) resp, err := http.Get(url)
if err != nil { if err != nil {