package fr.eyal.datalib.sample.netflix.data.service;
import android.content.pm.PackageManager;
import android.net.NetworkInfo;
import fr.eyal.lib.data.parser.GenericHandler;
import fr.eyal.lib.data.processor.Processor;
import fr.eyal.lib.data.service.DataLibService;
import fr.eyal.lib.data.service.model.DataLibRequest;
import fr.eyal.datalib.sample.netflix.data.config.NewReleasesWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.MovieImageWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.Top100WebConfig;
import fr.eyal.datalib.sample.netflix.data.config.TopGenreWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.AutocompleteWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.CatalogTitlesWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.PeopleWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.FilmographyWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.MovieWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.SynopsisWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.CastWebConfig;
import fr.eyal.datalib.sample.netflix.data.config.DirectorsWebConfig;
import fr.eyal.datalib.sample.netflix.data.parser.NewReleasesParser;
import fr.eyal.datalib.sample.netflix.data.parser.MovieImageParser;
import fr.eyal.datalib.sample.netflix.data.parser.Top100Parser;
import fr.eyal.datalib.sample.netflix.data.parser.TopGenreParser;
import fr.eyal.datalib.sample.netflix.data.parser.AutocompleteParser;
import fr.eyal.datalib.sample.netflix.data.parser.CatalogTitlesParser;
import fr.eyal.datalib.sample.netflix.data.parser.PeopleParser;
import fr.eyal.datalib.sample.netflix.data.parser.FilmographyParser;
import fr.eyal.datalib.sample.netflix.data.parser.MovieParser;
import fr.eyal.datalib.sample.netflix.data.parser.SynopsisParser;
import fr.eyal.datalib.sample.netflix.data.parser.CastParser;
import fr.eyal.datalib.sample.netflix.data.parser.DirectorsParser;
// Start of user code NetflixService imports
// You can add here your personal imports
// DO NOT MODIFY THE GENERATED COMMENTS "Start of user code" and "End of user code
public class NetflixService extends DataLibService {
//different Service's possible actions
public static final int WEBSERVICE_NEWRELEASES = 1;
public static final int WEBSERVICE_MOVIEIMAGE = 2;
public static final int WEBSERVICE_TOP100 = 3;
public static final int WEBSERVICE_TOPGENRE = 4;
public static final int WEBSERVICE_AUTOCOMPLETE = 5;
public static final int WEBSERVICE_CATALOGTITLES = 6;
public static final int WEBSERVICE_PEOPLE = 7;
public static final int WEBSERVICE_FILMOGRAPHY = 8;
public static final int WEBSERVICE_MOVIE = 9;
public static final int WEBSERVICE_SYNOPSIS = 10;
public static final int WEBSERVICE_CAST = 11;
public static final int WEBSERVICE_DIRECTORS = 12;
public NetflixService() {
super();
}
@Override
public void launchProcessor(final int processorType, final DataLibRequest request) {
Processor processor = new Processor(this, mHeaders);
GenericHandler handler = null;
//We initiate the specific workers
switch (processorType) {
case WEBSERVICE_NEWRELEASES:
NewReleasesWebConfig.applyToRequest(request, NewReleasesWebConfig.getInstance());
handler = new NewReleasesParser();
break;
case WEBSERVICE_MOVIEIMAGE:
MovieImageWebConfig.applyToRequest(request, MovieImageWebConfig.getInstance());
handler = new MovieImageParser(request.complexOptions);
break;
case WEBSERVICE_TOP100:
Top100WebConfig.applyToRequest(request, Top100WebConfig.getInstance());
handler = new Top100Parser();
break;
case WEBSERVICE_TOPGENRE:
TopGenreWebConfig.applyToRequest(request, TopGenreWebConfig.getInstance());
handler = new TopGenreParser();
break;
case WEBSERVICE_AUTOCOMPLETE:
AutocompleteWebConfig.applyToRequest(request, AutocompleteWebConfig.getInstance());
handler = new AutocompleteParser();
break;
case WEBSERVICE_CATALOGTITLES:
CatalogTitlesWebConfig.applyToRequest(request, CatalogTitlesWebConfig.getInstance());
handler = new CatalogTitlesParser();
break;
case WEBSERVICE_PEOPLE:
PeopleWebConfig.applyToRequest(request, PeopleWebConfig.getInstance());
handler = new PeopleParser();
break;
case WEBSERVICE_FILMOGRAPHY:
FilmographyWebConfig.applyToRequest(request, FilmographyWebConfig.getInstance());
handler = new FilmographyParser();
break;
case WEBSERVICE_MOVIE:
MovieWebConfig.applyToRequest(request, MovieWebConfig.getInstance());
handler = new MovieParser();
break;
case WEBSERVICE_SYNOPSIS:
SynopsisWebConfig.applyToRequest(request, SynopsisWebConfig.getInstance());
handler = new SynopsisParser();
break;
case WEBSERVICE_CAST:
CastWebConfig.applyToRequest(request, CastWebConfig.getInstance());
handler = new CastParser();
break;
case WEBSERVICE_DIRECTORS:
DirectorsWebConfig.applyToRequest(request, DirectorsWebConfig.getInstance());
handler = new DirectorsParser();
break;
default:
return;
}
//we check the presence of the ACCESS_NETWORK_STATE
PackageManager pm = getPackageManager();
if (pm.checkPermission("android.permission.ACCESS_NETWORK_STATE", getPackageName()) == PackageManager.PERMISSION_GRANTED) {
NetworkInfo infos = mConnectivityManager.getActiveNetworkInfo();
boolean isConnected = (infos != null && infos.isConnected());
processor.start(request, isConnected, handler, this);
} else {
throw new SecurityException("android.permission.ACCESS_NETWORK_STATE needed. Add it to te manifest to be able to use this function");
}
}
// Start of user code NetflixService
// You can add here your personal content
// DO NOT MODIFY THE GENERATED COMMENTS "Start of user code" and "End of user code
}