package main import ( "encoding/json" "fmt" "io" "net/http" ) func commandExplore(p *PokedexConfig, a *string) error { if *a == "" { return fmt.Errorf("you need to specify an area to explore") } baseUrl := "https://pokeapi.co/api/v2/location-area/" + *a + "/" body, exists := p.Cache.Get(baseUrl) if !exists { 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.LocalPokemons); err != nil { return fmt.Errorf("could not unmarshal response! Err: %w", err) } for _, pokemon := range p.LocalPokemons.PokemonEncounters { fmt.Println(pokemon.PokemonSummary.Name) } return nil }