package com.alorma.github.injector.module; import com.alorma.github.injector.named.ComputationScheduler; import com.alorma.github.injector.named.IOScheduler; import com.alorma.github.injector.named.MainScheduler; import com.alorma.github.injector.named.Token; import com.alorma.github.injector.scope.PerActivity; import com.alorma.gitskarios.core.client.TokenProvider; import com.alorma.gitskarios.core.client.UrlProvider; import com.alorma.gitskarios.core.client.UrlProviderInterface; import core.ApiClient; import core.Github; import core.GithubEnterprise; import dagger.Module; import dagger.Provides; import rx.Scheduler; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @Module public class ApiModule { @Provides @PerActivity ApiClient providesGithubApi() { UrlProviderInterface instance = UrlProvider.getInstance(); if (instance == null || instance.getUrl() == null) { return new Github(); } else { return new GithubEnterprise(instance.getUrl()); } } @Provides @PerActivity @MainScheduler Scheduler provideMainScheduler() { return AndroidSchedulers.mainThread(); } @Provides @PerActivity @IOScheduler Scheduler provideIOScheduler() { return Schedulers.io(); } @Provides @PerActivity @ComputationScheduler Scheduler provideComputationScheduler() { return Schedulers.computation(); } @Provides @PerActivity @Token String getToken() { return TokenProvider.getInstance().getToken(); } }