Moved extensionless middleware into its own package

This commit is contained in:
Matthew Holt 2015-01-29 22:02:58 -07:00
parent fe62afd3d9
commit 89783ac0c2

View file

@ -1,26 +1,30 @@
package middleware
// Extensionless is middleware for clean URLs. A root path is
// passed in as well as possible extensions to add, internally,
// to paths requested. The first path+ext that matches a resource
// that exists will be used.
package extensionless
import (
"net/http"
"os"
"strings"
"github.com/mholt/caddy/middleware"
)
// Extensionless is middleware for clean URLs. A root path is
// passed in as well as possible extensions to add, internally,
// to paths requested. The first path+ext that matches a resource
// that exists will be used.
func Extensionless(p parser) Middleware {
// New creates a new instance of middleware that assumes extensions
// so the site can use cleaner, extensionless URLs
func New(c middleware.Controller) (middleware.Middleware, error) {
var extensions []string
var root = p.Root() // TODO: Big gotcha! Save this now before it goes away! We can't get this later during a request!
var root = c.Root() // TODO: Big gotcha! Save this now before it goes away! We can't get this later during a request!
for p.Next() {
if !p.NextArg() {
return p.ArgErr()
for c.Next() {
if !c.NextArg() {
return nil, c.ArgErr()
}
extensions = append(extensions, p.Val())
for p.NextArg() {
extensions = append(extensions, p.Val())
extensions = append(extensions, c.Val())
for c.NextArg() {
extensions = append(extensions, c.Val())
}
}
@ -53,5 +57,5 @@ func Extensionless(p parser) Middleware {
}
next(w, r)
}
}
}, nil
}