Search in sources :

Example 31 with Function

use of io.reactivex.functions.Function in project Varis-Android by dkhmelenko.

the class RepositoriesPresenter method reloadRepos.

/**
     * Starts loading repositories
     */
public void reloadRepos() {
    String accessToken = AppSettings.getAccessToken();
    if (TextUtils.isEmpty(accessToken)) {
        Disposable subscription = mTravisRestClient.getApiService().getRepos("").subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(reposHandler());
        mSubscriptions.add(subscription);
    } else {
        Disposable subscription = mTravisRestClient.getApiService().getUser().doOnSuccess(this::cacheUserData).flatMap(new Function<User, SingleSource<List<Repo>>>() {

            @Override
            public SingleSource<List<Repo>> apply(@NonNull User user) throws Exception {
                String loginName = mUser.getLogin();
                return mTravisRestClient.getApiService().getUserRepos(loginName);
            }
        }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(reposHandler());
        mSubscriptions.add(subscription);
    }
}
Also used : CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) Function(io.reactivex.functions.Function) User(com.khmelenko.lab.varis.network.response.User) NonNull(io.reactivex.annotations.NonNull) List(java.util.List)

Example 32 with Function

use of io.reactivex.functions.Function in project Varis-Android by dkhmelenko.

the class RepositoriesPresenter method reloadRepos.

/**
 * Starts loading repositories
 */
public void reloadRepos() {
    String accessToken = mAppSettings.getAccessToken();
    if (StringUtils.isEmpty(accessToken)) {
        Disposable subscription = mTravisRestClient.getApiService().getRepos("").subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(reposHandler());
        mSubscriptions.add(subscription);
    } else {
        Disposable subscription = mTravisRestClient.getApiService().getUser().doOnSuccess(this::cacheUserData).flatMap(new Function<User, SingleSource<List<Repo>>>() {

            @Override
            public SingleSource<List<Repo>> apply(@NonNull User user) throws Exception {
                String loginName = mUser.getLogin();
                return mTravisRestClient.getApiService().getUserRepos(loginName);
            }
        }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(reposHandler());
        mSubscriptions.add(subscription);
    }
}
Also used : CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) Function(io.reactivex.functions.Function) User(com.khmelenko.lab.varis.network.response.User) NonNull(io.reactivex.annotations.NonNull) List(java.util.List)

Example 33 with Function

use of io.reactivex.functions.Function in project Varis-Android by dkhmelenko.

the class BuildsDetailsPresenter method cancelBuild.

/**
 * Cancels build process
 */
public void cancelBuild() {
    RequestBody emptyBody = RequestBody.create(MediaType.parse("application/json"), "");
    Disposable subscription = mTravisRestClient.getApiService().cancelBuild(mBuildId, emptyBody).onErrorReturn(throwable -> new Object()).flatMap(new Function<Object, SingleSource<BuildDetails>>() {

        @Override
        public SingleSource<BuildDetails> apply(@NonNull Object o) throws Exception {
            return mTravisRestClient.getApiService().getBuild(mRepoSlug, mBuildId);
        }
    }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe((buildDetails, throwable) -> {
        if (throwable == null) {
            handleBuildDetails(buildDetails);
        } else {
            handleLoadingFailed(throwable);
        }
    });
    mSubscriptions.add(subscription);
}
Also used : CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) Function(io.reactivex.functions.Function) BuildDetails(com.khmelenko.lab.varis.network.response.BuildDetails) NonNull(io.reactivex.annotations.NonNull) RequestBody(okhttp3.RequestBody)

Example 34 with Function

use of io.reactivex.functions.Function in project Varis-Android by dkhmelenko.

the class BuildsDetailsPresenter method restartBuild.

/**
 * Restarts build process
 */
public void restartBuild() {
    RequestBody emptyBody = RequestBody.create(MediaType.parse("application/json"), "");
    Disposable subscription = mTravisRestClient.getApiService().restartBuild(mBuildId, emptyBody).onErrorReturn(throwable -> new Object()).flatMap(new Function<Object, SingleSource<BuildDetails>>() {

        @Override
        public SingleSource<BuildDetails> apply(@NonNull Object o) throws Exception {
            return mTravisRestClient.getApiService().getBuild(mRepoSlug, mBuildId);
        }
    }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe((buildDetails, throwable) -> {
        if (throwable == null) {
            handleBuildDetails(buildDetails);
        } else {
            handleLoadingFailed(throwable);
        }
    });
    mSubscriptions.add(subscription);
}
Also used : CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) Function(io.reactivex.functions.Function) BuildDetails(com.khmelenko.lab.varis.network.response.BuildDetails) NonNull(io.reactivex.annotations.NonNull) RequestBody(okhttp3.RequestBody)

Example 35 with Function

use of io.reactivex.functions.Function in project Varis-Android by dkhmelenko.

the class BuildsDetailsPresenter method startLoadingLog.

/**
 * Starts loading log file
 *
 * @param jobId Job ID
 */
public void startLoadingLog(long jobId) {
    mJobId = jobId;
    String accessToken = mAppSettings.getAccessToken();
    Single<String> responseSingle;
    if (StringUtils.isEmpty(accessToken)) {
        responseSingle = mRawClient.getApiService().getLog(String.valueOf(mJobId));
    } else {
        String auth = String.format("token %1$s", mAppSettings.getAccessToken());
        responseSingle = mRawClient.getApiService().getLog(auth, String.valueOf(mJobId));
    }
    Disposable subscription = responseSingle.subscribeOn(Schedulers.io()).map(s -> mRawClient.getLogUrl(mJobId)).onErrorResumeNext(new Function<Throwable, SingleSource<String>>() {

        @Override
        public SingleSource<String> apply(@NonNull Throwable throwable) throws Exception {
            String redirectUrl = "";
            if (throwable instanceof HttpException) {
                HttpException httpException = (HttpException) throwable;
                Headers headers = httpException.response().headers();
                for (String header : headers.names()) {
                    if (header.equals("Location")) {
                        redirectUrl = headers.get(header);
                        break;
                    }
                }
                return Single.just(redirectUrl);
            } else {
                return Single.error(throwable);
            }
        }
    }).retry(LOAD_LOG_MAX_ATTEMPT).map(mRawClient::singleStringRequest).map(response -> mLogsParser.parseLog(response.blockingGet())).observeOn(AndroidSchedulers.mainThread()).subscribe((log, throwable) -> {
        if (throwable == null) {
            getView().setLog(log);
        } else {
            getView().showLogError();
            getView().showLoadingError(throwable.getMessage());
        }
    });
    mSubscriptions.add(subscription);
}
Also used : CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) Function(io.reactivex.functions.Function) Headers(okhttp3.Headers) NonNull(io.reactivex.annotations.NonNull) HttpException(retrofit2.HttpException)

Aggregations

Function (io.reactivex.functions.Function)65 Test (org.junit.Test)27 TestException (io.reactivex.exceptions.TestException)24 InOrder (org.mockito.InOrder)21 Disposable (io.reactivex.disposables.Disposable)12 Observable (io.reactivex.Observable)10 NonNull (io.reactivex.annotations.NonNull)10 CompositeDisposable (io.reactivex.disposables.CompositeDisposable)10 BuildDetails (com.khmelenko.lab.varis.network.response.BuildDetails)6 List (java.util.List)4 RequestBody (okhttp3.RequestBody)4 BooleanSubscription (io.reactivex.internal.subscriptions.BooleanSubscription)3 Person (io.requery.test.model.Person)3 ArrayList (java.util.ArrayList)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)3 User (com.khmelenko.lab.varis.network.response.User)2 Phone (io.requery.test.model.Phone)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 AtomicReference (java.util.concurrent.atomic.AtomicReference)2 Headers (okhttp3.Headers)2