]> Sergey Matveev's repositories - mmc.git/blob - internal/users.go
internal package
[mmc.git] / internal / users.go
1 // mmc -- Mattermost client
2 // Copyright (C) 2023-2024 Sergey Matveev <stargrave@stargrave.org>
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU Affero General Public License for more details.
13 //
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 package mmc
18
19 import (
20         "os"
21         "time"
22
23         "github.com/davecgh/go-spew/spew"
24         "github.com/mattermost/mattermost-server/v6/model"
25 )
26
27 func GetUsers(c *model.Client4, debugFd *os.File) (map[string]*model.User, error) {
28         users := make(map[string]*model.User)
29         for n := 0; ; n++ {
30                 time.Sleep(SleepTime)
31                 page, resp, err := c.GetUsers(n, PerPage, "")
32                 if err != nil {
33                         if debugFd != nil {
34                                 spew.Fdump(debugFd, resp)
35                         }
36                         return nil, err
37                 }
38                 if debugFd != nil {
39                         spew.Fdump(debugFd, page)
40                 }
41                 for _, u := range page {
42                         users[u.Id] = u
43                 }
44                 if len(page) < PerPage {
45                         break
46                 }
47         }
48         return users, nil
49 }