diff options
author | Kali Kaneko (leap communications) <kali@leap.se> | 2016-12-07 20:46:02 +0100 |
---|---|---|
committer | Kali Kaneko (leap communications) <kali@leap.se> | 2016-12-29 03:09:52 +0100 |
commit | 7c588e919e959f32b33235b4a44da257d8f4a964 (patch) | |
tree | 91db85ddbffd6989d14f7843e6ec5dd004935893 /src/leap/bitmask/core/web/api.py | |
parent | e50a442c6f03ba09a800f9999e29e9340b1d45c7 (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.py | 32 |
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 00000000..e8bd21e4 --- /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() |