Skip to content

Instantly share code, notes, and snippets.

@paulofaria
Created January 15, 2016 20:00
Show Gist options
  • Save paulofaria/b53f57b076cafc3240ce to your computer and use it in GitHub Desktop.
Save paulofaria/b53f57b076cafc3240ce to your computer and use it in GitHub Desktop.
public Observable<Rates> getRates() {
String accessToken = getAuthenticationTokens().getAccessToken();
return networking.getRates(accessToken)
.flatMap(new Func1<Response<Rates>, Observable<Rates>>() {
@Override
public Observable<Rates> call(Response<Rates> response) {
if (response.isSuccess()) {
Rates rates = response.body();
return Observable.just(rates);
}
switch (response.code()) {
case 401:
return exchangeRefreshToken()
.doOnNext(new Action1<AuthenticationTokens>() {
@Override
public void call(AuthenticationTokens authenticationTokens) {
saveAuthenticationTokens(authenticationTokens);
}
}).flatMap(new Func1<AuthenticationTokens, Observable<Rates>>() {
@Override
public Observable<Rates> call(AuthenticationTokens authenticationTokens) {
return getRates();
}
});
}
return Observable.error(ErrorParser.parseBody(response.errorBody()));
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment