aboutsummaryrefslogtreecommitdiff
path: root/weed/server
diff options
context:
space:
mode:
authorsparklxb <sparklxb@163.com>2017-03-10 10:28:07 +0800
committersparklxb <sparklxb@163.com>2017-03-10 10:28:19 +0800
commit7f85e159906a4356ae23a8d72f8893469efb5407 (patch)
tree98a594342dc6fd19b9c31215e77245f57ab0f08b /weed/server
parent813a4f7456aa1966f0dfd2ea24d6ec70adf3b4c6 (diff)
downloadseaweedfs-7f85e159906a4356ae23a8d72f8893469efb5407.tar.xz
seaweedfs-7f85e159906a4356ae23a8d72f8893469efb5407.zip
complement weed mount
Diffstat (limited to 'weed/server')
-rw-r--r--weed/server/filer_server.go1
-rw-r--r--weed/server/filer_server_handlers_api.go40
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)
+ }
+}