diff --git a/middleware/extensionless.go b/middleware/extensionless/extensionless.go similarity index 69% rename from middleware/extensionless.go rename to middleware/extensionless/extensionless.go index 6562e259..e7224e8c 100644 --- a/middleware/extensionless.go +++ b/middleware/extensionless/extensionless.go @@ -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 }