# Module: NetflixHttpSubRessourceHandler
# Created on: 07.03.2017
-from urllib2 import urlopen, URLError
-
class NetflixHttpSubRessourceHandler:
""" Represents the callable internal server routes & translates/executes them to requests for Netflix"""
self.netflix_session = netflix_session
self.credentials = self.kodi_helper.get_credentials()
self.profiles = []
- self.prefetch_login()
self.video_list_cache = {}
- self.lolomo = None
+ self.prefetch_login()
def prefetch_login (self):
"""Check if we have stored credentials.
If so, do the login before the user requests it
If that is done, we cache the profiles
"""
- if self._network_availble():
- if self.credentials['email'] != '' and self.credentials['password'] != '':
- if self.netflix_session.is_logged_in(account=self.credentials):
- self.netflix_session.refresh_session_data(account=self.credentials)
- self.profiles = self.netflix_session.profiles
- else:
- self.netflix_session.login(account=self.credentials)
- self.profiles = self.netflix_session.profiles
+ if self.credentials['email'] != '' and self.credentials['password'] != '':
+ if self.netflix_session.is_logged_in(account=self.credentials):
+ self.netflix_session.refresh_session_data(account=self.credentials)
+ self.profiles = self.netflix_session.profiles
else:
- self.profiles = []
+ self.netflix_session.login(account=self.credentials)
+ self.profiles = self.netflix_session.profiles
else:
- sleep(1)
- self.prefetch_login()
+ self.profiles = []
def is_logged_in (self, params):
"""Existing login proxy function
"""
self.profiles = []
self.credentials = {'email': '', 'password': ''}
- self.lolomo = None
return self.netflix_session.logout()
def login (self, params):
self.kodi_helper.log('Serving cached list for user: ' + self.netflix_session.user_data['guid'])
return cached_list
video_list_ids_raw = self.netflix_session.fetch_video_list_ids()
+
if 'error' in video_list_ids_raw:
return video_list_ids_raw
return self.netflix_session.parse_video_list_ids(response_data=video_list_ids_raw)
- def fetch_video_list_ids_for_kids (self, params):
- """Video list ids proxy function (thanks to Netflix that we need to use a different API for Kids profiles)
-
- Parameters
- ----------
- params : :obj:`dict` of :obj:`str`
- Request params
-
- Returns
- -------
- :obj:`list`
- Transformed response of the remote call
- """
- if self.lolomo == None:
- self.lolomo = self.netflix_session.get_lolomo_for_kids()
- response = self.netflix_session.fetch_lists_for_kids(lolomo=self.lolomo)
- return response
-
def fetch_video_list (self, params):
"""Video list proxy function
Response of the remote call
"""
profile_id = params.get('profile_id', [''])[0]
- self.lolomo = None
return self.netflix_session.switch_profile(profile_id=profile_id, account=self.credentials)
def get_user_data (self, params):
if 'error' in raw_search_contents:
return raw_search_contents
return self.netflix_session.parse_video_list(response_data=raw_search_contents)
-
- def _network_availble(self):
- """Check if the network is available
- Returns
- -------
- bool
- Network can be accessed
- """
- try:
- urlopen('http://216.58.192.142', timeout=1)
- return True
- except URLError as err:
- return False