feat: add logging for encoding detection

This commit is contained in:
James Houlahan
2020-08-26 13:05:45 +02:00
parent 3916ddc8e4
commit 475e673b87

View File

@ -23,6 +23,7 @@ import (
pmmime "github.com/ProtonMail/proton-bridge/pkg/mime"
"github.com/emersion/go-message"
"github.com/sirupsen/logrus"
"golang.org/x/net/html/charset"
"golang.org/x/text/encoding"
)
@ -65,6 +66,8 @@ func (p *Part) AddChild(child *Part) {
}
func (p *Part) ConvertToUTF8() error {
logrus.Debug("Converting part to utf-8")
t, params, err := p.Header.ContentType()
if err != nil {
return err
@ -90,16 +93,24 @@ func (p *Part) ConvertToUTF8() error {
func selectSuitableDecoder(p *Part, t string, params map[string]string) *encoding.Decoder {
if charset, ok := params["charset"]; ok {
logrus.WithField("charset", charset).Debug("The part has a specified charset")
if decoder, err := pmmime.SelectDecoder(charset); err == nil {
logrus.Debug("The charset is known; decoder has been selected")
return decoder
}
logrus.Debug("The charset is unknown; no decoder could be selected")
}
if utf8.Valid(p.Body) {
logrus.Debug("The part is already valid utf-8, returning noop encoder")
return encoding.Nop.NewDecoder()
}
encoding, _, _ := charset.DetermineEncoding(p.Body, t)
encoding, name, _ := charset.DetermineEncoding(p.Body, t)
logrus.WithField("name", name).Debug("Determined encoding by reading body")
return encoding.NewDecoder()
}