From 8e0e6bd6aa249479332704b39f6044702b5350b2 Mon Sep 17 00:00:00 2001 From: Pradip Parmar Date: Wed, 23 Feb 2022 09:50:24 +0530 Subject: [PATCH] change statucode for delete file when file not found. Signed-off-by: Pradip Parmar --- .../blobbercore/handler/file_command_delete.go | 2 +- code/go/0chain.net/core/common/errors.go | 10 ++++++++-- code/go/0chain.net/core/common/handler.go | 8 ++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/code/go/0chain.net/blobbercore/handler/file_command_delete.go b/code/go/0chain.net/blobbercore/handler/file_command_delete.go index 1cdb288dd..786d5f7c0 100644 --- a/code/go/0chain.net/blobbercore/handler/file_command_delete.go +++ b/code/go/0chain.net/blobbercore/handler/file_command_delete.go @@ -31,7 +31,7 @@ func (cmd *FileCommandDelete) IsAuthorized(ctx context.Context, req *http.Reques cmd.exisitingFileRef, _ = reference.GetReference(ctx, allocationObj.ID, path) if cmd.exisitingFileRef == nil { - return common.NewError("invalid_file", "File does not exist at path") + return common.NewErrorfWithStatusCode(204, "invalid_file", "File does not exist at path") } return nil diff --git a/code/go/0chain.net/core/common/errors.go b/code/go/0chain.net/core/common/errors.go index 9f09e5b06..052696808 100644 --- a/code/go/0chain.net/core/common/errors.go +++ b/code/go/0chain.net/core/common/errors.go @@ -6,8 +6,9 @@ import ( /*Error type for a new application error */ type Error struct { - Code string `json:"code,omitempty"` - Msg string `json:"msg"` + Code string `json:"code,omitempty"` + Msg string `json:"msg"` + StatusCode int `json:"status_code,omitempty"` } func (err *Error) Error() string { @@ -24,6 +25,11 @@ func NewErrorf(code, format string, args ...interface{}) *Error { return &Error{Code: code, Msg: fmt.Sprintf(format, args...)} } +/*NewErrorf - create a new error with format */ +func NewErrorfWithStatusCode(statusCode int, errCode, format string, args ...interface{}) *Error { + return &Error{StatusCode: statusCode, Code: errCode, Msg: fmt.Sprintf(format, args...)} +} + /*InvalidRequest - create error messages that are needed when validating request input */ func InvalidRequest(msg string) error { return NewError("invalid_request", fmt.Sprintf("Invalid request (%v)", msg)) diff --git a/code/go/0chain.net/core/common/handler.go b/code/go/0chain.net/core/common/handler.go index 14233ddac..8f24c11b0 100644 --- a/code/go/0chain.net/core/common/handler.go +++ b/code/go/0chain.net/core/common/handler.go @@ -62,14 +62,18 @@ func ToByteStream(handler JSONResponderF) ReqRespHandlerf { ctx := r.Context() data, err := handler(ctx, r) if err != nil { + statusCode := 400 if cerr, ok := err.(*Error); ok { w.Header().Set(AppErrorHeader, cerr.Code) + if cerr.StatusCode != 0 { + statusCode = cerr.StatusCode + } } if data != nil { responseString, _ := json.Marshal(data) - http.Error(w, string(responseString), 400) + http.Error(w, string(responseString), statusCode) } else { - http.Error(w, err.Error(), 400) + http.Error(w, err.Error(), statusCode) } } else if data != nil { rawdata, ok := data.([]byte)