|
package utils |
|
|
|
import ( |
|
"encoding/base64" |
|
"fmt" |
|
"io" |
|
"net/http" |
|
"strings" |
|
"time" |
|
) |
|
|
|
var base64DownloadClient http.Client = http.Client{ |
|
Timeout: 30 * time.Second, |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func GetImageURLAsBase64(s string) (string, error) { |
|
if strings.HasPrefix(s, "http") { |
|
|
|
resp, err := base64DownloadClient.Get(s) |
|
if err != nil { |
|
return "", err |
|
} |
|
defer resp.Body.Close() |
|
|
|
|
|
data, err := io.ReadAll(resp.Body) |
|
if err != nil { |
|
return "", err |
|
} |
|
|
|
|
|
encoded := base64.StdEncoding.EncodeToString(data) |
|
|
|
|
|
return encoded, nil |
|
} |
|
|
|
|
|
dropPrefix := []string{"data:image/jpeg;base64,", "data:image/png;base64,"} |
|
for _, prefix := range dropPrefix { |
|
if strings.HasPrefix(s, prefix) { |
|
return strings.ReplaceAll(s, prefix, ""), nil |
|
} |
|
} |
|
return "", fmt.Errorf("not valid string") |
|
} |
|
|