package com.mirhoseini.marvel.domain; import com.google.gson.Gson; import com.mirhoseini.marvel.domain.client.MarvelApi; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import retrofit2.CallAdapter; import retrofit2.Converter; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; /** * Created by Mohsen on 20/10/2016. */ @Module public class ApiModule { @Provides @Singleton public MarvelApi provideMarvelApiService(Retrofit retrofit) { return retrofit.create(MarvelApi.class); } @Provides @Singleton public Retrofit provideRetrofit(HttpUrl baseUrl, Converter.Factory converterFactory, CallAdapter.Factory callAdapterFactory, OkHttpClient okHttpClient) { return new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(converterFactory) .addCallAdapterFactory(callAdapterFactory) .client(okHttpClient) .build(); } @Provides @Singleton public Converter.Factory provideGsonConverterFactory(Gson gson) { return GsonConverterFactory.create(gson); } @Singleton @Provides public Gson provideGson() { return new Gson(); } @Provides @Singleton public CallAdapter.Factory provideRxJavaCallAdapterFactory() { return RxJavaCallAdapterFactory.create(); } }