@@ -15,6 +15,8 @@ import (
15
15
16
16
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer/emit"
17
17
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer/internal/fingerprint"
18
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer/internal/header"
19
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator"
18
20
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper"
19
21
)
20
22
@@ -72,6 +74,11 @@ type Config struct {
72
74
Header * HeaderConfig `mapstructure:"header,omitempty"`
73
75
}
74
76
77
+ type HeaderConfig struct {
78
+ Pattern string `mapstructure:"pattern"`
79
+ MetadataOperators []operator.Config `mapstructure:"metadata_operators"`
80
+ }
81
+
75
82
// Build will build a file input operator from the supplied configuration
76
83
func (c Config ) Build (logger * zap.SugaredLogger , emit emit.Callback ) (* Manager , error ) {
77
84
if err := c .validate (); err != nil {
@@ -120,14 +127,14 @@ func (c Config) buildManager(logger *zap.SugaredLogger, emit emit.Callback, fact
120
127
return nil , fmt .Errorf ("invalid start_at location '%s'" , c .StartAt )
121
128
}
122
129
123
- var hs * headerSettings
130
+ var hCfg * header. Config
124
131
if c .Header != nil {
125
132
enc , err := c .Splitter .EncodingConfig .Build ()
126
133
if err != nil {
127
134
return nil , fmt .Errorf ("failed to create encoding: %w" , err )
128
135
}
129
136
130
- hs , err = c .Header .buildHeaderSettings ( enc .Encoding )
137
+ hCfg , err = header . NewConfig ( c .Header .Pattern , c . Header . MetadataOperators , enc .Encoding )
131
138
if err != nil {
132
139
return nil , fmt .Errorf ("failed to build header config: %w" , err )
133
140
}
@@ -150,7 +157,7 @@ func (c Config) buildManager(logger *zap.SugaredLogger, emit emit.Callback, fact
150
157
fromBeginning : startAtBeginning ,
151
158
splitterFactory : factory ,
152
159
encodingConfig : c .Splitter .EncodingConfig ,
153
- headerSettings : hs ,
160
+ headerConfig : hCfg ,
154
161
},
155
162
finder : c .MatchingCriteria ,
156
163
roller : newRoller (),
@@ -226,13 +233,13 @@ func (c Config) validate() error {
226
233
return errors .New ("`max_batches` must not be negative" )
227
234
}
228
235
229
- _ , err := c .Splitter .EncodingConfig .Build ()
236
+ enc , err := c .Splitter .EncodingConfig .Build ()
230
237
if err != nil {
231
238
return err
232
239
}
233
240
234
241
if c .Header != nil {
235
- if err := c .Header .validate ( ); err != nil {
242
+ if _ , err := header . NewConfig ( c .Header .Pattern , c . Header . MetadataOperators , enc . Encoding ); err != nil {
236
243
return fmt .Errorf ("invalid config for `header`: %w" , err )
237
244
}
238
245
}
0 commit comments