Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
admpub committed Jul 3, 2024
1 parent 2552a6e commit 213ccc0
Showing 1 changed file with 44 additions and 3 deletions.
47 changes: 44 additions & 3 deletions subdomains/subdomains.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,27 @@ func (info *Info) URL(s *Subdomains, uri string) string {
return protocol + `://` + info.Host + info.Prefix() + uri
}

func (info *Info) RelativeURL(s *Subdomains, uri string) string {
if len(uri) > 0 && !strings.HasPrefix(uri, `/`) {
uri = `/` + uri
}
if len(info.Host) == 0 {
if s.Default == info.Name {
return info.Prefix() + uri
}
return info.Prefix() + `/` + info.Name + uri
}
return info.Prefix() + uri
}

func (info *Info) URLByName(s *Subdomains, name string, args ...interface{}) string {
return info.URL(s, info.Echo.URI(name, args...))
}

func (info *Info) RelativeURLByName(s *Subdomains, name string, args ...interface{}) string {
return info.RelativeURL(s, info.Echo.URI(name, args...))
}

type Dispatcher func(r engine.Request, w engine.Response) (*echo.Echo, bool)

type Subdomains struct {
Expand Down Expand Up @@ -149,9 +166,15 @@ func (s *Subdomains) URL(uri string, args ...string) string {
return info.URL(s, uri)
}

// URLByName 根据路由别名生成网址
// 可以在名称中采用 #backend#name 的方式来获取子域名别名为bakcend的网址
func (s *Subdomains) URLByName(name string, params ...interface{}) string {
func (s *Subdomains) RelativeURL(uri string, args ...string) string {
info := s.Get(args...)
if info == nil {
return uri
}
return info.RelativeURL(s, uri)
}

func parseURLName(name string) (string, []string) {
var args []string
if strings.HasPrefix(name, `#`) {
name = strings.TrimPrefix(name, `#`)
Expand All @@ -161,13 +184,31 @@ func (s *Subdomains) URLByName(name string, params ...interface{}) string {
name = arr[1]
}
}
return name, args
}

// URLByName 根据路由别名生成网址
// 可以在名称中采用 #backend#name 的方式来获取子域名别名为bakcend的网址
func (s *Subdomains) URLByName(name string, params ...interface{}) string {
var args []string
name, args = parseURLName(name)
info := s.Get(args...)
if info == nil {
return `/not-found:` + name
}
return info.URLByName(s, name, params...)
}

func (s *Subdomains) RelativeURLByName(name string, params ...interface{}) string {
var args []string
name, args = parseURLName(name)
info := s.Get(args...)
if info == nil {
return `/not-found:` + name
}
return info.RelativeURLByName(s, name, params...)
}

func (s *Subdomains) FindByDomain(host string) (*echo.Echo, bool) {
name, exists := s.Hosts[host]
if !exists {
Expand Down

0 comments on commit 213ccc0

Please sign in to comment.