From c50160d7ac0aaf86339694c3bb2e513a7531bde0 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Wed, 15 Jul 2015 10:32:41 +0200 Subject: Get single mail endpoint works. --- service/pixelated/adapter/soledad/soledad_reader_mixin.py | 12 +++++++----- service/pixelated/resources/mail_resource.py | 12 ++++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) (limited to 'service') diff --git a/service/pixelated/adapter/soledad/soledad_reader_mixin.py b/service/pixelated/adapter/soledad/soledad_reader_mixin.py index dab38376..631a8414 100644 --- a/service/pixelated/adapter/soledad/soledad_reader_mixin.py +++ b/service/pixelated/adapter/soledad/soledad_reader_mixin.py @@ -61,13 +61,15 @@ class SoledadReaderMixin(SoledadDbFacadeMixin, object): def mail_exists(self, ident): return self.get_flags_by_chash(ident) + @defer.inlineCallbacks def mail(self, ident): - fdoc = self.get_flags_by_chash(ident) - hdoc = self.get_header_by_chash(ident) - bdoc = self.get_content_by_phash(hdoc.content['body']) - parts = self._extract_parts(hdoc.content) + fdoc = yield self.get_flags_by_chash(ident) + hdoc = yield self.get_header_by_chash(ident) + bdoc = yield self.get_content_by_phash(hdoc.content['body']) + parts = yield self._extract_parts(hdoc.content) - return PixelatedMail.from_soledad(fdoc, hdoc, bdoc, parts=parts, soledad_querier=self) + mail = PixelatedMail.from_soledad(fdoc, hdoc, bdoc, parts=parts, soledad_querier=self) + defer.returnValue(mail) @defer.inlineCallbacks def mails(self, idents): diff --git a/service/pixelated/resources/mail_resource.py b/service/pixelated/resources/mail_resource.py index dff594b0..40d6aa89 100644 --- a/service/pixelated/resources/mail_resource.py +++ b/service/pixelated/resources/mail_resource.py @@ -1,7 +1,7 @@ import json -from pixelated.resources import respond_json +from pixelated.resources import respond_json, respond_json_deferred from twisted.web.resource import Resource - +from twisted.web.server import NOT_DONE_YET class MailTags(Resource): @@ -31,8 +31,12 @@ class Mail(Resource): self._mail_service = mail_service def render_GET(self, request): - mail = self._mail_service.mail(self._mail_id) - return respond_json(mail.as_dict(), request) + d = self._mail_service.mail(self._mail_id) + + response = lambda mail: respond_json_deferred(mail.as_dict(), request) + d.addCallback(response) + + return NOT_DONE_YET def render_DELETE(self, request): self._mail_service.delete_mail(self._mail_id) -- cgit v1.2.3