package com.siim.sendtopulsar.module;
import android.content.SharedPreferences;
import com.siim.sendtopulsar.api.JsonUtils;
import com.siim.sendtopulsar.api.RestErrorHandler;
import com.siim.sendtopulsar.api.service.PulsarService;
import com.siim.sendtopulsar.prefs.PulsarEndpoint;
import com.squareup.okhttp.OkHttpClient;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import retrofit.RestAdapter;
import retrofit.client.Client;
import retrofit.client.OkClient;
import retrofit.converter.JacksonConverter;
@Module(complete = false, library = true)
public class ApiModule {
public static final String CONTENT_TYPE_JSON = "Content-Type: application/json;charset=UTF-8";
public static RestAdapter buildBasicRestAdapter(PulsarEndpoint endpoint, Client client, RestErrorHandler errorHandler) {
String endpointString = endpoint.get();
System.out.println("setting endpoint as " + endpointString);
return new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(client)
.setEndpoint(endpointString)
.setConverter(new JacksonConverter(JsonUtils.objectMapper))
.setErrorHandler(errorHandler)
.build();
}
@Provides
@Singleton
Client provideClient(OkHttpClient client) {
return new OkClient(client);
}
@Provides
@Singleton
RestAdapter provideRestAdapter(PulsarEndpoint endpoint, Client client, RestErrorHandler errorHandler) {
return buildBasicRestAdapter(endpoint, client, errorHandler);
}
@Provides
@Singleton
PulsarEndpoint providePulsarEndpoint(SharedPreferences sharedPreferences) {
return new PulsarEndpoint(sharedPreferences);
}
@Provides
@Singleton
PulsarService providePulsarService(RestAdapter restAdapter) {
return restAdapter.create(PulsarService.class);
}
}