Centralize weather event and driver identifiers
This commit is contained in:
@@ -20,8 +20,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
driverConvectiveOutlook = "spc_convective_outlook"
|
||||
|
||||
acceptGeoJSON = "application/geo+json, application/json"
|
||||
acceptDiscussion = "text/html, application/xhtml+xml"
|
||||
acceptRSS = "application/rss+xml, application/xml, text/xml"
|
||||
@@ -58,24 +56,24 @@ type ConvectiveOutlookSource struct {
|
||||
func NewConvectiveOutlookSource(cfg config.SourceConfig) (*ConvectiveOutlookSource, error) {
|
||||
name := strings.TrimSpace(cfg.Name)
|
||||
if name == "" {
|
||||
return nil, fmt.Errorf("%s: name is required", driverConvectiveOutlook)
|
||||
return nil, fmt.Errorf("%s: name is required", DriverConvectiveOutlook)
|
||||
}
|
||||
if cfg.Params == nil {
|
||||
return nil, fmt.Errorf("%s %q: params are required", driverConvectiveOutlook, name)
|
||||
return nil, fmt.Errorf("%s %q: params are required", DriverConvectiveOutlook, name)
|
||||
}
|
||||
|
||||
userAgent, ok := cfg.ParamString("user_agent", "userAgent")
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("%s %q: params.user_agent is required", driverConvectiveOutlook, name)
|
||||
return nil, fmt.Errorf("%s %q: params.user_agent is required", DriverConvectiveOutlook, name)
|
||||
}
|
||||
|
||||
latitude, err := requireFloatParam(cfg, "latitude")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s %q: %w", driverConvectiveOutlook, name, err)
|
||||
return nil, fmt.Errorf("%s %q: %w", DriverConvectiveOutlook, name, err)
|
||||
}
|
||||
longitude, err := requireFloatParam(cfg, "longitude")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s %q: %w", driverConvectiveOutlook, name, err)
|
||||
return nil, fmt.Errorf("%s %q: %w", DriverConvectiveOutlook, name, err)
|
||||
}
|
||||
|
||||
timeout := transport.DefaultHTTPTimeout
|
||||
@@ -98,11 +96,11 @@ func NewConvectiveOutlookSource(cfg config.SourceConfig) (*ConvectiveOutlookSour
|
||||
|
||||
geoJSONProducts, err := configuredGeoJSONProducts(cfg)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s %q: %w", driverConvectiveOutlook, name, err)
|
||||
return nil, fmt.Errorf("%s %q: %w", DriverConvectiveOutlook, name, err)
|
||||
}
|
||||
discussions, err := configuredDiscussionProducts(cfg)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s %q: %w", driverConvectiveOutlook, name, err)
|
||||
return nil, fmt.Errorf("%s %q: %w", DriverConvectiveOutlook, name, err)
|
||||
}
|
||||
|
||||
rssURL := ""
|
||||
@@ -131,7 +129,7 @@ func NewConvectiveOutlookSource(cfg config.SourceConfig) (*ConvectiveOutlookSour
|
||||
func (s *ConvectiveOutlookSource) Name() string { return s.name }
|
||||
|
||||
func (s *ConvectiveOutlookSource) Kinds() []event.Kind {
|
||||
return []event.Kind{event.Kind("outlook")}
|
||||
return []event.Kind{event.Kind(standards.KindOutlook)}
|
||||
}
|
||||
|
||||
func (s *ConvectiveOutlookSource) Poll(ctx context.Context) ([]event.Event, error) {
|
||||
@@ -221,7 +219,7 @@ func (s *ConvectiveOutlookSource) Poll(ctx context.Context) ([]event.Event, erro
|
||||
eventID := fksources.DefaultEventID("", s.name, &effectiveAt, emittedAt)
|
||||
|
||||
return fksources.SingleEvent(
|
||||
event.Kind("outlook"),
|
||||
event.Kind(standards.KindOutlook),
|
||||
s.name,
|
||||
standards.SchemaRawSPCConvectiveOutlookV1,
|
||||
eventID,
|
||||
|
||||
@@ -22,7 +22,7 @@ func TestConvectiveOutlookSourceKinds(t *testing.T) {
|
||||
t.Fatalf("NewConvectiveOutlookSource() error = %v", err)
|
||||
}
|
||||
got := src.Kinds()
|
||||
if len(got) != 1 || got[0] != event.Kind("outlook") {
|
||||
if len(got) != 1 || got[0] != event.Kind(standards.KindOutlook) {
|
||||
t.Fatalf("Kinds() = %#v, want [outlook]", got)
|
||||
}
|
||||
}
|
||||
@@ -57,7 +57,7 @@ func TestConvectiveOutlookSourcePollEmitsRawBundle(t *testing.T) {
|
||||
t.Fatalf("Poll() returned %d events, want 1", len(events))
|
||||
}
|
||||
got := events[0]
|
||||
if got.Kind != event.Kind("outlook") {
|
||||
if got.Kind != event.Kind(standards.KindOutlook) {
|
||||
t.Fatalf("Kind = %q, want outlook", got.Kind)
|
||||
}
|
||||
if got.Schema != standards.SchemaRawSPCConvectiveOutlookV1 {
|
||||
@@ -277,7 +277,7 @@ func convectiveOutlookConfig(extra map[string]any) config.SourceConfig {
|
||||
}
|
||||
return config.SourceConfig{
|
||||
Name: "spc-test",
|
||||
Driver: driverConvectiveOutlook,
|
||||
Driver: DriverConvectiveOutlook,
|
||||
Mode: config.SourceModePoll,
|
||||
Params: params,
|
||||
}
|
||||
|
||||
6
internal/sources/spc/driver.go
Normal file
6
internal/sources/spc/driver.go
Normal file
@@ -0,0 +1,6 @@
|
||||
package spc
|
||||
|
||||
// Source driver strings registered by weatherfeeder for SPC sources.
|
||||
const (
|
||||
DriverConvectiveOutlook = "spc_convective_outlook"
|
||||
)
|
||||
Reference in New Issue
Block a user