59 lines
2.4 KiB
Go
59 lines
2.4 KiB
Go
package briefing
|
|
|
|
import "gitea.maximumdirect.net/eric/weatherreporter/internal/module"
|
|
|
|
type CurrentConditionsModule struct {
|
|
ConditionText string `json:"condition_text,omitempty"`
|
|
IsDay *bool `json:"is_day,omitempty"`
|
|
TemperatureC *float64 `json:"temperature_c,omitempty"`
|
|
TemperatureF *float64 `json:"temperature_f,omitempty"`
|
|
ApparentTemperatureC *float64 `json:"apparent_temperature_c,omitempty"`
|
|
ApparentTemperatureF *float64 `json:"apparent_temperature_f,omitempty"`
|
|
DewpointC *float64 `json:"dewpoint_c,omitempty"`
|
|
DewpointF *float64 `json:"dewpoint_f,omitempty"`
|
|
RelativeHumidityPercent *float64 `json:"relative_humidity_percent,omitempty"`
|
|
WindSpeedKmh *float64 `json:"wind_speed_kmh,omitempty"`
|
|
WindSpeedMph *float64 `json:"wind_speed_mph,omitempty"`
|
|
WindDirection string `json:"wind_direction,omitempty"`
|
|
}
|
|
|
|
func buildCurrentConditionsModule(ctx ModuleContext, _ any) (*module.Output, error) {
|
|
current := ctx.Collected.Current
|
|
if current == nil {
|
|
return nil, nil
|
|
}
|
|
value := CurrentConditionsModule{
|
|
ConditionText: current.ConditionText,
|
|
IsDay: copyBool(current.IsDay),
|
|
TemperatureC: copyFloat(current.TemperatureC),
|
|
TemperatureF: copyFloat(current.TemperatureF),
|
|
ApparentTemperatureC: copyFloat(current.ApparentTemperatureC),
|
|
ApparentTemperatureF: copyFloat(current.ApparentTemperatureF),
|
|
DewpointC: copyFloat(current.DewpointC),
|
|
DewpointF: copyFloat(current.DewpointF),
|
|
RelativeHumidityPercent: copyFloat(current.RelativeHumidityPercent),
|
|
WindSpeedKmh: copyFloat(current.WindSpeedKmh),
|
|
WindSpeedMph: copyFloat(current.WindSpeedMph),
|
|
WindDirection: windDirectionLabel(current.WindDirectionDegrees),
|
|
}
|
|
if value.isEmpty() {
|
|
return nil, nil
|
|
}
|
|
return &module.Output{ID: module.CurrentConditions, StanzaName: "current_conditions", Value: value}, nil
|
|
}
|
|
|
|
func (v CurrentConditionsModule) isEmpty() bool {
|
|
return v.ConditionText == "" &&
|
|
v.IsDay == nil &&
|
|
v.TemperatureC == nil &&
|
|
v.TemperatureF == nil &&
|
|
v.ApparentTemperatureC == nil &&
|
|
v.ApparentTemperatureF == nil &&
|
|
v.DewpointC == nil &&
|
|
v.DewpointF == nil &&
|
|
v.RelativeHumidityPercent == nil &&
|
|
v.WindSpeedKmh == nil &&
|
|
v.WindSpeedMph == nil &&
|
|
v.WindDirection == ""
|
|
}
|