use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.
the class GoogleCalendarService method exportCalendars.
private CalendarModelWrapper exportCalendars(Optional<PaginationInformation> pageInfo) throws IOException {
Calendar.CalendarList.List listRequest = calendarClient.calendarList().list();
if (pageInfo.isPresent()) {
listRequest.setPageToken(((StringPaginationToken) pageInfo.get()).getId());
}
CalendarList listResult = listRequest.execute();
List<CalendarModel> calendarModels = new ArrayList<>(listResult.getItems().size());
List<Resource> resources = new ArrayList<>(listResult.getItems().size());
for (CalendarListEntry calendarData : listResult.getItems()) {
CalendarModel model = GoogleCalendarToModelConverter.convertToCalendarModel(calendarData);
resources.add(new IdOnlyResource(calendarData.getId()));
calendarModels.add(model);
}
PaginationInformation newPageInfo = null;
if (listResult.getNextPageToken() != null) {
newPageInfo = new StringPaginationToken(listResult.getNextPageToken());
}
return new CalendarModelWrapper(calendarModels, null, new ContinuationInformation(resources, newPageInfo));
}
use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.
the class GoogleCalendarServiceTest method testExportCalendarFirstSet.
@Test
public void testExportCalendarFirstSet() throws IOException {
setUpSingleCalendarResponse();
// Looking at first page, with at least one page after it
ExportInformation emptyExportInformation = new ExportInformation(Optional.empty(), Optional.empty());
calendarListResponse.setNextPageToken(NEXT_TOKEN);
// Run test
CalendarModelWrapper wrapper = calendarService.export(emptyExportInformation);
// Check results
// Verify correct methods were called
verify(calendarClient).calendarList();
verify(calendarCalendarList).list();
verify(calendarListRequest).execute();
// Check pagination token
StringPaginationToken paginationToken = (StringPaginationToken) wrapper.getContinuationInformation().getPaginationInformation();
assertThat(paginationToken.getId()).isEqualTo(NEXT_TOKEN);
// Check calendars
Collection<CalendarModel> calendars = wrapper.getCalendars();
assertThat(calendars.stream().map(CalendarModel::getId).collect(Collectors.toList())).containsExactly(CALENDAR_ID);
// Check events (should be empty, even though there is an event in the calendar)
Collection<CalendarEventModel> events = wrapper.getEvents();
assertThat(events).isEmpty();
// Should be one event in the resource list
Collection<? extends Resource> subResources = wrapper.getContinuationInformation().getSubResources();
assertThat(subResources.stream().map(a -> ((IdOnlyResource) a).getId()).collect(Collectors.toList())).containsExactly(CALENDAR_ID);
}
use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.
the class GoogleCalendarServiceTest method importCalendarAndEvent.
@Test
public void importCalendarAndEvent() throws IOException {
String modelCalendarId = "modelCalendarId";
String googleCalendarId = "googleCalendarId";
// Set up calendar, events, and mocks
CalendarModel calendarModel = new CalendarModel(modelCalendarId, null, null);
com.google.api.services.calendar.model.Calendar calendarToInsert = ModelToGoogleCalendarConverter.convertToGoogleCalendar(calendarModel);
com.google.api.services.calendar.model.Calendar responseCalendar = new com.google.api.services.calendar.model.Calendar().setId(googleCalendarId);
CalendarEventModel eventModel = new CalendarEventModel(modelCalendarId, null, null, null, null, null, null);
Event eventToInsert = ModelToGoogleCalendarConverter.convertToGoogleCalendarEvent(eventModel);
Event responseEvent = new Event();
when(calendarInsertRequest.execute()).thenReturn(responseCalendar);
when(calendarCalendars.insert(calendarToInsert)).thenReturn(calendarInsertRequest);
when(eventInsertRequest.execute()).thenReturn(responseEvent);
when(calendarEvents.insert(googleCalendarId, eventToInsert)).thenReturn(eventInsertRequest);
CalendarModelWrapper wrapper = new CalendarModelWrapper(Collections.singleton(calendarModel), Collections.singleton(eventModel), null);
// Run test
calendarService.importItem(wrapper);
// Check the right methods were called
verify(calendarCalendars).insert(calendarToInsert);
verify(calendarInsertRequest).execute();
verify(calendarEvents).insert(googleCalendarId, eventToInsert);
verify(eventInsertRequest).execute();
// Check jobDataCache contents
assertThat(jobDataCache.getData(modelCalendarId, String.class)).isEqualTo(googleCalendarId);
}
use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.
the class MicrosoftCalendarService method getCalendars.
private CalendarModelWrapper getCalendars(Optional<PaginationInformation> pageInfo) throws IOException {
URL url = new URL("https://outlook.office.com/api/v2.0/me/calendars");
HttpRequest getRequest = requestFactory.buildGetRequest(new GenericUrl(url));
getRequest.setParser(new JsonObjectParser(new JacksonFactory()));
HttpResponse response;
try {
response = getRequest.execute();
} catch (HttpResponseException e) {
logger.debug("Error fetching content");
logger.debug("response status code: {}", e.getStatusCode());
logger.debug("response status message: {}", e.getStatusMessage());
logger.debug("response headers: {}", e.getHeaders());
logger.debug("response content: {}", e.getContent());
e.printStackTrace();
throw e;
}
int statusCode = response.getStatusCode();
if (statusCode != 200) {
throw new IOException("Bad status code: " + statusCode + " error: " + response.getStatusMessage());
}
// Parse response into model
OutlookCalendarList data = response.parseAs(OutlookCalendarList.class);
List<CalendarModel> calendars = new ArrayList<>(data.list.size());
List<Resource> resources = new ArrayList<>(data.list.size());
for (OutlookCalendar calendar : data.list) {
calendars.add(new CalendarModel(calendar.id, calendar.name, null));
resources.add(new IdOnlyResource(calendar.id));
}
return new CalendarModelWrapper(calendars, null, new ContinuationInformation(resources, null));
}
use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.
the class GoogleCalendarService method getCalendarEvents.
private CalendarModelWrapper getCalendarEvents(String id, Optional<PaginationInformation> pageInfo) throws IOException {
Calendar.Events.List listRequest = calendarClient.events().list(id).setMaxAttendees(100);
if (pageInfo.isPresent()) {
listRequest.setPageToken(((StringPaginationToken) pageInfo.get()).getId());
}
Events listResult = listRequest.execute();
List<CalendarEventModel> results = new ArrayList<>(listResult.getItems().size());
for (Event eventData : listResult.getItems()) {
CalendarEventModel model = GoogleCalendarToModelConverter.convertToCalendarEventModel(id, eventData);
results.add(model);
}
PaginationInformation newPageInfo = null;
if (listResult.getNextPageToken() != null) {
newPageInfo = new StringPaginationToken(listResult.getNextPageToken());
}
return new CalendarModelWrapper(null, results, new ContinuationInformation(null, newPageInfo));
}
Aggregations