oss/endpoints.go (45 lines of code) (raw):

package oss import ( "fmt" "regexp" ) type EndpointType int const ( // Access OSS over the public network, oss-[region].aliyuncs.com EndpointPublic EndpointType = iota // Access OSS over the internal network, oss-[region]-internal.aliyuncs.com EndpointInternal // Access OSS over the global acceleration endpoint, oss-accelerate.aliyuncs.com EndpointAccelerate // Access OSS over the acceleration endpoint outside the Chinese mainland, oss-accelerate-overseas.aliyuncs.com EndpointAccelerateOverseas // Access OSS over the dual stack endpoint that support both IPv4 and IPv6, [region].oss.aliyuncs.com EndpointDualStack ) var schemeRE = regexp.MustCompile("^([^:]+)://") func addEndpointScheme(endpoint string, disableSSL bool) string { if endpoint != "" && !schemeRE.MatchString(endpoint) { scheme := DefaultEndpointScheme if disableSSL { scheme = "http" } endpoint = fmt.Sprintf("%s://%s", scheme, endpoint) } return endpoint } func endpointFromRegion(region string, disableSSL bool, etype EndpointType) string { scheme := DefaultEndpointScheme if disableSSL { scheme = "http" } var endpoint string switch etype { case EndpointInternal: endpoint = fmt.Sprintf("oss-%s-internal.aliyuncs.com", region) case EndpointDualStack: endpoint = fmt.Sprintf("%s.oss.aliyuncs.com", region) case EndpointAccelerate: endpoint = "oss-accelerate.aliyuncs.com" case EndpointAccelerateOverseas: endpoint = "oss-accelerate-overseas.aliyuncs.com" default: endpoint = fmt.Sprintf("oss-%s.aliyuncs.com", region) } endpoint = fmt.Sprintf("%s://%s", scheme, endpoint) return endpoint }