Files
proton-bridge/pkg/message/parser/walker.go
2020-09-11 11:41:02 +02:00

40 lines
929 B
Go

package parser
type Walker struct {
root *Part
defaultHandler PartHandler
typeHandlers map[string]PartHandler
dispHandlers map[string]DispHandler
}
type PartHandler func(*Part) error
type DispHandler func(*Part, PartHandler) error
func newWalker(root *Part) *Walker {
return &Walker{
root: root,
defaultHandler: func(*Part) (err error) { return },
typeHandlers: make(map[string]PartHandler),
dispHandlers: make(map[string]DispHandler),
}
}
func (w *Walker) Walk() (err error) {
return w.root.visit(w)
}
func (w *Walker) WithDefaultHandler(handler PartHandler) *Walker {
w.defaultHandler = handler
return w
}
func (w *Walker) WithContentTypeHandler(contType string, handler PartHandler) *Walker {
w.typeHandlers[contType] = handler
return w
}
func (w *Walker) WithContentDispositionHandler(contDisp string, handler DispHandler) *Walker {
w.dispHandlers[contDisp] = handler
return w
}