summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/core/web/api.py
diff options
context:
space:
mode:
authorKali Kaneko (leap communications) <kali@leap.se>2016-12-07 20:46:02 +0100
committerKali Kaneko (leap communications) <kali@leap.se>2016-12-29 03:09:52 +0100
commit7c588e919e959f32b33235b4a44da257d8f4a964 (patch)
tree91db85ddbffd6989d14f7843e6ec5dd004935893 /src/leap/bitmask/core/web/api.py
parente50a442c6f03ba09a800f9999e29e9340b1d45c7 (diff)
[refactor] move web service to its own submodule
Diffstat (limited to 'src/leap/bitmask/core/web/api.py')
-rw-r--r--src/leap/bitmask/core/web/api.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/leap/bitmask/core/web/api.py b/src/leap/bitmask/core/web/api.py
new file mode 100644
index 0000000..e8bd21e
--- /dev/null
+++ b/src/leap/bitmask/core/web/api.py
@@ -0,0 +1,32 @@
+import json
+from twisted.web.server import NOT_DONE_YET
+
+from twisted.web.resource import Resource
+
+
+class Api(Resource):
+
+ isLeaf = True
+
+ def __init__(self, dispatcher):
+ Resource.__init__(self)
+ self.dispatcher = dispatcher
+
+ def render_POST(self, request):
+ command = request.uri.split('/')[2:]
+ params = request.content.getvalue()
+ if params:
+ # json.loads returns unicode strings and the rest of the code
+ # expects strings. This 'str(param)' conversion can be removed
+ # if we move to python3
+ for param in json.loads(params):
+ command.append(str(param))
+
+ d = self.dispatcher.dispatch(command)
+ d.addCallback(self._write_response, request)
+ return NOT_DONE_YET
+
+ def _write_response(self, response, request):
+ request.setHeader('Content-Type', 'application/json')
+ request.write(response)
+ request.finish()