package omdb import ( "fmt" "io/ioutil" "net/http" "os" ) const ( base = "http://www.omdbapi.com/?apikey=%s&i=%s" ) var cache map[string][]byte func Get(imdbID string) ([]byte, error) { if cache == nil { cache = make(map[string][]byte) } if b, ok := cache[imdbID]; ok { return b, nil } url := fmt.Sprintf(base, apiKey(), imdbID) resp, err := http.Get(url) if err != nil { return nil, fmt.Errorf("error getting %q: %w", url, err) } defer resp.Body.Close() b, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, fmt.Errorf("error reading body from %q: %w", url, err) } cache[imdbID] = b return b, nil } func apiKey() string { return os.Getenv("API_KEY") }