package co.infinum.pokemon.dagger.modules; import com.squareup.okhttp.OkHttpClient; import android.util.Log; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import javax.inject.Named; import javax.inject.Singleton; import co.infinum.pokemon.network.PokemonService; import dagger.Module; import dagger.Provides; import retrofit.Endpoint; import retrofit.RestAdapter; import retrofit.client.OkClient; /** * Created by dino on 12/05/15. */ @Module public class NetworkModule { @Provides @Singleton public RestAdapter.Log provideLogger() { return new RestAdapter.Log() { @Override public void log(String message) { Log.d("REST-ADAPTER", message); } }; } @Provides @Singleton public OkHttpClient provideClient(Integer networkTimeout) { OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setConnectTimeout(networkTimeout, TimeUnit.SECONDS); okHttpClient.setReadTimeout(networkTimeout, TimeUnit.SECONDS); return okHttpClient; } @Provides @Singleton public PokemonService provideService(Endpoint endpoint, @Named("HttpExecutor") Executor httpExecutor, @Named("CallbackExecutor") Executor callbackExecutor, OkHttpClient client, RestAdapter.Log log) { return new RestAdapter.Builder() .setClient(new OkClient(client)) .setEndpoint(endpoint) .setLog(log) .setLogLevel(RestAdapter.LogLevel.FULL) .setExecutors(httpExecutor, callbackExecutor) .build().create(PokemonService.class); } }