Files
rest-server/vendor/goji.io/util_test.go
Alexander Neumann 6054876201 Vendor dependencies
2016-12-30 18:34:37 +01:00

72 lines
1.1 KiB
Go

package goji
import (
"net/http"
"net/http/httptest"
"strings"
"goji.io/internal"
)
type boolPattern bool
func (b boolPattern) Match(r *http.Request) *http.Request {
if b {
return r
}
return nil
}
type testPattern struct {
index int
mark *int
methods []string
prefix string
}
func (t testPattern) Match(r *http.Request) *http.Request {
ctx := r.Context()
if t.index < *t.mark {
return nil
}
path := ctx.Value(internal.Path).(string)
if !strings.HasPrefix(path, t.prefix) {
return nil
}
if t.methods != nil {
if _, ok := t.HTTPMethods()[r.Method]; !ok {
return nil
}
}
return r
}
func (t testPattern) PathPrefix() string {
return t.prefix
}
func (t testPattern) HTTPMethods() map[string]struct{} {
if t.methods == nil {
return nil
}
m := make(map[string]struct{})
for _, method := range t.methods {
m[method] = struct{}{}
}
return m
}
type intHandler int
func (i intHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
func wr() (*httptest.ResponseRecorder, *http.Request) {
w := httptest.NewRecorder()
r, err := http.NewRequest("GET", "/", nil)
if err != nil {
panic(err)
}
return w, r
}