29 lines
878 B
Go
29 lines
878 B
Go
// FILE: internal/sources/nws/forecast_narrative.go
|
|
package nws
|
|
|
|
import (
|
|
"gitea.maximumdirect.net/ejr/feedkit/config"
|
|
"gitea.maximumdirect.net/ejr/weatherfeeder/standards"
|
|
)
|
|
|
|
// NarrativeForecastSource polls an NWS narrative forecast endpoint and emits a RAW forecast Event.
|
|
//
|
|
// It intentionally emits the *entire* upstream payload as json.RawMessage and only decodes
|
|
// minimal metadata for Event.EffectiveAt and Event.ID.
|
|
//
|
|
// Output schema:
|
|
// - standards.SchemaRawNWSNarrativeForecastV1
|
|
type NarrativeForecastSource struct {
|
|
*forecastSource
|
|
}
|
|
|
|
func NewNarrativeForecastSource(cfg config.SourceConfig) (*NarrativeForecastSource, error) {
|
|
const driver = "nws_forecast_narrative"
|
|
src, err := newForecastSource(cfg, driver, standards.SchemaRawNWSNarrativeForecastV1)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &NarrativeForecastSource{forecastSource: src}, nil
|
|
}
|