// FILE: internal/sources/nws/forecast_hourly.go package nws import ( "gitea.maximumdirect.net/ejr/feedkit/config" "gitea.maximumdirect.net/ejr/weatherfeeder/standards" ) // HourlyForecastSource polls an NWS hourly 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 (current implementation): // - standards.SchemaRawNWSHourlyForecastV1 type HourlyForecastSource struct { *forecastSource } func NewHourlyForecastSource(cfg config.SourceConfig) (*HourlyForecastSource, error) { const driver = "nws_forecast_hourly" src, err := newForecastSource(cfg, driver, standards.SchemaRawNWSHourlyForecastV1) if err != nil { return nil, err } return &HourlyForecastSource{forecastSource: src}, nil }