I'm trying to base64 decode HTTP request, then decode it using JSON decoder.
I tried two ways to implement base64 decoder:
func decode(encoded []byte) ([]byte, error) {
buff := new(bytes.Buffer)
decoder := base64.NewDecoder(base64.StdEncoding, buff)
_, err := decoder.Read(encoded)
return buff.Bytes(), err
}
This function returns an EOF error. Go playground link: https://play.golang.org/p/038rEXWYW6q
func decode(encoded []byte) ([]byte, error) {
decoded := make([]byte, base64.StdEncoding.EncodedLen(len(encoded)))
_, err := base64.StdEncoding.Decode(decoded, encoded)
return decoded, err
}
This works but has extra x\00
characters so when decoding JSON we would have invalid character '\x00' after top-level value
error.
Where is the problem with the first strategy?