mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
feat: add logging for encoding detection
This commit is contained in:
@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user