Source code for hs_restclient.generators

from .exceptions import HydroShareNotAuthorized, HydroShareNotFound, HydroShareHTTPException

[docs]def resultsListGenerator(hs, url, params=None): # Get first (only?) page of results r = hs._request('GET', url, params=params) if r.status_code != 200: if r.status_code == 403: raise HydroShareNotAuthorized(('GET', url)) elif r.status_code == 404: raise HydroShareNotFound((url,)) else: raise HydroShareHTTPException((url, 'GET', r.status_code, params)) res = r.json() results = res['results'] for item in results: yield item # Get remaining pages (if any exist) while res['next']: next_url = res['next'] if hs.use_https: # Make sure the next URL uses HTTPS next_url = next_url.replace('http://', 'https://', 1) r = hs._request('GET', next_url, params=params) if r.status_code != 200: if r.status_code == 403: raise HydroShareNotAuthorized(('GET', next_url)) elif r.status_code == 404: raise HydroShareNotFound((next_url,)) else: raise HydroShareHTTPException((next_url, 'GET', r.status_code, params)) res = r.json() results = res['results'] for item in results: yield item