package openweather import ( "fmt" "net/url" "strings" ) // RequireMetricUnits enforces weatherfeeder's OpenWeather invariant: // the request URL must include units=metric (otherwise temperatures/winds/pressure differ). func RequireMetricUnits(rawURL string) error { u, err := url.Parse(strings.TrimSpace(rawURL)) if err != nil { return fmt.Errorf("invalid url %q: %w", rawURL, err) } units := strings.ToLower(strings.TrimSpace(u.Query().Get("units"))) if units != "metric" { if units == "" { units = "(missing; defaults to standard)" } return fmt.Errorf("url must include units=metric (got units=%s)", units) } return nil }