use of com.flickr4java.flickr.photosets.Photoset in project data-transfer-project by google.
the class FlickrTestUtils method initializePhotoset.
public static Photoset initializePhotoset(String id, String title, String description) {
Photoset photoset = new Photoset();
photoset.setId(id);
photoset.setTitle(title);
photoset.setDescription(description);
return photoset;
}
use of com.flickr4java.flickr.photosets.Photoset in project data-transfer-project by google.
the class FlickrPhotoService method importItem.
@Override
public void importItem(PhotosModelWrapper modelWrapper) throws IOException {
// TODO(olsona): what should we do with the continuation information?
try {
for (PhotoAlbum album : modelWrapper.getAlbums()) {
// Store the data in the cache because Flickr only allows you
// to create an album with a photo in it so we need to wait for
// the first photo to create the album.
String key = CACHE_ALBUM_METADATA_PREFIX + album.getId();
jobDataCache.store(key, album);
}
for (PhotoModel photo : modelWrapper.getPhotos()) {
String photoId = uploadPhoto(photo);
String oldAlbumId = photo.getAlbumId();
if (!jobDataCache.hasKey(oldAlbumId)) {
PhotoAlbum album = jobDataCache.getData(CACHE_ALBUM_METADATA_PREFIX + oldAlbumId, PhotoAlbum.class);
Photoset photoset = photosetsInterface.create(COPY_PREFIX + album.getName(), album.getDescription(), photoId);
jobDataCache.store(oldAlbumId, photoset.getId());
} else {
String newAlbumId = jobDataCache.getData(oldAlbumId, String.class);
photosetsInterface.addPhoto(newAlbumId, photoId);
}
}
} catch (FlickrException e) {
throw new IOException("Problem communicating with serviceProviders.flickr", e);
}
}
use of com.flickr4java.flickr.photosets.Photoset in project data-transfer-project by google.
the class FlickrPhotoService method getAlbums.
private PhotosModelWrapper getAlbums(Optional<PaginationInformation> paginationInformation) throws IOException {
try {
ImmutableList.Builder<PhotoAlbum> results = ImmutableList.builder();
List<IdOnlyResource> subResources = new ArrayList<>();
int page = getPage(paginationInformation);
Photosets photoSetList = photosetsInterface.getList(auth.getUser().getId(), PHOTO_SETS_PER_PAGE, page, PHOTOSET_EXTRAS);
for (Photoset photoset : photoSetList.getPhotosets()) {
// Saving data to the album allows the target service
// to recreate the album structure.
results.add(new PhotoAlbum(photoset.getId(), photoset.getTitle(), photoset.getDescription()));
// Adding sub-resources tells the framework to re-call
// export to get all the photos.
subResources.add(new IdOnlyResource(photoset.getId()));
}
FlickrPaginationInformation newPage = null;
boolean hasMore = photoSetList.getPage() != photoSetList.getPages() && !photoSetList.getPhotosets().isEmpty();
if (hasMore) {
newPage = new FlickrPaginationInformation(page + 1);
}
return new PhotosModelWrapper(results.build(), null, new ContinuationInformation(subResources, newPage));
} catch (FlickrException e) {
throw new IOException("Couldn't fetch albums", e);
}
}
use of com.flickr4java.flickr.photosets.Photoset 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 com.flickr4java.flickr.photosets.Photoset 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