From 3ddeb13a82fac03fc9246c9e17c4c557a48eaca4 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Wed, 16 Oct 2013 17:09:54 -0700 Subject: [PATCH] Add a REST response for MailboxShow --- etc/message-body.sh | 1 + web/mailbox_controller.go | 30 +++++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100755 etc/message-body.sh diff --git a/etc/message-body.sh b/etc/message-body.sh new file mode 100755 index 0000000..ed8a0b4 --- /dev/null +++ b/etc/message-body.sh @@ -0,0 +1 @@ +curl -i -H "Accept: application/json" --noproxy localhost http://localhost:9000/mailbox/$1/$2 diff --git a/web/mailbox_controller.go b/web/mailbox_controller.go index 91817ba..b238e08 100644 --- a/web/mailbox_controller.go +++ b/web/mailbox_controller.go @@ -16,6 +16,10 @@ type JsonMessageHeader struct { Size int64 } +type JsonMessageBody struct { + Text, Html string +} + func MailboxIndex(w http.ResponseWriter, req *http.Request, ctx *Context) (err error) { name := req.FormValue("name") if len(name) == 0 { @@ -75,21 +79,41 @@ func MailboxShow(w http.ResponseWriter, req *http.Request, ctx *Context) (err er if err != nil { return fmt.Errorf("MailboxFor('%v'): %v", name, err) } - message, err := mb.GetMessage(id) + msg, err := mb.GetMessage(id) if err != nil { return fmt.Errorf("GetMessage() failed: %v", err) } - mime, err := message.ReadBody() + mime, err := msg.ReadBody() if err != nil { return fmt.Errorf("ReadBody() failed: %v", err) } + + if ctx.IsJson { + header := &JsonMessageHeader{ + Mailbox: name, + Id: msg.Id(), + From: msg.From(), + Subject: msg.Subject(), + Date: msg.Date(), + Size: msg.Size(), + } + body := &JsonMessageBody{ + Text: mime.Text, + Html: mime.Html, + } + return RenderJson(w, map[string]interface{}{ + "Header": header, + "Body": body, + }) + } + body := template.HTML(textToHtml(mime.Text)) htmlAvailable := mime.Html != "" return RenderPartial("mailbox/_show.html", w, map[string]interface{}{ "ctx": ctx, "name": name, - "message": message, + "message": msg, "body": body, "htmlAvailable": htmlAvailable, "attachments": mime.Attachments,