package nws import ( "context" "fmt" "gitea.maximumdirect.net/ejr/feedkit/config" "gitea.maximumdirect.net/ejr/feedkit/event" "gitea.maximumdirect.net/ejr/weatherfeeder/internal/sources/common" ) // AlertsSource polls an NWS alerts endpoint and will emit RAW alert Events. // For now Poll remains TODO; this file just migrates to the shared HTTPSource spine. type AlertsSource struct { http *common.HTTPSource } func NewAlertsSource(cfg config.SourceConfig) (*AlertsSource, error) { const driver = "nws_alerts" // NWS APIs are typically GeoJSON; allow fallback to plain JSON as well. hs, err := common.NewHTTPSource(driver, cfg, "application/geo+json, application/json") if err != nil { return nil, err } return &AlertsSource{http: hs}, nil } func (s *AlertsSource) Name() string { return s.http.Name } // Kind is used for routing/policy. // The envelope type is event.Event; payload will eventually normalize into model.WeatherAlert. func (s *AlertsSource) Kind() event.Kind { return event.Kind("alert") } func (s *AlertsSource) Poll(ctx context.Context) ([]event.Event, error) { _ = ctx return nil, fmt.Errorf("nws.AlertsSource.Poll: TODO implement") }