Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
973 B
49 lines
973 B
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 |
|
}
|
|
|