Получение списка всех пользователей через Valence

Я пытаюсь получить список всех пользователей в нашем экземпляре Desire2Learn, используя циклическую структуру через закладки, однако по какой-то причине он постоянно зацикливается и не возвращается. Когда я отлаживаю его, он показывает огромное количество пользователей (намного больше, чем у нас в системе, как показывает инструмент управления пользователями. Часть моего кода здесь:

 public async Task<List<UserData>> GetAllUsers(int pages = 0)
    {
        //List<UserData> users = new List<UserData>();
        HashSet<UserData> users = new HashSet<UserData>();
        int pageCount = 0;
        bool getMorePages = true;

        var response = await Get<PagedResultSet<UserData>>("/d2l/api/lp/1.4/users/");

        var qParams = new Dictionary<string, string>();
        do
        {
            qParams["bookmark"] = response.PagingInfo.Bookmark;
            //users = users.Concat(response.Items).ToList<UserData>();
            users.UnionWith(response.Items);
            response = await Get<PagedResultSet<UserData>>("/d2l/api/lp/1.4/users/", qParams);
            if (pages != 0)
            {
                pageCount++;
                if (pageCount >= pages)
                {
                    getMorePages = false;
                }
            }
        }
        while (response.PagingInfo.HasMoreItems && getMorePages);

        return users.ToList();
    }

Первоначально я использовал контейнер List, который закомментирован, но просто переключился на HashSet, чтобы посмотреть, смогу ли я заметить, добавляются ли дубликаты.

Это довольно просто, но по какой-то причине это не работает. Метод Get<PagedResultSet<UserData>>() просто оборачивает логику HTTP-запроса. Ставим закладку каждый раз и отправляем дальше.

Инструмент управления пользователями показывает, что в системе 39 695 пользователей. Проработав всего пару минут и прервав UnionWith в цикле, я показываю, что в моем наборе 211 800 пользователей.

Что мне не хватает?


person claydiffrient    schedule 25.02.2014    source источник


Ответы (1)


Похоже, вы столкнулись с дефектом в этом API. Следующим действием для вас является одобренное контактное лицо службы поддержки вашего учреждения, которое откроет инцидент через службу поддержки Desire2Learn. Пожалуйста, укажите в отчете об инциденте, что Сара-Бет Бьянки знает об этой проблеме, и я буду работать с нашей службой поддержки, чтобы решить эту проблему должным образом.

person Sarah-Beth Bianchi    schedule 27.02.2014