add wrapper for HEAD #85
parent
efdcb9fc58
commit
27e2fbf12a
|
@ -15,6 +15,7 @@ import (
|
||||||
"github.com/hacdias/caddy-filemanager/file"
|
"github.com/hacdias/caddy-filemanager/file"
|
||||||
"github.com/hacdias/caddy-filemanager/handlers"
|
"github.com/hacdias/caddy-filemanager/handlers"
|
||||||
"github.com/hacdias/caddy-filemanager/page"
|
"github.com/hacdias/caddy-filemanager/page"
|
||||||
|
"github.com/hacdias/caddy-filemanager/wrapper"
|
||||||
"github.com/mholt/caddy/caddyhttp/httpserver"
|
"github.com/mholt/caddy/caddyhttp/httpserver"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -89,9 +90,12 @@ func (f FileManager) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, err
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: since HEAD shouldn't return any body, we should make a wrapper here...
|
|
||||||
if i.IsDir() {
|
if i.IsDir() {
|
||||||
r.Method = "PROPFIND"
|
r.Method = "PROPFIND"
|
||||||
|
|
||||||
|
if r.Method == "HEAD" {
|
||||||
|
w = wrapper.NewResponseWriterNoBody(w)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case "PROPPATCH", "MOVE", "PATCH", "PUT", "DELETE":
|
case "PROPPATCH", "MOVE", "PATCH", "PUT", "DELETE":
|
||||||
if !user.AllowEdit {
|
if !user.AllowEdit {
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package wrapper
|
||||||
|
|
||||||
|
import "net/http"
|
||||||
|
|
||||||
|
// ResponseWriterNoBody is a wrapper used to suprress the body of the response
|
||||||
|
// to a request. Mainly used for HEAD requests.
|
||||||
|
type ResponseWriterNoBody struct {
|
||||||
|
http.ResponseWriter
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewResponseWriterNoBody creates a new ResponseWriterNoBody.
|
||||||
|
func NewResponseWriterNoBody(w http.ResponseWriter) *ResponseWriterNoBody {
|
||||||
|
return &ResponseWriterNoBody{w}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Header executes the Header method from the http.ResponseWriter.
|
||||||
|
func (w ResponseWriterNoBody) Header() http.Header {
|
||||||
|
return w.ResponseWriter.Header()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write suprresses the body.
|
||||||
|
func (w ResponseWriterNoBody) Write(data []byte) (int, error) {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteHeader writes the header to the http.ResponseWriter.
|
||||||
|
func (w ResponseWriterNoBody) WriteHeader(statusCode int) {
|
||||||
|
w.ResponseWriter.WriteHeader(statusCode)
|
||||||
|
}
|
Loading…
Reference in New Issue