Выполнение последовательных вызовов api с помощью Дооснащения и возвращение наблюдаемых

У меня есть служба переоснащения, которая содержит следующий интерфейс

public interface ApiService { @GET("/users/me") Observable<Account> authenticateUser(@Header("Authorization") String auth); @GET("/membership/{userId}") SubscriptionStatus getSubscriptionStatus(@Path("userId") String userId); } 

Я хотел бы определить метод, чтобы сделать api-вызов, чтобы получить Учетную запись, которая содержит userId, а затем использовать этот идентификатор, чтобы сделать второй вызов API, чтобы получить статус подписки на пользователей. SubscriptionStatus содержит логическое значение, и если оно истинно, мне бы хотелось, чтобы метод возвращал Observable.

Вот как я до сих пор об этом говорил:

 public Observable<Account> doLogin(ApiService service , String credentials) { return service.authenticateuser(base64) // gets Account observable .doOnNext(account -> { currentAccount = account; // setting the Account Variable }) .flatMap(account -> service.getSubscriptionStatus(account.getUserId())) // get Account Subscription status ... //unsure where to go from here I need to check //the subscriptionStatus object and return account //observable if condition is valid } 

Как насчет

 return service.authenticateuser(base64) // gets Account observable .doOnNext(account -> { currentAccount = account; // setting the Account Variable }) .flatMap(account -> service.getSubscriptionStatus(account.getUserId()) .filter(status -> status.isActive()) // don't let status pass if not active .map(status -> account) // we actually need the original account ); 

Если вам нужны как учетная запись, так и статус, последняя карта () должна возвращать некоторый составной тип двух:

  .map(status -> new Pair<>(account, status)) 
Intereting Posts
Макет с разными цветами Видео YouTube не воспроизводится в WebView – Android Правильный способ осуществления Realm Migration Android Доступ к полю локального поля и объекта. Не так ли? Android 6.0 требует перезагрузки после предоставления разрешения пользователя во время выполнения Как отправить уведомление устройства на устройство с помощью FCM без использования XMPP или любого другого скрипта.? Как обращаться с автономной базой данных firebase, когда приложение Android отключено? Получить атрибуты темы программно Как опубликовать твит, используя официальное приложение Twitter, используя намерение, а затем возвращая вам приложение? Шаблон Android для настроек / настроек Как изменить размер буфера logcat в Android? Размер шрифта Android Staticlayout Разница между obj.create () против AlertDialog.builder vs obj.show () vs obj.create (). Show () Отсутствие или неправильное изображение и фон случайным образом на протяжении всего жизненного цикла приложения Активация перехода на Android-активность