refactor(providers): centralize provider-specific parsing and invariants
- Introduce internal/providers/nws with shared timestamp parsing used by both NWS sources and normalizers - Migrate NWS observation source + normalizer to use the shared provider helper for consistent RFC3339/RFC3339Nano handling - Introduce internal/providers/openweather with a shared URL invariant helper enforcing units=metric - Remove duplicated OpenWeather URL validation logic from the observation source - Align provider layering: move provider “contract/quirk” logic out of normalizers and into internal/providers - Update normalizer and standards documentation to clearly distinguish: provider helpers (internal/providers) vs canonical mapping logic (internal/normalizers) This refactor reduces duplication between sources and normalizers, clarifies layering boundaries, and establishes a scalable pattern for future forecast and alert implementations.
This commit is contained in:
@@ -36,6 +36,10 @@
|
||||
// 2. Provider-level shared helpers live under the provider directory:
|
||||
// internal/normalizers/<provider>/
|
||||
//
|
||||
// Use this for provider-specific quirks that should be shared by BOTH sources
|
||||
// and normalizers (time parsing, URL/unit invariants, ID normalization, etc.).
|
||||
// Keep these helpers pure (no I/O) and easy to test.
|
||||
//
|
||||
// You may use multiple helper files (recommended) when it improves clarity:
|
||||
// - types.go (provider JSON structs)
|
||||
// - common.go (provider-shared helpers)
|
||||
|
||||
Reference in New Issue
Block a user