mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-25 02:58:26 +08:00
add friend callback
This commit is contained in:
parent
8d0ae922b8
commit
162478563c
@ -336,7 +336,10 @@ callback:
|
|||||||
enable: false
|
enable: false
|
||||||
callbackTimeOut: 2
|
callbackTimeOut: 2
|
||||||
callbackFailedContinue: true # 回调超时是否继续离线推送
|
callbackFailedContinue: true # 回调超时是否继续离线推送
|
||||||
|
callbackBeforeAddFriend:
|
||||||
|
enable: false
|
||||||
|
callbackTimeOut: 2
|
||||||
|
callbackFailedContinue: true # 回调超时是否继续
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
groupCreated:
|
groupCreated:
|
||||||
|
@ -1 +1,45 @@
|
|||||||
package friend
|
package friend
|
||||||
|
|
||||||
|
import (
|
||||||
|
cbApi "Open_IM/pkg/call_back_struct"
|
||||||
|
"Open_IM/pkg/common/config"
|
||||||
|
"Open_IM/pkg/common/constant"
|
||||||
|
"Open_IM/pkg/common/http"
|
||||||
|
"Open_IM/pkg/common/log"
|
||||||
|
pbFriend "Open_IM/pkg/proto/friend"
|
||||||
|
"Open_IM/pkg/proto/msg"
|
||||||
|
"Open_IM/pkg/utils"
|
||||||
|
http2 "net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func callbackBeforeAddFriend(req *pbFriend.AddFriendReq) cbApi.CommonCallbackResp {
|
||||||
|
callbackResp := cbApi.CommonCallbackResp{OperationID: req.CommID.OperationID}
|
||||||
|
if !config.Config.Callback.CallbackBeforeAddFriend.Enable {
|
||||||
|
return callbackResp
|
||||||
|
}
|
||||||
|
log.NewDebug(req.CommID.OperationID, utils.GetSelfFuncName(), req.String())
|
||||||
|
commonCallbackReq := &cbApi.CallbackBeforeAddFriendReq{
|
||||||
|
CallbackCommand: constant.CallbackBeforeAddFriendCommand,
|
||||||
|
FromUserID: req.CommID.FromUserID,
|
||||||
|
ToUserID: req.CommID.ToUserID,
|
||||||
|
ReqMsg: req.ReqMsg,
|
||||||
|
OperationID: req.CommID.OperationID,
|
||||||
|
}
|
||||||
|
resp := &cbApi.CallbackBeforeAddFriendResp{
|
||||||
|
CommonCallbackResp: &callbackResp,
|
||||||
|
}
|
||||||
|
//utils.CopyStructFields(req, msg.MsgData)
|
||||||
|
defer log.NewDebug(req.CommID.OperationID, utils.GetSelfFuncName(), commonCallbackReq, *resp)
|
||||||
|
if err := http.PostReturn(config.Config.Callback.CallbackUrl, commonCallbackReq, resp, config.Config.Callback.CallbackBeforeAddFriend.CallbackTimeOut); err != nil {
|
||||||
|
callbackResp.ErrCode = http2.StatusInternalServerError
|
||||||
|
callbackResp.ErrMsg = err.Error()
|
||||||
|
if !config.Config.Callback.CallbackBeforeAddFriend.CallbackFailedContinue {
|
||||||
|
callbackResp.ActionCode = constant.ActionForbidden
|
||||||
|
return callbackResp
|
||||||
|
} else {
|
||||||
|
callbackResp.ActionCode = constant.ActionAllow
|
||||||
|
return callbackResp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return callbackResp
|
||||||
|
}
|
||||||
|
@ -142,6 +142,22 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq
|
|||||||
log.NewError(req.CommID.OperationID, "CheckAccess false ", req.CommID.OpUserID, req.CommID.FromUserID)
|
log.NewError(req.CommID.OperationID, "CheckAccess false ", req.CommID.OpUserID, req.CommID.FromUserID)
|
||||||
return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
|
return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
callbackResp := callbackBeforeAddFriend(req)
|
||||||
|
if callbackResp.ErrCode != 0 {
|
||||||
|
log.NewError(req.CommID.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg resp: ", callbackResp)
|
||||||
|
}
|
||||||
|
if callbackResp.ActionCode != constant.ActionAllow {
|
||||||
|
if callbackResp.ErrCode == 0 {
|
||||||
|
callbackResp.ErrCode = 201
|
||||||
|
}
|
||||||
|
log.NewDebug(req.CommID.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendSingleMsg result", "end rpc and return", callbackResp)
|
||||||
|
return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{
|
||||||
|
ErrCode: int32(callbackResp.ErrCode),
|
||||||
|
ErrMsg: callbackResp.ErrMsg,
|
||||||
|
}}, nil
|
||||||
|
}
|
||||||
|
|
||||||
//Cannot add non-existent users
|
//Cannot add non-existent users
|
||||||
if _, err := imdb.GetUserByUserID(req.CommID.ToUserID); err != nil {
|
if _, err := imdb.GetUserByUserID(req.CommID.ToUserID); err != nil {
|
||||||
log.NewError(req.CommID.OperationID, "GetUserByUserID failed ", err.Error(), req.CommID.ToUserID)
|
log.NewError(req.CommID.OperationID, "GetUserByUserID failed ", err.Error(), req.CommID.ToUserID)
|
||||||
|
13
pkg/call_back_struct/friend.go
Normal file
13
pkg/call_back_struct/friend.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package call_back_struct
|
||||||
|
|
||||||
|
type CallbackBeforeAddFriendReq struct {
|
||||||
|
CallbackCommand string `json:"callbackCommand"`
|
||||||
|
FromUserID string `json:"fromUserID" `
|
||||||
|
ToUserID string `json:"toUserID"`
|
||||||
|
ReqMsg string `json:"reqMsg"`
|
||||||
|
OperationID string `json:"operationID"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CallbackBeforeAddFriendResp struct {
|
||||||
|
*CommonCallbackResp
|
||||||
|
}
|
@ -289,6 +289,7 @@ type config struct {
|
|||||||
CallbackOfflinePush callBackConfig `yaml:"callbackOfflinePush"`
|
CallbackOfflinePush callBackConfig `yaml:"callbackOfflinePush"`
|
||||||
CallbackOnlinePush callBackConfig `yaml:"callbackOnlinePush"`
|
CallbackOnlinePush callBackConfig `yaml:"callbackOnlinePush"`
|
||||||
CallbackBeforeSuperGroupOnlinePush callBackConfig `yaml:"callbackSuperGroupOnlinePush"`
|
CallbackBeforeSuperGroupOnlinePush callBackConfig `yaml:"callbackSuperGroupOnlinePush"`
|
||||||
|
CallbackBeforeAddFriend callBackConfig `yaml:"callbackBeforeAddFriend"`
|
||||||
} `yaml:"callback"`
|
} `yaml:"callback"`
|
||||||
Notification struct {
|
Notification struct {
|
||||||
///////////////////////group/////////////////////////////
|
///////////////////////group/////////////////////////////
|
||||||
|
@ -207,6 +207,8 @@ const (
|
|||||||
CallbackOfflinePushCommand = "callbackOfflinePushCommand"
|
CallbackOfflinePushCommand = "callbackOfflinePushCommand"
|
||||||
CallbackOnlinePushCommand = "callbackOnlinePushCommand"
|
CallbackOnlinePushCommand = "callbackOnlinePushCommand"
|
||||||
CallbackSuperGroupOnlinePushCommand = "callbackSuperGroupOnlinePushCommand"
|
CallbackSuperGroupOnlinePushCommand = "callbackSuperGroupOnlinePushCommand"
|
||||||
|
CallbackBeforeAddFriendCommand = "callbackBeforeAddFriendCommand"
|
||||||
|
|
||||||
//callback actionCode
|
//callback actionCode
|
||||||
ActionAllow = 0
|
ActionAllow = 0
|
||||||
ActionForbidden = 1
|
ActionForbidden = 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user