fix(route): remove x-properties routes during loading
Some checks failed
Docker Image CI (socket-proxy) / build (push) Has been cancelled

This commit is contained in:
yusing 2025-06-07 22:28:44 +08:00
parent a90d2b90d1
commit cfe0f6bb70
3 changed files with 22 additions and 3 deletions

View file

@ -33,8 +33,17 @@ func FileProviderImpl(filename string) (ProviderImpl, error) {
return impl, nil
}
func removeXPrefix(m map[string]any) gperr.Error {
for alias := range m {
if strings.HasPrefix(alias, "x-") {
delete(m, alias)
}
}
return nil
}
func validate(data []byte) (routes route.Routes, err gperr.Error) {
err = serialization.UnmarshalValidateYAML(data, &routes)
err = serialization.UnmarshalValidateYAMLIntercept(data, &routes, removeXPrefix)
return
}

View file

@ -433,8 +433,7 @@ func (r *Route) ShouldExclude() bool {
} else if r.IsZeroPort() && r.Scheme != route.SchemeFileServer {
return true
}
if strings.HasPrefix(r.Alias, "x-") ||
strings.HasSuffix(r.Alias, "-old") {
if strings.HasSuffix(r.Alias, "-old") {
return true
}
return false

View file

@ -528,6 +528,17 @@ func UnmarshalValidateYAML[T any](data []byte, target *T) gperr.Error {
return MapUnmarshalValidate(m, target)
}
func UnmarshalValidateYAMLIntercept[T any](data []byte, target *T, intercept func(m map[string]any) gperr.Error) gperr.Error {
m := make(map[string]any)
if err := yaml.Unmarshal(data, &m); err != nil {
return gperr.Wrap(err)
}
if err := intercept(m); err != nil {
return err
}
return MapUnmarshalValidate(m, target)
}
func UnmarshalValidateYAMLXSync[V any](data []byte) (_ functional.Map[string, V], err gperr.Error) {
m := make(map[string]any)
if err = gperr.Wrap(yaml.Unmarshal(data, &m)); err != nil {