func (cmd *CreateRoute) CreateRoute(hostName string, domain models.DomainFields, space models.SpaceFields) (route models.Route, apiErr error) { cmd.ui.Say(T("Creating route {{.Hostname}} for org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ "Hostname": terminal.EntityNameColor(domain.UrlForHost(hostName)), "OrgName": terminal.EntityNameColor(cmd.config.OrganizationFields().Name), "SpaceName": terminal.EntityNameColor(space.Name), "Username": terminal.EntityNameColor(cmd.config.Username())})) route, apiErr = cmd.routeRepo.CreateInSpace(hostName, domain.Guid, space.Guid) if apiErr != nil { var findApiResponse error route, findApiResponse = cmd.routeRepo.FindByHostAndDomain(hostName, domain) if findApiResponse != nil || route.Space.Guid != space.Guid || route.Domain.Guid != domain.Guid { return } apiErr = nil cmd.ui.Ok() cmd.ui.Warn(T("Route {{.URL}} already exists", map[string]interface{}{"URL": route.URL()})) return } cmd.ui.Ok() return }
func (routeActor RouteActor) FindOrCreateRoute(hostname string, domain models.DomainFields) (route models.Route) { route, apiErr := routeActor.routeRepo.FindByHostAndDomain(hostname, domain) switch apiErr.(type) { case nil: routeActor.ui.Say(T("Using route {{.RouteURL}}", map[string]interface{}{"RouteURL": terminal.EntityNameColor(route.URL())})) case *errors.ModelNotFoundError: routeActor.ui.Say(T("Creating route {{.Hostname}}...", map[string]interface{}{"Hostname": terminal.EntityNameColor(domain.UrlForHost(hostname))})) route, apiErr = routeActor.routeRepo.Create(hostname, domain) if apiErr != nil { routeActor.ui.Failed(apiErr.Error()) } routeActor.ui.Ok() routeActor.ui.Say("") default: routeActor.ui.Failed(apiErr.Error()) } return }