def get_user_detail(id): user = User.query.filter_by(id=id).first() if not user: raise HTTPException("user not found", 404) return Response( f"Your name is: {user.username} and password is {user.password}")
def _raise_errors(response): """ Checks the requests.Response object body for any API-level errors, then checks whether we received a 4xx- or 5xx-level response code. Raises an exception for any undesirables. """ api_error = None http_error = 400 <= response.status_code try: body = response.json() api_error = (body.get('error', False) or body.get('meta', {}).get('error_message')) except: pass if api_error: raise APIException(api_error) elif http_error: raise HTTPException("HTTP %d: %s" % (response.status_code, response.text))
def request(self, data, session=None): ''' Give a chance to retry the connection. Jellyfin sometimes can be slow to answer back data dictionary can contain: type: GET, POST, etc. url: (optional) handler: not considered when url is provided (optional) params: request parameters (optional) json: request body (optional) headers: (optional), verify: ssl certificate, True (verify using device built-in library) or False ''' if not data: raise AttributeError("Request cannot be empty") data = self._request(data) LOG.debug("--->[ http ] %s", json.dumps(data, indent=4)) retry = data.pop('retry', 5) while True: try: r = self._requests(session or self.session or requests, data.pop('type', "GET"), **data) r.content # release the connection if not self.keep_alive and self.session is not None: self.stop_session() r.raise_for_status() except requests.exceptions.ConnectionError as error: if retry: retry -= 1 time.sleep(1) continue LOG.error(error) self.client.callback("ServerUnreachable", {'ServerId': self.config.data['auth.server-id']}) raise HTTPException("ServerUnreachable", error) except requests.exceptions.ReadTimeout as error: if retry: retry -= 1 time.sleep(1) continue LOG.error(error) raise HTTPException("ReadTimeout", error) except requests.exceptions.HTTPError as error: LOG.error(error) if r.status_code == 401: if 'X-Application-Error-Code' in r.headers: self.client.callback("AccessRestricted", {'ServerId': self.config.data['auth.server-id']}) raise HTTPException("AccessRestricted", error) else: self.client.callback("Unauthorized", {'ServerId': self.config.data['auth.server-id']}) self.client.auth.revoke_token() raise HTTPException("Unauthorized", error) elif r.status_code == 500: # log and ignore. LOG.error("--[ 500 response ] %s", error) return elif r.status_code == 502: if retry: retry -= 1 time.sleep(1) continue raise HTTPException(r.status_code, error) except requests.exceptions.MissingSchema as error: raise HTTPException("MissingSchema", {'Id': self.config.data['auth.server']}) except Exception as error: raise else: try: self.config.data['server-time'] = r.headers['Date'] elapsed = int(r.elapsed.total_seconds() * 1000) response = r.json() LOG.debug("---<[ http ][%s ms]", elapsed) LOG.debug(json.dumps(response, indent=4)) return response except ValueError: return