// 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 sdk_struct import ( "github.com/openimsdk/protocol/sdkws" ) ////////////////////////// message///////////////////////// type MessageReceipt struct { GroupID string `json:"groupID"` UserID string `json:"userID"` MsgIDList []string `json:"msgIDList"` ReadTime int64 `json:"readTime"` MsgFrom int32 `json:"msgFrom"` ContentType int32 `json:"contentType"` SessionType int32 `json:"sessionType"` } type MessageRevoked struct { RevokerID string `json:"revokerID"` RevokerRole int32 `json:"revokerRole"` ClientMsgID string `json:"clientMsgID"` RevokerNickname string `json:"revokerNickname"` RevokeTime int64 `json:"revokeTime"` SourceMessageSendTime int64 `json:"sourceMessageSendTime"` SourceMessageSendID string `json:"sourceMessageSendID"` SourceMessageSenderNickname string `json:"sourceMessageSenderNickname"` SessionType int32 `json:"sessionType"` Seq int64 `json:"seq"` Ex string `json:"ex"` IsAdminRevoke bool `json:"isAdminRevoke"` } type MessageReaction struct { ClientMsgID string `json:"clientMsgID"` ReactionType int `json:"reactionType"` Counter int32 `json:"counter,omitempty"` UserID string `json:"userID"` GroupID string `json:"groupID"` SessionType int32 `json:"sessionType"` Info string `json:"info,omitempty"` } type ImageInfo struct { Width int32 `json:"x"` Height int32 `json:"y"` Type string `json:"type,omitempty"` Size int64 `json:"size"` } type PictureBaseInfo struct { UUID string `json:"uuid,omitempty"` Type string `json:"type,omitempty"` Size int64 `json:"size"` Width int32 `json:"width"` Height int32 `json:"height"` Url string `json:"url,omitempty"` } type SoundBaseInfo struct { UUID string `json:"uuid,omitempty"` SoundPath string `json:"soundPath,omitempty"` SourceURL string `json:"sourceUrl,omitempty"` DataSize int64 `json:"dataSize"` Duration int64 `json:"duration"` SoundType string `json:"soundType,omitempty"` } type VideoBaseInfo struct { VideoPath string `json:"videoPath,omitempty"` VideoUUID string `json:"videoUUID,omitempty"` VideoURL string `json:"videoUrl,omitempty"` VideoType string `json:"videoType,omitempty"` VideoSize int64 `json:"videoSize"` Duration int64 `json:"duration"` SnapshotPath string `json:"snapshotPath,omitempty"` SnapshotUUID string `json:"snapshotUUID,omitempty"` SnapshotSize int64 `json:"snapshotSize"` SnapshotURL string `json:"snapshotUrl,omitempty"` SnapshotWidth int32 `json:"snapshotWidth"` SnapshotHeight int32 `json:"snapshotHeight"` SnapshotType string `json:"snapshotType,omitempty"` } type FileBaseInfo struct { FilePath string `json:"filePath,omitempty"` UUID string `json:"uuid,omitempty"` SourceURL string `json:"sourceUrl,omitempty"` FileName string `json:"fileName,omitempty"` FileSize int64 `json:"fileSize"` FileType string `json:"fileType,omitempty"` } type TextElem struct { Content string `json:"content"` } type CardElem struct { UserID string `json:"userID"` Nickname string `json:"nickname"` FaceURL string `json:"faceURL"` Ex string `json:"ex"` } type PictureElem struct { SourcePath string `json:"sourcePath,omitempty"` SourcePicture *PictureBaseInfo `json:"sourcePicture,omitempty"` BigPicture *PictureBaseInfo `json:"bigPicture,omitempty"` SnapshotPicture *PictureBaseInfo `json:"snapshotPicture,omitempty"` } type SoundElem struct { UUID string `json:"uuid,omitempty"` SoundPath string `json:"soundPath,omitempty"` SourceURL string `json:"sourceUrl,omitempty"` DataSize int64 `json:"dataSize"` Duration int64 `json:"duration"` SoundType string `json:"soundType,omitempty"` } type VideoElem struct { VideoPath string `json:"videoPath,omitempty"` VideoUUID string `json:"videoUUID,omitempty"` VideoURL string `json:"videoUrl,omitempty"` VideoType string `json:"videoType,omitempty"` VideoSize int64 `json:"videoSize"` Duration int64 `json:"duration"` SnapshotPath string `json:"snapshotPath,omitempty"` SnapshotUUID string `json:"snapshotUUID,omitempty"` SnapshotSize int64 `json:"snapshotSize"` SnapshotURL string `json:"snapshotUrl,omitempty"` SnapshotWidth int32 `json:"snapshotWidth"` SnapshotHeight int32 `json:"snapshotHeight"` SnapshotType string `json:"snapshotType,omitempty"` } type FileElem struct { FilePath string `json:"filePath,omitempty"` UUID string `json:"uuid,omitempty"` SourceURL string `json:"sourceUrl,omitempty"` FileName string `json:"fileName,omitempty"` FileSize int64 `json:"fileSize"` FileType string `json:"fileType,omitempty"` } type MergeElem struct { Title string `json:"title,omitempty"` AbstractList []string `json:"abstractList,omitempty"` MultiMessage []*MsgStruct `json:"multiMessage,omitempty"` MessageEntityList []*MessageEntity `json:"messageEntityList,omitempty"` } type AtTextElem struct { Text string `json:"text,omitempty"` AtUserList []string `json:"atUserList,omitempty"` AtUsersInfo []*AtInfo `json:"atUsersInfo,omitempty"` QuoteMessage *MsgStruct `json:"quoteMessage,omitempty"` IsAtSelf bool `json:"isAtSelf"` } type FaceElem struct { Index int `json:"index"` Data string `json:"data,omitempty"` } type LocationElem struct { Description string `json:"description,omitempty"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` } type CustomElem struct { Data string `json:"data,omitempty"` Description string `json:"description,omitempty"` Extension string `json:"extension,omitempty"` } type QuoteElem struct { Text string `json:"text,omitempty"` QuoteMessage *MsgStruct `json:"quoteMessage,omitempty"` MessageEntityList []*MessageEntity `json:"messageEntityList,omitempty"` } type NotificationElem struct { Detail string `json:"detail,omitempty"` } type AdvancedTextElem struct { Text string `json:"text,omitempty"` MessageEntityList []*MessageEntity `json:"messageEntityList,omitempty"` } type TypingElem struct { MsgTips string `json:"msgTips,omitempty"` } type MsgStruct struct { ClientMsgID string `json:"clientMsgID,omitempty"` ServerMsgID string `json:"serverMsgID,omitempty"` CreateTime int64 `json:"createTime"` SendTime int64 `json:"sendTime"` SessionType int32 `json:"sessionType"` SendID string `json:"sendID,omitempty"` RecvID string `json:"recvID,omitempty"` MsgFrom int32 `json:"msgFrom"` ContentType int32 `json:"contentType"` SenderPlatformID int32 `json:"senderPlatformID"` SenderNickname string `json:"senderNickname,omitempty"` SenderFaceURL string `json:"senderFaceUrl,omitempty"` GroupID string `json:"groupID,omitempty"` Content string `json:"content,omitempty"` Seq int64 `json:"seq"` IsRead bool `json:"isRead"` Status int32 `json:"status"` IsReact bool `json:"isReact,omitempty"` IsExternalExtensions bool `json:"isExternalExtensions,omitempty"` OfflinePush *sdkws.OfflinePushInfo `json:"offlinePush,omitempty"` AttachedInfo string `json:"attachedInfo,omitempty"` Ex string `json:"ex,omitempty"` LocalEx string `json:"localEx,omitempty"` TextElem *TextElem `json:"textElem,omitempty"` CardElem *CardElem `json:"cardElem,omitempty"` PictureElem *PictureElem `json:"pictureElem,omitempty"` SoundElem *SoundElem `json:"soundElem,omitempty"` VideoElem *VideoElem `json:"videoElem,omitempty"` FileElem *FileElem `json:"fileElem,omitempty"` MergeElem *MergeElem `json:"mergeElem,omitempty"` AtTextElem *AtTextElem `json:"atTextElem,omitempty"` FaceElem *FaceElem `json:"faceElem,omitempty"` LocationElem *LocationElem `json:"locationElem,omitempty"` CustomElem *CustomElem `json:"customElem,omitempty"` QuoteElem *QuoteElem `json:"quoteElem,omitempty"` NotificationElem *NotificationElem `json:"notificationElem,omitempty"` AdvancedTextElem *AdvancedTextElem `json:"advancedTextElem,omitempty"` TypingElem *TypingElem `json:"typingElem,omitempty"` AttachedInfoElem *AttachedInfoElem `json:"attachedInfoElem,omitempty"` } type AtInfo struct { AtUserID string `json:"atUserID,omitempty"` GroupNickname string `json:"groupNickname,omitempty"` } type AttachedInfoElem struct { GroupHasReadInfo GroupHasReadInfo `json:"groupHasReadInfo,omitempty"` IsPrivateChat bool `json:"isPrivateChat"` BurnDuration int32 `json:"burnDuration"` HasReadTime int64 `json:"hasReadTime"` MessageEntityList []*MessageEntity `json:"messageEntityList,omitempty"` IsEncryption bool `json:"isEncryption"` InEncryptStatus bool `json:"inEncryptStatus"` //MessageReactionElem []*ReactionElem `json:"messageReactionElem,omitempty"` Progress *UploadProgress `json:"uploadProgress,omitempty"` } type UploadProgress struct { Total int64 `json:"total"` Save int64 `json:"save"` Current int64 `json:"current"` UploadID string `json:"uploadID"` } type ReactionElem struct { Counter int32 `json:"counter,omitempty"` Type int `json:"type,omitempty"` UserReactionList []*UserReactionElem `json:"userReactionList,omitempty"` CanRepeat bool `json:"canRepeat,omitempty"` Info string `json:"info,omitempty"` } type UserReactionElem struct { UserID string `json:"userID,omitempty"` Counter int32 `json:"counter,omitempty"` Info string `json:"info,omitempty"` } type MessageEntity struct { Type string `json:"type,omitempty"` Offset int32 `json:"offset"` Length int32 `json:"length"` Url string `json:"url,omitempty"` Ex string `json:"ex,omitempty"` } type GroupHasReadInfo struct { HasReadUserIDList []string `json:"hasReadUserIDList,omitempty"` HasReadCount int32 `json:"hasReadCount"` GroupMemberCount int32 `json:"groupMemberCount"` } type NewMsgList []*MsgStruct // Implement the sort.Interface interface to get the number of elements method func (n NewMsgList) Len() int { return len(n) } // Implement the sort.Interface interface comparison element method func (n NewMsgList) Less(i, j int) bool { return n[i].SendTime < n[j].SendTime } // Implement the sort.Interface interface exchange element method func (n NewMsgList) Swap(i, j int) { n[i], n[j] = n[j], n[i] } type IMConfig struct { SystemType string `json:"systemType"` PlatformID int32 `json:"platformID"` ApiAddr string `json:"apiAddr"` WsAddr string `json:"wsAddr"` DataDir string `json:"dataDir"` LogLevel uint32 `json:"logLevel"` IsLogStandardOutput bool `json:"isLogStandardOutput"` LogFilePath string `json:"logFilePath"` IsExternalExtensions bool `json:"isExternalExtensions"` } type CmdNewMsgComeToConversation struct { Msgs map[string]*sdkws.PullMsgs SyncFlag int } type CmdPushMsgToMsgSync struct { Msgs []*sdkws.PushMessages } type CmdMaxSeqToMsgSync struct { ConversationMaxSeqOnSvr map[string]int64 } type CmdJoinedSuperGroup struct { OperationID string } type OANotificationElem struct { NotificationName string `mapstructure:"notificationName" validate:"required"` NotificationFaceURL string `mapstructure:"notificationFaceURL" validate:"required"` NotificationType int32 `mapstructure:"notificationType" validate:"required"` Text string `mapstructure:"text" validate:"required"` Url string `mapstructure:"url"` MixType int32 `mapstructure:"mixType"` Image struct { SourceUrl string `mapstructure:"sourceURL"` SnapshotUrl string `mapstructure:"snapshotURL"` } `mapstructure:"image"` Video struct { SourceUrl string `mapstructure:"sourceURL"` SnapshotUrl string `mapstructure:"snapshotURL"` Duration int64 `mapstructure:"duration"` } `mapstructure:"video"` File struct { SourceUrl string `mapstructure:"sourceURL"` FileName string `mapstructure:"fileName"` FileSize int64 `mapstructure:"fileSize"` } `mapstructure:"file"` Ex string `mapstructure:"ex"` } type MsgDeleteNotificationElem struct { GroupID string `json:"groupID"` IsAllDelete bool `json:"isAllDelete"` SeqList []string `json:"seqList"` }