mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-19 16:46:55 +00:00
fix(GODT-3087): Exclude attachment content-disposition part when determining...
This commit is contained in:
@ -33,9 +33,12 @@ func newWalker(root *Part) *Walker {
|
||||
}
|
||||
}
|
||||
|
||||
func (w *Walker) Walk() (err error) {
|
||||
func (w *Walker) Walk() error {
|
||||
return w.walkOverPart(w.root)
|
||||
}
|
||||
func (w *Walker) WalkSkipAttachment() error {
|
||||
return w.walkOverPartSkipAttachment(w.root)
|
||||
}
|
||||
|
||||
func (w *Walker) walkOverPart(p *Part) error {
|
||||
if err := w.getHandlerFunc(p)(p); err != nil {
|
||||
@ -51,6 +54,20 @@ func (w *Walker) walkOverPart(p *Part) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *Walker) walkOverPartSkipAttachment(p *Part) error {
|
||||
if err := w.getHandlerFuncSkipAttachment(p)(p); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, child := range p.children {
|
||||
if err := w.walkOverPartSkipAttachment(child); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RegisterDefaultHandler registers a handler that will be called on every part
|
||||
// that doesn't match a registered content type/disposition handler.
|
||||
func (w *Walker) RegisterDefaultHandler(fn HandlerFunc) *Walker {
|
||||
@ -91,3 +108,13 @@ func (w *Walker) getHandlerFunc(p *Part) HandlerFunc {
|
||||
|
||||
return w.defaultHandler
|
||||
}
|
||||
|
||||
func (w *Walker) getHandlerFuncSkipAttachment(p *Part) HandlerFunc {
|
||||
for _, handler := range w.handlers {
|
||||
if handler.matchPartSkipAttachment(p) {
|
||||
return handler.fn
|
||||
}
|
||||
}
|
||||
|
||||
return w.defaultHandler
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user