github.com/kubeshop/testkube@v1.17.23/pkg/executor/output/writer.go (about)

     1  package output
     2  
     3  import (
     4  	"encoding/json"
     5  	"io"
     6  
     7  	"github.com/kubeshop/testkube/pkg/executor/env"
     8  )
     9  
    10  // NewJSONWrapWriter returns new NewJSONWrapWriter instance
    11  func NewJSONWrapWriter(writer io.Writer, envMngr env.Interface) *JSONWrapWriter {
    12  	return &JSONWrapWriter{
    13  		encoder:    json.NewEncoder(writer),
    14  		envManager: envMngr,
    15  	}
    16  }
    17  
    18  // JSONWrapWriter wraps bytes stream into json Output of type line
    19  type JSONWrapWriter struct {
    20  	encoder    *json.Encoder
    21  	envManager env.Interface
    22  }
    23  
    24  // Write io.Writer method implementation
    25  func (w *JSONWrapWriter) Write(p []byte) (int, error) {
    26  	if w.envManager != nil {
    27  		p = w.envManager.ObfuscateSecrets(p)
    28  	}
    29  	return len(p), w.encoder.Encode(NewOutputLine(p))
    30  }