Refactor: Reused pm-mime method

This commit is contained in:
Jakub Lehotsky 2018-09-19 12:51:44 +02:00
parent d005dca0a4
commit e22a4910e6

View file

@ -1,16 +1,16 @@
package crypto
import (
"bufio"
"bytes"
"golang.org/x/crypto/openpgp"
"golang.org/x/crypto/openpgp/packet"
"io"
"io/ioutil"
"mime"
"mime/multipart"
"net/textproto"
"proton/pmmime"
"golang.org/x/crypto/openpgp/packet"
"golang.org/x/crypto/openpgp"
"io/ioutil"
"bytes"
"bufio"
"mime/multipart"
"mime"
)
type SignatureCollector struct {
@ -73,36 +73,13 @@ func getRawMimePart(rawdata io.Reader, boundary string) (io.Reader, io.Reader) {
return tee, bytes.NewReader(data[0 : len(data)-lineEndingLength])
}
func getMultipartParts(r io.Reader, params map[string]string) (parts []io.Reader, headers []textproto.MIMEHeader, err error) {
mr := multipart.NewReader(r, params["boundary"])
parts = []io.Reader{}
headers = []textproto.MIMEHeader{}
var p *multipart.Part
for {
p, err = mr.NextPart()
if err == io.EOF {
err = nil
break
}
if err != nil {
return
}
b, _ := ioutil.ReadAll(p)
buffer := bytes.NewBuffer(b)
parts = append(parts, buffer)
headers = append(headers, p.Header)
}
return
}
func (sc *SignatureCollector) Accept(part io.Reader, header textproto.MIMEHeader, hasPlainSibling bool, isFirst, isLast bool) (err error) {
parentMediaType, params, _ := mime.ParseMediaType(header.Get("Content-Type"))
if parentMediaType == "multipart/signed" {
newPart, rawBody := getRawMimePart(part, "--"+params["boundary"])
var multiparts []io.Reader
var multipartHeaders []textproto.MIMEHeader
if multiparts, multipartHeaders, err = getMultipartParts(newPart, params); err != nil {
if multiparts, multipartHeaders, err = mime.GetMultipartParts(newPart, params); err != nil {
return
} else {
hasPlainChild := false