package proxy import ( "fmt" "strings" ) const ( // 视频桶地址 BucketVideoAddressV1 = "http://ts.bbaazz.me" // 图片桶地址 BucketImageAddressV1 = "http://img.bbaazz.me" BucketImageAddressV2 = "http://tong3yuanimg.bbaazz.me" // 上传路径 ImageUploadPathV1 = "/file/upload" ImageUploadPathV2 = "/file/upload" // "/file/web/media/uploadImg" VideoBodyPathV1 = "/file/web/proxy/videoBody" VideoBodyPathV2 = "/file/web/proxy/videoBodyV2" VideoOkPathV1 = "/file/web/proxy/videoOk" VideoOkPathV2 = "/file/web/proxy/videoOkv2" ) var ( BucketVideoAddressV2 = "http://139.162.27.29:19996" //正式 ) func InitBucketVideoAddress(addressV2 string) { BucketVideoAddressV2 = addressV2 } func DomainAddressRepair(domain string, defaultBucketAddress ...string) string { if domain == "" { if len(defaultBucketAddress) > 0 && defaultBucketAddress[0] != "" { domain = defaultBucketAddress[0] } else { domain = BucketVideoAddressV2 } } return domain } func ImageUploadAddressRepair(domain string, defaultBucketAddress ...string) string { domain = DomainAddressRepair(domain, defaultBucketAddress...) if !strings.Contains(domain, ImageUploadPathV1) && !strings.Contains(domain, ImageUploadPathV2) { if strings.HasPrefix(domain, BucketImageAddressV1) { return domain + ImageUploadPathV1 } else if strings.HasPrefix(domain, BucketImageAddressV2) { return domain + ImageUploadPathV2 } return domain + ImageUploadPathV2 } return domain } func VideoBodyAddressRepair(domain string, defaultBucketAddress ...string) string { domain = DomainAddressRepair(domain, defaultBucketAddress...) if strings.HasPrefix(domain, BucketVideoAddressV1) { if !strings.Contains(domain, VideoBodyPathV1) { return domain + VideoBodyPathV1 } return domain } else if strings.HasPrefix(domain, BucketVideoAddressV2) { if !strings.Contains(domain, VideoBodyPathV2) { return domain + VideoBodyPathV2 } return domain } else { // 未知存储桶,默认v2 if !strings.Contains(domain, VideoBodyPathV2) { return domain + VideoBodyPathV2 } return domain } } func VideoOkAddressRepair(domain string, defaultBucketAddress ...string) string { domain = DomainAddressRepair(domain, defaultBucketAddress...) if strings.HasPrefix(domain, BucketVideoAddressV1) { if !strings.Contains(domain, VideoOkPathV1) { return domain + VideoOkPathV1 } return domain } else if strings.HasPrefix(domain, BucketVideoAddressV2) { if !strings.Contains(domain, VideoOkPathV2) { return domain + VideoOkPathV2 } return domain } else { // 未知存储桶,默认v2 if !strings.Contains(domain, VideoOkPathV2) { return domain + VideoOkPathV2 } return domain } } func GetExistsUrlPathBucketAddress(path string) string { if strings.HasPrefix(path, "v1/") { return BucketVideoAddressV1 } else if strings.HasPrefix(path, "v2/") { return BucketVideoAddressV2 } else if strings.HasPrefix(path, "v3/") { return BucketVideoAddressV2 } else { return BucketVideoAddressV1 // 欲漫涩、微博、快看禁漫 默认用桶2,其他的app,默认用桶1 } } func AppendV2PrefixToUrlPath(name string) string { if name != "" && !strings.HasPrefix(name, "v2/") && !strings.HasPrefix(name, "v1/") && !strings.HasPrefix(name, "v3/") && !strings.HasPrefix(name, "/v2") && !strings.HasPrefix(name, "/v1") && !strings.HasPrefix(name, "/v3") { name = fmt.Sprintf("v2/%s", name) } return name } func AppendV1PrefixToUrlPath(name string) string { if name != "" && !strings.HasPrefix(name, "v2/") && !strings.HasPrefix(name, "v1/") && !strings.HasPrefix(name, "v3/") && !strings.HasPrefix(name, "/v2") && !strings.HasPrefix(name, "/v1") && !strings.HasPrefix(name, "/v3") { name = fmt.Sprintf("v1/%s", name) } return name } func AppendsMediaS3Version(name string) string { // 以下前缀是直接挂在 origDomain 根下的媒资桶,不需要再加 /v2 前缀。 if hasMediaRootPrefix(name) { return "" } if name != "" && !strings.HasPrefix(name, "v2/") && !strings.HasPrefix(name, "v1/") && !strings.HasPrefix(name, "v3/") && !strings.HasPrefix(name, "/v2") && !strings.HasPrefix(name, "/v1") && !strings.HasPrefix(name, "/v3") { return "/v2" } return "" } // hasMediaRootPrefix 判定路径是否属于直接挂在 origDomain 根下的媒资桶,不应再追加 v1/v2 前缀。 func hasMediaRootPrefix(name string) bool { for _, p := range []string{"k12/", "bktappupdata/", "/k12/", "/bktappupdata/"} { if strings.HasPrefix(name, p) { return true } } return false } func AppendsMediaS3VersionV1(name string) string { // 默认使用V1 if name != "" && !strings.HasPrefix(name, "v2/") && !strings.HasPrefix(name, "v1/") && !strings.HasPrefix(name, "v3/") && !strings.HasPrefix(name, "/v2") && !strings.HasPrefix(name, "/v1") && !strings.HasPrefix(name, "/v3") { return "/v1" } return "" }