aboutsummaryrefslogtreecommitdiff
path: root/weed/server/filer_server_handlers_api.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/server/filer_server_handlers_api.go')
-rw-r--r--weed/server/filer_server_handlers_api.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/weed/server/filer_server_handlers_api.go b/weed/server/filer_server_handlers_api.go
new file mode 100644
index 000000000..f2a64e6cb
--- /dev/null
+++ b/weed/server/filer_server_handlers_api.go
@@ -0,0 +1,36 @@
+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{}
+ res.Files, err = fs.filer.ListFiles(apiRequest.Directory, apiRequest.FileName, 100)
+ if err != nil {
+ res.Error = err.Error()
+ }
+ writeJsonQuiet(w, r, http.StatusOK, res)
+ }
+}