package com.wealthfront.magellan.sample.advanced;
import com.wealthfront.magellan.Navigator;
import com.wealthfront.magellan.sample.advanced.tide.TideLocationsScreen;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.jackson.JacksonConverterFactory;
import rx.schedulers.Schedulers;
@Module
final class AppModule {
private static final String NOAA_API_BASE_URL = "https://tidesandcurrents.noaa.gov/";
@Provides
@Singleton
Navigator provideNavigator() {
return Navigator.withRoot(new TideLocationsScreen()).build();
}
@Provides
@Singleton
NoaaApi provideNoaaApi(Retrofit retrofit) {
return retrofit.create(NoaaApi.class);
}
@Provides
@Singleton
Retrofit provideRetrofit(OkHttpClient httpClient) {
return new Retrofit.Builder()
.baseUrl(NOAA_API_BASE_URL)
.addCallAdapterFactory(RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io()))
.addConverterFactory(JacksonConverterFactory.create())
.client(httpClient)
.build();
}
@Provides
@Singleton
OkHttpClient provideHttpClient() {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
return new OkHttpClient.Builder().addInterceptor(interceptor).build();
}
}