mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 16:00:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
						|
 | 
						|
package js
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/dop251/goja"
 | 
						|
	"github.com/iwind/TeaGo/types"
 | 
						|
	"net/url"
 | 
						|
)
 | 
						|
 | 
						|
type URL struct {
 | 
						|
	u *url.URL
 | 
						|
}
 | 
						|
 | 
						|
func NewURL(u *url.URL) *URL {
 | 
						|
	return &URL{
 | 
						|
		u: u,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) JSNew(args []goja.Value) *URL {
 | 
						|
	var urlString = ""
 | 
						|
	if len(args) == 1 {
 | 
						|
		urlString = args[0].String()
 | 
						|
	}
 | 
						|
	u, _ := url.Parse(urlString)
 | 
						|
	if u == nil {
 | 
						|
		u = &url.URL{}
 | 
						|
	}
 | 
						|
	return NewURL(u)
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Port() int {
 | 
						|
	return types.Int(this.u.Port())
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Args() map[string][]string {
 | 
						|
	return this.u.Query()
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Arg(name string) string {
 | 
						|
	return this.u.Query().Get(name)
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Username() string {
 | 
						|
	if this.u.User != nil {
 | 
						|
		return this.u.User.Username()
 | 
						|
	}
 | 
						|
	return ""
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Password() string {
 | 
						|
	if this.u.User != nil {
 | 
						|
		password, _ := this.u.User.Password()
 | 
						|
		return password
 | 
						|
	}
 | 
						|
	return ""
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Uri() string {
 | 
						|
	return this.u.RequestURI()
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Path() string {
 | 
						|
	return this.u.Path
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Host() string {
 | 
						|
	return this.u.Host
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Fragment() string {
 | 
						|
	return this.u.Fragment
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Hash() string {
 | 
						|
	if len(this.u.Fragment) > 0 {
 | 
						|
		return "#" + this.u.Fragment
 | 
						|
	} else {
 | 
						|
		return ""
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) Scheme() string {
 | 
						|
	return this.u.Scheme
 | 
						|
}
 | 
						|
 | 
						|
func (this *URL) String() string {
 | 
						|
	return this.u.String()
 | 
						|
}
 |