Search in sources :

Example 1 with MediaContent

use of com.google.gdata.data.MediaContent in project data-transfer-project by google.

the class GooglePhotosExporter method exportPhotos.

private ExportResult<PhotosContainerResource> exportPhotos(TokensAndUrlAuthData authData, String albumId, Optional<PaginationData> paginationData) {
    try {
        int startItem = 1;
        if (paginationData.isPresent()) {
            String token = ((StringPaginationToken) paginationData.get()).getToken();
            Preconditions.checkArgument(token.startsWith(PHOTO_TOKEN_PREFIX), "Invalid pagination token " + token);
            startItem = Integer.parseInt(token.substring(PHOTO_TOKEN_PREFIX.length()));
        }
        URL photosUrl = new URL(String.format(URL_PHOTO_FEED_FORMAT, albumId, startItem, MAX_RESULTS));
        AlbumFeed photoFeed = getOrCreatePhotosService(authData).getFeed(photosUrl, AlbumFeed.class);
        PaginationData nextPageData = null;
        if (photoFeed.getEntries().size() == MAX_RESULTS) {
            int nextPageStart = startItem + MAX_RESULTS;
            nextPageData = new StringPaginationToken(PHOTO_TOKEN_PREFIX + nextPageStart);
        }
        ContinuationData continuationData = new ContinuationData(nextPageData);
        List<PhotoModel> photos = new ArrayList<>(photoFeed.getEntries().size());
        for (GphotoEntry photo : photoFeed.getEntries()) {
            MediaContent mediaContent = (MediaContent) photo.getContent();
            photos.add(new PhotoModel(photo.getTitle().getPlainText(), mediaContent.getUri(), photo.getDescription().getPlainText(), mediaContent.getMimeType().getMediaType(), albumId));
        }
        PhotosContainerResource containerResource = new PhotosContainerResource(null, photos);
        ResultType resultType = ResultType.CONTINUE;
        if (nextPageData == null) {
            resultType = ResultType.END;
        }
        return new ExportResult<>(resultType, containerResource, continuationData);
    } catch (ServiceException | IOException e) {
        return new ExportResult<>(ResultType.ERROR, e.getMessage());
    }
}
Also used : PaginationData(org.dataportabilityproject.spi.transfer.types.PaginationData) AlbumFeed(com.google.gdata.data.photos.AlbumFeed) PhotoModel(org.dataportabilityproject.types.transfer.models.photos.PhotoModel) ArrayList(java.util.ArrayList) ContinuationData(org.dataportabilityproject.spi.transfer.types.ContinuationData) ResultType(org.dataportabilityproject.spi.transfer.provider.ExportResult.ResultType) IOException(java.io.IOException) URL(java.net.URL) PhotosContainerResource(org.dataportabilityproject.types.transfer.models.photos.PhotosContainerResource) ServiceException(com.google.gdata.util.ServiceException) MediaContent(com.google.gdata.data.MediaContent) GphotoEntry(com.google.gdata.data.photos.GphotoEntry) StringPaginationToken(org.dataportabilityproject.spi.transfer.types.StringPaginationToken) ExportResult(org.dataportabilityproject.spi.transfer.provider.ExportResult)

Example 2 with MediaContent

use of com.google.gdata.data.MediaContent in project data-transfer-project by google.

the class GooglePhotosService method exportPhotos.

private PhotosModelWrapper exportPhotos(String albumId, Optional<PaginationInformation> pageInfo) throws IOException {
    // imgmax=d gets the original immage as per:
    // https://developers.google.com/picasa-web/docs/2.0/reference
    URL photosUrl = new URL("https://picasaweb.google.com/data/feed/api/user/default/albumid/" + albumId + "?imgmax=d");
    AlbumFeed photoFeed;
    try {
        photoFeed = service.getFeed(photosUrl, AlbumFeed.class);
    } catch (ServiceException e) {
        throw new IOException("Problem making request to: " + photosUrl, e);
    }
    List<PhotoModel> photos = new ArrayList<>(photoFeed.getEntries().size());
    for (GphotoEntry photo : photoFeed.getEntries()) {
        MediaContent mediaContent = (MediaContent) photo.getContent();
        photos.add(new PhotoModel(photo.getTitle().getPlainText(), mediaContent.getUri(), photo.getDescription().getPlainText(), mediaContent.getMimeType().getMediaType(), albumId));
    }
    return new PhotosModelWrapper(null, photos, new ContinuationInformation(null, null));
}
Also used : ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) ServiceException(com.google.gdata.util.ServiceException) AlbumFeed(com.google.gdata.data.photos.AlbumFeed) PhotoModel(org.dataportabilityproject.dataModels.photos.PhotoModel) ArrayList(java.util.ArrayList) PhotosModelWrapper(org.dataportabilityproject.dataModels.photos.PhotosModelWrapper) MediaContent(com.google.gdata.data.MediaContent) IOException(java.io.IOException) GphotoEntry(com.google.gdata.data.photos.GphotoEntry) URL(java.net.URL)

Example 3 with MediaContent

use of com.google.gdata.data.MediaContent in project jbehave-core by jbehave.

the class LoadOdtFromGoogle method mediaContent.

MediaContent mediaContent(String url) {
    MediaContent mc = new MediaContent();
    mc.setUri(url);
    return mc;
}
Also used : MediaContent(com.google.gdata.data.MediaContent)

Example 4 with MediaContent

use of com.google.gdata.data.MediaContent in project jbehave-core by jbehave.

the class GoogleOdtLoaderBehaviour method shouldGetResourceFromDocsService.

@Test
public void shouldGetResourceFromDocsService() throws IOException, ServiceException {
    DocsService service = mock(DocsService.class);
    DocumentListFeed feed = mock(DocumentListFeed.class);
    DocumentListEntry entry = mock(DocumentListEntry.class);
    MediaSource mediaSource = mock(MediaSource.class);
    InputStream inputStream = mock(InputStream.class);
    final MediaContent content = mock(MediaContent.class);
    final DocumentQuery query = mock(DocumentQuery.class);
    when(service.getFeed(query, DocumentListFeed.class)).thenReturn(feed);
    when(service.getMedia(content)).thenReturn(mediaSource);
    when(feed.getEntries()).thenReturn(asList(entry));
    when(entry.getContent()).thenReturn(content);
    when(content.getUri()).thenReturn("http://docs.google.com");
    when(mediaSource.getInputStream()).thenReturn(inputStream);
    LoadOdtFromGoogle storyLoader = new LoadOdtFromGoogle("user", "password", "https://docs.google.com/feeds/default/private/full/", service) {

        @Override
        DocumentQuery documentQuery(String title) throws MalformedURLException {
            return query;
        }

        @Override
        protected MediaContent mediaContent(String url) {
            return content;
        }
    };
    InputStream resourceStream = storyLoader.resourceAsStream("a_story");
    MatcherAssert.assertThat(resourceStream, Matchers.equalTo(inputStream));
}
Also used : DocumentQuery(com.google.gdata.client.DocumentQuery) MediaSource(com.google.gdata.data.media.MediaSource) LoadOdtFromGoogle(org.jbehave.core.io.google.LoadOdtFromGoogle) DocumentListEntry(com.google.gdata.data.docs.DocumentListEntry) InputStream(java.io.InputStream) DocumentListFeed(com.google.gdata.data.docs.DocumentListFeed) MediaContent(com.google.gdata.data.MediaContent) DocsService(com.google.gdata.client.docs.DocsService) Test(org.junit.Test)

Aggregations

MediaContent (com.google.gdata.data.MediaContent)4 AlbumFeed (com.google.gdata.data.photos.AlbumFeed)2 GphotoEntry (com.google.gdata.data.photos.GphotoEntry)2 ServiceException (com.google.gdata.util.ServiceException)2 IOException (java.io.IOException)2 URL (java.net.URL)2 ArrayList (java.util.ArrayList)2 DocumentQuery (com.google.gdata.client.DocumentQuery)1 DocsService (com.google.gdata.client.docs.DocsService)1 DocumentListEntry (com.google.gdata.data.docs.DocumentListEntry)1 DocumentListFeed (com.google.gdata.data.docs.DocumentListFeed)1 MediaSource (com.google.gdata.data.media.MediaSource)1 InputStream (java.io.InputStream)1 ContinuationInformation (org.dataportabilityproject.dataModels.ContinuationInformation)1 PhotoModel (org.dataportabilityproject.dataModels.photos.PhotoModel)1 PhotosModelWrapper (org.dataportabilityproject.dataModels.photos.PhotosModelWrapper)1 ExportResult (org.dataportabilityproject.spi.transfer.provider.ExportResult)1 ResultType (org.dataportabilityproject.spi.transfer.provider.ExportResult.ResultType)1 ContinuationData (org.dataportabilityproject.spi.transfer.types.ContinuationData)1 PaginationData (org.dataportabilityproject.spi.transfer.types.PaginationData)1