weather-cli/cmd/client/location.go

56 lines
1 KiB
Go

package main
import (
"bufio"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"strings"
)
func getLocation(app *application) {
res, err := http.Get("https://ipinfo.io/json")
if err != nil {
fmt.Println("Unable to automatically obtain location, please try again.")
log.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
log.Println(err)
}
err = json.Unmarshal(body, &app.Config)
if err != nil {
log.Println(err)
}
loc := strings.Split(app.Config.Location, ",")
app.Config.Latitude, app.Config.Longitude = loc[0], loc[1]
}
func getPreciseLocation(app *application) {
fmt.Print("\nEnter longitude: ")
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
log.Println(err)
}
app.Config.Longitude = strings.TrimSuffix(input, "\n")
fmt.Print("\nEnter latitude: ")
input, err = reader.ReadString('\n')
if err != nil {
log.Println(err)
}
app.Config.Latitude = strings.TrimSuffix(input, "\n")
}