1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-26 09:01:28 +00:00

beego:1.2.0

This commit is contained in:
astaxie 2014-05-20 15:53:41 +08:00
parent b45f0b9bf6
commit 03080b3ef2
3 changed files with 26 additions and 30 deletions

View File

@ -797,14 +797,9 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request)
} }
if len(route.params) > 0 { if len(route.params) > 0 {
//add url parameters to the query param map
values := r.URL.Query()
for i, match := range matches[1:] { for i, match := range matches[1:] {
values.Add(route.params[i], match)
params[route.params[i]] = match params[route.params[i]] = match
} }
//reassemble query params and add to RawQuery
r.URL.RawQuery = url.Values(values).Encode()
} }
runMethod = p.getRunMethod(r.Method, context, route) runMethod = p.getRunMethod(r.Method, context, route)
if runMethod != "" { if runMethod != "" {

View File

@ -43,6 +43,15 @@ func (this *TestController) GetUrl() {
this.Ctx.Output.Body([]byte(this.UrlFor(".Myext"))) this.Ctx.Output.Body([]byte(this.UrlFor(".Myext")))
} }
func (t *TestController) GetParams() {
t.Ctx.WriteString(t.Ctx.Input.Query(":last") + "+" +
t.Ctx.Input.Query(":first") + "+" + t.Ctx.Input.Query("learn"))
}
func (t *TestController) GetManyRouter() {
t.Ctx.WriteString(t.Ctx.Input.Query(":id") + t.Ctx.Input.Query(":page"))
}
type ResStatus struct { type ResStatus struct {
Code int Code int
Msg string Msg string
@ -147,21 +156,11 @@ func TestRouteOk(t *testing.T) {
w := httptest.NewRecorder() w := httptest.NewRecorder()
handler := NewControllerRegistor() handler := NewControllerRegistor()
handler.Add("/person/:last/:first", &TestController{}) handler.Add("/person/:last/:first", &TestController{}, "get:GetParams")
handler.ServeHTTP(w, r) handler.ServeHTTP(w, r)
body := w.Body.String()
lastNameParam := r.URL.Query().Get(":last") if body != "anderson+thomas+kungfu" {
firstNameParam := r.URL.Query().Get(":first") t.Errorf("url param set to [%s];", body)
learnParam := r.URL.Query().Get("learn")
if lastNameParam != "anderson" {
t.Errorf("url param set to [%s]; want [%s]", lastNameParam, "anderson")
}
if firstNameParam != "thomas" {
t.Errorf("url param set to [%s]; want [%s]", firstNameParam, "thomas")
}
if learnParam != "kungfu" {
t.Errorf("url param set to [%s]; want [%s]", learnParam, "kungfu")
} }
} }
@ -171,17 +170,13 @@ func TestManyRoute(t *testing.T) {
w := httptest.NewRecorder() w := httptest.NewRecorder()
handler := NewControllerRegistor() handler := NewControllerRegistor()
handler.Add("/beego:id([0-9]+)-:page([0-9]+).html", &TestController{}) handler.Add("/beego:id([0-9]+)-:page([0-9]+).html", &TestController{}, "get:GetManyRouter")
handler.ServeHTTP(w, r) handler.ServeHTTP(w, r)
id := r.URL.Query().Get(":id") body := w.Body.String()
page := r.URL.Query().Get(":page")
if id != "32" { if body != "3212" {
t.Errorf("url param set to [%s]; want [%s]", id, "32") t.Errorf("url param set to [%s];", body)
}
if page != "12" {
t.Errorf("url param set to [%s]; want [%s]", page, "12")
} }
} }

View File

@ -64,24 +64,30 @@ func GrepFile(patten string, filename string) (lines []string, err error) {
lines = make([]string, 0) lines = make([]string, 0)
reader := bufio.NewReader(fd) reader := bufio.NewReader(fd)
prefix := "" prefix := ""
isLongLine := false
for { for {
byteLine, isPrefix, er := reader.ReadLine() byteLine, isPrefix, er := reader.ReadLine()
if er != nil && er != io.EOF { if er != nil && er != io.EOF {
return nil, er return nil, er
} }
if er == io.EOF {
break
}
line := string(byteLine) line := string(byteLine)
if isPrefix { if isPrefix {
prefix += line prefix += line
continue continue
} else {
isLongLine = true
} }
line = prefix + line line = prefix + line
if isLongLine {
prefix = ""
}
if re.MatchString(line) { if re.MatchString(line) {
lines = append(lines, line) lines = append(lines, line)
} }
if er == io.EOF {
break
}
} }
return lines, nil return lines, nil
} }