diff --git a/go-weather b/go-weather new file mode 100755 index 0000000..0558354 Binary files /dev/null and b/go-weather differ diff --git a/main.go b/main.go index aebcc1f..e4695b6 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "log" "net/http" "os" + "time" ) type WeatherAPI struct { @@ -75,27 +76,25 @@ func main() { var city, code, api_key string flag.StringVar(&city, "city", "London", "Enter city e.g. London, Glasgow etc... (Default: London)") flag.StringVar(&code, "code", "uk", "Enter Code e.g. uk, us etc... (Default: uk)") - flag.StringVar(&code, "api", "none", "Enter Code e.g. uk, us etc... Default(none)") + flag.StringVar(&api_key, "api", "none", "Enter Code e.g. uk, us etc... Default(none)") flag.Parse() full := "https://api.openweathermap.org/data/2.5/weather?q=" + city + "," + code + "&units=metric" + "&appid=" + api_key + "" //read webpage - url := full - resp, err := http.Get(url) - //reads html as a slice of bytes - html, err := ioutil.ReadAll(resp.Body) - if err != nil { - panic(err) - } + html, _ := LoadWebPage(full) + //Create file CreateFile(string(html), false) - data, _ := LoadConfiguration("weather.json") - fmt.Println(data) + data, _ := LoadJson("weather.json") + + //print the weather! + PrintWeather(data) + } -func LoadConfiguration(file string) (WeatherAPI, error) { +func LoadJson(file string) (WeatherAPI, error) { var config WeatherAPI configFile, err := os.Open(file) if err != nil { @@ -107,8 +106,6 @@ func LoadConfiguration(file string) (WeatherAPI, error) { } func CreateFile(fileContents string, debugFlag bool) { - - fmt.Printf("Writing to a file in Go lang\n") file, err := os.Create("weather.json") if err != nil { log.Fatalf("failed creating file: %s", err) @@ -127,3 +124,32 @@ func CreateFile(fileContents string, debugFlag bool) { fmt.Printf("\nLength: %d bytes", len) } } + +func LoadWebPage(web_url string) ([]byte, error) { + url := web_url + resp, err := http.Get(url) + //reads html as a slice of bytes + html, err := ioutil.ReadAll(resp.Body) + if err != nil { + panic(err) + } + return html, err + +} + +func PrintWeather(data WeatherAPI) { + weatherData := data + + dt := time.Now() + fmt.Println(dt.Format("01/02/2006\t15:04")) + + str_loc := weatherData.Name + str_code := weatherData.Sys.Country + str_weather := weatherData.Weather[0].Main + str_weather_detail := weatherData.Weather[0].Description + str_temp := weatherData.Main.Temp + str_temp_fl := weatherData.Main.Feels_like + str_hum := weatherData.Main.Humidity + + fmt.Printf("Location: %v, %v\nWeather: %v (%v)\nTemp: %v°C (Feels like: %v°C)\nHumidity: %v", str_loc, str_code, str_weather, str_weather_detail, str_temp, str_temp_fl, str_hum) +}