package utils import ( "encoding/base64" "fmt" "io" "net/http" "time" ) // DownloadMedia downloads media from a URL and returns the data func DownloadMedia(url string) ([]byte, error) { client := &http.Client{ Timeout: 30 * time.Second, } resp, err := client.Get(url) if err != nil { return nil, fmt.Errorf("failed to download media: %w", err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("failed to download media: HTTP %d", resp.StatusCode) } data, err := io.ReadAll(resp.Body) if err != nil { return nil, fmt.Errorf("failed to read media data: %w", err) } return data, nil } // DecodeBase64 decodes a base64 string and returns the data func DecodeBase64(encoded string) ([]byte, error) { data, err := base64.StdEncoding.DecodeString(encoded) if err != nil { return nil, fmt.Errorf("failed to decode base64: %w", err) } return data, nil }