ValidateRoute processes a route definition through all configured preprocessors and validates that all resulting routes can be successfully processed. This function is specifically designed for validation webhooks where: - Preprocessors may add additional routes (like OAuth callback routes) - All r
(o *Options, def *eskip.Route)
| 498 | // |
| 499 | // Returns an error if any preprocessor fails or any resulting route is invalid. |
| 500 | func ValidateRoute(o *Options, def *eskip.Route) error { |
| 501 | mdef := []*eskip.Route{def} |
| 502 | for _, preprocessor := range o.PreProcessors { |
| 503 | mdef = preprocessor.Do(mdef) |
| 504 | if len(mdef) == 0 { |
| 505 | return fmt.Errorf("preprocessing route failed while validating") |
| 506 | } |
| 507 | } |
| 508 | |
| 509 | mp := mapPredicates(o.Predicates) |
| 510 | var validatedRoutes []*Route |
| 511 | |
| 512 | cleanUp := func() { |
| 513 | for _, route := range validatedRoutes { |
| 514 | closeFilters(route.Filters) |
| 515 | } |
| 516 | } |
| 517 | for _, r := range mdef { |
| 518 | route, err := processRouteDef(o, mp, r) |
| 519 | if err != nil { |
| 520 | cleanUp() |
| 521 | return err |
| 522 | } |
| 523 | validatedRoutes = append(validatedRoutes, route) |
| 524 | } |
| 525 | |
| 526 | defer cleanUp() |
| 527 | |
| 528 | return nil |
| 529 | } |
| 530 | |
| 531 | // processes a route definition for the routing table |
| 532 | func processRouteDef(o *Options, cpm map[string]PredicateSpec, def *eskip.Route) (*Route, error) { |
no test coverage detected
searching dependent graphs…