/* * Copyright (C) 2016 Simon Vig Therkildsen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.simonvt.cathode.tmdb; import android.content.Context; import com.uwetrottmann.tmdb2.services.CollectionService; import com.uwetrottmann.tmdb2.services.ConfigurationService; import com.uwetrottmann.tmdb2.services.DiscoverService; import com.uwetrottmann.tmdb2.services.FindService; import com.uwetrottmann.tmdb2.services.GenreService; import com.uwetrottmann.tmdb2.services.MoviesService; import com.uwetrottmann.tmdb2.services.PeopleService; import com.uwetrottmann.tmdb2.services.SearchService; import com.uwetrottmann.tmdb2.services.TvEpisodesService; import com.uwetrottmann.tmdb2.services.TvSeasonsService; import com.uwetrottmann.tmdb2.services.TvService; import dagger.Module; import dagger.Provides; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import javax.inject.Singleton; import okhttp3.Cache; import okhttp3.Interceptor; import okhttp3.OkHttpClient; @Module(library = true, complete = false) public class TmdbModule { @Provides @Singleton @Tmdb OkHttpClient.Builder okBuilder(Context context, @Tmdb List<Interceptor> interceptors) { OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(15, TimeUnit.SECONDS); builder.readTimeout(20, TimeUnit.SECONDS); final File cacheDir = OkHttpUtils.getCacheDir(context); builder.cache(new Cache(cacheDir, OkHttpUtils.getCacheSize(cacheDir))); builder.interceptors().addAll(interceptors); builder.networkInterceptors().add(new ImageLanguageInterceptor()); return builder; } @Provides @Tmdb List<Interceptor> provideInterceptors() { List<Interceptor> interceptors = new ArrayList<>(); // TODO: return interceptors; } @Provides @Singleton TmdbSettings tmdbSettings(@TmdbApiKey String apiKey, @Tmdb OkHttpClient.Builder okBuilder) { return new TmdbSettings(apiKey, okBuilder); } @Provides @Singleton CollectionService collectionService(TmdbSettings tmdb) { return tmdb.collectionService(); } @Provides @Singleton ConfigurationService configurationService(TmdbSettings tmdb) { return tmdb.configurationService(); } @Provides @Singleton DiscoverService discoverService(TmdbSettings tmdb) { return tmdb.discoverService(); } @Provides @Singleton FindService findService(TmdbSettings tmdb) { return tmdb.findService(); } @Provides @Singleton GenreService genreService(TmdbSettings tmdb) { return tmdb.genreService(); } @Provides @Singleton MoviesService moviesService(TmdbSettings tmdb) { return tmdb.moviesService(); } @Provides @Singleton PeopleService peopleService(TmdbSettings tmdb) { return tmdb.personService(); } @Provides @Singleton SearchService searchService(TmdbSettings tmdb) { return tmdb.searchService(); } @Provides @Singleton TvEpisodesService tvEpisodesService(TmdbSettings tmdb) { return tmdb.tvEpisodesService(); } @Provides @Singleton TvSeasonsService tvSeasonsService(TmdbSettings tmdb) { return tmdb.tvSeasonsService(); } @Provides @Singleton TvService tvService(TmdbSettings tmdb) { return tmdb.tvService(); } }