package com.siim.sendtopulsar.module; import android.content.SharedPreferences; import android.util.Log; import com.siim.sendtopulsar.SendToPulsarApp; import com.siim.sendtopulsar.api.service.PulsarService; import com.siim.sendtopulsar.controller.MagnetController; import com.squareup.okhttp.Cache; import com.squareup.okhttp.OkHttpClient; import java.io.File; import java.io.IOException; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import static android.content.Context.MODE_PRIVATE; @Module( includes = ApiModule.class, library = true, complete = false) public class DataModule { public static final int DISK_CACHE_SIZE = 50 * 1024 * 1024; // 50MB private static final String TAG = DataModule.class.getSimpleName(); static OkHttpClient createOkHttpClient(SendToPulsarApp app) { OkHttpClient client = new OkHttpClient(); // Install an HTTP cache in the application cache directory. try { File cacheDir = new File(app.getCacheDir(), "http"); Cache cache = new Cache(cacheDir, DISK_CACHE_SIZE); client.setCache(cache); } catch (IOException e) { Log.e(TAG, "Unable to install disk cache.", e); } return client; } @Provides @Singleton OkHttpClient provideOkHttpClient(SendToPulsarApp app) { return createOkHttpClient(app); } @Provides @Singleton SharedPreferences provideSharedPreferences(SendToPulsarApp app) { return app.getSharedPreferences("prefs", MODE_PRIVATE); } @Provides @Singleton MagnetController provideMagnetController(SendToPulsarApp app, PulsarService pulsarService) { return new MagnetController(app, pulsarService); } }