Я успешно реализовал (используя клиентскую библиотеку java) аутентификацию и извлечение календарей. Моя проблема заключается в том, что я хочу получить список событий из нескольких календарей, но время, затрачиваемое на отправку отдельного запроса API для каждого календаря, начинает складываться, что приводит к 20-секундной загрузке страницы, если у меня есть много календарей, Я понимаю, что API не предоставляет способ запросить события из нескольких календарей, но могу ли я использовать класс BatchRequest для группировки моих запросов?
Мне удалось заставить этот пример работать, чтобы вставить несколько календарей в пакетном режиме.
Но я не могу распространять это на список событий. По сути, я хочу сделать это:
for (int i=0; i < calendarIDs.length; i++) {
client.events().list(calendarIDs[i]).queue(batch, callback);
}
batch.execute();
Я только что понял это, используя несколько иной подход. Вместо использования функции очереди для объекта списка, используя функцию batch.queue клиента:
BatchRequest batch = client.batch();
for (int i=0; i< calendarIDs.length; i++) {
List req = client.events().list( calendarIDs[i]);
batch.queue(req.buildHttpRequest(), Calendar.class, GoogleJsonErrorContainer.class, mycallback);
}
batch.execute();
Это, кажется, улучшило производительность.
Я делаю то, что похоже на то, что вы хотите, но я не использую пакет, вот пример моего кода:
CalendarEventFeed resultFeed = service.getFeed(calendarUrl, CalendarEventFeed.class);
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
CalendarEventEntry entry = resultFeed.getEntries().get(i);
}
Итак, единственное, что вам нужно будет изменить, чтобы получить событие из другого календаря, это "calendarUrl", это как вы можете получить свой URL-адрес календаря
calendarUrl = new URL(calendar.getLink(Link.Rel.ALTERNATE, Link.Type.ATOM).getHref());
где "calendar" - это CalendarEntry из google lib.