def get_items(self): """Returns the list of Resource objects when the data contains a collection. """ result = [] for item in self._data.get('collection', []): data = utils.wrap_data_response(item) result.append(self.__class__(self._api, data)) return result
def handle_response(self, response, content): """Validate HTTP response.""" def _validate_status_code(status_code, msg=None, url=None): if 200 <= status_code <= 299: return True elif status_code in (301, 302, 303, 307): raise exceptions.Redirection(status_code, msg, url) elif status_code == 400: raise exceptions.BadRequest(status_code, msg, url) elif status_code == 401: raise exceptions.UnauthorizedAccess(status_code, msg, url) elif status_code == 404: raise exceptions.ResourceNotFound(status_code, msg, url) elif 500 <= status_code <= 599: raise exceptions.ServerError(status_code, msg, url) else: raise exceptions.ConnectionError(status_code, msg, url) return False status = response.status_code msg = response.reason url = response.url if _validate_status_code(status, msg, url): data = json.loads(content) if content else {} status = data.get('status', None) if status is None: return utils.wrap_data_response( data, headers=utils.extract_headers( response.headers, HTTP_HEADER_PREFIX, ) ) msg = data.get('response', '') if _validate_status_code(status, msg, url): return data