From ea6ddbee5b9286647705ecc17ec1290ad0a2c8f2 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Fri, 10 Jun 2022 16:26:33 +0300 Subject: [PATCH] rpc: get rid of erverError type Retrieve error's HTTP code in a separate method. --- pkg/rpc/server/error.go | 21 ++++++--------------- pkg/rpc/server/server.go | 4 ++-- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/pkg/rpc/server/error.go b/pkg/rpc/server/error.go index 4dd27c19f..8c5223224 100644 --- a/pkg/rpc/server/error.go +++ b/pkg/rpc/server/error.go @@ -6,12 +6,6 @@ import ( "github.com/nspcc-dev/neo-go/pkg/rpc/response" ) -// serverError represents RPC error response on the server side. -type serverError struct { - *response.Error - HTTPCode int // HTTPCode won't be marshalled because Error's marshaller is used. -} - // abstractResult is an interface which represents either single JSON-RPC 2.0 response // or batch JSON-RPC 2.0 response. type abstractResult interface { @@ -22,14 +16,14 @@ type abstractResult interface { // representation. type abstract struct { response.Header - Error *serverError `json:"error,omitempty"` - Result interface{} `json:"result,omitempty"` + Error *response.Error `json:"error,omitempty"` + Result interface{} `json:"result,omitempty"` } // RunForErrors implements abstractResult interface. func (a abstract) RunForErrors(f func(jsonErr *response.Error)) { if a.Error != nil { - f(a.Error.Error) + f(a.Error) } } @@ -40,12 +34,12 @@ type abstractBatch []abstract func (ab abstractBatch) RunForErrors(f func(jsonErr *response.Error)) { for _, a := range ab { if a.Error != nil { - f(a.Error.Error) + f(a.Error) } } } -func packClientError(respErr *response.Error) *serverError { +func getHTTPCodeForError(respErr *response.Error) int { var httpCode int switch respErr.Code { case response.BadRequestCode: @@ -59,8 +53,5 @@ func packClientError(respErr *response.Error) *serverError { default: httpCode = http.StatusUnprocessableEntity } - return &serverError{ - Error: respErr, - HTTPCode: httpCode, - } + return httpCode } diff --git a/pkg/rpc/server/server.go b/pkg/rpc/server/server.go index a024a96c7..91eabe359 100644 --- a/pkg/rpc/server/server.go +++ b/pkg/rpc/server/server.go @@ -2250,7 +2250,7 @@ func (s *Server) packResponse(r *request.In, result interface{}, respErr *respon }, } if respErr != nil { - resp.Error = packClientError(respErr) + resp.Error = respErr } else { resp.Result = result } @@ -2292,7 +2292,7 @@ func (s *Server) writeHTTPServerResponse(r *request.Request, w http.ResponseWrit if r.In != nil { resp := resp.(abstract) if resp.Error != nil { - w.WriteHeader(resp.Error.HTTPCode) + w.WriteHeader(getHTTPCodeForError(resp.Error)) } } w.Header().Set("Content-Type", "application/json; charset=utf-8")