Skip to content

Commit d3383ad

Browse files
author
Arthur Silva Sens
committed
expfmt/encoder: Allow opt-in for OM created lines
Signed-off-by: Arthur Silva Sens <[email protected]>
1 parent 913b8f0 commit d3383ad

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

expfmt/encode.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,12 @@ func NegotiateIncludingOpenMetrics(h http.Header) Format {
115115
// for FmtOpenMetrics, but a future (breaking) release will add the Close method
116116
// to the Encoder interface directly. The current version of the Encoder
117117
// interface is kept for backwards compatibility.
118-
func NewEncoder(w io.Writer, format Format) Encoder {
118+
func NewEncoder(w io.Writer, format Format, options ...ToOpenMetricsOption) Encoder {
119+
toOM := toOpenMetrics{}
120+
for _, opt := range options {
121+
opt(&toOM)
122+
}
123+
119124
switch format {
120125
case FmtProtoDelim:
121126
return encoderCloser{
@@ -150,6 +155,18 @@ func NewEncoder(w io.Writer, format Format) Encoder {
150155
close: func() error { return nil },
151156
}
152157
case FmtOpenMetrics_0_0_1, FmtOpenMetrics_1_0_0:
158+
if toOM.withCreatedLines {
159+
return encoderCloser{
160+
encode: func(v *dto.MetricFamily) error {
161+
_, err := MetricFamilyToOpenMetrics(w, v, WithCreatedLines())
162+
return err
163+
},
164+
close: func() error {
165+
_, err := FinalizeOpenMetrics(w)
166+
return err
167+
},
168+
}
169+
}
153170
return encoderCloser{
154171
encode: func(v *dto.MetricFamily) error {
155172
_, err := MetricFamilyToOpenMetrics(w, v)

0 commit comments

Comments
 (0)