package couchbase import ( "fmt" "net/url" "strings" ) // CleanupHost returns the hostname with the given suffix removed. func CleanupHost(h, commonSuffix string) string { if strings.HasSuffix(h, commonSuffix) { return h[:len(h)-len(commonSuffix)] } return h } // FindCommonSuffix returns the longest common suffix from the given // strings. func FindCommonSuffix(input []string) string { rv := "" if len(input) < 2 { return "" } from := input for i := len(input[0]); i > 0; i-- { common := true suffix := input[0][i:] for _, s := range from { if !strings.HasSuffix(s, suffix) { common = false break } } if common { rv = suffix } } return rv } // ParseURL is a wrapper around url.Parse with some sanity-checking func ParseURL(urlStr string) (result *url.URL, err error) { result, err = url.Parse(urlStr) if result != nil && result.Scheme == "" { result = nil err = fmt.Errorf("invalid URL <%s>", urlStr) } return }