Search in sources :

Example 6 with Photoset

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;
}
Also used : Photoset(com.flickr4java.flickr.photosets.Photoset)

Example 7 with 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);
    }
}
Also used : FlickrException(com.flickr4java.flickr.FlickrException) Photoset(com.flickr4java.flickr.photosets.Photoset) PhotoModel(org.dataportabilityproject.dataModels.photos.PhotoModel) PhotoAlbum(org.dataportabilityproject.dataModels.photos.PhotoAlbum) IOException(java.io.IOException)

Example 8 with Photoset

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);
    }
}
Also used : FlickrException(com.flickr4java.flickr.FlickrException) ImmutableList(com.google.common.collect.ImmutableList) ArrayList(java.util.ArrayList) PhotosModelWrapper(org.dataportabilityproject.dataModels.photos.PhotosModelWrapper) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) IOException(java.io.IOException) ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) Photoset(com.flickr4java.flickr.photosets.Photoset) Photosets(com.flickr4java.flickr.photosets.Photosets) PhotoAlbum(org.dataportabilityproject.dataModels.photos.PhotoAlbum)

Example 9 with Photoset

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));
}
Also used : ExportInformation(org.dataportabilityproject.dataModels.ExportInformation) ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) Photoset(com.flickr4java.flickr.photosets.Photoset) Photosets(com.flickr4java.flickr.photosets.Photosets) PhotosModelWrapper(org.dataportabilityproject.dataModels.photos.PhotosModelWrapper) Matchers.anyString(org.mockito.Matchers.anyString) PhotoAlbum(org.dataportabilityproject.dataModels.photos.PhotoAlbum) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) Test(org.junit.Test)

Example 10 with Photoset

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);
}
Also used : ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) BufferedInputStream(java.io.BufferedInputStream) Photoset(com.flickr4java.flickr.photosets.Photoset) PhotosModelWrapper(org.dataportabilityproject.dataModels.photos.PhotosModelWrapper) UploadMetaData(com.flickr4java.flickr.uploader.UploadMetaData) Matchers.anyString(org.mockito.Matchers.anyString) Test(org.junit.Test)

Aggregations

Photoset (com.flickr4java.flickr.photosets.Photoset)10 FlickrException (com.flickr4java.flickr.FlickrException)4 Photosets (com.flickr4java.flickr.photosets.Photosets)4 Test (org.junit.Test)4 IOException (java.io.IOException)3 ContinuationInformation (org.dataportabilityproject.dataModels.ContinuationInformation)3 PhotoAlbum (org.dataportabilityproject.dataModels.photos.PhotoAlbum)3 PhotosModelWrapper (org.dataportabilityproject.dataModels.photos.PhotosModelWrapper)3 PhotoAlbum (org.dataportabilityproject.types.transfer.models.photos.PhotoAlbum)3 PhotosContainerResource (org.dataportabilityproject.types.transfer.models.photos.PhotosContainerResource)3 UploadMetaData (com.flickr4java.flickr.uploader.UploadMetaData)2 ImmutableList (com.google.common.collect.ImmutableList)2 BufferedInputStream (java.io.BufferedInputStream)2 ArrayList (java.util.ArrayList)2 IdOnlyResource (org.dataportabilityproject.shared.IdOnlyResource)2 ImportResult (org.dataportabilityproject.spi.transfer.provider.ImportResult)2 ContinuationData (org.dataportabilityproject.spi.transfer.types.ContinuationData)2 IdOnlyContainerResource (org.dataportabilityproject.spi.transfer.types.IdOnlyContainerResource)2 IntPaginationToken (org.dataportabilityproject.spi.transfer.types.IntPaginationToken)2 TempPhotosData (org.dataportabilityproject.spi.transfer.types.TempPhotosData)2