diff options
author | siddharth ravikumar <s@ricketyspace.net> | 2022-06-07 23:25:07 -0400 |
---|---|---|
committer | siddharth ravikumar <s@ricketyspace.net> | 2022-06-07 23:25:07 -0400 |
commit | 2ac5b96ce7df6f3a6b6e90dc667f0a9d59e138d9 (patch) | |
tree | e9078d9498038adf8ecab27bf74fb79bf4d6d039 /nws/nws.go | |
parent | 1f15e5fd836ed6ce398891aa215a1020b9f82044 (diff) |
nws: `CacheWeather` -> `GetForecastBundle`
Diffstat (limited to 'nws/nws.go')
-rw-r--r-- | nws/nws.go | 42 |
1 files changed, 38 insertions, 4 deletions
@@ -66,6 +66,13 @@ type Error struct { Detail string } +// NWS Forecast bundle. +type ForecastBundle struct { + Point *Point + Forecast *Forecast + ForecastHourly *Forecast +} + var pCache *cache.Cache var fCache *cache.Cache var fhCache *cache.Cache @@ -80,13 +87,40 @@ func (e Error) Error() string { return fmt.Sprintf("%d: %s: %s", e.Status, e.Type, e.Detail) } -func CacheWeather(lat, lng float32) { +// Gets NWS's forecast and hourly forecast. +func GetForecastBundle(lat, lng float32) (*ForecastBundle, *Error) { p, err := Points(lat, lng) if err != nil { - return + return nil, &Error{ + Title: "unable get points", + Type: "points-failed", + Status: 500, + Detail: err.Error(), + } + } + f, err := GetForecast(p) + if err != nil { + return nil, &Error{ + Title: "unable get forecast", + Type: "forecast-failed", + Status: 500, + Detail: err.Error(), + } + } + fh, err := GetForecastHourly(p) + if err != nil { + return nil, &Error{ + Title: "unable get hourly forecast", + Type: "forecast-hourly-failed", + Status: 500, + Detail: err.Error(), + } } - GetForecast(p) - GetForecastHourly(p) + return &ForecastBundle{ + Point: p, + Forecast: f, + ForecastHourly: fh, + }, nil } // NWS `/points` endpoint. |