package main import ( "encoding/json" "fmt" "io" "net/http" ) func commandMapb(p *PokedexConfig, a *string) error { var baseUrl string if p.LocationData.Previous == nil { fmt.Println("you're on the first page") return nil } else { baseUrl = *p.LocationData.Previous } var body []byte if resp, exists := p.Cache.Get(baseUrl); exists { body = resp } else { client := &http.Client{} resp, err := client.Get(baseUrl) if err != nil { return fmt.Errorf("could not make request to Pokedex API! Err: %w", err) } body, err = io.ReadAll(resp.Body) defer resp.Body.Close() if resp.StatusCode > 299 { return fmt.Errorf("request returned non-200 code! Code: %v Body: %v", resp.StatusCode, body) } if err != nil { return fmt.Errorf("could not read request body! Err: %w", err) } p.Cache.Add(baseUrl, body) } if err := json.Unmarshal(body, &p.LocationData); err != nil { return fmt.Errorf("could not unmarshal response! Err: %w", err) } for _, location := range p.LocationData.Locations { fmt.Println(location["name"]) } return nil }