You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
openim-sdk-cpp/go/chao-sdk-core/testv2/init.go

336 lines
11 KiB

// Copyright © 2023 OpenIM SDK. 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 testv2
import (
"bytes"
"context"
"encoding/json"
"fmt"
"github.com/openimsdk/openim-sdk-core/v3/open_im_sdk"
"github.com/openimsdk/openim-sdk-core/v3/pkg/ccontext"
"github.com/openimsdk/protocol/constant"
"io"
"math/rand"
"net/http"
"strconv"
"time"
"github.com/openimsdk/tools/log"
)
var (
ctx context.Context
)
func init() {
fmt.Println("------------------------>>>>>>>>>>>>>>>>>>> test v2 init funcation <<<<<<<<<<<<<<<<<<<------------------------")
rand.Seed(time.Now().UnixNano())
listner := &OnConnListener{}
config := getConf(APIADDR, WSADDR)
config.DataDir = "./"
configData, err := json.Marshal(config)
if err != nil {
panic(err)
}
isInit := open_im_sdk.InitSDK(listner, "test", string(configData))
if !isInit {
panic("init sdk failed")
}
ctx = open_im_sdk.UserForSDK.Context()
ctx = ccontext.WithOperationID(ctx, "initOperationID_"+strconv.Itoa(int(time.Now().UnixMilli())))
token, err := GetUserToken(ctx, UserID)
if err != nil {
panic(err)
}
if err := open_im_sdk.UserForSDK.Login(ctx, UserID, token); err != nil {
panic(err)
}
open_im_sdk.UserForSDK.SetConversationListener(&onConversationListener{ctx: ctx})
open_im_sdk.UserForSDK.SetGroupListener(&onGroupListener{ctx: ctx})
open_im_sdk.UserForSDK.SetAdvancedMsgListener(&onAdvancedMsgListener{ctx: ctx})
open_im_sdk.UserForSDK.SetFriendListener(&onFriendListener{ctx: ctx})
open_im_sdk.UserForSDK.SetUserListener(&onUserListener{ctx: ctx})
time.Sleep(time.Second * 2)
}
func GetUserToken(ctx context.Context, userID string) (string, error) {
jsonReqData, err := json.Marshal(map[string]any{
"userID": userID,
"platformID": constant.LinuxPlatformID,
"secret": "openIM123",
})
if err != nil {
return "", err
}
path := APIADDR + "/auth/user_token"
req, err := http.NewRequestWithContext(ctx, http.MethodPost, path, bytes.NewReader(jsonReqData))
if err != nil {
return "", err
}
req.Header.Set("operationID", ctx.Value("operationID").(string))
client := http.Client{Timeout: time.Second * 3}
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", err
}
type Result struct {
ErrCode int `json:"errCode"`
ErrMsg string `json:"errMsg"`
ErrDlt string `json:"errDlt"`
Data struct {
Token string `json:"token"`
ExpireTimeSeconds int `json:"expireTimeSeconds"`
} `json:"data"`
}
var result Result
if err := json.Unmarshal(body, &result); err != nil {
return "", err
}
if result.ErrCode != 0 {
return "", fmt.Errorf("errCode:%d, errMsg:%s, errDlt:%s", result.ErrCode, result.ErrMsg, result.ErrDlt)
}
return result.Data.Token, nil
}
type onListenerForService struct {
ctx context.Context
}
func (o *onListenerForService) OnGroupApplicationAdded(groupApplication string) {
log.ZInfo(o.ctx, "OnGroupApplicationAdded", "groupApplication", groupApplication)
}
func (o *onListenerForService) OnGroupApplicationAccepted(groupApplication string) {
log.ZInfo(o.ctx, "OnGroupApplicationAccepted", "groupApplication", groupApplication)
}
func (o *onListenerForService) OnFriendApplicationAdded(friendApplication string) {
log.ZInfo(o.ctx, "OnFriendApplicationAdded", "friendApplication", friendApplication)
}
func (o *onListenerForService) OnFriendApplicationAccepted(groupApplication string) {
log.ZInfo(o.ctx, "OnFriendApplicationAccepted", "groupApplication", groupApplication)
}
func (o *onListenerForService) OnRecvNewMessage(message string) {
log.ZInfo(o.ctx, "OnRecvNewMessage", "message", message)
}
type onConversationListener struct {
ctx context.Context
}
func (o *onConversationListener) OnSyncServerStart() {
log.ZInfo(o.ctx, "OnSyncServerStart")
}
func (o *onConversationListener) OnSyncServerFinish() {
log.ZInfo(o.ctx, "OnSyncServerFinish")
}
func (o *onConversationListener) OnSyncServerFailed() {
log.ZInfo(o.ctx, "OnSyncServerFailed")
}
func (o *onConversationListener) OnNewConversation(conversationList string) {
log.ZInfo(o.ctx, "OnNewConversation", "conversationList", conversationList)
}
func (o *onConversationListener) OnConversationChanged(conversationList string) {
log.ZInfo(o.ctx, "OnConversationChanged", "conversationList", conversationList)
}
func (o *onConversationListener) OnTotalUnreadMessageCountChanged(totalUnreadCount int32) {
log.ZInfo(o.ctx, "OnTotalUnreadMessageCountChanged", "totalUnreadCount", totalUnreadCount)
}
func (o *onConversationListener) OnConversationUserInputStatusChanged(change string) {
log.ZInfo(o.ctx, "OnConversationUserInputStatusChanged", "change", change)
}
type onGroupListener struct {
ctx context.Context
}
func (o *onGroupListener) OnGroupDismissed(groupInfo string) {
log.ZInfo(o.ctx, "OnGroupDismissed", "groupInfo", groupInfo)
}
func (o *onGroupListener) OnJoinedGroupAdded(groupInfo string) {
log.ZInfo(o.ctx, "OnJoinedGroupAdded", "groupInfo", groupInfo)
}
func (o *onGroupListener) OnJoinedGroupDeleted(groupInfo string) {
log.ZInfo(o.ctx, "OnJoinedGroupDeleted", "groupInfo", groupInfo)
}
func (o *onGroupListener) OnGroupMemberAdded(groupMemberInfo string) {
log.ZInfo(o.ctx, "OnGroupMemberAdded", "groupMemberInfo", groupMemberInfo)
}
func (o *onGroupListener) OnGroupMemberDeleted(groupMemberInfo string) {
log.ZInfo(o.ctx, "OnGroupMemberDeleted", "groupMemberInfo", groupMemberInfo)
}
func (o *onGroupListener) OnGroupApplicationAdded(groupApplication string) {
log.ZInfo(o.ctx, "OnGroupApplicationAdded", "groupApplication", groupApplication)
}
func (o *onGroupListener) OnGroupApplicationDeleted(groupApplication string) {
log.ZInfo(o.ctx, "OnGroupApplicationDeleted", "groupApplication", groupApplication)
}
func (o *onGroupListener) OnGroupInfoChanged(groupInfo string) {
log.ZInfo(o.ctx, "OnGroupInfoChanged", "groupInfo", groupInfo)
}
func (o *onGroupListener) OnGroupMemberInfoChanged(groupMemberInfo string) {
log.ZInfo(o.ctx, "OnGroupMemberInfoChanged", "groupMemberInfo", groupMemberInfo)
}
func (o *onGroupListener) OnGroupApplicationAccepted(groupApplication string) {
log.ZInfo(o.ctx, "OnGroupApplicationAccepted", "groupApplication", groupApplication)
}
func (o *onGroupListener) OnGroupApplicationRejected(groupApplication string) {
log.ZInfo(o.ctx, "OnGroupApplicationRejected", "groupApplication", groupApplication)
}
type onAdvancedMsgListener struct {
ctx context.Context
}
func (o *onAdvancedMsgListener) OnRecvOnlineOnlyMessage(message string) {
log.ZDebug(o.ctx, "OnRecvOnlineOnlyMessage", "message", message)
}
func (o *onAdvancedMsgListener) OnRecvOfflineNewMessage(message string) {
//TODO implement me
panic("implement me")
}
func (o *onAdvancedMsgListener) OnMsgDeleted(message string) {
log.ZInfo(o.ctx, "OnMsgDeleted", "message", message)
}
//funcation (o *onAdvancedMsgListener) OnMsgDeleted(messageList string) {
// log.ZInfo(o.ctx, "OnRecvOfflineNewMessages", "messageList", messageList)
//}
//
//funcation (o *onAdvancedMsgListener) OnMsgDeleted(message string) {
// log.ZInfo(o.ctx, "OnMsgDeleted", "message", message)
//}
func (o *onAdvancedMsgListener) OnRecvOfflineNewMessages(messageList string) {
log.ZInfo(o.ctx, "OnRecvOfflineNewMessages", "messageList", messageList)
}
func (o *onAdvancedMsgListener) OnRecvNewMessage(message string) {
log.ZInfo(o.ctx, "OnRecvNewMessage", "message", message)
}
func (o *onAdvancedMsgListener) OnRecvC2CReadReceipt(msgReceiptList string) {
log.ZInfo(o.ctx, "OnRecvC2CReadReceipt", "msgReceiptList", msgReceiptList)
}
func (o *onAdvancedMsgListener) OnRecvGroupReadReceipt(groupMsgReceiptList string) {
log.ZInfo(o.ctx, "OnRecvGroupReadReceipt", "groupMsgReceiptList", groupMsgReceiptList)
}
func (o *onAdvancedMsgListener) OnRecvMessageRevoked(msgID string) {
log.ZInfo(o.ctx, "OnRecvMessageRevoked", "msgID", msgID)
}
func (o *onAdvancedMsgListener) OnNewRecvMessageRevoked(messageRevoked string) {
log.ZInfo(o.ctx, "OnNewRecvMessageRevoked", "messageRevoked", messageRevoked)
}
func (o *onAdvancedMsgListener) OnRecvMessageExtensionsChanged(msgID string, reactionExtensionList string) {
log.ZInfo(o.ctx, "OnRecvMessageExtensionsChanged", "msgID", msgID, "reactionExtensionList", reactionExtensionList)
}
func (o *onAdvancedMsgListener) OnRecvMessageExtensionsDeleted(msgID string, reactionExtensionKeyList string) {
log.ZInfo(o.ctx, "OnRecvMessageExtensionsDeleted", "msgID", msgID, "reactionExtensionKeyList", reactionExtensionKeyList)
}
func (o *onAdvancedMsgListener) OnRecvMessageExtensionsAdded(msgID string, reactionExtensionList string) {
log.ZInfo(o.ctx, "OnRecvMessageExtensionsAdded", "msgID", msgID, "reactionExtensionList", reactionExtensionList)
}
type onFriendListener struct {
ctx context.Context
}
func (o *onFriendListener) OnFriendApplicationAdded(friendApplication string) {
log.ZDebug(context.Background(), "OnFriendApplicationAdded", "friendApplication", friendApplication)
}
func (o *onFriendListener) OnFriendApplicationDeleted(friendApplication string) {
log.ZDebug(context.Background(), "OnFriendApplicationDeleted", "friendApplication", friendApplication)
}
func (o *onFriendListener) OnFriendApplicationAccepted(friendApplication string) {
log.ZDebug(context.Background(), "OnFriendApplicationAccepted", "friendApplication", friendApplication)
}
func (o *onFriendListener) OnFriendApplicationRejected(friendApplication string) {
log.ZDebug(context.Background(), "OnFriendApplicationRejected", "friendApplication", friendApplication)
}
func (o *onFriendListener) OnFriendAdded(friendInfo string) {
log.ZDebug(context.Background(), "OnFriendAdded", "friendInfo", friendInfo)
}
func (o *onFriendListener) OnFriendDeleted(friendInfo string) {
log.ZDebug(context.Background(), "OnFriendDeleted", "friendInfo", friendInfo)
}
func (o *onFriendListener) OnFriendInfoChanged(friendInfo string) {
log.ZDebug(context.Background(), "OnFriendInfoChanged", "friendInfo", friendInfo)
}
func (o *onFriendListener) OnBlackAdded(blackInfo string) {
log.ZDebug(context.Background(), "OnBlackAdded", "blackInfo", blackInfo)
}
func (o *onFriendListener) OnBlackDeleted(blackInfo string) {
log.ZDebug(context.Background(), "OnBlackDeleted", "blackInfo", blackInfo)
}
type onUserListener struct {
ctx context.Context
}
func (o *onUserListener) OnSelfInfoUpdated(userInfo string) {
log.ZDebug(context.Background(), "OnSelfInfoUpdated", "userInfo", userInfo)
}
func (o *onUserListener) OnUserCommandAdd(userInfo string) {
log.ZDebug(context.Background(), "OnUserCommandAdd", "blackInfo", userInfo)
}
func (o *onUserListener) OnUserCommandDelete(userInfo string) {
log.ZDebug(context.Background(), "OnUserCommandDelete", "blackInfo", userInfo)
}
func (o *onUserListener) OnUserCommandUpdate(userInfo string) {
log.ZDebug(context.Background(), "OnUserCommandUpdate", "blackInfo", userInfo)
}
func (o *onUserListener) OnUserStatusChanged(statusMap string) {
log.ZDebug(context.Background(), "OnUserStatusChanged", "OnUserStatusChanged", statusMap)
}