From 80f539c21715a15c943edb2079fc9f13ab560db4 Mon Sep 17 00:00:00 2001 From: lash Date: Mon, 22 Jan 2018 05:13:28 +0100 Subject: [PATCH] swarm/api: Rename Db -> Resource --- swarm/api/api.go | 10 ++--- swarm/api/http/server.go | 71 +++++++++++------------------------ swarm/api/http/server_test.go | 21 +++-------- swarm/api/uri.go | 10 ++--- 4 files changed, 34 insertions(+), 78 deletions(-) diff --git a/swarm/api/api.go b/swarm/api/api.go index 2a3de5b5ca..0c8d9d1ea7 100644 --- a/swarm/api/api.go +++ b/swarm/api/api.go @@ -365,7 +365,7 @@ func (self *Api) BuildDirectoryTree(mhash string, nameresolver bool) (key storag } // Look up mutable resource updates at specific periods and versions -func (self *Api) DbLookup(name string, period uint32, version uint32) (storage.Key, []byte, error) { +func (self *Api) ResourceLookup(name string, period uint32, version uint32) (storage.Key, []byte, error) { var err error if version != 0 { if period == 0 { @@ -391,22 +391,22 @@ func (self *Api) DbLookup(name string, period uint32, version uint32) (storage.K return key, data, nil } -func (self *Api) DbCreate(name string, frequency uint64) (err error) { +func (self *Api) ResourceCreate(name string, frequency uint64) (err error) { _, err = self.resource.NewResource(name, frequency) return err } -func (self *Api) DbUpdate(name string, data []byte) (storage.Key, uint32, uint32, error) { +func (self *Api) ResourceUpdate(name string, data []byte) (storage.Key, uint32, uint32, error) { key, err := self.resource.Update(name, data) period, _ := self.resource.GetLastPeriod(name) version, _ := self.resource.GetVersion(name) return key, period, version, err } -func (self *Api) DbHashSize() int { +func (self *Api) ResourceHashSize() int { return self.resource.HashSize() } -func (self *Api) DbIsValidated() bool { +func (self *Api) ResourceIsValidated() bool { return self.resource.IsValidated() } diff --git a/swarm/api/http/server.go b/swarm/api/http/server.go index 49103f5f85..dc4025896c 100644 --- a/swarm/api/http/server.go +++ b/swarm/api/http/server.go @@ -291,7 +291,7 @@ func (s *Server) HandleDelete(w http.ResponseWriter, r *Request) { fmt.Fprint(w, newKey) } -func (s *Server) HandlePostDb(w http.ResponseWriter, r *Request) { +func (s *Server) HandlePostResource(w http.ResponseWriter, r *Request) { var outdata string if r.uri.Path != "" { frequency, err := strconv.ParseUint(r.uri.Path, 10, 64) @@ -299,7 +299,7 @@ func (s *Server) HandlePostDb(w http.ResponseWriter, r *Request) { s.BadRequest(w, r, fmt.Sprintf("Cannot parse frequency parameter: %v", err)) return } - err = s.api.DbCreate(r.uri.Addr, frequency) + err = s.api.ResourceCreate(r.uri.Addr, frequency) if err != nil { s.Error(w, r, fmt.Errorf("Resource creation failed: %v", err)) return @@ -333,13 +333,12 @@ func (s *Server) HandlePostDb(w http.ResponseWriter, r *Request) { data, err := ioutil.ReadAll(r.Body) if err != nil { - w.WriteHeader(http.StatusInternalServerError) + s.Error(w, r, err) return } - _, _, _, err = s.api.DbUpdate(r.uri.Addr, data) + _, _, _, err = s.api.ResourceUpdate(r.uri.Addr, data) if err != nil { - w.Header().Add("Status", fmt.Sprintf("%d", http.StatusUnauthorized)) - http.ServeContent(w, &r.Request, "", time.Now(), bytes.NewReader([]byte(err.Error()))) + w.WriteHeader(http.StatusUnauthorized) return } @@ -351,15 +350,15 @@ func (s *Server) HandlePostDb(w http.ResponseWriter, r *Request) { } // Retrieve mutable resource updates: -// bzz-db[-[immutable|-raw]]:// - get latest update -// bzz-db[-[immutable|-raw]]:/// - get latest update on period n -// bzz-db[-[immutable|-raw]]://// - get update version m of period n +// bzz-resource:// - get latest update +// bzz-resource:/// - get latest update on period n +// bzz-resource://// - get update version m of period n // = ens name or hash -func (s *Server) HandleGetDb(w http.ResponseWriter, r *Request) { - s.handleGetDb(w, r, r.uri.Addr) +func (s *Server) HandleGetResource(w http.ResponseWriter, r *Request) { + s.handleGetResource(w, r, r.uri.Addr) } -func (s *Server) handleGetDb(w http.ResponseWriter, r *Request, name string) { +func (s *Server) handleGetResource(w http.ResponseWriter, r *Request, name string) { var params []string if len(r.uri.Path) > 0 { params = strings.Split(r.uri.Path, "/") @@ -368,19 +367,18 @@ func (s *Server) handleGetDb(w http.ResponseWriter, r *Request, name string) { var period uint64 var version uint64 var data []byte - var dataLength int var err error now := time.Now() log.Debug("handlegetdb", "name", name) switch len(params) { case 0: - updateKey, data, err = s.api.DbLookup(name, 0, 0) + updateKey, data, err = s.api.ResourceLookup(name, 0, 0) case 2: version, err = strconv.ParseUint(params[1], 10, 32) if err != nil { break } - updateKey, data, err = s.api.DbLookup(name, uint32(period), uint32(version)) + updateKey, data, err = s.api.ResourceLookup(name, uint32(period), uint32(version)) case 1: version, err = strconv.ParseUint(params[1], 10, 32) if err != nil { @@ -390,7 +388,7 @@ func (s *Server) handleGetDb(w http.ResponseWriter, r *Request, name string) { if err != nil { break } - updateKey, data, err = s.api.DbLookup(name, uint32(period), uint32(version)) + updateKey, data, err = s.api.ResourceLookup(name, uint32(period), uint32(version)) default: s.BadRequest(w, r, fmt.Sprintf("Invalid mutable resource request")) return @@ -399,35 +397,8 @@ func (s *Server) handleGetDb(w http.ResponseWriter, r *Request, name string) { s.Error(w, r, fmt.Errorf("Mutable resource lookup failed: %v", err)) return } - if !r.uri.DbRaw() { - w.Header().Set("Content-Type", "application/octet-stream") - } else { - entry := api.ManifestEntry{ - Hash: name, - Path: updateKey.Hex(), - ContentType: api.ManifestType, - Size: int64(dataLength), - ModTime: now, - Status: http.StatusOK, - } - mode := 0644 - if s.api.DbIsValidated() { - mode |= (2 << 3) | 2 - } - entry.Mode = int64(mode) - manifest := api.Manifest{ - Entries: []api.ManifestEntry{ - entry, - }, - } - manifestJson, err := json.Marshal(manifest) - if err != nil { - s.Error(w, r, fmt.Errorf("Could not convert manifest to json: %v", err)) - return - } - w.Header().Set("Content-Type", api.ManifestType) - data = []byte(manifestJson) - } + log.Debug("Found update", "key", updateKey) + w.Header().Set("Content-Type", "application/octet-stream") http.ServeContent(w, &r.Request, "", now, bytes.NewReader(data)) } @@ -498,7 +469,7 @@ func (s *Server) HandleGet(w http.ResponseWriter, r *Request) { err = json.Unmarshal(b, m) if len(m.Entries) > 0 { if m.Entries[0].ContentType == api.ResourceContentType { - s.handleGetDb(w, r, m.Entries[0].Path) + s.handleGetResource(w, r, m.Entries[0].Path) return } } @@ -755,8 +726,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "POST": if uri.Raw() || uri.DeprecatedRaw() { s.HandlePostRaw(w, req) - } else if uri.Db() { - s.HandlePostDb(w, req) + } else if uri.Resource() { + s.HandlePostResource(w, req) } else { s.HandlePostFiles(w, req) } @@ -783,8 +754,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "GET": - if uri.Db() || uri.DbRaw() { - s.HandleGetDb(w, req) + if uri.Resource() { + s.HandleGetResource(w, req) return } diff --git a/swarm/api/http/server_test.go b/swarm/api/http/server_test.go index cd7d1a0c9b..c79922a7f2 100644 --- a/swarm/api/http/server_test.go +++ b/swarm/api/http/server_test.go @@ -53,7 +53,7 @@ func TestBzzGetDb(t *testing.T) { t.Fatal(err) } - url := fmt.Sprintf("%s/bzz-db:/%x/42", srv.URL, keybytes) + url := fmt.Sprintf("%s/bzz-resource:/%x/42", srv.URL, keybytes) resp, err := http.Post(url, "application/octet-stream", bytes.NewReader(databytes)) if err != nil { t.Fatal(err) @@ -67,7 +67,7 @@ func TestBzzGetDb(t *testing.T) { } log.Debug("Create", "status", resp.Status, "body", manifesthash) - url = fmt.Sprintf("%s/bzz-db:/%x", srv.URL, keybytes) + url = fmt.Sprintf("%s/bzz-resource:/%x", srv.URL, keybytes) data := []byte("foo") resp, err = http.Post(url, "application/octet-stream", bytes.NewReader(data)) if err != nil { @@ -88,9 +88,9 @@ func TestBzzGetDb(t *testing.T) { if err != nil { t.Fatal(err) } - log.Debug("Manifest", "status", resp.Status, "body", fmt.Sprintf("%s", b)) + log.Debug("Get raw", "status", resp.Status, "body", fmt.Sprintf("%s", b)) - url = fmt.Sprintf("%s/bzz-db-raw:/%x", srv.URL, keybytes) + url = fmt.Sprintf("%s/bzz-resource:/%x", srv.URL, keybytes) resp, err = http.Get(url) if err != nil { t.Fatal(err) @@ -99,18 +99,7 @@ func TestBzzGetDb(t *testing.T) { if err != nil { t.Fatal(err) } - log.Debug("Get raw", "status", resp.Status) - - url = fmt.Sprintf("%s/bzz-db:/%x", srv.URL, keybytes) - resp, err = http.Get(url) - if err != nil { - t.Fatal(err) - } - b, err = ioutil.ReadAll(resp.Body) - if err != nil { - t.Fatal(err) - } - log.Debug("Get manifest", "status", resp.Status) + log.Debug("Get resource", "status", resp.Status, "data", b) } diff --git a/swarm/api/uri.go b/swarm/api/uri.go index c7a929f0f2..009bc016fd 100644 --- a/swarm/api/uri.go +++ b/swarm/api/uri.go @@ -69,7 +69,7 @@ func Parse(rawuri string) (*URI, error) { // check the scheme is valid switch uri.Scheme { - case "bzz", "bzz-raw", "bzz-immutable", "bzz-list", "bzz-hash", "bzzr", "bzzi", "bzz-db", "bzz-db-raw": + case "bzz", "bzz-raw", "bzz-immutable", "bzz-list", "bzz-hash", "bzzr", "bzzi", "bzz-resource": default: return nil, fmt.Errorf("unknown scheme %q", u.Scheme) } @@ -92,12 +92,8 @@ func Parse(rawuri string) (*URI, error) { return uri, nil } -func (u *URI) Db() bool { - return u.Scheme == "bzz-db" -} - -func (u *URI) DbRaw() bool { - return u.Scheme == "bzz-db-raw" +func (u *URI) Resource() bool { + return u.Scheme == "bzz-resource" } func (u *URI) Raw() bool {