summaryrefslogtreecommitdiff
path: root/src/local/rhizi_tools_neo4j.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/local/rhizi_tools_neo4j.py')
-rw-r--r--src/local/rhizi_tools_neo4j.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/local/rhizi_tools_neo4j.py b/src/local/rhizi_tools_neo4j.py
new file mode 100644
index 00000000..be8b4a5d
--- /dev/null
+++ b/src/local/rhizi_tools_neo4j.py
@@ -0,0 +1,43 @@
+import subprocess
+import re
+import json
+
+verbose = False
+
+BASE="http://rhizi.local:7474/db/data"
+
+def c(cmd, incoming=None):
+ if verbose:
+ print("executing %r" % cmd)
+ print(incoming)
+ p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ if incoming:
+ p.stdin.write(incoming)
+ if p.stdin:
+ p.stdin.close()
+ p.wait()
+ ret = p.stdout.read()
+ return ret
+
+def curl(path, incoming):
+ return c(["curl", "-H", 'Accept: application/json', "-H", 'Content-Type: application/json', '-XPOST', '-d@-', path],
+ incoming=incoming)
+
+def transact(datum):
+ transaction_output = curl(BASE + "/transaction/", '{"statements": [ ] }')
+ commit = re.search("http://.*commit", transaction_output).group()
+ ret = curl(commit, json.dumps(datum))
+ obj = json.loads(ret)
+ return obj
+
+def run(statements, one_at_a_time):
+ def single_request_data(statements):
+ return {'statements': [{'statement': s} for s in statements]}
+ results = []
+ if one_at_a_time:
+ data = [single_request_data([statement]) for statement in statements]
+ else:
+ data = [single_request_data(statements)]
+ for datum in data:
+ results.append(transact(datum))
+ return results