summaryrefslogtreecommitdiff
path: root/service/pixelated/resources/keys_resource.py
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2015-02-13 10:27:51 -0200
committerDuda Dornelles <ddornell@thoughtworks.com>2015-02-13 12:47:12 -0200
commitc52ce25ac49cdfdc1791bcb65c5262aec63dadbd (patch)
treed7c5ce18b12f9a86f4a0cb09cc163d4534ddbbeb /service/pixelated/resources/keys_resource.py
parent2e88b9d9d68bae91cfde466edfc027f19f7c74b8 (diff)
Adding encryption info for a recipient when composing.
To do that we look into the KeysResouce to see if we will find a key for each address entered for the recipients.
Diffstat (limited to 'service/pixelated/resources/keys_resource.py')
-rw-r--r--service/pixelated/resources/keys_resource.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/service/pixelated/resources/keys_resource.py b/service/pixelated/resources/keys_resource.py
new file mode 100644
index 00000000..f8affb73
--- /dev/null
+++ b/service/pixelated/resources/keys_resource.py
@@ -0,0 +1,27 @@
+from email.utils import parseaddr
+from leap.keymanager import OpenPGPKey
+from pixelated.resources import respond_json_deferred
+from twisted.internet.threads import deferToThread
+from twisted.web import server
+from twisted.web.resource import Resource
+
+
+class KeysResource(Resource):
+
+ def __init__(self, keymanager):
+ Resource.__init__(self)
+ self._keymanager = keymanager
+
+ def render_GET(self, request):
+ def finish_request(key):
+ respond_json_deferred(key.get_json(), request)
+
+ def key_not_found(_):
+ respond_json_deferred(None, request, status_code=404)
+
+ _, key_to_find = parseaddr(request.args.get('search')[0])
+ d = deferToThread(lambda: self._keymanager.get_key_from_cache(key_to_find, OpenPGPKey))
+ d.addCallback(finish_request)
+ d.addErrback(key_not_found)
+
+ return server.NOT_DONE_YET