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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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()