goext/langext/base64.go
Mike Schwörer 23a3235c7e
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 2m33s
v0.0.582
2025-06-25 10:51:38 +02:00

25 lines
825 B
Go

package langext
import (
"encoding/base64"
"strings"
)
// DecodeBase64Any decodes a base64 encoded string
// Works with all variants (std, url, imap), padded and unpadded and even ignores linrebreaks and indents
func DecodeBase64Any(data string) ([]byte, error) {
data = strings.ReplaceAll(data, "\n", "") // remove linebreaks and indents
data = strings.ReplaceAll(data, "\t", "") // remove linebreaks and indents
data = strings.ReplaceAll(data, " ", "") // remove linebreaks and indents
data = strings.ReplaceAll(data, ",", "/") // base64_imap --> base64_std
data = strings.ReplaceAll(data, "_", "/") // base64_url --> base64_std
data = strings.ReplaceAll(data, "-", "+") // base64_url --> base64_std
data = strings.ReplaceAll(data, "=", "") // no padding
return base64.RawStdEncoding.DecodeString(data)
}