From 475e673b871c62ce4e7a62a4ed7a4b1b7135cf82 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Wed, 26 Aug 2020 13:05:45 +0200 Subject: [PATCH] feat: add logging for encoding detection --- pkg/message/parser/part.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/message/parser/part.go b/pkg/message/parser/part.go index 4045bbfd..3f8d7e27 100644 --- a/pkg/message/parser/part.go +++ b/pkg/message/parser/part.go @@ -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() }