Browse Source

use direct result of switch type assertion

SatoShun 11 years ago
parent
commit
9a8e832951
3 changed files with 10 additions and 13 deletions
  1. +3
    -4
      web/middleware.go
  2. +4
    -4
      web/pattern.go
  3. +3
    -5
      web/router.go

+ 3
- 4
web/middleware.go View File

@ -52,14 +52,13 @@ func (s *cStack) ServeHTTPC(c C, w http.ResponseWriter, r *http.Request) {
func (m *mStack) appendLayer(fn interface{}) { func (m *mStack) appendLayer(fn interface{}) {
ml := mLayer{orig: fn} ml := mLayer{orig: fn}
switch fn.(type) {
switch f := fn.(type) {
case func(http.Handler) http.Handler: case func(http.Handler) http.Handler:
unwrapped := fn.(func(http.Handler) http.Handler)
ml.fn = func(c *C, h http.Handler) http.Handler { ml.fn = func(c *C, h http.Handler) http.Handler {
return unwrapped(h)
return f(h)
} }
case func(*C, http.Handler) http.Handler: case func(*C, http.Handler) http.Handler:
ml.fn = fn.(func(*C, http.Handler) http.Handler)
ml.fn = f
default: default:
log.Fatalf(`Unknown middleware type %v. Expected a function `+ log.Fatalf(`Unknown middleware type %v. Expected a function `+
`with signature "func(http.Handler) http.Handler" or `+ `with signature "func(http.Handler) http.Handler" or `+


+ 4
- 4
web/pattern.go View File

@ -32,13 +32,13 @@ type Pattern interface {
} }
func parsePattern(p interface{}) Pattern { func parsePattern(p interface{}) Pattern {
switch p.(type) {
switch v := p.(type) {
case Pattern: case Pattern:
return p.(Pattern)
return v
case *regexp.Regexp: case *regexp.Regexp:
return parseRegexpPattern(p.(*regexp.Regexp))
return parseRegexpPattern(v)
case string: case string:
return parseStringPattern(p.(string))
return parseStringPattern(v)
default: default:
log.Fatalf("Unknown pattern type %v. Expected a web.Pattern, "+ log.Fatalf("Unknown pattern type %v. Expected a web.Pattern, "+
"regexp.Regexp, or a string.", p) "regexp.Regexp, or a string.", p)


+ 3
- 5
web/router.go View File

@ -69,16 +69,14 @@ func (h netHTTPWrap) ServeHTTPC(c C, w http.ResponseWriter, r *http.Request) {
} }
func parseHandler(h interface{}) Handler { func parseHandler(h interface{}) Handler {
switch h.(type) {
switch f := h.(type) {
case Handler: case Handler:
return h.(Handler)
return f
case http.Handler: case http.Handler:
return netHTTPWrap{h.(http.Handler)}
return netHTTPWrap{f}
case func(c C, w http.ResponseWriter, r *http.Request): case func(c C, w http.ResponseWriter, r *http.Request):
f := h.(func(c C, w http.ResponseWriter, r *http.Request))
return HandlerFunc(f) return HandlerFunc(f)
case func(w http.ResponseWriter, r *http.Request): case func(w http.ResponseWriter, r *http.Request):
f := h.(func(w http.ResponseWriter, r *http.Request))
return netHTTPWrap{http.HandlerFunc(f)} return netHTTPWrap{http.HandlerFunc(f)}
default: default:
log.Fatalf("Unknown handler type %v. Expected a web.Handler, "+ log.Fatalf("Unknown handler type %v. Expected a web.Handler, "+


Loading…
Cancel
Save