mindoc/utils/url.go

126 lines
3.1 KiB
Go
Raw Normal View History

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 := ""
for i, u := range elem {
u = strings.Replace(u, "\\", "/", -1)
2017-06-05 10:52:14 +08:00
if i == 0 {
if !strings.HasSuffix(u, "/") {
2017-06-05 10:52:14 +08:00
u = u + "/"
}
uri = u
} 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
}