package com.alorma.github.presenter.repo.tags; import com.alorma.github.sdk.bean.info.RepoInfo; import core.datasource.CloudDataSource; import core.datasource.RestWrapper; import core.datasource.SdkItem; import core.repositories.releases.tags.RepositoryTagsService; import java.io.IOException; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Response; import rx.Observable; public class TagsCountDatasource extends CloudDataSource<RepoInfo, Integer> { public TagsCountDatasource(RestWrapper restWrapper) { super(restWrapper); } @Override protected Observable<SdkItem<Integer>> execute(SdkItem<RepoInfo> request, RestWrapper service) { return Observable.defer(() -> { RepositoryTagsService tagsService = service.get(); Call<Void> call = tagsService.tagsCount(request.getK().owner, request.getK().name); try { Response<Void> response = call.execute(); if (service.isPaginated(response)) { return Observable.just(service.getLastPage(response)); } return Observable.just(0); } catch (IOException e) { return Observable.error(e); } }).map(SdkItem::new); } }