aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/models.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/models/models.go b/models/models.go
index 45f3b9de..4087c9d3 100644
--- a/models/models.go
+++ b/models/models.go
@@ -1,6 +1,7 @@
package models
import (
+ "errors"
"fmt"
"io"
"time"
@@ -65,6 +66,50 @@ type MessageInfo struct {
Error error
}
+func (mi *MessageInfo) MsgId() (msgid string, err error) {
+ if mi == nil {
+ return "", errors.New("msg is nil")
+ }
+ if mi.Envelope == nil {
+ return "", errors.New("envelope is nil")
+ }
+ return mi.Envelope.MessageId, nil
+}
+
+func (mi *MessageInfo) InReplyTo() (msgid string, err error) {
+ if mi == nil {
+ return "", errors.New("msg is nil")
+ }
+ if mi.RFC822Headers == nil {
+ return "", errors.New("header is nil")
+ }
+ list, err := mi.RFC822Headers.MsgIDList("In-Reply-To")
+ if err != nil {
+ return "", err
+ }
+ if len(list) == 0 {
+ return "", errors.New("no results")
+ }
+ return list[0], err
+}
+
+func (mi *MessageInfo) References() ([]string, error) {
+ if mi == nil {
+ return []string{}, errors.New("msg is nil")
+ }
+ if mi.RFC822Headers == nil {
+ return []string{}, errors.New("header is nil")
+ }
+ list, err := mi.RFC822Headers.MsgIDList("References")
+ if err != nil {
+ return []string{}, err
+ }
+ if len(list) == 0 {
+ return []string{}, errors.New("no results")
+ }
+ return list, err
+}
+
// A MessageBodyPart can be displayed in the message viewer
type MessageBodyPart struct {
Reader io.Reader