use of org.dataportabilityproject.dataModels.photos.PhotosModelWrapper in project data-transfer-project by google.
the class FlickrPhotoService method getPhotos.
private PhotosModelWrapper getPhotos(String photosetId, Optional<PaginationInformation> paginationInformation) throws IOException {
try {
int page = getPage(paginationInformation);
PhotoList<Photo> photoSetList;
if (null == photosetId) {
RequestContext.getRequestContext().setExtras(EXTRAS);
photoSetList = photosInterface.getNotInSet(PHOTO_PER_PAGE, page);
RequestContext.getRequestContext().setExtras(ImmutableList.of());
} else {
photoSetList = photosetsInterface.getPhotos(photosetId, ImmutableSet.copyOf(EXTRAS), 0, PHOTO_PER_PAGE, page);
}
boolean hasMore = photoSetList.getPage() != photoSetList.getPages() && !photoSetList.isEmpty();
Collection<PhotoModel> photos = photoSetList.stream().map(p -> toCommonPhoto(p, photosetId)).collect(Collectors.toList());
FlickrPaginationInformation newPage = null;
if (hasMore) {
newPage = new FlickrPaginationInformation(page + 1);
}
return new PhotosModelWrapper(null, photos, new ContinuationInformation(null, newPage));
} catch (FlickrException e) {
throw new IOException("Couldn't fetch photos in album: " + photosetId, e);
}
}
use of org.dataportabilityproject.dataModels.photos.PhotosModelWrapper in project data-transfer-project by google.
the class SmugMugPhotoService method getImages.
private PhotosModelWrapper getImages(IdOnlyResource resource, Optional<PaginationInformation> paginationInformation) throws IOException {
List<PhotoModel> photos = new ArrayList<>();
String url;
if (paginationInformation.isPresent()) {
url = ((StringPaginationToken) paginationInformation.get()).getId();
} else {
String id = resource.getId();
url = "/api/v2/album/" + id + "!images";
}
StringPaginationToken pageToken = null;
SmugMugResponse<SmugMugAlbumInfoResponse> albumInfoResponse = makeAlbumInfoRequest(url);
if (albumInfoResponse.getResponse().getImages() != null) {
for (SmugMugAlbumImage image : albumInfoResponse.getResponse().getImages()) {
String title = image.getTitle();
if (Strings.isNullOrEmpty(title)) {
title = image.getFileName();
}
try {
photos.add(new PhotoModel(title, this.authConsumer.sign(image.getArchivedUri()), image.getCaption(), image.getFormat(), resource.getId()));
} catch (OAuthException e) {
throw new IOException("Couldn't sign: " + image.getArchivedUri(), e);
}
}
if (albumInfoResponse.getResponse().getPageInfo().getNextPage() != null) {
pageToken = new StringPaginationToken(albumInfoResponse.getResponse().getPageInfo().getNextPage());
}
}
return new PhotosModelWrapper(null, photos, new ContinuationInformation(null, pageToken));
}
use of org.dataportabilityproject.dataModels.photos.PhotosModelWrapper in project data-transfer-project by google.
the class FlickrPhotoServiceTest method exportPhotosFromPhotoset.
@Test
public void exportPhotosFromPhotoset() throws FlickrException, IOException {
// Situation: getting photos from a set with id photosetsId and page 1
int page = 1;
String photosetsId = "photosetsId";
ExportInformation exportInformation = new ExportInformation(Optional.of(new IdOnlyResource(photosetsId)), Optional.empty());
// Make a bunch of photos, add them to PhotoList, and add pagination information
int numPhotos = 4;
PhotoList<Photo> listOfPhotos = new PhotoList<>();
for (int i = 0; i < numPhotos; i++) {
Photo photo = initializePhoto("title" + i, "url" + i, "description" + i);
listOfPhotos.add(photo);
}
listOfPhotos.setPage(page);
listOfPhotos.setPages(page + 1);
when(photosetsInterface.getPhotos(anyString(), anySet(), anyInt(), anyInt(), anyInt())).thenReturn(listOfPhotos);
// Run test
PhotosModelWrapper result = photoService.export(exportInformation);
assertThat(result.getPhotos().size()).isEqualTo(numPhotos);
assertThat(result.getAlbums()).isEmpty();
assertThat(result.getContinuationInformation().getSubResources()).isEmpty();
assertThat(result.getContinuationInformation().getPaginationInformation()).isEqualTo(new FlickrPaginationInformation(page + 1));
}
use of org.dataportabilityproject.dataModels.photos.PhotosModelWrapper in project data-transfer-project by google.
the class FlickrPhotoServiceTest method exportAlbumInitial.
@Test
public void exportAlbumInitial() throws IOException, FlickrException {
// Set up initial export information, such as what FlickrPhotoService would see when a transfer
// is initiated
ExportInformation emptyExportInfo = new ExportInformation(Optional.empty(), Optional.empty());
// Set up auth
when(user.getId()).thenReturn("userId");
// Set up photoset
String photosetId = "photosetId";
String photosetTitle = "title";
String photosetDescription = "description";
Photoset photoset = initializePhotoset(photosetId, photosetTitle, photosetDescription);
// Set up photosets list (aka album view)
int page = 1;
Photosets photosetList = new Photosets();
photosetList.setPage(page);
photosetList.setPages(page + 1);
photosetList.setPhotosets(Collections.singletonList(photoset));
when(photosetsInterface.getList(anyString(), anyInt(), anyInt(), anyString())).thenReturn(photosetList);
// Run test
PhotosModelWrapper result = photoService.export(emptyExportInfo);
// Make sure album/photo information is correct
assertThat(result.getPhotos()).isEmpty();
Collection<PhotoAlbum> albums = result.getAlbums();
assertThat(albums.size()).isEqualTo(1);
assertThat(albums).containsExactly(new PhotoAlbum(photosetId, photosetTitle, photosetDescription));
// Make sure continuation information is correct
ContinuationInformation continuationInformation = result.getContinuationInformation();
assertThat((FlickrPaginationInformation) continuationInformation.getPaginationInformation()).isEqualTo(new FlickrPaginationInformation(page + 1));
Collection<? extends Resource> subResources = continuationInformation.getSubResources();
assertThat(subResources.size()).isEqualTo(1);
assertThat(subResources).containsExactly(new IdOnlyResource(photosetId));
}
use of org.dataportabilityproject.dataModels.photos.PhotosModelWrapper in project data-transfer-project by google.
the class FlickrPhotoServiceTest method importStoresAlbumsInJobCache.
@Test
public void importStoresAlbumsInJobCache() throws IOException, FlickrException {
// Set up input: a single photo album with a single photo
PhotosModelWrapper wrapper = new PhotosModelWrapper(Collections.singletonList(PHOTO_ALBUM), Collections.singletonList(PHOTO_MODEL), new ContinuationInformation(null, null));
// Set up mocks
when(imageStreamProvider.get(FETCHABLE_URL)).thenReturn(bufferedInputStream);
when(uploader.upload(any(BufferedInputStream.class), any(UploadMetaData.class))).thenReturn(FLICKR_PHOTO_ID);
String flickrAlbumTitle = FlickrPhotoService.COPY_PREFIX + ALBUM_NAME;
Photoset photoSet = initializePhotoset(FLICKR_ALBUM_ID, flickrAlbumTitle, ALBUM_DESCRIPTION);
when(photosetsInterface.create(flickrAlbumTitle, ALBUM_DESCRIPTION, FLICKR_PHOTO_ID)).thenReturn(photoSet);
// Run test
photoService.importItem(wrapper);
// Verify the image stream provider got the correct url
verify(imageStreamProvider).get(FETCHABLE_URL);
// Verify the correct photo information was uploaded
ArgumentCaptor<UploadMetaData> uploadMetaDataArgumentCaptor = ArgumentCaptor.forClass(UploadMetaData.class);
verify(uploader).upload(eq(bufferedInputStream), uploadMetaDataArgumentCaptor.capture());
UploadMetaData actualUploadMetaData = uploadMetaDataArgumentCaptor.getValue();
assertThat(actualUploadMetaData.getTitle()).isEqualTo(FlickrPhotoService.COPY_PREFIX + PHOTO_TITLE);
assertThat(actualUploadMetaData.getDescription()).isEqualTo(PHOTO_DESCRIPTION);
// Verify the photosets interface got the command to create the correct album
verify(photosetsInterface).create(flickrAlbumTitle, ALBUM_DESCRIPTION, FLICKR_PHOTO_ID);
// Check jobDataCache contents
String expectedAlbumKey = FlickrPhotoService.CACHE_ALBUM_METADATA_PREFIX + ALBUM_ID;
assertThat(jobDataCache.hasKey(expectedAlbumKey)).isTrue();
assertThat(jobDataCache.getData(expectedAlbumKey, PhotoAlbum.class)).isEqualTo(PHOTO_ALBUM);
assertThat(jobDataCache.getData(ALBUM_ID, String.class)).isEqualTo(FLICKR_ALBUM_ID);
}
Aggregations