/* * Copyright (c) 2015 OpenSilk Productions LLC * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package syncthing.api; import com.google.gson.Gson; import com.squareup.okhttp.OkHttpClient; import java.util.concurrent.TimeUnit; import dagger.Module; import dagger.Provides; import retrofit.GsonConverterFactory; import retrofit.Retrofit; import retrofit.RxJavaCallAdapterFactory; /** * Created by drew on 3/4/15. */ @Module public class SyncthingApiModule { static final int CONNECT_TIMEOUT_MILLIS = 15 * 1000; // 15s static final int READ_TIMEOUT_MILLIS = 20 * 1000; // 20s @Provides @SessionScope public SyncthingApi provideSyncthingApi( Gson gson, OkHttpClient okClient, SyncthingApiConfig config ) { OkHttpClient client = okClient.clone(); client.setConnectTimeout(CONNECT_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); client.setReadTimeout(READ_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); client.setSslSocketFactory(SyncthingSSLSocketFactory.create(config.getCACert())); client.setHostnameVerifier(new NullHostNameVerifier()); client.interceptors().add(new SyncthingApiInterceptor(config)); Retrofit.Builder b = new Retrofit.Builder() .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gson)) .client(client) .baseUrl(config.getBaseUrl()); if (BuildConfig.DEBUG) { b.validateEagerly(); } return b.build().create(SyncthingApi.class); } }