Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 93fd261ec39f69ec331e411d06765ed6847dac98 Author: Wim <wim@42.be> Date: Sat Apr 20 23:06:06 2019 +0000 Use paging in initUser and UpdateUsers (mattermost) diff --git a/matterclient/helpers.go b/matterclient/helpers.go index b3d4346..c3d3314 100644 --- a/matterclient/helpers.go +++ b/matterclient/helpers.go @@ -13214 +13225 @@ func (m *MMClient) initUser() error {   return resp.Error   }   for _, team := range teams { - mmusers, resp := m.Client.GetUsersInTeam(team.Id, 0, 50000, "") + idx := 0 + max := 200 + usermap := make(map[string]*model.User) + mmusers, resp := m.Client.GetUsersInTeam(team.Id, idx, max, "")   if resp.Error != nil {   return errors.New(resp.Error.DetailedError)   } - usermap := make(map[string]*model.User) - for _, user := range mmusers { - usermap[user.Id] = user + for len(mmusers) > 0 { + for _, user := range mmusers { + usermap[user.Id] = user + } + mmusers, resp = m.Client.GetUsersInTeam(team.Id, idx, max, "") + if resp.Error != nil { + return errors.New(resp.Error.DetailedError) + } + idx++ + time.Sleep(time.Millisecond * 200)   } + m.logger.Infof("found %d users in team %s", len(usermap), team.Name)     t := &Team{Team: team, Users: usermap, Id: team.Id}   diff --git a/matterclient/users.go b/matterclient/users.go index 11f22aa..cf13e0d 100644 --- a/matterclient/users.go +++ b/matterclient/users.go @@ -26 +27 @@ package matterclient    import (   "errors" + "time"     "github.com/mattermost/mattermost-server/model"  ) @@ -9915 +10025 @@ func (m *MMClient) GetUsers() map[string]*model.User {  }    func (m *MMClient) UpdateUsers() error { - mmusers, resp := m.Client.GetUsers(0, 50000, "") + idx := 0 + max := 200 + mmusers, resp := m.Client.GetUsers(idx, max, "")   if resp.Error != nil {   return errors.New(resp.Error.DetailedError)   } - m.Lock() - for _, user := range mmusers { - m.Users[user.Id] = user + for len(mmusers) > 0 { + m.Lock() + for _, user := range mmusers { + m.Users[user.Id] = user + } + m.Unlock() + mmusers, resp = m.Client.GetUsers(idx, max, "") + time.Sleep(time.Millisecond * 300) + if resp.Error != nil { + return errors.New(resp.Error.DetailedError) + } + idx++   } - m.Unlock()   return nil  }