class HealthCheckResource(VersionedResource): """Represents a simple health check resource. """ def __init__(self): super().__init__() def get_request_handler(self, headers): """Retrieve request handler based on API version number. Args: headers (dict): HTTP request headers passed in by the client. Returns: object: API request handler based on version number. """ api_version = self.get_api_version(headers) if api_version == '1.0.0': request_handler = V1_0_0_HealthCheckHandler() else: request_handler = V1_0_0_HealthCheckHandler() return request_handler @token_required(Config.get_oauth2_provider()) def get(self): """ Handle GET request from API. Returns: dict: API health status. """ return self.get_request_handler(request.headers).get_health()
def get_all_users(self, offset=0, limit=20): """ Retrieve all users. Called when GETing the `users` endpoint. Args: offset (int): Database offset to look up datasets by limit (int): Number of results to return in the query set. """ status_code = 200 try: offset = int(offset) limit = int(limit) if offset < 0 or limit < 0: return error_message('Offset and Limit must be positive integers.') if limit > Config.get_page_limit(): limit = Config.get_page_limit() except Exception: return error_message('Offset and Limit must be integers.') users = Individual.query.limit(limit).offset(offset) row_count = Individual.query.count() if row_count > 0: links = build_links('users', offset, limit, row_count) else: links = [] response = OrderedDict() response['users'] = [] for user in users: response['users'].append({ 'mci_id': user.mci_id, 'first_name': user.first_name, 'last_name': user.last_name, 'suffix': user.suffix }) response['links'] = links return response, status_code
class AddressResource(HelperResource): def __init__(self): super().__init__() @token_required(Config.get_oauth2_provider()) def get(self): """ Handle GET request from API. Returns: dict: API health status. """ return self.get_request_handler(request.headers).get_all_addresses() @token_required(Config.get_oauth2_provider()) def post(self): """ Handle POST request from API. Returns: dict: API health status. """ return self.get_request_handler(request.headers).create_new_address(request)
class UserDetailResource(UserResource): """ A specific user. """ @token_required(Config.get_oauth2_provider()) def get(self, mci_id: str): return self.get_request_handler( request.headers).create_user_blob(mci_id) def post(self): pass def put(self): pass def delete(self): pass
def get(self): """ Handle GET request from API. Returns: dict: API health status. """ offset = 0 limit = Config.get_page_limit() args = request.args try: offset = request.args['offset'] except Exception: pass try: limit = request.args['limit'] except Exception: pass return self.get_request_handler(request.headers).get_all_users( offset=offset, limit=limit)
class UserRemovePIIResource(UserResource): """ A resource for removing the PII of an individual """ @token_required(Config.get_oauth2_provider()) def post(self): return self.get_request_handler(request.headers).remove_pii(request)
class UserResource(VersionedResource): """Represents a user registered in the MCI. """ def __init__(self): super().__init__() def get_request_handler(self, headers): """Retrieve request handler based on API version number. Args: headers (dict): HTTP request headers passed in by the client. Returns: object: API request handler based on version number. """ api_version = self.get_api_version(headers) if api_version == '1.0.0': request_handler = V1_0_0_UserHandler() else: request_handler = V1_0_0_UserHandler() return request_handler @token_required(Config.get_oauth2_provider()) def get(self): """ Handle GET request from API. Returns: dict: API health status. """ offset = 0 limit = Config.get_page_limit() args = request.args try: offset = request.args['offset'] except Exception: pass try: limit = request.args['limit'] except Exception: pass return self.get_request_handler(request.headers).get_all_users( offset=offset, limit=limit) @token_required(Config.get_oauth2_provider()) def post(self): """ Handle POST request from API. Returns: dict: API health status. """ return self.get_request_handler( request.headers).create_new_user(request) @token_required(Config.get_oauth2_provider()) def put(self): """ Handle GET request from API. Returns: dict: API health status. """ return self.get_request_handler(request.headers).get_health() @token_required(Config.get_oauth2_provider()) def patch(self): """ Handle GET request from API. Returns: dict: API health status. """ return self.get_request_handler(request.headers).get_health() @token_required(Config.get_oauth2_provider()) def delete(self): """ Handle GET request from API. Returns: dict: API health status. """ return self.get_request_handler(request.headers).get_health()