From 2ac5b96ce7df6f3a6b6e90dc667f0a9d59e138d9 Mon Sep 17 00:00:00 2001 From: siddharth ravikumar Date: Tue, 7 Jun 2022 23:25:07 -0400 Subject: nws: `CacheWeather` -> `GetForecastBundle` --- nws/nws.go | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'nws') diff --git a/nws/nws.go b/nws/nws.go index 42317ac..c6940d0 100644 --- a/nws/nws.go +++ b/nws/nws.go @@ -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. -- cgit v1.2.3