// Copyright 2015 The Project Buendia Authors // // 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 distrib- // uted 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 // specific language governing permissions and limitations under the License. package org.projectbuendia.client.net; import android.app.Application; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.projectbuendia.client.AppSettings; import org.projectbuendia.client.json.DateTimeSerializer; import org.projectbuendia.client.json.LocalDateSerializer; import org.projectbuendia.client.json.Serializers; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; /** A Dagger module that provides bindings for network-related classes. */ @Module(complete = false, library = true) public class NetModule { @Provides @Singleton VolleySingleton provideVolleySingleton(Application app) { return VolleySingleton.getInstance(app); } @Provides @Singleton OpenMrsConnectionDetails provideOpenMrsConnectionDetails( VolleySingleton volley, AppSettings settings) { return new OpenMrsConnectionDetails(volley, settings); } @Provides @Singleton RequestConfigurator provideRequestConfigurator() { return new RequestConfigurator(10000 /*timeout*/, 2 /*retry attempts*/, 1 /*back-off*/); } @Provides @Singleton RequestFactory provideRequestFactory(RequestConfigurator configurator) { return new RequestFactory(configurator); } @Provides @Singleton Gson provideGson() { GsonBuilder builder = new GsonBuilder(); Serializers.registerTo(builder); return builder.create(); } @Provides @Singleton Server provideServer( OpenMrsConnectionDetails connectionDetails, RequestFactory requestFactory, Gson gson) { return new OpenMrsServer(connectionDetails, requestFactory, gson); } }