cosmos-sdk/tx/textual/valuerenderer/bytes.go
Jacob Gadikian 0943a70215
chore: fix linting issues exposed by fixing golangci-lint (#12895)
Co-authored-by: Marko <marbar3778@yahoo.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
2022-08-11 22:00:24 +02:00

34 lines
832 B
Go

package valuerenderer
import (
"context"
"encoding/base64"
"io"
"google.golang.org/protobuf/reflect/protoreflect"
)
// bytesValueRenderer implements ValueRenderer for bytes
type bytesValueRenderer struct{}
var _ ValueRenderer = bytesValueRenderer{}
func (vr bytesValueRenderer) Format(ctx context.Context, v protoreflect.Value, w io.Writer) error {
_, err := io.WriteString(w, base64.StdEncoding.EncodeToString(v.Bytes()))
return err
}
func (vr bytesValueRenderer) Parse(_ context.Context, r io.Reader) (protoreflect.Value, error) {
formatted, err := io.ReadAll(r)
if err != nil {
return protoreflect.ValueOfBytes([]byte{}), err
}
data, err := base64.StdEncoding.DecodeString(string(formatted))
if err != nil {
return protoreflect.ValueOfBytes([]byte{}), err
}
return protoreflect.ValueOfBytes(data), nil
}