mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-11 16:24:11 +01:00
Required for compatibility with the Python HTTP client. In addition, this commit refactors function names and adds tests. Signed-off-by: Michael Mayer <michael@photoprism.app>
51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
package media
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"io"
|
|
)
|
|
|
|
// EncodeBase64String returns the base64 encoding of bin.
|
|
func EncodeBase64String(bin []byte) string {
|
|
return base64.StdEncoding.EncodeToString(bin)
|
|
}
|
|
|
|
// EncodedLenBase64 returns the length in bytes of the base64 encoding of an input buffer of length n.
|
|
func EncodedLenBase64(decodedBytes int) int {
|
|
return base64.StdEncoding.EncodedLen(decodedBytes)
|
|
}
|
|
|
|
// DecodeBase64String returns the bytes represented by the base64 string s.
|
|
// If the input is malformed, it returns the partially decoded data and
|
|
// [CorruptInputError]. Newline characters (\r and \n) are ignored.
|
|
func DecodeBase64String(s string) ([]byte, error) {
|
|
return base64.StdEncoding.DecodeString(s)
|
|
}
|
|
|
|
// ReadBase64 returns a new reader that decodes base64 and returns binary data.
|
|
func ReadBase64(stream io.Reader) io.Reader {
|
|
return base64.NewDecoder(base64.StdEncoding, stream)
|
|
}
|
|
|
|
// EncodeBase64Bytes encodes src, writing EncodedLenBase64 bytes to dst.
|
|
//
|
|
// The encoding pads the output to a multiple of 4 bytes,
|
|
// so Encode is not appropriate for use on individual blocks
|
|
// of a large data stream.
|
|
func EncodeBase64Bytes(dst, src []byte) {
|
|
base64.StdEncoding.Encode(dst, src)
|
|
}
|
|
|
|
// DecodedLenBase64 returns the maximum length in bytes of the decoded data
|
|
// corresponding to n bytes of base64-encoded data.
|
|
func DecodedLenBase64(encodedBytes int) int {
|
|
return base64.StdEncoding.DecodedLen(encodedBytes)
|
|
}
|
|
|
|
// DecodeBase64Bytes decodes src, writing at most DecodedLenBase64 bytes to dst.
|
|
// If src contains invalid base64 data, it returns the number of bytes successfully
|
|
// written. New line characters (\r and \n) are ignored.
|
|
func DecodeBase64Bytes(dst, src []byte) (n int, err error) {
|
|
return base64.StdEncoding.Decode(dst, src)
|
|
}
|