File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed
adapters/writers/jsonwriter Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ package jsonwriter
2+
3+ import (
4+ "context"
5+ "encoding/json"
6+ "io"
7+
8+ "github.com/gosom/scrapemate"
9+ )
10+
11+ var _ scrapemate.ResultWriter = (* jsonWriter )(nil )
12+
13+ type jsonWriter struct {
14+ enc * json.Encoder
15+ }
16+
17+ func NewJSONWriter (w io.Writer ) scrapemate.ResultWriter {
18+ enc := json .NewEncoder (w )
19+ return & jsonWriter {enc : enc }
20+ }
21+
22+ func (c * jsonWriter ) Run (_ context.Context , in <- chan scrapemate.Result ) error {
23+ for result := range in {
24+ items := asSlice (result .Data )
25+
26+ for i := range items {
27+ if err := c .enc .Encode (items [i ]); err != nil {
28+ return err
29+ }
30+ }
31+ }
32+
33+ return nil
34+ }
35+
36+ func asSlice (t any ) []any {
37+ isSlice , ok := t .([]any )
38+ if ok {
39+ return isSlice
40+ }
41+
42+ var elements []any
43+
44+ elements = append (elements , t )
45+
46+ return elements
47+ }
You can’t perform that action at this time.
0 commit comments