- self._url = self.__class__.root_url
- self.current_element = None
- self.caching = cache
- purge_cache(self.__class__)
-
- def _fetch(self, payload):
- """Use cached elements or proceed http request"""
- url = Request('GET', self._url, params=payload,).prepare().url
- if url in SimaFM.cache:
- self.current_element = SimaFM.cache.get(url).elem
- return
- try:
- self._fetch_ws(payload)
- except Timeout:
- raise WSTimeout('Failed to reach server within {0}s'.format(
- SOCKET_TIMEOUT))
- except ConnectionError as err:
- raise WSError(err)
-
- @Throttle(WAIT_BETWEEN_REQUESTS)
- def _fetch_ws(self, payload):
- """fetch from web service"""
- req = get(self._url, params=payload,
- timeout=SOCKET_TIMEOUT)
- #self.__class__.ratelimit = req.headers.get('x-ratelimit-remaining', None)
- if req.status_code is not 200:
- raise WSHTTPError(req.status_code)
- self.current_element = req.json()
- self._controls_answer()
- if self.caching:
- SimaFM.cache.update({req.url:
- Cache(self.current_element)})
-
- def _controls_answer(self):