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()