diff options
| author | sparklxb <sparklxb@163.com> | 2017-03-10 10:28:07 +0800 |
|---|---|---|
| committer | sparklxb <sparklxb@163.com> | 2017-03-10 10:28:19 +0800 |
| commit | 7f85e159906a4356ae23a8d72f8893469efb5407 (patch) | |
| tree | 98a594342dc6fd19b9c31215e77245f57ab0f08b /weed/server | |
| parent | 813a4f7456aa1966f0dfd2ea24d6ec70adf3b4c6 (diff) | |
| download | seaweedfs-7f85e159906a4356ae23a8d72f8893469efb5407.tar.xz seaweedfs-7f85e159906a4356ae23a8d72f8893469efb5407.zip | |
complement weed mount
Diffstat (limited to 'weed/server')
| -rw-r--r-- | weed/server/filer_server.go | 1 | ||||
| -rw-r--r-- | weed/server/filer_server_handlers_api.go | 40 |
2 files changed, 41 insertions, 0 deletions
diff --git a/weed/server/filer_server.go b/weed/server/filer_server.go index 0601effed..33b3677a5 100644 --- a/weed/server/filer_server.go +++ b/weed/server/filer_server.go @@ -107,6 +107,7 @@ func NewFilerServer(r *http.ServeMux, ip string, port int, master string, dir st r.HandleFunc("/admin/mv", fs.moveHandler) r.HandleFunc("/admin/register", fs.registerHandler) + r.HandleFunc("/__api__", fs.apiHandler) } r.HandleFunc("/", fs.filerHandler) diff --git a/weed/server/filer_server_handlers_api.go b/weed/server/filer_server_handlers_api.go new file mode 100644 index 000000000..fe82827f4 --- /dev/null +++ b/weed/server/filer_server_handlers_api.go @@ -0,0 +1,40 @@ +package weed_server + +import ( + "encoding/json" + "net/http" + + "github.com/chrislusf/seaweedfs/weed/filer" + "github.com/chrislusf/seaweedfs/weed/glog" +) + +func (fs *FilerServer) apiHandler(w http.ResponseWriter, r *http.Request) { + request := r.FormValue("request") + apiRequest := filer.ApiRequest{} + + err := json.Unmarshal([]byte(request), &apiRequest) + if err != nil { + glog.V(0).Infoln("failing to read request", r.RequestURI, request) + writeJsonError(w, r, http.StatusInternalServerError, err) + } + switch apiRequest.Command { + case "listDirectories": + res := filer.ListDirectoriesResult{} + res.Directories, err = fs.filer.ListDirectories(apiRequest.Directory) + if err != nil { + res.Error = err.Error() + } + writeJsonQuiet(w, r, http.StatusOK, res) + case "listFiles": + res := filer.ListFilesResult{} + limit := 1 + if len(apiRequest.FileName) == 0 { + limit = 100 + } + res.Files, err = fs.filer.ListFiles(apiRequest.Directory, apiRequest.FileName, limit) + if err != nil { + res.Error = err.Error() + } + writeJsonQuiet(w, r, http.StatusOK, res) + } +} |
