package nws import ( "context" "fmt" "strings" "gitea.maximumdirect.net/ejr/feedkit/config" "gitea.maximumdirect.net/ejr/feedkit/event" ) type ForecastSource struct { name string url string userAgent string } func NewForecastSource(cfg config.SourceConfig) (*ForecastSource, error) { if strings.TrimSpace(cfg.Name) == "" { return nil, fmt.Errorf("nws_forecast: name is required") } if cfg.Params == nil { return nil, fmt.Errorf("nws_forecast %q: params are required (need params.url and params.user_agent)", cfg.Name) } url, ok := cfg.ParamString("url", "URL") if !ok { return nil, fmt.Errorf("nws_forecast %q: params.url is required", cfg.Name) } ua, ok := cfg.ParamString("user_agent", "userAgent") if !ok { return nil, fmt.Errorf("nws_forecast %q: params.user_agent is required", cfg.Name) } return &ForecastSource{ name: cfg.Name, url: url, userAgent: ua, }, nil } func (s *ForecastSource) Name() string { return s.name } // Kind is used for routing/policy. func (s *ForecastSource) Kind() event.Kind { return event.Kind("forecast") } func (s *ForecastSource) Poll(ctx context.Context) ([]event.Event, error) { _ = ctx return nil, fmt.Errorf("nws.ForecastSource.Poll: TODO implement (url=%s)", s.url) }