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();
}
}