github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/cf/models/route.go (about)

     1  package models
     2  
     3  import (
     4  	"fmt"
     5  	"net/url"
     6  	"strings"
     7  )
     8  
     9  type Route struct {
    10  	GUID   string
    11  	Host   string
    12  	Domain DomainFields
    13  	Path   string
    14  	Port   int
    15  
    16  	Space           SpaceFields
    17  	Apps            []ApplicationFields
    18  	ServiceInstance ServiceInstanceFields
    19  }
    20  
    21  func (r Route) URL() string {
    22  	return (&RoutePresenter{
    23  		Host:   r.Host,
    24  		Domain: r.Domain.Name,
    25  		Path:   r.Path,
    26  		Port:   r.Port,
    27  	}).URL()
    28  }
    29  
    30  type RoutePresenter struct {
    31  	Host   string
    32  	Domain string
    33  	Path   string
    34  	Port   int
    35  }
    36  
    37  func (r *RoutePresenter) URL() string {
    38  	var host string
    39  	if r.Host != "" {
    40  		host = r.Host + "." + r.Domain
    41  	} else {
    42  		host = r.Domain
    43  	}
    44  
    45  	if r.Port != 0 {
    46  		host = fmt.Sprintf("%s:%d", host, r.Port)
    47  	}
    48  
    49  	u := url.URL{
    50  		Host: host,
    51  		Path: r.Path,
    52  	}
    53  
    54  	return strings.TrimPrefix(u.String(), "//") // remove the empty scheme
    55  }
    56  
    57  type ManifestRoute struct {
    58  	Route string
    59  }