1.1 --- a/actions/FetchMessages.py Thu Nov 14 18:43:10 2013 +0100
1.2 +++ b/actions/FetchMessages.py Tue Dec 17 14:11:38 2013 +0100
1.3 @@ -9,7 +9,8 @@
1.4 from MoinSupport import getMetadata, writeHeaders, parseDictEntry
1.5 from MoinMessage import Message, GPG
1.6 from MoinMessageSupport import MoinMessageAction, \
1.7 - get_signing_users, get_recipients
1.8 + get_signing_users, get_recipient_details, \
1.9 + MoinMessageRecipientError
1.10 from email.mime.text import MIMEText
1.11 from email.parser import Parser
1.12 from itertools import islice
1.13 @@ -34,12 +35,14 @@
1.14 # NOTE: Could employ a more accurate content type.
1.15
1.16 if not content.get_content_type() == "text/plain":
1.17 - writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden")
1.18 + writeHeaders(request, "text/plain", getMetadata(self.page), "415 Unsupported Media Type")
1.19 request.write("The content does not appear to be a request for messages.")
1.20 return
1.21
1.22 homedir = self.get_homedir()
1.23 if not homedir:
1.24 + writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden")
1.25 + request.write("This site is not configured for this request.")
1.26 return
1.27
1.28 gpg = GPG(homedir)
1.29 @@ -57,18 +60,11 @@
1.30
1.31 # Get the recipient details.
1.32
1.33 - recipients = get_recipients(request)
1.34 - if not recipient or not recipients or not recipients.has_key(recipient):
1.35 + try:
1.36 + parameters = get_recipient_details(request, recipient, fetching=True)
1.37 + except MoinMessageRecipientError, exc:
1.38 writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden")
1.39 - request.write("The recipient does not appear to be registered for message delivery.")
1.40 - return
1.41 -
1.42 - recipient_details = recipients[recipient]
1.43 - parameters = parseDictEntry(recipient_details, ("type", "location", "fingerprint",))
1.44 -
1.45 - if not parameters.has_key("fingerprint"):
1.46 - writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden")
1.47 - request.write("The recipient does not appear to be registered for message delivery.")
1.48 + request.write(exc.message)
1.49 return
1.50
1.51 # Obtain commands from the payload, returning a collection of messages.
1.52 @@ -170,7 +166,6 @@
1.53
1.54 writeHeaders(request, "text/plain", getMetadata(self.page))
1.55 request.write(message.as_string())
1.56 - return 1, None
1.57
1.58 # Action function.
1.59