package main import ( "encoding/json" "fmt" "log" "net/http" "os" ) const UPSTREAM_URL = "https://keyserver.freifunk-franken.de/v2/" func run() error { var root []root err := os.Mkdir("hoods", 0777) if err != nil { return err } res, err := http.Get(UPSTREAM_URL + "hoods.php") if err != nil { return err } defer res.Body.Close() err = json.NewDecoder(res.Body).Decode(&root) if err != nil { return err } for _, h := range root { res, err := http.Get(fmt.Sprintf("%s/?hoodid=%d", UPSTREAM_URL, h.Id)) if err != nil { return err } defer res.Body.Close() var hood Hood err = json.NewDecoder(res.Body).Decode(&hood) if err != nil { return err } if len(h.Polygons) == 0 { hood.Location = []HoodCoordinate{{Lat: h.Lat, Long: h.Long}} } else { hood.Location = []HoodCoordinate{} for _, p := range h.Polygons[0] { hood.Location = append(hood.Location, HoodCoordinate{Lat: p.Lat, Long: p.Long}) } } b, err := json.MarshalIndent(hood, "", " ") if err != nil { return err } err = os.WriteFile("hoods/"+hood.HoodInfo.Name+".json", b, 0666) if err != nil { return err } } return nil } func main() { if err := run(); err != nil { log.Fatal(err) } }