mirror of https://github.com/gin-gonic/gin.git
chore: add return or remove else for reduce indent (#1470)
This commit is contained in:
parent
7e64d32269
commit
e5bb4f62a2
69
gin.go
69
gin.go
|
@ -349,38 +349,40 @@ func (engine *Engine) handleHTTPRequest(c *Context) {
|
||||||
// Find root of the tree for the given HTTP method
|
// Find root of the tree for the given HTTP method
|
||||||
t := engine.trees
|
t := engine.trees
|
||||||
for i, tl := 0, len(t); i < tl; i++ {
|
for i, tl := 0, len(t); i < tl; i++ {
|
||||||
if t[i].method == httpMethod {
|
if t[i].method != httpMethod {
|
||||||
root := t[i].root
|
continue
|
||||||
// Find route in tree
|
}
|
||||||
handlers, params, tsr := root.getValue(path, c.Params, unescape)
|
root := t[i].root
|
||||||
if handlers != nil {
|
// Find route in tree
|
||||||
c.handlers = handlers
|
handlers, params, tsr := root.getValue(path, c.Params, unescape)
|
||||||
c.Params = params
|
if handlers != nil {
|
||||||
c.Next()
|
c.handlers = handlers
|
||||||
c.writermem.WriteHeaderNow()
|
c.Params = params
|
||||||
|
c.Next()
|
||||||
|
c.writermem.WriteHeaderNow()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if httpMethod != "CONNECT" && path != "/" {
|
||||||
|
if tsr && engine.RedirectTrailingSlash {
|
||||||
|
redirectTrailingSlash(c)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if httpMethod != "CONNECT" && path != "/" {
|
if engine.RedirectFixedPath && redirectFixedPath(c, root, engine.RedirectFixedPath) {
|
||||||
if tsr && engine.RedirectTrailingSlash {
|
return
|
||||||
redirectTrailingSlash(c)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if engine.RedirectFixedPath && redirectFixedPath(c, root, engine.RedirectFixedPath) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if engine.HandleMethodNotAllowed {
|
if engine.HandleMethodNotAllowed {
|
||||||
for _, tree := range engine.trees {
|
for _, tree := range engine.trees {
|
||||||
if tree.method != httpMethod {
|
if tree.method == httpMethod {
|
||||||
if handlers, _, _ := tree.root.getValue(path, nil, unescape); handlers != nil {
|
continue
|
||||||
c.handlers = engine.allNoMethod
|
}
|
||||||
serveError(c, http.StatusMethodNotAllowed, default405Body)
|
if handlers, _, _ := tree.root.getValue(path, nil, unescape); handlers != nil {
|
||||||
return
|
c.handlers = engine.allNoMethod
|
||||||
}
|
serveError(c, http.StatusMethodNotAllowed, default405Body)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -393,14 +395,16 @@ var mimePlain = []string{MIMEPlain}
|
||||||
func serveError(c *Context, code int, defaultMessage []byte) {
|
func serveError(c *Context, code int, defaultMessage []byte) {
|
||||||
c.writermem.status = code
|
c.writermem.status = code
|
||||||
c.Next()
|
c.Next()
|
||||||
if !c.writermem.Written() {
|
if c.writermem.Written() {
|
||||||
if c.writermem.Status() == code {
|
return
|
||||||
c.writermem.Header()["Content-Type"] = mimePlain
|
|
||||||
c.Writer.Write(defaultMessage)
|
|
||||||
} else {
|
|
||||||
c.writermem.WriteHeaderNow()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if c.writermem.Status() == code {
|
||||||
|
c.writermem.Header()["Content-Type"] = mimePlain
|
||||||
|
c.Writer.Write(defaultMessage)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.writermem.WriteHeaderNow()
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func redirectTrailingSlash(c *Context) {
|
func redirectTrailingSlash(c *Context) {
|
||||||
|
@ -411,10 +415,9 @@ func redirectTrailingSlash(c *Context) {
|
||||||
code = http.StatusTemporaryRedirect
|
code = http.StatusTemporaryRedirect
|
||||||
}
|
}
|
||||||
|
|
||||||
|
req.URL.Path = path + "/"
|
||||||
if length := len(path); length > 1 && path[length-1] == '/' {
|
if length := len(path); length > 1 && path[length-1] == '/' {
|
||||||
req.URL.Path = path[:length-1]
|
req.URL.Path = path[:length-1]
|
||||||
} else {
|
|
||||||
req.URL.Path = path + "/"
|
|
||||||
}
|
}
|
||||||
debugPrint("redirecting request %d: %s --> %s", code, path, req.URL.String())
|
debugPrint("redirecting request %d: %s --> %s", code, path, req.URL.String())
|
||||||
http.Redirect(c.Writer, req, req.URL.String(), code)
|
http.Redirect(c.Writer, req, req.URL.String(), code)
|
||||||
|
|
|
@ -333,6 +333,16 @@ func TestRouteNotAllowedEnabled(t *testing.T) {
|
||||||
assert.Equal(t, http.StatusTeapot, w.Code)
|
assert.Equal(t, http.StatusTeapot, w.Code)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRouteNotAllowedEnabled2(t *testing.T) {
|
||||||
|
router := New()
|
||||||
|
router.HandleMethodNotAllowed = true
|
||||||
|
// add one methodTree to trees
|
||||||
|
router.addRoute("POST", "/", HandlersChain{func(_ *Context) {}})
|
||||||
|
router.GET("/path2", func(c *Context) {})
|
||||||
|
w := performRequest(router, "POST", "/path2")
|
||||||
|
assert.Equal(t, http.StatusMethodNotAllowed, w.Code)
|
||||||
|
}
|
||||||
|
|
||||||
func TestRouteNotAllowedDisabled(t *testing.T) {
|
func TestRouteNotAllowedDisabled(t *testing.T) {
|
||||||
router := New()
|
router := New()
|
||||||
router.HandleMethodNotAllowed = false
|
router.HandleMethodNotAllowed = false
|
||||||
|
|
Loading…
Reference in New Issue