def addIndex(self, label, field): url = self.url + "/index/" + label response = requests.post(url, json={"field": field}, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def __stream(self, debug=False): """ Execute the query and return an iterator. """ log_level = logging.INFO if debug: log_level = logging.DEBUG logger = logging.getLogger(__name__) logger.handlers = [] stream_handler = logging.StreamHandler() stream_handler.setFormatter( logging.Formatter('[%(levelname)s]\t%(asctime)s\t%(message)s')) stream_handler.setLevel(log_level) logger.setLevel(log_level) logger.addHandler(stream_handler) rate = Rate(logger) rate.init() response = self.session.post(self.url, json=self.to_dict(), stream=True) logger.debug('POST %s', self.url) logger.debug('BODY %s', self.to_json()) logger.debug('STATUS CODE %s', response.status_code) raise_for_status(response) for result in response.iter_lines(chunk_size=None): try: result_dict = json.loads(result.decode()) except Exception as e: logger.error("Failed to decode: %s", result) raise e if "vertex" in result_dict: extracted = result_dict["vertex"] elif "edge" in result_dict: extracted = result_dict["edge"] elif "aggregations" in result_dict: extracted = result_dict["aggregations"]["aggregations"] elif "selections" in result_dict: extracted = result_dict["selections"]["selections"] for k in extracted: if "vertex" in extracted[k]: extracted[k] = extracted[k]["vertex"] elif "edge" in extracted[k]: extracted[k] = extracted[k]["edge"] elif "render" in result_dict: extracted = result_dict["render"] elif "count" in result_dict: extracted = result_dict else: extracted = result_dict if isinstance(extracted, dict): yield AttrDict(extracted) else: yield extracted rate.tick() rate.close()
def getSchema(self): """ Get the schema for a graph. """ response = self.session.get(self.url + "/schema") raise_for_status(response) return response.json()
def execute(self): payload = "\n".join(self.elements) response = requests.post(self.url, data=payload, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def deleteGraph(self, name): """ Delete graph. """ response = requests.delete(self.url + "/" + name, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def getEdge(self, gid): """ Get an edge by id. """ url = self.url + "/edge/" + gid response = requests.get(url, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def getVertex(self, gid): """ Get a vertex by id. """ url = self.url + "/vertex/" + gid response = self.session.get(url) raise_for_status(response) return response.json()
def deleteVertex(self, gid): """ Delete a vertex from the graph. """ url = self.url + "/vertex/" + gid response = self.session.delete(url) raise_for_status(response) return response.json()
def addSchema(self, vertices=[], edges=[]): """ Add vertex to a graph. """ payload = {"graph": self.graph, "vertices": vertices, "edges": edges} response = self.session.post(self.url + "/schema", json=payload) raise_for_status(response) return response.json()
def addVertex(self, gid, label, data={}): """ Add vertex to a graph. """ payload = {"gid": gid, "label": label, "data": data} response = self.session.post(self.url + "/vertex", json=payload) raise_for_status(response) return response.json()
def addGraph(self, name): """ Create a new graph. """ response = requests.post(self.url + "/" + name, {}, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def deleteEdge(self, gid): """ Delete an edge from the graph. """ url = self.url + "/edge/" + gid response = self.session.delete(url) raise_for_status(response) return response.json()
def getEdge(self, gid): """ Get an edge by id. """ url = self.url + "/edge/" + gid response = self.session.get(url) raise_for_status(response) return response.json()
def deleteEdge(self, gid): """ Delete an edge from the graph. """ url = self.url + "/edge/" + gid response = requests.delete(url, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def getVertex(self, gid): """ Get a vertex by id. """ url = self.url + "/vertex/" + gid response = requests.get(url, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def aggregate(self, aggregations): if not isinstance(aggregations, list): aggregations = [aggregations] payload = { "aggregations": aggregations, } url = self.url + "/aggregate" response = self.session.post(url, json=payload) raise_for_status(response) return response.json()["aggregations"]
def addEdge(self, src, dst, label, data={}, gid=None): """ Add edge to the graph. """ payload = {"from": src, "to": dst, "label": label, "data": data} if gid is not None: payload["gid"] = gid response = self.session.post(self.url + "/edge", json=payload) raise_for_status(response) return response.json()
def addVertex(self, gid, label, data={}): """ Add vertex to a graph. """ payload = {"gid": gid, "label": label, "data": data} response = requests.post(self.url + "/vertex", json=payload, auth=(self.user, self.password)) raise_for_status(response) return response.json()
def listIndices(self): url = self.url + "/index" response = requests.get(url, stream=True, auth=(self.user, self.password)) raise_for_status(response) output = [] for result in response.iter_lines(): d = json.loads(result) output.append(d) return output
def aggregate(self, aggregations): if not isinstance(aggregations, list): aggregations = [aggregations] payload = { "aggregations": aggregations, } url = self.url + "/aggregate" response = requests.post(url, json=payload, auth=(self.user, self.password)) raise_for_status(response) return response.json()["aggregations"]
def listGraphs(self): """ List graphs. """ response = requests.get(self.url, stream=True, auth=(self.user, self.password)) raise_for_status(response) output = [] for line in response.iter_lines(): output.append(json.loads(line)['graph']) return output
def listIndices(self): url = self.url + "/index" response = self.session.get(url, headers=self._request_header()) raise_for_status(response) return response.json()["indices"]
def listLabels(self): url = self.url + "/label" response = self.session.get(url) raise_for_status(response) return response.json()
def addIndex(self, label, field): url = self.url + "/index/" + label response = self.session.post(url, json={"field": field}) raise_for_status(response) return response.json()
def execute(self): payload = "\n".join(self.elements) response = self.session.post(self.url, data=payload) raise_for_status(response) return response.json()