package main
import (
"compress/gzip"
"bytes"
"encoding/base64"
"fmt"
"log"
)
func main() {
input := "abc123"
result := zipEncode(input, true)
fmt.Println("Compressed and Base64 Encoded String:", result)
}
func zipEncode(str string, isZip bool) string {
var encodedStr string
if isZip {
compressed, err := compress(str)
if err != nil {
log.Fatalf("Compression failed: %v", err)
}
encodedStr = base64.StdEncoding.EncodeToString(compressed)
} else {
encodedStr = base64.StdEncoding.EncodeToString([]byte(str))
}
encodedStr = removeNewlines(encodedStr)
return encodedStr
}
func compress(str string) ([]byte, error) {
var buf bytes.Buffer
gzipWriter := gzip.NewWriter(&buf)
_, err := gzipWriter.Write([]byte(str))
if err != nil {
return nil, err
}
err = gzipWriter.Close()
if err != nil {
return nil, err
}
return buf.Bytes(), nil
}
func removeNewlines(str string) string {
return string(bytes.ReplaceAll([]byte(str), []byte("\n"), []byte("")))
}