package io.c0nnector.github.paradise.modules; import android.net.Uri; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.squareup.okhttp.OkHttpClient; import com.squareup.picasso.OkHttpDownloader; import com.squareup.picasso.Picasso; import javax.inject.Named; import javax.inject.Singleton; import au.com.gridstone.grex.GRexAndroidPersister; import au.com.gridstone.grex.converters.GsonConverter; import dagger.Module; import dagger.Provides; import io.c0nnector.github.paradise.application.Application; import timber.log.Timber; @Module( includes = { ApiModule.class }, complete = false, library = true ) public class DataModule { @Provides @Singleton Gson provideGson() { return new GsonBuilder().create(); } @Provides @Singleton @Named("prettyGson") Gson providePrettyGson(){ return new GsonBuilder().setPrettyPrinting().create(); } @Provides @Singleton Picasso providesPicasso(Application app, OkHttpClient client){ return new Picasso.Builder(app) .downloader(new OkHttpDownloader(client)) .listener(new Picasso.Listener() { @Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) { Timber.e(exception, "Failed to load image: %s", uri); } }) .build(); } /** * Caches objects(Rxjava support) * @param app context * @return */ @Provides @Singleton GRexAndroidPersister providePersister(Application app){ return new GRexAndroidPersister(app, "cache", new GsonConverter()); } }