Beispiel #1
0
    def __init__(self,
                 project_id,
                 write_key=None,
                 read_key=None,
                 persistence_strategy=None):
        """ Initializes a KeenClient object.

        :param project_id: the Keen IO project ID
        :param write_key: a Keen IO Scoped Key for Writes
        :param read_key: a Keen IO Scoped Key for Reads
        :param persistence_strategy: optional, the strategy to use to persist
        the event
        """
        super(KeenClient, self).__init__()

        # do some validation
        self.check_project_id(project_id)

        # Set up an api client to be used for querying and optionally passed
        # into a default persistence strategy.
        self.api = KeenApi(project_id, write_key=write_key, read_key=read_key)

        if persistence_strategy:
            # validate the given persistence strategy
            if not isinstance(persistence_strategy, BasePersistenceStrategy):
                raise exceptions.InvalidPersistenceStrategyError()
        if not persistence_strategy:
            # setup a default persistence strategy
            persistence_strategy = persistence_strategies \
                .DirectPersistenceStrategy(self.api)

        self.project_id = project_id
        self.persistence_strategy = persistence_strategy
    def all(self):
        """
        Gets all saved queries for a project from the Keen IO API.
        Master key must be set.
        """
        keen_api = KeenApi(self.project_id, master_key=self.master_key)
        self._check_for_master_key()
        url = "{0}/{1}/projects/{2}/queries/saved".format(
            keen_api.base_url, keen_api.api_version, self.project_id)
        response = keen_api.fulfill("get", url, headers=self._headers())

        return response.json()
    def delete(self, query_name):
        """
        Deletes a saved query from a project with a query name.
        Master key must be set.
        """
        keen_api = KeenApi(self.project_id, master_key=self.master_key)
        self._check_for_master_key()
        url = "{0}/{1}/projects/{2}/queries/saved/{3}".format(
            keen_api.base_url, keen_api.api_version, self.project_id,
            query_name)
        response = keen_api.fulfill("delete", url, headers=self._headers())
        keen_api._error_handling(response)

        return True
    def get(self, query_name):
        """
        Gets a single saved query for a project from the Keen IO API given a
        query name.
        Master key must be set.
        """
        keen_api = KeenApi(self.project_id, master_key=self.master_key)
        self._check_for_master_key()
        url = "{0}/{1}/projects/{2}/queries/saved/{3}".format(
            keen_api.base_url, keen_api.api_version, self.project_id,
            query_name)
        response = keen_api.fulfill("get", url, headers=self._headers())
        keen_api._error_handling(response)

        return response.json()
    def create(self, query_name, saved_query):
        """
        Creates the saved query via a PUT request to Keen IO Saved Query endpoint. Master key must be set.
        """
        keen_api = KeenApi(self.project_id, master_key=self.master_key)
        self._check_for_master_key()
        url = "{0}/{1}/projects/{2}/queries/saved/{3}".format(
            keen_api.base_url, keen_api.api_version, self.project_id,
            query_name)
        response = keen_api.fulfill("put",
                                    url,
                                    headers=utilities.headers(self.master_key),
                                    data=saved_query)
        keen_api._error_handling(response)

        return response.json()
    def results(self, query_name):
        """
        Gets a single saved query with a 'result' object for a project from thei
        Keen IO API given a query name.
        Read or Master key must be set.
        """
        keen_api = KeenApi(self.project_id, master_key=self.master_key)
        self._check_for_master_or_read_key()
        url = "{0}/{1}/projects/{2}/queries/saved/{3}/result".format(
            keen_api.base_url, keen_api.api_version, self.project_id,
            query_name)
        key = self.master_key if self.master_key else self.read_key
        response = keen_api.fulfill("get", url, headers=utilities.headers(key))
        keen_api._error_handling(response)

        return response.json()