Commit 89783ac0 authored by Matthew Holt's avatar Matthew Holt

Moved extensionless middleware into its own package

parent fe62afd3
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
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment