From 41c10051fac54d528ca7fd7a67a5da89322c7ce0 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Thu, 17 Oct 2013 15:11:13 -0700 Subject: [PATCH] Modify output of REST get message, add SMTP headers --- web/mailbox_controller.go | 43 ++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/web/mailbox_controller.go b/web/mailbox_controller.go index b238e08..9dac359 100644 --- a/web/mailbox_controller.go +++ b/web/mailbox_controller.go @@ -6,6 +6,7 @@ import ( "html/template" "io" "net/http" + "net/mail" "strconv" "time" ) @@ -16,6 +17,14 @@ type JsonMessageHeader struct { Size int64 } +type JsonMessage struct { + Mailbox, Id, From, Subject string + Date time.Time + Size int64 + Body *JsonMessageBody + Header mail.Header +} + type JsonMessageBody struct { Text, Html string } @@ -83,28 +92,30 @@ func MailboxShow(w http.ResponseWriter, req *http.Request, ctx *Context) (err er if err != nil { return fmt.Errorf("GetMessage() failed: %v", err) } + header, err := msg.ReadHeader() + if err != nil { + return fmt.Errorf("ReadHeader() failed: %v", err) + } 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, - }) + return RenderJson(w, + &JsonMessage{ + Mailbox: name, + Id: msg.Id(), + From: msg.From(), + Subject: msg.Subject(), + Date: msg.Date(), + Size: msg.Size(), + Header: header.Header, + Body: &JsonMessageBody{ + Text: mime.Text, + Html: mime.Html, + }, + }) } body := template.HTML(textToHtml(mime.Text))