Weather app: http requests

This commit is contained in:
Archie Fox
2025-03-24 21:10:02 +03:00
parent 5ee00ccd62
commit f162a3300d
2 changed files with 42 additions and 6 deletions

34
go-demo-5/geo/geo.go Normal file
View File

@@ -0,0 +1,34 @@
package geo
import (
"encoding/json"
"errors"
"io"
"net/http"
)
type GeoData struct {
City string `json:"city"`
}
func GetMyLocation(city string) (*GeoData, error) {
if city != "" {
return &GeoData{
City: city,
}, nil
}
resp, err := http.Get("https://ipapi.co/json/")
if err != nil {
return nil, err
}
if resp.StatusCode != 200 {
return nil, errors.New("NOT200")
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
var geo GeoData
json.Unmarshal(body, &geo)
return &geo, nil
}

View File

@@ -1,6 +1,7 @@
package main
import (
"demo/weather/geo"
"flag"
"fmt"
@@ -8,15 +9,16 @@ import (
)
func main() {
// fmt.Println("Новый проект")
// name := flag.String("name", "Archie", "Имя пользователя")
// age := flag.Int("age", 49, "Возраст пользователя")
color.Green("__ПОГОДА__")
city := flag.String("city", "", "Город пользователя")
format := flag.Int("format", 1, "Формат вывода погоды")
// format := flag.Int("format", 1, "Формат вывода погоды")
flag.Parse()
fmt.Printf("Город: %s, формат: %d\n", *city, *format)
fmt.Printf("Город: %s\n", *city)
geoData, err := geo.GetMyLocation(*city)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(*geoData)
}