package main

import (
	"fmt"
	"time"
)

func main() {

	SearchLocations("Somerville")

	return
	w := NewWeather()

	// if err := w.getLatest(); err != nil {
	// 	panic(err)
	// }

	fmt.Println(w)
}

type HourForecast struct {
	StartTime                  time.Time
	EndTime                    time.Time
	Temperature                float64
	TemperatureUnit            string
	ProbabilityOfPercipitation float64
	WindSpeed                  float64
	WindDirection              string
	Icon                       string
}

type Weather struct {
	*Location
	Forecast    []*HourForecast
	ForecastURL string
}

func NewWeather() *Weather {
	l := NewLocation()
	// try to set location
	// if err := l.getCoords(); err != nil {
	// 	panic(err)
	// }
	//
	// if err := l.getStation(); err != nil {
	// 	panic(err)
	// }

	return &Weather{
		Location: l,
	}
}

// func (w *Weather) getLatest() error {
// 	url := fmt.Sprintf("https://api.weather.gov/stations/%s/observations/latest", w.Location.Station)
//
// 	res, err := http.Get(url)
//
// 	if err != nil {
// 		return err
// 	}
//
// 	body, err := io.ReadAll(res.Body)
// 	res.Body.Close()
// 	if res.StatusCode > 299 {
// 		errMsg := fmt.Sprintf("Request failed with status code: %d\n", res.StatusCode)
// 		return errors.New(errMsg)
// 	}
//
// 	if err != nil {
// 		return err
// 	}
//
// 	temp := gjson.Get(string(body), "properties.temperature.value")
// 	humidity := gjson.Get(string(body), "properties.relativeHumidity.value")
// 	cond := gjson.Get(string(body), "properties.textDescription")
//
// 	// convert to Farenheit
// 	w.Temperature = temp.Float()*(9.0/5) + 32
// 	w.Humidity = humidity.Float()
// 	w.Conditions = cond.String()
//
// 	return nil
// }
//
// func (w *Weather) String() string {
// 	return fmt.Sprintf("%s %.1f deg %.1f%% RH in %s, %s", w.Conditions, w.Temperature, w.Humidity, w.Location.City, w.Location.State)
// }
