package main import ( "io/ioutil" "net/http" "strings" "errors" ) const ( noaa = `http://weather.noaa.gov/pub/data/observations/metar/` noaaDecoded = noaa + `decoded/` noaaStations = noaa + `stations/` ) var notFound = errors.New("not found") func FetchMetar(s string) ([]string, error) { loc := noaaStations + strings.ToUpper(s[:4]) + ".TXT" resp, err := http.Get(loc) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode == http.StatusNotFound { return nil, notFound } body, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, err } return strings.Split(strings.TrimSpace(string(body)), "\n"), nil }