// Copyright © 2023 OpenIM. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package msggateway import ( "context" "time" "github.com/OpenIMSDK/protocol/constant" "github.com/OpenIMSDK/tools/mcontext" cbapi "github.com/openimsdk/open-im-server/v3/pkg/callbackstruct" "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/http" ) func CallbackUserOnline(ctx context.Context, globalConfig *config.GlobalConfig, userID string, platformID int, isAppBackground bool, connID string) error { if !globalConfig.Callback.CallbackUserOnline.Enable { return nil } req := cbapi.CallbackUserOnlineReq{ UserStatusCallbackReq: cbapi.UserStatusCallbackReq{ UserStatusBaseCallback: cbapi.UserStatusBaseCallback{ CallbackCommand: cbapi.CallbackUserOnlineCommand, OperationID: mcontext.GetOperationID(ctx), PlatformID: platformID, Platform: constant.PlatformIDToName(platformID), }, UserID: userID, }, Seq: time.Now().UnixMilli(), IsAppBackground: isAppBackground, ConnID: connID, } resp := cbapi.CommonCallbackResp{} if err := http.CallBackPostReturn(ctx, globalConfig.Callback.CallbackUrl, &req, &resp, globalConfig.Callback.CallbackUserOnline); err != nil { return err } return nil } func CallbackUserOffline(ctx context.Context, globalConfig *config.GlobalConfig, userID string, platformID int, connID string) error { if !globalConfig.Callback.CallbackUserOffline.Enable { return nil } req := &cbapi.CallbackUserOfflineReq{ UserStatusCallbackReq: cbapi.UserStatusCallbackReq{ UserStatusBaseCallback: cbapi.UserStatusBaseCallback{ CallbackCommand: cbapi.CallbackUserOfflineCommand, OperationID: mcontext.GetOperationID(ctx), PlatformID: platformID, Platform: constant.PlatformIDToName(platformID), }, UserID: userID, }, Seq: time.Now().UnixMilli(), ConnID: connID, } resp := &cbapi.CallbackUserOfflineResp{} if err := http.CallBackPostReturn(ctx, globalConfig.Callback.CallbackUrl, req, resp, globalConfig.Callback.CallbackUserOffline); err != nil { return err } return nil } func CallbackUserKickOff(ctx context.Context, globalConfig *config.GlobalConfig, userID string, platformID int) error { if !globalConfig.Callback.CallbackUserKickOff.Enable { return nil } req := &cbapi.CallbackUserKickOffReq{ UserStatusCallbackReq: cbapi.UserStatusCallbackReq{ UserStatusBaseCallback: cbapi.UserStatusBaseCallback{ CallbackCommand: cbapi.CallbackUserKickOffCommand, OperationID: mcontext.GetOperationID(ctx), PlatformID: platformID, Platform: constant.PlatformIDToName(platformID), }, UserID: userID, }, Seq: time.Now().UnixMilli(), } resp := &cbapi.CommonCallbackResp{} if err := http.CallBackPostReturn(ctx, globalConfig.Callback.CallbackUrl, req, resp, globalConfig.Callback.CallbackUserOffline); err != nil { return err } return nil } // func callbackUserOnline(operationID, userID string, platformID int, token string, isAppBackground bool, connID // string) cbApi.CommonCallbackResp { // callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} // if !config.Config.Callback.CallbackUserOnline.WithEnable { // return callbackResp // } // callbackUserOnlineReq := cbApi.CallbackUserOnlineReq{ // Token: token, // UserStatusCallbackReq: cbApi.UserStatusCallbackReq{ // UserStatusBaseCallback: cbApi.UserStatusBaseCallback{ // CallbackCommand: constant.CallbackUserOnlineCommand, // OperationID: operationID, // PlatformID: int32(platformID), // Platform: constant.PlatformIDToName(platformID), // }, // UserID: userID, // }, // Seq: int(time.Now().UnixNano() / 1e6), // IsAppBackground: isAppBackground, // ConnID: connID, // } // callbackUserOnlineResp := &cbApi.CallbackUserOnlineResp{CommonCallbackResp: &callbackResp} // if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, // callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil // { // callbackResp.ErrCode = http2.StatusInternalServerError // callbackResp.ErrMsg = err.Error() // } // return callbackResp //} //func callbackUserOffline(operationID, userID string, platformID int, connID string) cbApi.CommonCallbackResp { // callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} // if !config.Config.Callback.CallbackUserOffline.WithEnable { // return callbackResp // } // callbackOfflineReq := cbApi.CallbackUserOfflineReq{ // UserStatusCallbackReq: cbApi.UserStatusCallbackReq{ // UserStatusBaseCallback: cbApi.UserStatusBaseCallback{ // CallbackCommand: constant.CallbackUserOfflineCommand, // OperationID: operationID, // PlatformID: int32(platformID), // Platform: constant.PlatformIDToName(platformID), // }, // UserID: userID, // }, // Seq: int(time.Now().UnixNano() / 1e6), // ConnID: connID, // } // callbackUserOfflineResp := &cbApi.CallbackUserOfflineResp{CommonCallbackResp: &callbackResp} // if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, // callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil // { // callbackResp.ErrCode = http2.StatusInternalServerError // callbackResp.ErrMsg = err.Error() // } // return callbackResp //} //func callbackUserKickOff(operationID string, userID string, platformID int) cbApi.CommonCallbackResp { // callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} // if !config.Config.Callback.CallbackUserKickOff.WithEnable { // return callbackResp // } // callbackUserKickOffReq := cbApi.CallbackUserKickOffReq{ // UserStatusCallbackReq: cbApi.UserStatusCallbackReq{ // UserStatusBaseCallback: cbApi.UserStatusBaseCallback{ // CallbackCommand: constant.CallbackUserKickOffCommand, // OperationID: operationID, // PlatformID: int32(platformID), // Platform: constant.PlatformIDToName(platformID), // }, // UserID: userID, // }, // Seq: int(time.Now().UnixNano() / 1e6), // } // callbackUserKickOffResp := &cbApi.CallbackUserKickOffResp{CommonCallbackResp: &callbackResp} // if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, constant.CallbackUserKickOffCommand, // callbackUserKickOffReq, callbackUserKickOffResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != // nil { // callbackResp.ErrCode = http2.StatusInternalServerError // callbackResp.ErrMsg = err.Error() // } // return callbackResp //}