fleet/orbit/pkg/dataflatten/jsonl.go
2023-11-01 20:11:35 -06:00

37 lines
692 B
Go

// based on github.com/kolide/launcher/pkg/osquery/tables
package dataflatten
import (
"encoding/json"
"fmt"
"io"
"os"
)
func JsonlFile(file string, opts ...FlattenOpts) ([]Row, error) {
f, err := os.Open(file)
if err != nil {
return nil, err
}
defer f.Close()
return Jsonl(f, opts...)
}
func Jsonl(r io.Reader, opts ...FlattenOpts) ([]Row, error) {
decoder := json.NewDecoder(r)
var objects []interface{}
for {
var object interface{}
err := decoder.Decode(&object)
switch {
case err == nil:
objects = append(objects, object)
case err == io.EOF:
return Flatten(objects, opts...)
default:
return nil, fmt.Errorf("unmarshalling jsonl: %w", err)
}
}
}