mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-23 18:00:32 +08:00
groupCallback
This commit is contained in:
parent
4aa7abf94b
commit
2d67f95413
@ -14,12 +14,12 @@ import (
|
|||||||
"google.golang.org/protobuf/types/known/wrapperspb"
|
"google.golang.org/protobuf/types/known/wrapperspb"
|
||||||
)
|
)
|
||||||
|
|
||||||
func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq) (isPass bool, err error) {
|
func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), err, "req", req, "isPass", isPass, "err", err)
|
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), err, "req", req)
|
||||||
}()
|
}()
|
||||||
if !config.Config.Callback.CallbackBeforeCreateGroup.Enable {
|
if !config.Config.Callback.CallbackBeforeCreateGroup.Enable {
|
||||||
return true, nil
|
return nil
|
||||||
}
|
}
|
||||||
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.String())
|
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.String())
|
||||||
commonCallbackReq := &cbApi.CallbackBeforeCreateGroupReq{
|
commonCallbackReq := &cbApi.CallbackBeforeCreateGroupReq{
|
||||||
@ -34,9 +34,9 @@ func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq)
|
|||||||
}
|
}
|
||||||
//utils.CopyStructFields(req, msg.MsgData)
|
//utils.CopyStructFields(req, msg.MsgData)
|
||||||
defer log.NewDebug(req.OperationID, utils.GetSelfFuncName(), commonCallbackReq, *resp)
|
defer log.NewDebug(req.OperationID, utils.GetSelfFuncName(), commonCallbackReq, *resp)
|
||||||
isPass, err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeCreateGroupCommand, commonCallbackReq,
|
err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeCreateGroupCommand, commonCallbackReq,
|
||||||
resp, config.Config.Callback.CallbackBeforeCreateGroup.CallbackTimeOut, &config.Config.Callback.CallbackBeforeCreateGroup.CallbackFailedContinue)
|
resp, config.Config.Callback.CallbackBeforeCreateGroup.CallbackTimeOut, &config.Config.Callback.CallbackBeforeCreateGroup.CallbackFailedContinue)
|
||||||
if isPass && err == nil {
|
if err == nil {
|
||||||
if resp.GroupID != nil {
|
if resp.GroupID != nil {
|
||||||
req.GroupInfo.GroupID = *resp.GroupID
|
req.GroupInfo.GroupID = *resp.GroupID
|
||||||
}
|
}
|
||||||
@ -74,16 +74,16 @@ func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq)
|
|||||||
req.GroupInfo.LookMemberInfo = *resp.LookMemberInfo
|
req.GroupInfo.LookMemberInfo = *resp.LookMemberInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isPass, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, groupMember *im_mysql_model.GroupMember, groupEx string) (isPass bool, err error) {
|
func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, groupMember *im_mysql_model.GroupMember, groupEx string) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
trace_log.SetContextInfo(ctx, "CallbackBeforeMemberJoinGroup", err, "groupMember", *groupMember, "groupEx", groupEx, "isPass", isPass)
|
trace_log.SetContextInfo(ctx, "CallbackBeforeMemberJoinGroup", err, "groupMember", *groupMember, "groupEx", groupEx)
|
||||||
}()
|
}()
|
||||||
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
|
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
|
||||||
if !config.Config.Callback.CallbackBeforeMemberJoinGroup.Enable {
|
if !config.Config.Callback.CallbackBeforeMemberJoinGroup.Enable {
|
||||||
return true, nil
|
return nil
|
||||||
}
|
}
|
||||||
log.NewDebug(operationID, "args: ", *groupMember)
|
log.NewDebug(operationID, "args: ", *groupMember)
|
||||||
callbackReq := cbApi.CallbackBeforeMemberJoinGroupReq{
|
callbackReq := cbApi.CallbackBeforeMemberJoinGroupReq{
|
||||||
@ -97,9 +97,9 @@ func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, grou
|
|||||||
resp := &cbApi.CallbackBeforeMemberJoinGroupResp{
|
resp := &cbApi.CallbackBeforeMemberJoinGroupResp{
|
||||||
CommonCallbackResp: &callbackResp,
|
CommonCallbackResp: &callbackResp,
|
||||||
}
|
}
|
||||||
isPass, err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeMemberJoinGroupCommand, callbackReq,
|
err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeMemberJoinGroupCommand, callbackReq,
|
||||||
resp, config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackTimeOut, &config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackFailedContinue)
|
resp, config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackTimeOut, &config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackFailedContinue)
|
||||||
if isPass && err == nil {
|
if err == nil {
|
||||||
if resp.MuteEndTime != nil {
|
if resp.MuteEndTime != nil {
|
||||||
groupMember.MuteEndTime = utils.UnixSecondToTime(*resp.MuteEndTime)
|
groupMember.MuteEndTime = utils.UnixSecondToTime(*resp.MuteEndTime)
|
||||||
}
|
}
|
||||||
@ -116,16 +116,16 @@ func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, grou
|
|||||||
groupMember.RoleLevel = *resp.RoleLevel
|
groupMember.RoleLevel = *resp.RoleLevel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isPass, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfoReq) (isPass bool, err error) {
|
func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfoReq) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
trace_log.SetContextInfo(ctx, "CallbackBeforeSetGroupMemberInfo", err, "req", *req)
|
trace_log.SetContextInfo(ctx, "CallbackBeforeSetGroupMemberInfo", err, "req", *req)
|
||||||
}()
|
}()
|
||||||
callbackResp := cbApi.CommonCallbackResp{OperationID: req.OperationID}
|
callbackResp := cbApi.CommonCallbackResp{OperationID: req.OperationID}
|
||||||
if !config.Config.Callback.CallbackBeforeSetGroupMemberInfo.Enable {
|
if !config.Config.Callback.CallbackBeforeSetGroupMemberInfo.Enable {
|
||||||
return true, nil
|
return nil
|
||||||
}
|
}
|
||||||
callbackReq := cbApi.CallbackBeforeSetGroupMemberInfoReq{
|
callbackReq := cbApi.CallbackBeforeSetGroupMemberInfoReq{
|
||||||
CallbackCommand: constant.CallbackBeforeSetGroupMemberInfoCommand,
|
CallbackCommand: constant.CallbackBeforeSetGroupMemberInfoCommand,
|
||||||
@ -148,9 +148,9 @@ func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroup
|
|||||||
resp := &cbApi.CallbackBeforeSetGroupMemberInfoResp{
|
resp := &cbApi.CallbackBeforeSetGroupMemberInfoResp{
|
||||||
CommonCallbackResp: &callbackResp,
|
CommonCallbackResp: &callbackResp,
|
||||||
}
|
}
|
||||||
isPass, err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSetGroupMemberInfoCommand, callbackReq,
|
err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSetGroupMemberInfoCommand, callbackReq,
|
||||||
resp, config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackTimeOut, &config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackFailedContinue)
|
resp, config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackTimeOut, &config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackFailedContinue)
|
||||||
if isPass && err == nil {
|
if err == nil {
|
||||||
if resp.FaceURL != nil {
|
if resp.FaceURL != nil {
|
||||||
req.FaceURL = &wrapperspb.StringValue{Value: *resp.FaceURL}
|
req.FaceURL = &wrapperspb.StringValue{Value: *resp.FaceURL}
|
||||||
}
|
}
|
||||||
@ -164,5 +164,5 @@ func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroup
|
|||||||
req.Ex = &wrapperspb.StringValue{Value: *resp.Ex}
|
req.Ex = &wrapperspb.StringValue{Value: *resp.Ex}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isPass, err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package call_back_struct
|
package call_back_struct
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"Open_IM/pkg/common/constant"
|
||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -26,26 +26,25 @@ type CommonCallbackReq struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CallbackResp interface {
|
type CallbackResp interface {
|
||||||
Parse() (IsPass bool, err error)
|
Parse() (err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type CommonCallbackResp struct {
|
type CommonCallbackResp struct {
|
||||||
ActionCode int `json:"actionCode"`
|
ActionCode int `json:"actionCode"`
|
||||||
ErrCode int `json:"errCode"`
|
ErrCode int32 `json:"errCode"`
|
||||||
ErrMsg string `json:"errMsg"`
|
ErrMsg string `json:"errMsg"`
|
||||||
OperationID string `json:"operationID"`
|
OperationID string `json:"operationID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *CommonCallbackResp) Parse() (isPass bool, err error) {
|
func (c *CommonCallbackResp) Parse() (err error) {
|
||||||
if c.ActionCode != 0 {
|
if c.ActionCode != constant.NoError || c.ErrCode != constant.NoError {
|
||||||
err = errors.New(fmt.Sprintf("callback response error actionCode is %d, errCode is %d, errMsg is %s", c.ActionCode, c.ErrCode, c.ErrMsg))
|
newErr := constant.ErrCallback
|
||||||
return false, err
|
newErr.ErrCode = c.ErrCode
|
||||||
|
newErr.DetailErrMsg = fmt.Sprintf("callback response error actionCode is %d, errCode is %d, errMsg is %s", c.ActionCode, c.ErrCode, c.ErrMsg)
|
||||||
|
err = newErr
|
||||||
|
return
|
||||||
}
|
}
|
||||||
if c.ErrCode != 0 {
|
return
|
||||||
err = errors.New(fmt.Sprintf("callback response error actionCode is %d, errCode is %d, errMsg is %s", c.ActionCode, c.ErrCode, c.ErrMsg))
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
return true, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserStatusBaseCallback struct {
|
type UserStatusBaseCallback struct {
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
type ErrInfo struct {
|
type ErrInfo struct {
|
||||||
ErrCode int32
|
ErrCode int32
|
||||||
ErrMsg string
|
ErrMsg string
|
||||||
WrapErrMsg string
|
DetailErrMsg string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e ErrInfo) Error() string {
|
func (e ErrInfo) Error() string {
|
||||||
@ -31,6 +31,8 @@ var (
|
|||||||
ErrInternalServer = ErrInfo{ServerInternalError, "ServerInternalError", ""}
|
ErrInternalServer = ErrInfo{ServerInternalError, "ServerInternalError", ""}
|
||||||
ErrNetwork = ErrInfo{NetworkError, "NetworkError", ""}
|
ErrNetwork = ErrInfo{NetworkError, "NetworkError", ""}
|
||||||
ErrNoPermission = ErrInfo{NoPermissionError, "NoPermissionError", ""}
|
ErrNoPermission = ErrInfo{NoPermissionError, "NoPermissionError", ""}
|
||||||
|
ErrCallback = ErrInfo{ErrMsg: "CallbackError"}
|
||||||
|
ErrCallbackContinue = ErrInfo{ErrMsg: "CallbackContinueError"}
|
||||||
|
|
||||||
ErrUserIDNotFound = ErrInfo{UserIDNotFoundError, "UserIDNotFoundError", ""}
|
ErrUserIDNotFound = ErrInfo{UserIDNotFoundError, "UserIDNotFoundError", ""}
|
||||||
ErrGroupIDNotFound = ErrInfo{GroupIDNotFoundError, "GroupIDNotFoundError", ""}
|
ErrGroupIDNotFound = ErrInfo{GroupIDNotFoundError, "GroupIDNotFoundError", ""}
|
||||||
@ -62,7 +64,7 @@ var (
|
|||||||
|
|
||||||
func toDetail(err error, info ErrInfo) ErrInfo {
|
func toDetail(err error, info ErrInfo) ErrInfo {
|
||||||
errInfo := info
|
errInfo := info
|
||||||
errInfo.WrapErrMsg = err.Error()
|
errInfo.DetailErrMsg = err.Error()
|
||||||
return errInfo
|
return errInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ package http
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
cbApi "Open_IM/pkg/call_back_struct"
|
cbApi "Open_IM/pkg/call_back_struct"
|
||||||
|
"Open_IM/pkg/common/constant"
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -57,22 +58,22 @@ func Post(url string, data interface{}, timeOutSecond int) (content []byte, err
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func CallBackPostReturn(url, callbackCommand string, input interface{}, output cbApi.CallbackResp, timeOut int, failedContinue *bool) (bool, error) {
|
func CallBackPostReturn(url, callbackCommand string, input interface{}, output cbApi.CallbackResp, timeOut int, failedContinue *bool) error {
|
||||||
v := urlLib.Values{}
|
v := urlLib.Values{}
|
||||||
v.Set("callbackCommand", callbackCommand)
|
v.Set("callbackCommand", callbackCommand)
|
||||||
url = url + "?" + v.Encode()
|
url = url + "?" + v.Encode()
|
||||||
b, err := Post(url, input, timeOut)
|
b, err := Post(url, input, timeOut)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if failedContinue != nil {
|
if failedContinue != nil && *failedContinue {
|
||||||
return *failedContinue, err
|
return constant.ErrCallbackContinue
|
||||||
}
|
}
|
||||||
return true, err
|
return constant.ErrNetwork
|
||||||
}
|
}
|
||||||
if err = json.Unmarshal(b, output); err != nil {
|
if err = json.Unmarshal(b, output); err != nil {
|
||||||
if failedContinue != nil {
|
if failedContinue != nil && *failedContinue {
|
||||||
return *failedContinue, err
|
return constant.ErrCallbackContinue
|
||||||
}
|
}
|
||||||
return true, err
|
return constant.ErrData
|
||||||
}
|
}
|
||||||
return output.Parse()
|
return output.Parse()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user