package net.rdrei.android.scdl2.api;
import android.app.Application;
import com.google.inject.Inject;
import com.google.inject.Injector;
import net.rdrei.android.scdl2.ApplicationPreferences;
import net.rdrei.android.scdl2.api.service.DownloadService;
import net.rdrei.android.scdl2.api.service.PlaylistService;
import net.rdrei.android.scdl2.api.service.ResolveService;
import net.rdrei.android.scdl2.api.service.TrackService;
import roboguice.RoboGuice;
import roboguice.inject.ContextSingleton;
/**
* Singleton managing creation of API services and setting them up with default parameters, in case
* need to access APIs with authentication requirements.
*
* @author pascal
*/
@ContextSingleton
public class ServiceManager {
private final Injector mInjector;
@Inject
private ApplicationPreferences mPreferences;
@Inject
public ServiceManager(final Application application) {
mInjector = RoboGuice.getBaseApplicationInjector(application);
}
private void setupService(final SoundcloudApiService service) {
service.setUseSSL(mPreferences.getSSLEnabled());
}
public TrackService trackService() {
final TrackService service = mInjector.getInstance(TrackService.class);
setupService(service);
return service;
}
public ResolveService resolveService() {
final ResolveService service = mInjector.getInstance(ResolveService.class);
setupService(service);
return service;
}
public DownloadService downloadService() {
final DownloadService service = mInjector.getInstance(DownloadService.class);
setupService(service);
return service;
}
public PlaylistService playlistService() {
final PlaylistService service = mInjector.getInstance(PlaylistService.class);
setupService(service);
return service;
}
}