aboutsummaryrefslogtreecommitdiff
path: root/go/filer
diff options
context:
space:
mode:
Diffstat (limited to 'go/filer')
-rw-r--r--go/filer/client_operations.go71
-rw-r--r--go/filer/operations.go58
2 files changed, 71 insertions, 58 deletions
diff --git a/go/filer/client_operations.go b/go/filer/client_operations.go
new file mode 100644
index 000000000..2eb5c399d
--- /dev/null
+++ b/go/filer/client_operations.go
@@ -0,0 +1,71 @@
+package filer
+
+import ()
+
+import (
+ "code.google.com/p/weed-fs/go/util"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "net/url"
+)
+
+type ApiRequest struct {
+ Command string //"listFiles", "listDirectories"
+ DirectoryId DirectoryId
+ FileName string
+}
+
+type ListFilesResult struct {
+ Files []FileEntry
+ Error string `json:"error,omitempty"`
+}
+
+func ListFiles(server string, directoryId DirectoryId, fileName string) (*ListFilesResult, error) {
+ var ret ListFilesResult
+ if err := call(server, ApiRequest{Command: "listFiles", DirectoryId: directoryId, FileName: fileName}, &ret); err == nil {
+ if ret.Error != "" {
+ return nil, errors.New(ret.Error)
+ }
+ return &ret, nil
+ } else {
+ return nil, err
+ }
+}
+
+type ListDirectoriesResult struct {
+ Directories []DirectoryEntry
+ Error string `json:"error,omitempty"`
+}
+
+func ListDirectories(server string, directoryId DirectoryId) (*ListDirectoriesResult, error) {
+ var ret ListDirectoriesResult
+ if err := call(server, ApiRequest{Command: "listDirectories", DirectoryId: directoryId}, &ret); err == nil {
+ if ret.Error != "" {
+ return nil, errors.New(ret.Error)
+ }
+ return &ret, nil
+ } else {
+ return nil, err
+ }
+}
+
+func call(server string, request ApiRequest, ret interface{}) error {
+ b, err := json.Marshal(request)
+ if err != nil {
+ fmt.Println("error:", err)
+ return nil
+ }
+ values := make(url.Values)
+ values.Add("request", string(b))
+ jsonBlob, err := util.Post("http://"+server+"/__api__", values)
+ if err != nil {
+ return err
+ }
+ err = json.Unmarshal(jsonBlob, ret)
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
diff --git a/go/filer/operations.go b/go/filer/operations.go
deleted file mode 100644
index 7e89b534d..000000000
--- a/go/filer/operations.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package filer
-
-import ()
-
-import (
- "code.google.com/p/weed-fs/go/util"
- "encoding/json"
- "errors"
- _ "fmt"
- "net/url"
- "strconv"
-)
-
-type ListFilesResult struct {
- Files []FileEntry
- Error string `json:"error,omitempty"`
-}
-
-func ListFiles(server string, directoryId DirectoryId, fileName string) (*ListFilesResult, error) {
- values := make(url.Values)
- values.Add("directoryId", strconv.Itoa(int(directoryId)))
- jsonBlob, err := util.Post("http://"+server+"/dir/lookup", values)
- if err != nil {
- return nil, err
- }
- var ret ListFilesResult
- err = json.Unmarshal(jsonBlob, &ret)
- if err != nil {
- return nil, err
- }
- if ret.Error != "" {
- return nil, errors.New(ret.Error)
- }
- return &ret, nil
-}
-
-type ListDirectoriesResult struct {
- Directories []DirectoryEntry
- Error string `json:"error,omitempty"`
-}
-
-func ListDirectories(server string, directoryId DirectoryId) (*ListDirectoriesResult, error) {
- values := make(url.Values)
- values.Add("directoryId", strconv.Itoa(int(directoryId)))
- jsonBlob, err := util.Post("http://"+server+"/dir/lookup", values)
- if err != nil {
- return nil, err
- }
- var ret ListDirectoriesResult
- err = json.Unmarshal(jsonBlob, &ret)
- if err != nil {
- return nil, err
- }
- if ret.Error != "" {
- return nil, errors.New(ret.Error)
- }
- return &ret, nil
-}