2017-06-05 10:52:14 +08:00
|
|
|
|
package utils
|
|
|
|
|
|
2018-03-13 14:14:56 +08:00
|
|
|
|
import (
|
|
|
|
|
"strings"
|
|
|
|
|
"github.com/astaxie/beego"
|
|
|
|
|
)
|
2017-06-05 10:52:14 +08:00
|
|
|
|
|
|
|
|
|
func JoinURI(elem ...string) string {
|
|
|
|
|
if len(elem) <= 0 {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
uri := ""
|
|
|
|
|
|
2018-01-26 17:17:38 +08:00
|
|
|
|
for i, u := range elem {
|
|
|
|
|
u = strings.Replace(u, "\\", "/", -1)
|
2017-06-05 10:52:14 +08:00
|
|
|
|
|
|
|
|
|
if i == 0 {
|
2018-01-26 17:17:38 +08:00
|
|
|
|
if !strings.HasSuffix(u, "/") {
|
2017-06-05 10:52:14 +08:00
|
|
|
|
u = u + "/"
|
|
|
|
|
}
|
|
|
|
|
uri = u
|
2018-01-26 17:17:38 +08:00
|
|
|
|
} else {
|
|
|
|
|
u = strings.Replace(u, "//", "/", -1)
|
|
|
|
|
if strings.HasPrefix(u, "/") {
|
2017-06-05 10:52:14 +08:00
|
|
|
|
u = string(u[1:])
|
|
|
|
|
}
|
|
|
|
|
uri += u
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return uri
|
|
|
|
|
}
|
2018-03-13 14:14:56 +08:00
|
|
|
|
|
|
|
|
|
//重写生成URL的方法,加上完整的域名
|
|
|
|
|
func URLFor(endpoint string, values ...interface{}) string {
|
|
|
|
|
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
|
|
|
|
pathUrl := beego.URLFor(endpoint, values ...)
|
|
|
|
|
|
|
|
|
|
if strings.HasPrefix(pathUrl,"http://") {
|
|
|
|
|
return pathUrl
|
|
|
|
|
}
|
|
|
|
|
if strings.HasPrefix(pathUrl,"/") && strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + pathUrl[1:]
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasPrefix(pathUrl,"/") && !strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + "/" + pathUrl
|
|
|
|
|
}
|
|
|
|
|
return baseUrl + beego.URLFor(endpoint, values ...)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func URLForWithCdnImage(p string) string {
|
|
|
|
|
if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
|
|
|
|
|
return p
|
|
|
|
|
}
|
|
|
|
|
cdn := beego.AppConfig.DefaultString("cdnimg", "")
|
|
|
|
|
//如果没有设置cdn,则使用baseURL拼接
|
|
|
|
|
if cdn == "" {
|
|
|
|
|
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
|
|
|
|
|
|
|
|
|
if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + p[1:]
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + "/" + p
|
|
|
|
|
}
|
|
|
|
|
return baseUrl + p
|
|
|
|
|
}
|
|
|
|
|
if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
|
|
|
|
|
return cdn + string(p[1:])
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasPrefix(p, "/") && !strings.HasSuffix(cdn, "/") {
|
|
|
|
|
return cdn + "/" + p
|
|
|
|
|
}
|
|
|
|
|
return cdn + p
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func URLForWithCdnCss (p string) string {
|
|
|
|
|
cdn := beego.AppConfig.DefaultString("cdncss", "")
|
|
|
|
|
if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
|
|
|
|
|
return p
|
|
|
|
|
}
|
|
|
|
|
//如果没有设置cdn,则使用baseURL拼接
|
|
|
|
|
if cdn == "" {
|
|
|
|
|
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
|
|
|
|
|
|
|
|
|
if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + p[1:]
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + "/" + p
|
|
|
|
|
}
|
|
|
|
|
return baseUrl + p
|
|
|
|
|
}
|
|
|
|
|
if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
|
|
|
|
|
return cdn + string(p[1:])
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasPrefix(p, "/") && !strings.HasSuffix(cdn, "/") {
|
|
|
|
|
return cdn + "/" + p
|
|
|
|
|
}
|
|
|
|
|
return cdn + p
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func URLForWithCdnJs(p string) string {
|
|
|
|
|
cdn := beego.AppConfig.DefaultString("cdnjs", "")
|
|
|
|
|
if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
|
|
|
|
|
return p
|
|
|
|
|
}
|
|
|
|
|
//如果没有设置cdn,则使用baseURL拼接
|
|
|
|
|
if cdn == "" {
|
|
|
|
|
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
|
|
|
|
|
|
|
|
|
if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + p[1:]
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
|
|
|
|
|
return baseUrl + "/" + p
|
|
|
|
|
}
|
|
|
|
|
return baseUrl + p
|
|
|
|
|
}
|
|
|
|
|
if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
|
|
|
|
|
return cdn + string(p[1:])
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasPrefix(p, "/") && !strings.HasSuffix(cdn, "/") {
|
|
|
|
|
return cdn + "/" + p
|
|
|
|
|
}
|
|
|
|
|
return cdn + p
|
|
|
|
|
}
|