diff options
Diffstat (limited to 'model')
-rw-r--r-- | model/channel_member.go | 10 | ||||
-rw-r--r-- | model/client4.go | 39 | ||||
-rw-r--r-- | model/team_member.go | 20 | ||||
-rw-r--r-- | model/team_member_test.go | 14 |
4 files changed, 75 insertions, 8 deletions
diff --git a/model/channel_member.go b/model/channel_member.go index 5de58bc4f..b9a08c769 100644 --- a/model/channel_member.go +++ b/model/channel_member.go @@ -19,11 +19,11 @@ const ( ) type ChannelUnread struct { - TeamId string - TotalMsgCount int64 - MsgCount int64 - MentionCount int64 - NotifyProps StringMap + TeamId string `json:"team_id"` + ChannelId string `json:"channel_id"` + MsgCount int64 `json:"msg_count"` + MentionCount int64 `json:"mention_count"` + NotifyProps StringMap `json:"-"` } type ChannelMember struct { diff --git a/model/client4.go b/model/client4.go index f2dc7625b..63f65ed48 100644 --- a/model/client4.go +++ b/model/client4.go @@ -549,8 +549,8 @@ func (c *Client4) RevokeSession(userId, sessionId string) (bool, *Response) { } } -// getTeamsUnreadForUser will return an array with TeamUnread objects that contain the amount of -// unread messages and mentions the current user has for the teams it belongs to. +// GetTeamsUnreadForUser will return an array with TeamUnread objects that contain the amount +// of unread messages and mentions the current user has for the teams it belongs to. // An optional team ID can be set to exclude that team from the results. Must be authenticated. func (c *Client4) GetTeamsUnreadForUser(userId, teamIdToExclude string) ([]*TeamUnread, *Response) { optional := "" @@ -696,7 +696,7 @@ func (c *Client4) GetTeamMember(teamId, userId, etag string) (*TeamMember, *Resp } } -// UpdateTeamMemberRoles will update the roles on a team for a user +// UpdateTeamMemberRoles will update the roles on a team for a user. func (c *Client4) UpdateTeamMemberRoles(teamId, userId, newRoles string) (bool, *Response) { requestBody := map[string]string{"roles": newRoles} if r, err := c.DoApiPut(c.GetTeamMemberRoute(teamId, userId)+"/roles", MapToJson(requestBody)); err != nil { @@ -707,6 +707,16 @@ func (c *Client4) UpdateTeamMemberRoles(teamId, userId, newRoles string) (bool, } } +// UpdateTeam will update a team. +func (c *Client4) UpdateTeam(team *Team) (*Team, *Response) { + if r, err := c.DoApiPut(c.GetTeamRoute(team.Id), team.ToJson()); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return TeamFromJson(r.Body), BuildResponse(r) + } +} + // GetTeamMembers returns team members based on the provided team id string. func (c *Client4) GetTeamMembers(teamId string, page int, perPage int, etag string) ([]*TeamMember, *Response) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) @@ -718,6 +728,17 @@ func (c *Client4) GetTeamMembers(teamId string, page int, perPage int, etag stri } } +// GetTeamMembersByIds will return an array of team members based on the +// team id and a list of user ids provided. Must be authenticated. +func (c *Client4) GetTeamMembersByIds(teamId string, userIds []string) ([]*TeamMember, *Response) { + if r, err := c.DoApiPost(fmt.Sprintf("/teams/%v/members/ids", teamId), ArrayToJson(userIds)); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return TeamMembersFromJson(r.Body), BuildResponse(r) + } +} + // GetTeamStats returns a team stats based on the team id string. // Must be authenticated. func (c *Client4) GetTeamStats(teamId, etag string) (*TeamStats, *Response) { @@ -729,6 +750,18 @@ func (c *Client4) GetTeamStats(teamId, etag string) (*TeamStats, *Response) { } } +// GetTeamUnread will return a TeamUnread object that contains the amount of +// unread messages and mentions the user has for the specified team. +// Must be authenticated. +func (c *Client4) GetTeamUnread(teamId, userId string) (*TeamUnread, *Response) { + if r, err := c.DoApiGet(c.GetUserRoute(userId)+c.GetTeamRoute(teamId)+"/unread", ""); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return TeamUnreadFromJson(r.Body), BuildResponse(r) + } +} + // Channel Section // CreateChannel creates a channel based on the provided channel struct. diff --git a/model/team_member.go b/model/team_member.go index 36a567a45..efd77e7ec 100644 --- a/model/team_member.go +++ b/model/team_member.go @@ -31,6 +31,15 @@ func (o *TeamMember) ToJson() string { } } +func (o *TeamUnread) ToJson() string { + b, err := json.Marshal(o) + if err != nil { + return "" + } else { + return string(b) + } +} + func TeamMemberFromJson(data io.Reader) *TeamMember { decoder := json.NewDecoder(data) var o TeamMember @@ -42,6 +51,17 @@ func TeamMemberFromJson(data io.Reader) *TeamMember { } } +func TeamUnreadFromJson(data io.Reader) *TeamUnread { + decoder := json.NewDecoder(data) + var o TeamUnread + err := decoder.Decode(&o) + if err == nil { + return &o + } else { + return nil + } +} + func TeamMembersToJson(o []*TeamMember) string { if b, err := json.Marshal(o); err != nil { return "[]" diff --git a/model/team_member_test.go b/model/team_member_test.go index eac07c646..e957ffd4f 100644 --- a/model/team_member_test.go +++ b/model/team_member_test.go @@ -41,3 +41,17 @@ func TestTeamMemberIsValid(t *testing.T) { t.Fatal(err) }*/ } + +func TestUnreadMemberJson(t *testing.T) { + o := TeamUnread{TeamId: NewId(), MsgCount: 5, MentionCount: 3} + json := o.ToJson() + + r := TeamUnreadFromJson(strings.NewReader(json)) + if o.TeamId != r.TeamId { + t.Fatal("Ids do not match") + } + + if o.MsgCount != r.MsgCount { + t.Fatal("MsgCount do not match") + } +} |