(routeName string, app models.Application, appParamsFromContext models.AppParams)
| 189 | } |
| 190 | |
| 191 | func (routeActor routeActor) FindAndBindRoute(routeName string, app models.Application, appParamsFromContext models.AppParams) error { |
| 192 | routeWithoutPath, path := routeActor.FindPath(routeName) |
| 193 | |
| 194 | routeWithoutPathAndPort, port, err := routeActor.FindPort(routeWithoutPath) |
| 195 | if err != nil { |
| 196 | return err |
| 197 | } |
| 198 | |
| 199 | if len(appParamsFromContext.Domains) == 1 { |
| 200 | routeWithoutPathAndPort, err = routeActor.replaceDomain(routeWithoutPathAndPort, appParamsFromContext.Domains[0]) |
| 201 | if err != nil { |
| 202 | return err |
| 203 | } |
| 204 | } |
| 205 | |
| 206 | hostname, domain, err := routeActor.FindDomain(routeWithoutPathAndPort) |
| 207 | if err != nil { |
| 208 | return err |
| 209 | } |
| 210 | |
| 211 | if appParamsFromContext.RoutePath != nil && *appParamsFromContext.RoutePath != "" && domain.RouterGroupType != tcp { |
| 212 | path = *appParamsFromContext.RoutePath |
| 213 | } |
| 214 | |
| 215 | if appParamsFromContext.UseRandomRoute && domain.RouterGroupType != tcp { |
| 216 | hostname = randomword.NewGenerator().Babble() |
| 217 | } |
| 218 | |
| 219 | replaceHostname(domain.RouterGroupType, appParamsFromContext.Hosts, &hostname) |
| 220 | |
| 221 | err = validateRoute(domain.Name, domain.RouterGroupType, port, path) |
| 222 | if err != nil { |
| 223 | return err |
| 224 | } |
| 225 | |
| 226 | route, err := routeActor.FindOrCreateRoute(hostname, domain, path, port, appParamsFromContext.UseRandomRoute) |
| 227 | if err != nil { |
| 228 | return err |
| 229 | } |
| 230 | |
| 231 | return routeActor.BindRoute(app, route) |
| 232 | } |
| 233 | |
| 234 | func validateRoute(routeName string, domainType string, port int, path string) error { |
| 235 | if domainType == tcp && path != "" { |
nothing calls this directly
no test coverage detected