50 lines
973 B
Go
50 lines
973 B
Go
|
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
|
||
|
}
|