summaryrefslogtreecommitdiff
path: root/service/pixelated/resources
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2016-01-18 15:39:59 +0100
committerFolker Bernitt <fbernitt@thoughtworks.com>2016-01-18 15:39:59 +0100
commitc5d61bc8001b16e3dcedda9fd1229c27cca4bd3b (patch)
treea36fb87a31b7692d124b959ba32ba49f48a14ed8 /service/pixelated/resources
parent0b06feff629f91d2fa4e7bdbe3b8e46b412e6158 (diff)
Refactory KeyResource to get services from session
- Issue #576 - Only first step (other services not changed yet) - Faked session access for now
Diffstat (limited to 'service/pixelated/resources')
-rw-r--r--service/pixelated/resources/__init__.py17
-rw-r--r--service/pixelated/resources/keys_resource.py14
-rw-r--r--service/pixelated/resources/root_resource.py4
3 files changed, 26 insertions, 9 deletions
diff --git a/service/pixelated/resources/__init__.py b/service/pixelated/resources/__init__.py
index c65e19f3..556469c1 100644
--- a/service/pixelated/resources/__init__.py
+++ b/service/pixelated/resources/__init__.py
@@ -16,6 +16,8 @@
import json
+from twisted.web.resource import Resource
+
class SetEncoder(json.JSONEncoder):
def default(self, obj):
@@ -37,3 +39,18 @@ def respond_json_deferred(entity, request, status_code=200):
request.code = status_code
request.write(json_response)
request.finish()
+
+
+class BaseResource(Resource):
+
+ def __init__(self, services_factory):
+ Resource.__init__(self)
+ self._services_factory = services_factory
+
+ def keymanager(self, request):
+ user_id = self._get_user_id_from_request()
+ return self._services_factory.services(user_id).keymanager
+
+ def _get_user_id_from_request(self):
+ # currently we are faking this
+ return self._services_factory._services_by_user.keys()[0]
diff --git a/service/pixelated/resources/keys_resource.py b/service/pixelated/resources/keys_resource.py
index 6df95b28..d6f469fe 100644
--- a/service/pixelated/resources/keys_resource.py
+++ b/service/pixelated/resources/keys_resource.py
@@ -1,18 +1,18 @@
from email.utils import parseaddr
-from pixelated.resources import respond_json_deferred
+from pixelated.resources import respond_json_deferred, BaseResource
from twisted.web import server
-from twisted.web.resource import Resource
-class KeysResource(Resource):
+class KeysResource(BaseResource):
isLeaf = True
- def __init__(self, keymanager):
- Resource.__init__(self)
- self._keymanager = keymanager
+ def __init__(self, services_factory):
+ BaseResource.__init__(self, services_factory)
def render_GET(self, request):
+ _keymanager = self.keymanager(request)
+
def finish_request(key):
if key.private:
respond_json_deferred(None, request, status_code=401)
@@ -23,7 +23,7 @@ class KeysResource(Resource):
respond_json_deferred(None, request, status_code=404)
_, key_to_find = parseaddr(request.args.get('search')[0])
- d = self._keymanager.fetch_key(key_to_find)
+ d = _keymanager.fetch_key(key_to_find)
d.addCallback(finish_request)
d.addErrback(key_not_found)
diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py
index 56da5cc7..fac63bd7 100644
--- a/service/pixelated/resources/root_resource.py
+++ b/service/pixelated/resources/root_resource.py
@@ -36,11 +36,11 @@ class RootResource(Resource):
return self
return Resource.getChild(self, path, request)
- def initialize(self, keymanager, search_engine, mail_service, draft_service, feedback_service):
+ def initialize(self, services_factory, keymanager, search_engine, mail_service, draft_service, feedback_service):
self.account_email = mail_service.account_email
self.putChild('assets', File(self._static_folder))
- self.putChild('keys', KeysResource(keymanager))
+ self.putChild('keys', KeysResource(services_factory))
self.putChild(AttachmentsResource.BASE_URL, AttachmentsResource(mail_service))
self.putChild('contacts', ContactsResource(search_engine))
self.putChild('features', FeaturesResource())