From 12fae1958a1065066232e80bd0ef46b219435100 Mon Sep 17 00:00:00 2001 From: Alok Nerurkar Date: Thu, 10 Jun 2021 15:30:40 +0530 Subject: [PATCH] fix: explicitly return error in handlers --- pkg/api/bytes.go | 9 ++++++++- pkg/api/bzz.go | 23 ++++++++++++----------- pkg/api/chunk.go | 8 +++++++- pkg/api/dirs.go | 8 +++++++- pkg/api/pss.go | 8 +++++++- 5 files changed, 41 insertions(+), 15 deletions(-) diff --git a/pkg/api/bytes.go b/pkg/api/bytes.go index c7407bfcecb..1870afeb593 100644 --- a/pkg/api/bytes.go +++ b/pkg/api/bytes.go @@ -5,11 +5,13 @@ package api import ( + "errors" "fmt" "net/http" "strings" "github.com/ethersphere/bee/pkg/jsonhttp" + "github.com/ethersphere/bee/pkg/postage" "github.com/ethersphere/bee/pkg/sctx" "github.com/ethersphere/bee/pkg/swarm" "github.com/ethersphere/bee/pkg/tags" @@ -70,7 +72,12 @@ func (s *server) bytesUploadHandler(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debugf("bytes upload: split write all: %v", err) logger.Error("bytes upload: split write all") - mappedHTTPErr(w, err, nil) + switch { + case errors.Is(err, postage.ErrBucketFull): + jsonhttp.PaymentRequired(w, "batch is overissued") + default: + jsonhttp.InternalServerError(w, nil) + } return } diff --git a/pkg/api/bzz.go b/pkg/api/bzz.go index 83d5558277f..762580bd0f5 100644 --- a/pkg/api/bzz.go +++ b/pkg/api/bzz.go @@ -33,15 +33,6 @@ import ( "github.com/ethersphere/langos" ) -func mappedHTTPErr(w http.ResponseWriter, e error, defaultMsg interface{}) { - switch { - case errors.Is(e, postage.ErrBucketFull): - jsonhttp.PaymentRequired(w, "batch is overissued") - default: - jsonhttp.InternalServerError(w, defaultMsg) - } -} - func (s *server) bzzUploadHandler(w http.ResponseWriter, r *http.Request) { logger := tracing.NewLoggerWithTraceID(r.Context(), s.logger) @@ -129,7 +120,12 @@ func (s *server) fileUploadHandler(w http.ResponseWriter, r *http.Request, store if err != nil { logger.Debugf("bzz upload file: file store, file %q: %v", fileName, err) logger.Errorf("bzz upload file: file store, file %q", fileName) - mappedHTTPErr(w, err, errFileStore) + switch { + case errors.Is(err, postage.ErrBucketFull): + jsonhttp.PaymentRequired(w, "batch is overissued") + default: + jsonhttp.InternalServerError(w, errFileStore) + } return } @@ -196,7 +192,12 @@ func (s *server) fileUploadHandler(w http.ResponseWriter, r *http.Request, store if err != nil { logger.Debugf("bzz upload file: manifest store, file %q: %v", fileName, err) logger.Errorf("bzz upload file: manifest store, file %q", fileName) - mappedHTTPErr(w, err, nil) + switch { + case errors.Is(err, postage.ErrBucketFull): + jsonhttp.PaymentRequired(w, "batch is overissued") + default: + jsonhttp.InternalServerError(w, nil) + } return } logger.Debugf("Manifest Reference: %s", manifestReference.String()) diff --git a/pkg/api/chunk.go b/pkg/api/chunk.go index 315beb0dbda..3714af19c4c 100644 --- a/pkg/api/chunk.go +++ b/pkg/api/chunk.go @@ -17,6 +17,7 @@ import ( "github.com/ethersphere/bee/pkg/netstore" "github.com/ethersphere/bee/pkg/jsonhttp" + "github.com/ethersphere/bee/pkg/postage" "github.com/ethersphere/bee/pkg/sctx" "github.com/ethersphere/bee/pkg/storage" "github.com/ethersphere/bee/pkg/swarm" @@ -104,7 +105,12 @@ func (s *server) chunkUploadHandler(w http.ResponseWriter, r *http.Request) { if err != nil { s.logger.Debugf("chunk upload: chunk write error: %v, addr %s", err, chunk.Address()) s.logger.Error("chunk upload: chunk write error") - mappedHTTPErr(w, err, "chunk write error") + switch { + case errors.Is(err, postage.ErrBucketFull): + jsonhttp.PaymentRequired(w, "batch is overissued") + default: + jsonhttp.InternalServerError(w, "chunk write error") + } return } else if len(seen) > 0 && seen[0] && tag != nil { err := tag.Inc(tags.StateSeen) diff --git a/pkg/api/dirs.go b/pkg/api/dirs.go index f722a082a90..54d202d1a7e 100644 --- a/pkg/api/dirs.go +++ b/pkg/api/dirs.go @@ -23,6 +23,7 @@ import ( "github.com/ethersphere/bee/pkg/jsonhttp" "github.com/ethersphere/bee/pkg/logging" "github.com/ethersphere/bee/pkg/manifest" + "github.com/ethersphere/bee/pkg/postage" "github.com/ethersphere/bee/pkg/sctx" "github.com/ethersphere/bee/pkg/storage" "github.com/ethersphere/bee/pkg/swarm" @@ -86,7 +87,12 @@ func (s *server) dirUploadHandler(w http.ResponseWriter, r *http.Request, storer if err != nil { logger.Debugf("bzz upload dir: store dir err: %v", err) logger.Errorf("bzz upload dir: store dir") - mappedHTTPErr(w, err, errDirectoryStore) + switch { + case errors.Is(err, postage.ErrBucketFull): + jsonhttp.PaymentRequired(w, "batch is overissued") + default: + jsonhttp.InternalServerError(w, errDirectoryStore) + } return } if created { diff --git a/pkg/api/pss.go b/pkg/api/pss.go index fb2b6bf050e..ed493f6e6a0 100644 --- a/pkg/api/pss.go +++ b/pkg/api/pss.go @@ -8,6 +8,7 @@ import ( "context" "crypto/ecdsa" "encoding/hex" + "errors" "io/ioutil" "net/http" "strings" @@ -96,7 +97,12 @@ func (s *server) pssPostHandler(w http.ResponseWriter, r *http.Request) { if err != nil { s.logger.Debugf("pss send payload: %v. topic: %s", err, topicVar) s.logger.Error("pss send payload") - mappedHTTPErr(w, err, nil) + switch { + case errors.Is(err, postage.ErrBucketFull): + jsonhttp.PaymentRequired(w, "batch is overissued") + default: + jsonhttp.InternalServerError(w, nil) + } return }