package getter import ( "fmt" "io" "net/http" "net/url" "strings" ) type Image struct { Blob []byte Mediatype string } func GetImage(urlStr string) (*Image, error) { if _, err := url.Parse(urlStr); err != nil { return nil, err } response, err := http.Get(urlStr) if err != nil { return nil, err } defer response.Body.Close() mediatype, err := getMediatype(response) if err != nil { return nil, err } if !strings.HasPrefix(mediatype, "image/") { return nil, fmt.Errorf("Wrong image mediatype") } bodyBytes, err := io.ReadAll(response.Body) if err != nil { return nil, err } image := &Image{ Blob: bodyBytes, Mediatype: mediatype, } return image, nil }