package com.arcao.trackables.geocaching;
import android.os.Build;
import com.arcao.geocaching.api.GeocachingApi;
import com.arcao.geocaching.api.configuration.impl.DefaultStagingGeocachingApiConfiguration;
import com.arcao.geocaching.api.data.DeviceInfo;
import com.arcao.geocaching.api.impl.LiveGeocachingApi;
import com.arcao.trackables.App;
import com.arcao.trackables.AppConstants;
import com.arcao.trackables.BuildConfig;
import com.arcao.trackables.geocaching.oauth.GeocachingOAuthProvider;
import dagger.Module;
import dagger.Provides;
import org.scribe.builder.ServiceBuilder;
import org.scribe.oauth.OAuthService;
import javax.inject.Singleton;
@Module
public final class GeocachingModule {
@Singleton
@Provides
public GeocachingApi provideGeocachingApi() {
if (BuildConfig.GEOCACHING_API_STAGING) {
return LiveGeocachingApi.Builder.liveGeocachingApi().withConfiguration(new DefaultStagingGeocachingApiConfiguration()).build();
} else {
return LiveGeocachingApi.Builder.liveGeocachingApi().build();
}
}
@Singleton
@Provides
public OAuthService provideOAuthService() {
ServiceBuilder serviceBuilder = new ServiceBuilder()
.apiKey(BuildConfig.GEOCACHING_API_KEY)
.apiSecret(BuildConfig.GEOCACHING_API_SECRET)
.callback(AppConstants.OAUTH_CALLBACK_URL)
.debug();
if (BuildConfig.GEOCACHING_API_STAGING) {
serviceBuilder.provider(GeocachingOAuthProvider.Staging.class);
} else {
serviceBuilder.provider(GeocachingOAuthProvider.class);
}
return serviceBuilder.build();
}
@Singleton
@Provides
public DeviceInfo provideDeviceInfo(App app) {
return new DeviceInfo(
0,
0,
app.getVersion(),
Build.MANUFACTURER,
Build.MODEL,
Build.VERSION.RELEASE,
0,
app.getDeviceId(),
null,
null
);
}
}