mirror of
https://github.com/gmemstr/sliproad.git
synced 2024-09-20 00:21:15 +01:00
c2171d00c9
Should offer some speed boost, copying the file contents rather than reading it all to memory then writing it back out. Should theoretically be able to handle larger files as well, although some benchmarks are TBD around filesize limits.
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package router
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/gmemstr/nas/common"
|
|
"github.com/gmemstr/nas/files"
|
|
"github.com/gorilla/mux"
|
|
"net/http"
|
|
)
|
|
|
|
func HandleProvider() common.Handler {
|
|
|
|
return func(rc *common.RouterContext, w http.ResponseWriter, r *http.Request) *common.HTTPError {
|
|
vars := mux.Vars(r)
|
|
if r.Method == "GET" {
|
|
providerCodename := vars["provider"]
|
|
var provider files.FileProviderInterface
|
|
files.TranslateProvider(providerCodename, &provider)
|
|
|
|
fileList := provider.GetDirectory("")
|
|
if vars["file"] != "" {
|
|
fileType := provider.DetermineType(vars["file"])
|
|
if fileType == "" {
|
|
w.Write([]byte("file not found"))
|
|
return nil
|
|
}
|
|
if fileType == "file" {
|
|
provider.ViewFile(vars["file"], w)
|
|
return nil
|
|
}
|
|
fileList = provider.GetDirectory(vars["file"])
|
|
}
|
|
data, err := json.Marshal(fileList)
|
|
if err != nil {
|
|
w.Write([]byte("An error occurred"))
|
|
return nil
|
|
}
|
|
w.Write(data)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func ListProviders() common.Handler {
|
|
|
|
return func(rc *common.RouterContext, w http.ResponseWriter, r *http.Request) *common.HTTPError {
|
|
return nil
|
|
}
|
|
}
|