1
0
mirror of https://github.com/netsampler/goflow2.git synced 2024-05-06 15:54:52 +00:00
2023-08-09 19:47:20 -07:00

39 lines
729 B
Go

package text
import (
"encoding"
"github.com/netsampler/goflow2/v2/format"
)
type TextDriver struct {
}
func (d *TextDriver) Prepare() error {
return nil
}
func (d *TextDriver) Init() error {
return nil
}
func (d *TextDriver) Format(data interface{}) ([]byte, []byte, error) {
var key []byte
if dataIf, ok := data.(interface{ Key() []byte }); ok {
key = dataIf.Key()
}
if dataIf, ok := data.(encoding.TextMarshaler); ok {
text, err := dataIf.MarshalText()
return key, text, err
}
if dataIf, ok := data.(interface{ String() string }); ok {
return key, []byte(dataIf.String()), nil
}
return key, nil, format.ErrorNoSerializer
}
func init() {
d := &TextDriver{}
format.RegisterFormatDriver("text", d)
}