HotIceCream
HotIceCream

Reputation: 2309

Refreshing auth token when call retrofit api with rxandroid

I have working retrofit api, which return observable on some data.

Api use auth token for access to server. When auth token expired I have error message about it (Observer call onError in subscriber).

public Observable<MyObject> getObjectObservable() {
    return mApi.getObject();
}

I can refresh token with observable too:

private Observable<AuthResult> restoreToken() {
    return mApi.restoreToken(new RestoreTokenBody(getRestoreToken()));
}

How implement next steps in getObjectObservable function:

Upvotes: 3

Views: 1118

Answers (1)

ArtKorchagin
ArtKorchagin

Reputation: 4853

Try to use operator onErrorResumeNext Something like this:

public Observable<MyObject> getObjectObservable() {
    return mApi.getObject()
            .onErrorResumeNext(restoreToken().flatMap(authResult ->  mApi.getObject()));
}

Upvotes: 1

Related Questions