aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2022-10-12 23:52:45 +0200
committerRobin Jarry <robin@jarry.cc>2022-10-16 11:35:24 +0200
commit9bd2e0c84fef66007bcab027883c01414b99b77c (patch)
tree515414d5d8d95f2360bd1e9db31ef7fdca7cdd86 /models
parenta4b80bcc8b4427016bfb0c2924ffaa9f8b90916d (diff)
downloadaerc-9bd2e0c84fef66007bcab027883c01414b99b77c.tar.gz
aerc-9bd2e0c84fef66007bcab027883c01414b99b77c.zip
msgpart: factorize mime type and filename construction
Reduce code duplication. Signed-off-by: Robin Jarry <robin@jarry.cc> Acked-by: Moritz Poldrack <moritz@poldrack.dev>
Diffstat (limited to 'models')
-rw-r--r--models/models.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/models/models.go b/models/models.go
index 820bc3fa..b55024ab 100644
--- a/models/models.go
+++ b/models/models.go
@@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"io"
+ "strings"
"time"
"github.com/emersion/go-message/mail"
@@ -175,6 +176,21 @@ func (bs *BodyStructure) PartAtIndex(index []int) (*BodyStructure, error) {
return bs.Parts[curidx].PartAtIndex(rest)
}
+func (bs *BodyStructure) FullMIMEType() string {
+ mime := fmt.Sprintf("%s/%s", bs.MIMEType, bs.MIMESubType)
+ return strings.ToLower(mime)
+}
+
+func (bs *BodyStructure) FileName() string {
+ if filename, ok := bs.DispositionParams["filename"]; ok {
+ return filename
+ } else if filename, ok := bs.Params["name"]; ok {
+ // workaround golang not supporting RFC2231 besides ASCII and UTF8
+ return filename
+ }
+ return ""
+}
+
type Envelope struct {
Date time.Time
Subject string