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