Weather app: http requests
This commit is contained in:
34
go-demo-5/geo/geo.go
Normal file
34
go-demo-5/geo/geo.go
Normal 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
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"demo/weather/geo"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
@@ -8,15 +9,16 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// fmt.Println("Новый проект")
|
|
||||||
// name := flag.String("name", "Archie", "Имя пользователя")
|
|
||||||
// age := flag.Int("age", 49, "Возраст пользователя")
|
|
||||||
|
|
||||||
color.Green("__ПОГОДА__")
|
color.Green("__ПОГОДА__")
|
||||||
city := flag.String("city", "", "Город пользователя")
|
city := flag.String("city", "", "Город пользователя")
|
||||||
format := flag.Int("format", 1, "Формат вывода погоды")
|
// format := flag.Int("format", 1, "Формат вывода погоды")
|
||||||
|
|
||||||
flag.Parse()
|
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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user