util/region.go (22 lines of code) (raw):

package util import ( "fmt" "regexp" "strings" ) const ENDPOINT_REGEX_PATTERN = `^(?:http[s]?:\/\/)?([a-z-0-9]+)\.(?:sls|log)\.aliyuncs\.com$` var regionSuffixs = []string{"-intranet", "-share", "-vpc"} func ParseRegion(endpoint string) (string, error) { var re = regexp.MustCompile(ENDPOINT_REGEX_PATTERN) groups := re.FindStringSubmatch(endpoint) if groups == nil { return "", fmt.Errorf("invalid endpoint format: %s", endpoint) } region := groups[1] for _, suffix := range regionSuffixs { if strings.HasSuffix(region, suffix) { return region[:len(region)-len(suffix)], nil } } return region, nil }