diff options
| author | siddharth ravikumar <s@ricketyspace.net> | 2022-06-12 19:23:08 -0400 | 
|---|---|---|
| committer | siddharth ravikumar <s@ricketyspace.net> | 2022-06-12 19:23:37 -0400 | 
| commit | 7abdb69a69c793a153275e8645253a6ba5f05721 (patch) | |
| tree | 9d1161ee32a5d499bb32db6ebf25613c355978d4 /main.go | |
| parent | 1c1e4caba9075e7aab26033d2d636d6de89b6dc6 (diff) | |
move "weather" stuff to its own package
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 97 | 
1 files changed, 2 insertions, 95 deletions
| @@ -13,11 +13,11 @@ import (  	"regexp"  	"strconv"  	"strings" -	"time"  	"ricketyspace.net/peach/nws"  	"ricketyspace.net/peach/photon"  	"ricketyspace.net/peach/version" +	"ricketyspace.net/peach/weather"  )  // Peach port. Defaults to 8151 @@ -36,35 +36,6 @@ var peachTemplates = template.Must(template.ParseFS(peachFS, "templates/*.tmpl")  // Lat,Long regex.  var latLngRegex = regexp.MustCompile(`/(-?[0-9]+\.?[0-9]+?),(-?[0-9]+\.?[0-9]+)`) -type Weather struct { -	Title           string -	Version         string -	Location        string -	Now             WeatherNow -	Q2HTimeline     WeatherTimeline // Q2H forecast of the next 12 hours. -	BiDailyTimeline WeatherTimeline // BiDaily forecast for the next 3 days. -} - -type WeatherNow struct { -	Temperature     int -	TemperatureUnit string -	Forecast        string -	WindSpeed       string -	WindDirection   string -} - -type WeatherPeriod struct { -	Name            string -	Forecast        string -	Hour            int -	Temperature     int -	TemperatureUnit string -} - -type WeatherTimeline struct { -	Periods []WeatherPeriod -} -  type Search struct {  	Title          string  	Version        string @@ -128,7 +99,7 @@ func showWeather(w http.ResponseWriter, lat, lng float32) {  	}  	// Make weather -	weather, err := NewWeather(forecastBundle.Point, +	weather, err := weather.NewWeather(forecastBundle.Point,  		forecastBundle.Forecast,  		forecastBundle.ForecastHourly)  	if err != nil { @@ -176,70 +147,6 @@ func serveStaticFile(w http.ResponseWriter, r *http.Request) {  	server.ServeHTTP(w, r)  } -func NewWeather(point *nws.Point, f, fh *nws.Forecast) (*Weather, error) { -	w := new(Weather) -	w.Location = fmt.Sprintf("%s, %s", -		strings.ToLower(point.Properties.RelativeLocation.Properties.City), -		strings.ToLower(point.Properties.RelativeLocation.Properties.State), -	) -	w.Title = w.Location -	w.Version = version.Version -	w.Now = WeatherNow{ -		Temperature:     fh.Properties.Periods[0].Temperature, -		TemperatureUnit: fh.Properties.Periods[0].TemperatureUnit, -		Forecast:        fh.Properties.Periods[0].ShortForecast, -		WindSpeed:       fh.Properties.Periods[0].WindSpeed, -		WindDirection:   fh.Properties.Periods[0].WindDirection, -	} - -	// Build Q2H timeline for the 12 hours. -	q2hPeriods := []WeatherPeriod{} -	max := 6 -	for i, period := range fh.Properties.Periods { -		if i%2 != 0 { -			continue // Take every other period -		} -		t, err := time.Parse(time.RFC3339, period.StartTime) -		if err != nil { -			return nil, err -		} -		p := WeatherPeriod{ -			Forecast:        period.DetailedForecast, -			Hour:            t.Hour(), -			Temperature:     period.Temperature, -			TemperatureUnit: period.TemperatureUnit, -		} -		q2hPeriods = append(q2hPeriods, p) -		if len(q2hPeriods) == max { -			break -		} -	} -	w.Q2HTimeline = WeatherTimeline{ -		Periods: q2hPeriods, -	} - -	// Build BiDaily  timeline for the next 3 days. -	bdPeriods := []WeatherPeriod{} -	max = 8 -	for _, period := range f.Properties.Periods { -		p := WeatherPeriod{ -			Name:            period.Name, -			Forecast:        period.DetailedForecast, -			Temperature:     period.Temperature, -			TemperatureUnit: period.TemperatureUnit, -		} -		bdPeriods = append(bdPeriods, p) -		if len(bdPeriods) == max { -			break -		} -	} -	w.BiDailyTimeline = WeatherTimeline{ -		Periods: bdPeriods, -	} - -	return w, nil -} -  func NewSearch(r *http.Request) (*Search, error) {  	s := new(Search)  	s.Title = "search" | 
