From f7f1d48d764dd116ff4f3066ba067778725ca4d9 Mon Sep 17 00:00:00 2001 From: Gordon <46924906+FGadvancer@users.noreply.github.com> Date: Wed, 6 Sep 2023 21:59:52 +0800 Subject: [PATCH] feat: add c func of user friend and group. Signed-off-by: Gordon <46924906+FGadvancer@users.noreply.github.com> --- c_wrapper/export.go | 381 ++++++++++++++++++++++++++++++++++++++++++++ c_wrapper/tools.go | 5 +- 2 files changed, 385 insertions(+), 1 deletion(-) diff --git a/c_wrapper/export.go b/c_wrapper/export.go index c111567..dc19ea4 100644 --- a/c_wrapper/export.go +++ b/c_wrapper/export.go @@ -259,6 +259,387 @@ func send_message(cCallback C.CB_I_S_S_I, operationID, message, recvID, groupID, open_im_sdk.SendMessage(sendMsgCallback, C.GoString(operationID), C.GoString(message), C.GoString(recvID), C.GoString(groupID), C.GoString(offlinePushInfo)) } +// =====================================================user=============================================== +// +//export get_users_info +func get_users_info(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetUsersInfo(baseCallback, C.GoString(operationID), C.GoString(userIDs)) +} + +//export get_users_info_from_srv +func get_users_info_from_srv(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetUsersInfoFromSrv(baseCallback, C.GoString(operationID), C.GoString(userIDs)) +} + +//export set_self_info +func set_self_info(cCallback C.CB_I_S_S, operationID *C.char, userInfo *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetSelfInfo(baseCallback, C.GoString(operationID), C.GoString(userInfo)) +} + +//export get_self_user_info +func get_self_user_info(cCallback C.CB_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetSelfUserInfo(baseCallback, C.GoString(operationID)) +} + +//export update_msg_sender_info +func update_msg_sender_info(cCallback C.CB_I_S_S, operationID *C.char, nickname *C.char, faceURL *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.UpdateMsgSenderInfo(baseCallback, C.GoString(operationID), C.GoString(nickname), C.GoString(faceURL)) +} + +//export subscribe_users_status +func subscribe_users_status(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SubscribeUsersStatus(baseCallback, C.GoString(operationID), C.GoString(userIDs)) +} + +//export unsubscribe_users_status +func unsubscribe_users_status(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.UnsubscribeUsersStatus(baseCallback, C.GoString(operationID), C.GoString(userIDs)) +} + +//export get_subscribe_users_status +func get_subscribe_users_status(cCallback C.CB_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetSubscribeUsersStatus(baseCallback, C.GoString(operationID)) +} + +//export get_user_status +func get_user_status(cCallback C.CB_I_S_S, operationID *C.char, userIDs *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetUserStatus(baseCallback, C.GoString(operationID), C.GoString(userIDs)) +} + +// =====================================================friend=============================================== +// +//export get_specified_friends_info +func get_specified_friends_info(cCallback C.CB_I_S_S, operationID *C.char, userIDList *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetSpecifiedFriendsInfo(baseCallback, C.GoString(operationID), C.GoString(userIDList)) +} + +//export get_friend_list +func get_friend_list(cCallback C.CB_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetFriendList(baseCallback, C.GoString(operationID)) +} + +//export get_friend_list_page +func get_friend_list_page(cCallback C.CB_I_S_S, operationID *C.char, offset C.int, count C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetFriendListPage(baseCallback, C.GoString(operationID), int32(offset), int32(count)) +} + +//export search_friends +func search_friends(cCallback C.CB_I_S_S, operationID *C.char, searchParam *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SearchFriends(baseCallback, C.GoString(operationID), C.GoString(searchParam)) +} + +//export check_friend +func check_friend(cCallback C.CB_I_S_S, operationID *C.char, userIDList *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.CheckFriend(baseCallback, C.GoString(operationID), C.GoString(userIDList)) +} + +//export add_friend +func add_friend(cCallback C.CB_I_S_S, operationID *C.char, userIDReqMsg *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.AddFriend(baseCallback, C.GoString(operationID), C.GoString(userIDReqMsg)) +} + +//export set_friend_remark +func set_friend_remark(cCallback C.CB_I_S_S, operationID *C.char, userIDRemark *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetFriendRemark(baseCallback, C.GoString(operationID), C.GoString(userIDRemark)) +} + +//export delete_friend +func delete_friend(cCallback C.CB_I_S_S, operationID *C.char, friendUserID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.DeleteFriend(baseCallback, C.GoString(operationID), C.GoString(friendUserID)) +} + +//export get_friend_application_list_as_recipient +func get_friend_application_list_as_recipient(cCallback C.CB_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetFriendApplicationListAsRecipient(baseCallback, C.GoString(operationID)) +} + +//export get_friend_application_list_as_applicant +func get_friend_application_list_as_applicant(cCallback C.CB_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetFriendApplicationListAsApplicant(baseCallback, C.GoString(operationID)) +} + +//export accept_friend_application +func accept_friend_application(cCallback C.CB_I_S_S, operationID *C.char, userIDHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.AcceptFriendApplication(baseCallback, C.GoString(operationID), C.GoString(userIDHandleMsg)) +} + +//export refuse_friend_application +func refuse_friend_application(cCallback C.CB_I_S_S, operationID *C.char, userIDHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.RefuseFriendApplication(baseCallback, C.GoString(operationID), C.GoString(userIDHandleMsg)) +} + +//export add_black +func add_black(cCallback C.CB_I_S_S, operationID *C.char, blackUserID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.AddBlack(baseCallback, C.GoString(operationID), C.GoString(blackUserID)) +} + +//export get_black_list +func get_black_list(cCallback C.CB_I_S_S, operationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetBlackList(baseCallback, C.GoString(operationID)) +} + +//export remove_black +func remove_black(cCallback C.CB_I_S_S, operationID *C.char, removeUserID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.RemoveBlack(baseCallback, C.GoString(operationID), C.GoString(removeUserID)) +} + +// =====================================================group=============================================== +// CreateGroup creates a group +// +//export create_group +func create_group(cCallback C.CB_I_S_S, cOperationID, cGroupReqInfo *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.CreateGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupReqInfo)) +} + +// JoinGroup joins a group +// +//export join_group +func join_group(cCallback C.CB_I_S_S, cOperationID, cGroupID, cReqMsg *C.char, cJoinSource C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.JoinGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cReqMsg), int32(cJoinSource)) +} + +// QuitGroup quits a group +// +//export quit_group +func quit_group(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.QuitGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +} + +// DismissGroup dismisses a group +// +//export dismiss_group +func dismiss_group(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.DismissGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +} + +// ChangeGroupMute changes the mute status of a group +// +//export change_group_mute +func change_group_mute(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cIsMute C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.ChangeGroupMute(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), parseBool(int(cIsMute))) +} + +// ChangeGroupMemberMute changes the mute status of a group member +// +//export change_group_member_mute +func change_group_member_mute(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserID *C.char, cMutedSeconds C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.ChangeGroupMemberMute(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserID), int(cMutedSeconds)) +} + +// SetGroupMemberRoleLevel sets the role level of a group member +// +//export set_group_member_role_level +func set_group_member_role_level(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserID *C.char, cRoleLevel C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetGroupMemberRoleLevel(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserID), int(cRoleLevel)) +} + +// SetGroupMemberInfo sets the information of a group member +// +//export set_group_member_info +func set_group_member_info(cCallback C.CB_I_S_S, cOperationID *C.char, cGroupMemberInfo *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetGroupMemberInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupMemberInfo)) +} + +// GetJoinedGroupList retrieves the list of joined groups +// +//export get_joined_group_list +func get_joined_group_list(cCallback C.CB_I_S_S, cOperationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetJoinedGroupList(baseCallback, C.GoString(cOperationID)) +} + +// GetSpecifiedGroupsInfo retrieves the information of specified groups +// +//export get_specified_groups_info +func get_specified_groups_info(cCallback C.CB_I_S_S, cOperationID, cGroupIDList *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetSpecifiedGroupsInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupIDList)) +} + +// SearchGroups searches for groups +// +//export search_groups +func search_groups(cCallback C.CB_I_S_S, cOperationID, cSearchParam *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SearchGroups(baseCallback, C.GoString(cOperationID), C.GoString(cSearchParam)) +} + +// SetGroupInfo sets the information of a group +// +//export set_group_info +func set_group_info(cCallback C.CB_I_S_S, cOperationID, cGroupInfo *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetGroupInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupInfo)) +} + +// SetGroupVerification sets the verification mode of a group +// +//export set_group_verification +func set_group_verification(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cVerification C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetGroupVerification(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cVerification)) +} + +// SetGroupLookMemberInfo sets the member information visibility of a group +// +//export set_group_look_member_info +func set_group_look_member_info(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cRule C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetGroupLookMemberInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cRule)) +} + +// SetGroupApplyMemberFriend sets the friend rule for group applicants +// +//export set_group_apply_member_friend +func set_group_apply_member_friend(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cRule C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetGroupApplyMemberFriend(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cRule)) +} + +// GetGroupMemberList retrieves the list of group members +// +//export get_group_member_list +func get_group_member_list(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cFilter, cOffset, cCount C.int) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetGroupMemberList(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cFilter), int32(cOffset), int32(cCount)) +} + +// GetGroupMemberOwnerAndAdmin retrieves the owner and admin members of a group +// +//export get_group_member_owner_and_admin +func get_group_member_owner_and_admin(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetGroupMemberOwnerAndAdmin(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +} + +// GetGroupMemberListByJoinTimeFilter retrieves the list of group members filtered by join time +// +//export get_group_member_list_by_join_time_filter +func get_group_member_list_by_join_time_filter(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char, cOffset, cCount C.int, cJoinTimeBegin, cJoinTimeEnd C.longlong, cFilterUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetGroupMemberListByJoinTimeFilter(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), int32(cOffset), int32(cCount), int64(cJoinTimeBegin), int64(cJoinTimeEnd), C.GoString(cFilterUserIDList)) +} + +// GetSpecifiedGroupMembersInfo retrieves the information of specified group members +// +//export get_specified_group_members_info +func get_specified_group_members_info(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetSpecifiedGroupMembersInfo(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserIDList)) +} + +// KickGroupMember kicks group members +// +//export kick_group_member +func kick_group_member(cCallback C.CB_I_S_S, cOperationID, cGroupID, cReason, cUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.KickGroupMember(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cReason), C.GoString(cUserIDList)) +} + +// TransferGroupOwner transfers the ownership of a group +// +//export transfer_group_owner +func transfer_group_owner(cCallback C.CB_I_S_S, cOperationID, cGroupID, cNewOwnerUserID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.TransferGroupOwner(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cNewOwnerUserID)) +} + +// InviteUserToGroup invites users to a group +// +//export invite_user_to_group +func invite_user_to_group(cCallback C.CB_I_S_S, cOperationID, cGroupID, cReason, cUserIDList *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.InviteUserToGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cReason), C.GoString(cUserIDList)) +} + +// GetGroupApplicationListAsRecipient retrieves the group application list as a recipient +// +//export get_group_application_list_as_recipient +func get_group_application_list_as_recipient(cCallback C.CB_I_S_S, cOperationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetGroupApplicationListAsRecipient(baseCallback, C.GoString(cOperationID)) +} + +// GetGroupApplicationListAsApplicant retrieves the group application list as an applicant +// +//export get_group_application_list_as_applicant +func get_group_application_list_as_applicant(cCallback C.CB_I_S_S, cOperationID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.GetGroupApplicationListAsApplicant(baseCallback, C.GoString(cOperationID)) +} + +// AcceptGroupApplication accepts a group application +// +//export accept_group_application +func accept_group_application(cCallback C.CB_I_S_S, cOperationID, cGroupID, cFromUserID, cHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.AcceptGroupApplication(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cFromUserID), C.GoString(cHandleMsg)) +} + +// RefuseGroupApplication refuses a group application +// +//export refuse_group_application +func refuse_group_application(cCallback C.CB_I_S_S, cOperationID, cGroupID, cFromUserID, cHandleMsg *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.RefuseGroupApplication(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cFromUserID), C.GoString(cHandleMsg)) +} + +// SetGroupMemberNickname sets the nickname of a group member +// +//export set_group_member_nickname +func set_group_member_nickname(cCallback C.CB_I_S_S, cOperationID, cGroupID, cUserID, cGroupMemberNickname *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SetGroupMemberNickname(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID), C.GoString(cUserID), C.GoString(cGroupMemberNickname)) +} + +// SearchGroupMembers searches for group members +// +//export search_group_members +func search_group_members(cCallback C.CB_I_S_S, cOperationID, cSearchParam *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.SearchGroupMembers(baseCallback, C.GoString(cOperationID), C.GoString(cSearchParam)) +} + +// IsJoinGroup checks if the user has joined a group +// +//export is_join_group +func is_join_group(cCallback C.CB_I_S_S, cOperationID, cGroupID *C.char) { + baseCallback := NewBaseCallback(cCallback) + open_im_sdk.IsJoinGroup(baseCallback, C.GoString(cOperationID), C.GoString(cGroupID)) +} + func main() { } diff --git a/c_wrapper/tools.go b/c_wrapper/tools.go index 7d42bfd..3b52f12 100644 --- a/c_wrapper/tools.go +++ b/c_wrapper/tools.go @@ -11,7 +11,10 @@ import ( "unsafe" ) -func parseBool() bool { +func parseBool(b int) bool { + if b == 1 { + return true + } return false }