package com.pluscubed.picasaclient;

import com.pluscubed.picasaclient.model.AlbumEntry;
import com.pluscubed.picasaclient.model.AlbumFeed;
import com.pluscubed.picasaclient.model.UserFeed;

import rx.Single;
import rx.functions.Func1;

public class GphotosClient {

    public Single<AlbumFeed> getGphotosAlbumFeed() {
        return PicasaClient.get().getUserFeed()
                .flatMap(new Func1<UserFeed, Single<? extends AlbumFeed>>() {
                    @Override
                    public Single<? extends AlbumFeed> call(UserFeed userFeed) {
                        long id = -1;
                        for (AlbumEntry entry : userFeed.getAlbumEntries()) {
                            if (entry.getGphotoAlbumType().equals(AlbumEntry.TYPE_GOOGLE_PHOTOS)) {
                                id = entry.getGphotoId();
                            }
                        }

                        return PicasaClient.get().getAlbumFeed(id);
                    }
                });
    }
}

@@ -283,20 +283,21 @@
 le%3CAlbum
-Feed
+Entry
 %3E getGph
@@ -305,20 +305,16 @@
 tosAlbum
-Feed
 () %7B%0A   
@@ -379,13 +379,9 @@
    .
-flatM
+m
 ap(n
@@ -403,35 +403,18 @@
 ed, 
-Single%3C? extends AlbumFeed%3E
+AlbumEntry
 %3E() 
@@ -476,35 +476,18 @@
 lic 
-Single%3C? extends AlbumFeed%3E
+AlbumEntry
  cal
@@ -537,20 +537,32 @@
     
-long id = -1
+AlbumEntry  album = null
 ;%0A  
@@ -673,114 +673,619 @@
 if (
-entry.getGphotoAlbumType().equals(AlbumEntry.TYPE_GOOGLE_PHOTOS)) %7B%0A                                id = e
+AlbumEntry.TYPE_GOOGLE_PHOTOS.equals(entry.getGphotoAlbumType())) %7B%0A                                album = entry;%0A                                break;%0A                            %7D%0A                        %7D%0A                        return album;%0A                    %7D%0A                %7D);%0A    %7D%0A%0A    public Single%3CAlbumFeed%3E getGphotosAlbumFeed() %7B%0A        return getGphotosAlbum().flatMap(new Func1%3CAlbumEntry, Single%3CAlbumFeed%3E%3E() %7B%0A            @Override%0A            public Single%3CAlbumFeed%3E call(AlbumEntry albumEntry) %7B%0A                return PicasaClient.get()%0A                        .getAlbumFeed(albumE
 ntry
@@ -1298,16 +1298,17 @@
 hotoId()
+)
 ;%0A      
@@ -1309,32 +1309,34 @@
             
+%7D%0A
         
         %7D%0A  
@@ -1323,37 +1323,208 @@
         
+%7D);%0A
     
+%7D%0A%0A
     
-%7D%0A           
+public Single%3CAlbumFeed%3E getGphotosAlbumFeed(final int startIndex, final int maxResults) %7B%0A        return getGphotosAlbum().flatMap(new Func1%3CAlbumEntry, Single%3CAlbumFeed%3E%3E() %7B%0A
         
@@ -1527,19 +1527,25 @@
         
- %7D%0A
+@Override
 %0A       
@@ -1538,32 +1538,90 @@
 erride%0A         
+   public Single%3CAlbumFeed%3E call(AlbumEntry albumEntry) %7B%0A
                r
@@ -1611,32 +1611,33 @@
 %0A               
+ 
 return PicasaCli
@@ -1649,35 +1649,98 @@
 et()
-.getAlbumFeed(id);%0A        
+%0A                        .getAlbumFeed(albumEntry.getGphotoId(), startIndex, maxResults);%0A
     
@@ -1745,32 +1745,24 @@
           %7D%0A
-        
         %7D);%0A

fix NPE, add support for pagination, and getting AlbumEntry only