Factor out serveDirectory into it's own method
This commit is contained in:
parent
77e66be90f
commit
ba8725a3aa
1 changed files with 20 additions and 14 deletions
34
logserver.go
34
logserver.go
|
@ -69,6 +69,7 @@ func (f *logServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
serveFile(w, r, upath)
|
serveFile(w, r, upath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func serveFile(w http.ResponseWriter, r *http.Request, path string) {
|
func serveFile(w http.ResponseWriter, r *http.Request, path string) {
|
||||||
d, err := os.Stat(path)
|
d, err := os.Stat(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -82,20 +83,7 @@ func serveFile(w http.ResponseWriter, r *http.Request, path string) {
|
||||||
|
|
||||||
// if it's a directory, serve a listing or a tarball
|
// if it's a directory, serve a listing or a tarball
|
||||||
if d.IsDir() {
|
if d.IsDir() {
|
||||||
format, _ := r.URL.Query()["format"]
|
serveDirectory(w, r, path)
|
||||||
if len(format) == 1 && format[0] == "tar.gz" {
|
|
||||||
log.Println("Serving tarball of", path)
|
|
||||||
err := serveTarball(w, r, path)
|
|
||||||
if err != nil {
|
|
||||||
msg, code := toHTTPError(err)
|
|
||||||
http.Error(w, msg, code)
|
|
||||||
log.Println("Error", err)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Println("Serving directory listing of", path)
|
|
||||||
http.ServeFile(w, r, path)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if it's a gzipped log file, serve it as text
|
// if it's a gzipped log file, serve it as text
|
||||||
|
@ -137,6 +125,24 @@ func extensionToMimeType(path string) string {
|
||||||
return "application/octet-stream"
|
return "application/octet-stream"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Chooses to serve either a directory listing or tarball based on the 'format' parameter.
|
||||||
|
func serveDirectory(w http.ResponseWriter, r *http.Request, path string) {
|
||||||
|
format, _ := r.URL.Query()["format"]
|
||||||
|
if len(format) == 1 && format[0] == "tar.gz" {
|
||||||
|
log.Println("Serving tarball of", path)
|
||||||
|
err := serveTarball(w, r, path)
|
||||||
|
if err != nil {
|
||||||
|
msg, code := toHTTPError(err)
|
||||||
|
http.Error(w, msg, code)
|
||||||
|
log.Println("Error", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Println("Serving directory listing of", path)
|
||||||
|
http.ServeFile(w, r, path)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Streams a dynamically created tar.gz file with the contents of the given directory
|
// Streams a dynamically created tar.gz file with the contents of the given directory
|
||||||
// Will serve a partial, corrupted response if there is a error partway through the
|
// Will serve a partial, corrupted response if there is a error partway through the
|
||||||
// operation as we stream the response.
|
// operation as we stream the response.
|
||||||
|
|
Reference in a new issue