diff --git a/go-demo-5/.vscode/launch.json b/go-demo-5/.vscode/launch.json new file mode 100644 index 0000000..a1b4469 --- /dev/null +++ b/go-demo-5/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Используйте IntelliSense, чтобы узнать о возможных атрибутах. + // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. + // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${fileDirname}" + } + ] +} \ No newline at end of file diff --git a/go-demo-5/main.go b/go-demo-5/main.go index 975ee2f..72c885d 100644 --- a/go-demo-5/main.go +++ b/go-demo-5/main.go @@ -2,6 +2,7 @@ package main import ( "demo/weather/geo" + "demo/weather/weather" "flag" "fmt" @@ -11,7 +12,7 @@ import ( func main() { color.Green("__ПОГОДА__") city := flag.String("city", "", "Город пользователя") - // format := flag.Int("format", 1, "Формат вывода погоды") + format := flag.Int("format", 1, "Формат вывода погоды") flag.Parse() @@ -20,5 +21,7 @@ func main() { if err != nil { fmt.Println(err.Error()) } - fmt.Println(*geoData) + // fmt.Println(*geoData) + weatherData := weather.GetWeather(*geoData, *format) + fmt.Println(weatherData) } diff --git a/go-demo-5/weather/weather.go b/go-demo-5/weather/weather.go new file mode 100644 index 0000000..2cc6a0a --- /dev/null +++ b/go-demo-5/weather/weather.go @@ -0,0 +1,31 @@ +package weather + +import ( + "demo/weather/geo" + "fmt" + "io" + "net/http" + "net/url" +) + +func GetWeather(geo geo.GeoData, format int) string { + baseUrl, err := url.Parse("https://wttr.in/" + geo.City) + if err != nil { + fmt.Println(err.Error()) + return "" + } + params := url.Values{} + params.Add("format", fmt.Sprint(format)) + baseUrl.RawQuery = params.Encode() + resp, err := http.Get(baseUrl.String()) + if err != nil { + fmt.Println(err.Error()) + return "" + } + body, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Println(err.Error()) + return "" + } + return string(body) +}