mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-03 20:40:00 -05:00
* add Client4.GetDirectOrGroupMessageMembersCommonTeams * Improve team filtering in common teams API Filter the common teams to only include teams the requesting user is a member of, ensuring proper access control. * simplify GetDirectOrGroupMessageMembersCommonTeamsAsUser
493 lines
14 KiB
Go
493 lines
14 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package model_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/mattermost/mattermost/server/public/model"
|
|
)
|
|
|
|
func ExampleClient4_CreateChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channel, _, err := client.CreateChannel(context.Background(), &model.Channel{
|
|
Name: "channel_name",
|
|
DisplayName: "Channel Name",
|
|
Type: model.ChannelTypeOpen,
|
|
TeamId: "team_id",
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Created channel with id %s\n", channel.Id)
|
|
}
|
|
|
|
func ExampleClient4_CreateDirectChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
userID1 := "user_id_1"
|
|
userID2 := "user_id_2"
|
|
channel, _, err := client.CreateDirectChannel(context.Background(), userID1, userID2)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Created direct message channel with id %s for users %s and %s\n", channel.Id, userID1, userID2)
|
|
}
|
|
|
|
func ExampleClient4_CreateGroupChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
userIDs := []string{"user_id_1", "user_id_2", "user_id_3"}
|
|
channel, _, err := client.CreateGroupChannel(context.Background(), userIDs)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Created group message channel with id %s for users %s, %s and %s\n", channel.Id, userIDs[0], userIDs[1], userIDs[2])
|
|
}
|
|
|
|
func ExampleClient4_SearchGroupChannels() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channels, _, err := client.SearchGroupChannels(context.Background(), &model.ChannelSearch{
|
|
Term: "member username",
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Printf("Found %d channels\n", len(channels))
|
|
}
|
|
|
|
func ExampleClient4_GetPublicChannelsByIdsForTeam() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
teamId := "team_id"
|
|
channelIds := []string{"channel_id_1", "channel_id_2"}
|
|
|
|
channels, _, err := client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, channelIds)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Printf("Found %d channels\n", len(channels))
|
|
}
|
|
|
|
func ExampleClient4_GetChannelMembersTimezones() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
memberTimezones, _, err := client.GetChannelMembersTimezones(context.Background(), channelId)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d timezones used by members of the channel %s\n", len(memberTimezones), channelId)
|
|
}
|
|
|
|
func ExampleClient4_GetChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
etag := ""
|
|
channel, _, err := client.GetChannel(context.Background(), channelId, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found channel with name %s\n", channel.Name)
|
|
}
|
|
|
|
func ExampleClient4_UpdateChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channel, _, err := client.UpdateChannel(context.Background(), &model.Channel{
|
|
Id: "channel_id",
|
|
TeamId: "team_id",
|
|
Name: "name",
|
|
DisplayName: "Display Name",
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Channel %s updated at %d\n", channel.Id, channel.UpdateAt)
|
|
}
|
|
|
|
func ExampleClient4_DeleteChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
_, err := client.DeleteChannel(context.Background(), channelId)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_PatchChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
patch := &model.ChannelPatch{
|
|
Name: model.NewPointer("new_name"),
|
|
DisplayName: model.NewPointer("New Display Name"),
|
|
Header: model.NewPointer("New header"),
|
|
Purpose: model.NewPointer("New purpose"),
|
|
}
|
|
|
|
_, _, err := client.PatchChannel(context.Background(), channelId, patch)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_UpdateChannelPrivacy() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
|
|
_, _, err := client.UpdateChannelPrivacy(context.Background(), channelId, model.ChannelTypeOpen)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
_, _, err = client.UpdateChannelPrivacy(context.Background(), channelId, model.ChannelTypePrivate)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_GetChannelStats() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
etag := ""
|
|
excludeFilesCount := true
|
|
stats, _, err := client.GetChannelStats(context.Background(), channelId, etag, excludeFilesCount)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d members and %d guests in channel %s\n", stats.MemberCount, stats.GuestCount, channelId)
|
|
}
|
|
|
|
func ExampleClient4_GetPinnedPosts() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
etag := ""
|
|
posts, _, err := client.GetPinnedPosts(context.Background(), channelId, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d pinned posts for channel %s\n", len(posts.Posts), channelId)
|
|
}
|
|
|
|
func ExampleClient4_GetPublicChannelsForTeam() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
teamId := "team_id"
|
|
page := 0
|
|
perPage := 100
|
|
etag := ""
|
|
channels, _, err := client.GetPublicChannelsForTeam(context.Background(), teamId, page, perPage, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d public channels for team %s\n", len(channels), teamId)
|
|
}
|
|
|
|
func ExampleClient4_GetPrivateChannelsForTeam() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
teamId := "team_id"
|
|
page := 0
|
|
perPage := 100
|
|
etag := ""
|
|
channels, _, err := client.GetPrivateChannelsForTeam(context.Background(), teamId, page, perPage, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d private channels for team %s\n", len(channels), teamId)
|
|
}
|
|
|
|
func ExampleClient4_SearchChannels() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
teamId := "team_id"
|
|
searchTerm := "search"
|
|
channels, _, err := client.SearchChannels(context.Background(), teamId, &model.ChannelSearch{
|
|
Term: searchTerm,
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d channels on team %s matching term '%s'\n", len(channels), teamId, searchTerm)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelByName() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelName := "channel_name"
|
|
teamId := "team_id"
|
|
etag := ""
|
|
channel, _, err := client.GetChannelByName(context.Background(), channelName, teamId, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found channel %s with name %s\n", channel.Id, channel.Name)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelByNameForTeamName() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelName := "channel_name"
|
|
teamName := "team_name"
|
|
etag := ""
|
|
channel, _, err := client.GetChannelByNameForTeamName(context.Background(), channelName, teamName, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found channel %s with name %s\n", channel.Id, channel.Name)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelMembers() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
page := 0
|
|
perPage := 60
|
|
etag := ""
|
|
members, _, err := client.GetChannelMembers(context.Background(), channelId, page, perPage, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d channel members for channel %s\n", len(members), channelId)
|
|
}
|
|
|
|
func ExampleClient4_AddChannelMember() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
userId := "user_id"
|
|
cm, _, err := client.AddChannelMember(context.Background(), channelId, userId)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Printf("Added user %s to channel %s with roles %s\n", userId, channelId, cm.Roles)
|
|
|
|
postRootId := "post_root_id"
|
|
cm, _, err = client.AddChannelMemberWithRootId(context.Background(), channelId, userId, postRootId)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Printf("Added user %s to channel %s with roles %s using post %s\n", userId, channelId, cm.Roles, postRootId)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelMembersByIds() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
usersIds := []string{"user_id_1", "user_id_2"}
|
|
members, _, err := client.GetChannelMembersByIds(context.Background(), channelId, usersIds)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d channel members for channel %s\n", len(members), channelId)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelMember() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
userId := "user_id"
|
|
etag := ""
|
|
member, _, err := client.GetChannelMember(context.Background(), channelId, userId, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found channel member for user %s in channel %s having roles %s\n", userId, channelId, member.Roles)
|
|
}
|
|
|
|
func ExampleClient4_RemoveUserFromChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
userId := "user_id"
|
|
_, err := client.RemoveUserFromChannel(context.Background(), channelId, userId)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_UpdateChannelRoles() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
userId := "user_id"
|
|
roles := []string{"channel_admin", "channel_user"}
|
|
_, err := client.UpdateChannelRoles(context.Background(), channelId, userId, strings.Join(roles, " "))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_UpdateChannelNotifyProps() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
userId := "user_id"
|
|
props := map[string]string{
|
|
model.DesktopNotifyProp: model.ChannelNotifyMention,
|
|
model.MarkUnreadNotifyProp: model.ChannelMarkUnreadMention,
|
|
}
|
|
|
|
_, err := client.UpdateChannelNotifyProps(context.Background(), channelId, userId, props)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_ViewChannel() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
prevChannelId := "prev_channel_id"
|
|
userId := "user_id"
|
|
_, _, err := client.ViewChannel(context.Background(), userId, &model.ChannelView{
|
|
ChannelId: channelId,
|
|
PrevChannelId: prevChannelId,
|
|
CollapsedThreadsSupported: true,
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_GetChannelMembersForUser() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
userId := "user_id"
|
|
teamId := "team_id"
|
|
etag := ""
|
|
members, _, err := client.GetChannelMembersForUser(context.Background(), userId, teamId, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d channel members for user %s on team %s\n", len(members), userId, teamId)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelsForTeamForUser() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
userId := "user_id"
|
|
teamId := "team_id"
|
|
includeDeleted := false
|
|
etag := ""
|
|
channels, _, err := client.GetChannelsForTeamForUser(context.Background(), teamId, userId, includeDeleted, etag)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d channels for user %s on team %s\n", len(channels), userId, teamId)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelsForUserWithLastDeleteAt() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
userId := "user_id"
|
|
lastDeleteAt := 0
|
|
channels, _, err := client.GetChannelsForUserWithLastDeleteAt(context.Background(), userId, lastDeleteAt)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d channels for user %s, with last delete at %d\n", len(channels), userId, lastDeleteAt)
|
|
}
|
|
|
|
func ExampleClient4_GetChannelUnread() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelId := "channel_id"
|
|
userId := "user_id"
|
|
channelUnread, _, err := client.GetChannelUnread(context.Background(), channelId, userId)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d unread messages with %d mentions for user %s in channel %s\n", channelUnread.MentionCount, channelUnread.MentionCount, userId, channelId)
|
|
}
|
|
|
|
func ExampleClient4_UpdateChannelScheme() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelID := "channel_id"
|
|
schemeID := "scheme_id"
|
|
_, err := client.UpdateChannelScheme(context.Background(), channelID, schemeID)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func ExampleClient4_GetDirectOrGroupMessageMembersCommonTeams() {
|
|
client := model.NewAPIv4Client(os.Getenv("MM_SERVICESETTINGS_SITEURL"))
|
|
client.SetToken(os.Getenv("MM_AUTHTOKEN"))
|
|
|
|
channelID := "dm_or_gm_channel_id"
|
|
teams, _, err := client.GetDirectOrGroupMessageMembersCommonTeams(context.Background(), channelID)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d common teams for members of channel %s\n", len(teams), channelID)
|
|
for _, team := range teams {
|
|
fmt.Printf(" - %s (%s)\n", team.DisplayName, team.Name)
|
|
}
|
|
}
|