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 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) raise_for_status(response) return response.json()
def addGraph(self, name): """ Create a new graph. """ response = requests.post(self.url + "/" + name, {}) 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) 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) 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) raise_for_status(response) return response.json()
def deleteVertex(self, gid): """ Delete a vertex from the graph. """ url = self.url + "/vertex/" + gid response = requests.delete(url) 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) raise_for_status(response) return response.json()
def listIndices(self): url = self.url + "/index" response = requests.get(url, stream=True) 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) 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 = requests.post(self.url + "/edge", json=payload) raise_for_status(response) return response.json()
def listGraphs(self): """ List graphs. """ response = requests.get(self.url, stream=True) raise_for_status(response) output = [] for line in response.iter_lines(): output.append(json.loads(line)['graph']) return output
def __stream(self): """ Execute the query and return an iterator. """ response = requests.post(self.url, json={"query": self.query}, stream=True) # response.raise_for_status() raise_for_status(response) for result in response.iter_lines(): try: d = json.loads(result) if "vertex" in d: yield AttrDict(d["vertex"]) elif "edge" in d: yield AttrDict(d["edge"]) elif "aggregations" in d: yield AttrDict(d["aggregations"]["aggregations"]) elif "selections" in d: d = d["selections"]["selections"] for k in d: if "vertex" in d[k]: d[k] = d[k]["vertex"] elif "edge" in d[k]: d[k] = d[k]["edge"] yield AttrDict(d) elif "render" in d: if isinstance(d["render"], dict): yield AttrDict(d["render"]) else: yield d["render"] elif "count" in d: yield AttrDict(d) else: yield d except ValueError as e: print("Can't decode: %s" % (result), file=sys.stderr) raise e