From e09b3c566b2de1da1d916d3e209c96d43be739e2 Mon Sep 17 00:00:00 2001 From: lisakycho Date: Thu, 7 Jun 2018 09:45:49 -0700 Subject: Get the count of the all system users at endpoint /users/stats (#8847) * Get the count of the all system users at endpoint /users/stats * Added GetTotalUsersStats test in api4 * Changed pluralization and added the test back. --- model/client4.go | 15 +++++++++++++++ model/users_stats.go | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 model/users_stats.go (limited to 'model') diff --git a/model/client4.go b/model/client4.go index cb7bbe509..8096b2364 100644 --- a/model/client4.go +++ b/model/client4.go @@ -392,6 +392,10 @@ func (c *Client4) GetTeamSchemeRoute(teamId string) string { return fmt.Sprintf(c.GetTeamsRoute()+"/%v/scheme", teamId) } +func (c *Client4) GetTotalUsersStatsRoute() string { + return fmt.Sprintf(c.GetUsersRoute() + "/stats") +} + func (c *Client4) DoApiGet(url string, etag string) (*http.Response, *AppError) { return c.DoApiRequest(http.MethodGet, c.ApiUrl+url, "", etag) } @@ -1468,6 +1472,17 @@ func (c *Client4) GetTeamStats(teamId, etag string) (*TeamStats, *Response) { } } +// GetTotalUsersStats returns a total system user stats. +// Must be authenticated. +func (c *Client4) GetTotalUsersStats(etag string) (*UsersStats, *Response) { + if r, err := c.DoApiGet(c.GetTotalUsersStatsRoute(), etag); err != nil { + return nil, BuildErrorResponse(r, err) + } else { + defer closeBody(r) + return UsersStatsFromJson(r.Body), BuildResponse(r) + } +} + // 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. diff --git a/model/users_stats.go b/model/users_stats.go new file mode 100644 index 000000000..49c882e34 --- /dev/null +++ b/model/users_stats.go @@ -0,0 +1,24 @@ +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package model + +import ( + "encoding/json" + "io" +) + +type UsersStats struct { + TotalUsersCount int64 `json:"total_users_count"` +} + +func (o *UsersStats) ToJson() string { + b, _ := json.Marshal(o) + return string(b) +} + +func UsersStatsFromJson(data io.Reader) *UsersStats { + var o *UsersStats + json.NewDecoder(data).Decode(&o) + return o +} -- cgit v1.2.3-1-g7c22