package com.alorma.github.sdk.services.content;
import com.alorma.github.sdk.bean.info.RepoInfo;
import com.alorma.github.sdk.services.client.GithubClient;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import rx.Observable;
import rx.functions.Action1;
/**
* Created by Bernat on 17/12/2014.
*/
public class GetArchiveLinkService extends GithubClient {
private RepoInfo repoInfo;
private String fileType;
private Downloader downloader;
public GetArchiveLinkService(RepoInfo repoInfo, String fileType, Downloader downloader) {
super();
this.repoInfo = repoInfo;
this.fileType = fileType;
this.downloader = downloader;
}
@Override
protected Observable getApiObservable(RestAdapter restAdapter) {
Observable<Object> observable = restAdapter.create(ContentService.class)
.archiveLink(repoInfo.owner, repoInfo.name, fileType, repoInfo.branch);
observable.doOnError(new Action1<Throwable>() {
@Override
public void call(Throwable error) {
if (error != null && error instanceof RetrofitError) {
String url = ((RetrofitError) error).getResponse().getUrl();
downloader.download(url);
}
}
});
return observable;
}
}