mirror of
https://github.com/astaxie/beego.git
synced 2024-11-25 19:50:55 +00:00
Fix subdomain, add test, space and comment fix
This commit is contained in:
parent
ab99d5f1e2
commit
22671c524e
@ -27,7 +27,7 @@ import (
|
|||||||
"github.com/astaxie/beego/session"
|
"github.com/astaxie/beego/session"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BeegoInput operates the http request header ,data ,cookie and body.
|
// BeegoInput operates the http request header, data, cookie and body.
|
||||||
// it also contains router params and current session.
|
// it also contains router params and current session.
|
||||||
type BeegoInput struct {
|
type BeegoInput struct {
|
||||||
CruSession session.SessionStore
|
CruSession session.SessionStore
|
||||||
@ -153,12 +153,12 @@ func (input *BeegoInput) IsSecure() bool {
|
|||||||
return input.Scheme() == "https"
|
return input.Scheme() == "https"
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsSecure returns boolean of this request is in webSocket.
|
// IsWebsocket returns boolean of this request is in webSocket.
|
||||||
func (input *BeegoInput) IsWebsocket() bool {
|
func (input *BeegoInput) IsWebsocket() bool {
|
||||||
return input.Header("Upgrade") == "websocket"
|
return input.Header("Upgrade") == "websocket"
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsSecure returns boolean of whether file uploads in this request or not..
|
// IsUpload returns boolean of whether file uploads in this request or not..
|
||||||
func (input *BeegoInput) IsUpload() bool {
|
func (input *BeegoInput) IsUpload() bool {
|
||||||
return strings.Contains(input.Header("Content-Type"), "multipart/form-data")
|
return strings.Contains(input.Header("Content-Type"), "multipart/form-data")
|
||||||
}
|
}
|
||||||
@ -189,16 +189,24 @@ func (input *BeegoInput) Proxy() []string {
|
|||||||
return []string{}
|
return []string{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Referer returns http referer header.
|
||||||
|
func (input *BeegoInput) Referer() string {
|
||||||
|
return input.Header("Referer")
|
||||||
|
}
|
||||||
|
|
||||||
// Refer returns http referer header.
|
// Refer returns http referer header.
|
||||||
func (input *BeegoInput) Refer() string {
|
func (input *BeegoInput) Refer() string {
|
||||||
return input.Header("Referer")
|
return input.Referer()
|
||||||
}
|
}
|
||||||
|
|
||||||
// SubDomains returns sub domain string.
|
// SubDomains returns sub domain string.
|
||||||
// if aa.bb.domain.com, returns aa.bb .
|
// if aa.bb.domain.com, returns aa.bb .
|
||||||
func (input *BeegoInput) SubDomains() string {
|
func (input *BeegoInput) SubDomains() string {
|
||||||
parts := strings.Split(input.Host(), ".")
|
parts := strings.Split(input.Host(), ".")
|
||||||
return strings.Join(parts[:len(parts)-2], ".")
|
if len(parts) >= 3 {
|
||||||
|
return strings.Join(parts[:len(parts)-2], ".")
|
||||||
|
}
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// Port returns request client port.
|
// Port returns request client port.
|
||||||
@ -237,6 +245,7 @@ func (input *BeegoInput) Query(key string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Header returns request header item string by a given string.
|
// Header returns request header item string by a given string.
|
||||||
|
// if non-existed, return empty string.
|
||||||
func (input *BeegoInput) Header(key string) string {
|
func (input *BeegoInput) Header(key string) string {
|
||||||
return input.Request.Header.Get(key)
|
return input.Request.Header.Get(key)
|
||||||
}
|
}
|
||||||
@ -252,11 +261,12 @@ func (input *BeegoInput) Cookie(key string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Session returns current session item value by a given key.
|
// Session returns current session item value by a given key.
|
||||||
|
// if non-existed, return empty string.
|
||||||
func (input *BeegoInput) Session(key interface{}) interface{} {
|
func (input *BeegoInput) Session(key interface{}) interface{} {
|
||||||
return input.CruSession.Get(key)
|
return input.CruSession.Get(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Body returns the raw request body data as bytes.
|
// CopyBody returns the raw request body data as bytes.
|
||||||
func (input *BeegoInput) CopyBody() []byte {
|
func (input *BeegoInput) CopyBody() []byte {
|
||||||
requestbody, _ := ioutil.ReadAll(input.Request.Body)
|
requestbody, _ := ioutil.ReadAll(input.Request.Body)
|
||||||
input.Request.Body.Close()
|
input.Request.Body.Close()
|
||||||
|
@ -70,3 +70,45 @@ func TestParse(t *testing.T) {
|
|||||||
}
|
}
|
||||||
fmt.Println(user)
|
fmt.Println(user)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSubDomain(t *testing.T) {
|
||||||
|
r, _ := http.NewRequest("GET", "http://www.example.com/?id=123&isok=true&ft=1.2&ol[0]=1&ol[1]=2&ul[]=str&ul[]=array&user.Name=astaxie", nil)
|
||||||
|
beegoInput := NewInput(r)
|
||||||
|
|
||||||
|
subdomain := beegoInput.SubDomains()
|
||||||
|
if subdomain != "www" {
|
||||||
|
t.Fatal("Subdomain parse error, got" + subdomain)
|
||||||
|
}
|
||||||
|
|
||||||
|
r, _ = http.NewRequest("GET", "http://localhost/", nil)
|
||||||
|
beegoInput.Request = r
|
||||||
|
if beegoInput.SubDomains() != "" {
|
||||||
|
t.Fatal("Subdomain parse error, should be empty, got " + beegoInput.SubDomains())
|
||||||
|
}
|
||||||
|
|
||||||
|
r, _ = http.NewRequest("GET", "http://aa.bb.example.com/", nil)
|
||||||
|
beegoInput.Request = r
|
||||||
|
if beegoInput.SubDomains() != "aa.bb" {
|
||||||
|
t.Fatal("Subdomain parse error, got " + beegoInput.SubDomains())
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO Fix this
|
||||||
|
r, _ = http.NewRequest("GET", "http://127.0.0.1/", nil)
|
||||||
|
beegoInput.Request = r
|
||||||
|
if beegoInput.SubDomains() != "" {
|
||||||
|
t.Fatal("Subdomain parse error, got " + beegoInput.SubDomains())
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
r, _ = http.NewRequest("GET", "http://example.com/", nil)
|
||||||
|
beegoInput.Request = r
|
||||||
|
if beegoInput.SubDomains() != "" {
|
||||||
|
t.Fatal("Subdomain parse error, got " + beegoInput.SubDomains())
|
||||||
|
}
|
||||||
|
|
||||||
|
r, _ = http.NewRequest("GET", "http://aa.bb.cc.dd.example.com/", nil)
|
||||||
|
beegoInput.Request = r
|
||||||
|
if beegoInput.SubDomains() != "aa.bb.cc.dd" {
|
||||||
|
t.Fatal("Subdomain parse error, got " + beegoInput.SubDomains())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user