blob: 1485cca2235419b13a496e02f15790e44a4e74c8 [file] [log] [blame]
package util
import (
"bytes"
"encoding/base64"
"veyron.io/veyron/veyron2/vom"
)
// Bas64VomEncode returns the base64 encoding of the serialization of i with
// vom.
func Base64VomEncode(i interface{}) (string, error) {
buf := &bytes.Buffer{}
closer := base64.NewEncoder(base64.URLEncoding, buf)
if err := vom.NewEncoder(closer).Encode(i); err != nil {
return "", err
}
// Must close the base64 encoder to flush out any partially written
// blocks.
if err := closer.Close(); err != nil {
return "", err
}
return buf.String(), nil
}
// Base64VomDecode is the reverse of encode - filling in i after vom-decoding
// the base64-encoded string s.
func Base64VomDecode(s string, i interface{}) error {
b, err := base64.URLEncoding.DecodeString(s)
if err != nil {
return err
}
return vom.NewDecoder(bytes.NewBuffer(b)).Decode(i)
}