diff options
Diffstat (limited to 'lib/http')
| -rw-r--r-- | lib/http/endpoint_response.go | 4 | ||||
| -rw-r--r-- | lib/http/endpoint_response_example_test.go | 8 | ||||
| -rw-r--r-- | lib/http/endpoint_response_test.go | 16 | ||||
| -rw-r--r-- | lib/http/server.go | 18 |
4 files changed, 29 insertions, 17 deletions
diff --git a/lib/http/endpoint_response.go b/lib/http/endpoint_response.go index b91e5836..ff16d6b9 100644 --- a/lib/http/endpoint_response.go +++ b/lib/http/endpoint_response.go @@ -38,6 +38,10 @@ type EndpointResponse struct { Total int64 `json:"total,omitempty"` } +func (epr *EndpointResponse) Error() string { + return epr.E.Error() +} + // Unwrap return the error as instance of *liberror.E. func (epr *EndpointResponse) Unwrap() (err error) { return &epr.E diff --git a/lib/http/endpoint_response_example_test.go b/lib/http/endpoint_response_example_test.go index f0bbec6d..91829346 100644 --- a/lib/http/endpoint_response_example_test.go +++ b/lib/http/endpoint_response_example_test.go @@ -38,17 +38,17 @@ func ExampleEndpointResponse() { res := &EndpointResponse{} id := epr.HttpRequest.Form.Get("id") if len(id) == 0 { - res.Code = http.StatusBadRequest - res.Message = "empty parameter id" + res.E.Code = http.StatusBadRequest + res.E.Message = "empty parameter id" return nil, res } if id == "0" { // If the EndpointResponse.Code is 0, it will // default to http.StatusInternalServerError - res.Message = "id value 0 cause internal server error" + res.E.Message = "id value 0 cause internal server error" return nil, res } - res.Code = http.StatusOK + res.E.Code = http.StatusOK res.Data = &myData{ ID: id, } diff --git a/lib/http/endpoint_response_test.go b/lib/http/endpoint_response_test.go index 1e777b31..6acb25cd 100644 --- a/lib/http/endpoint_response_test.go +++ b/lib/http/endpoint_response_test.go @@ -12,15 +12,23 @@ import ( "github.com/shuLhan/share/lib/test" ) -type myResponse EndpointResponse +type myResponse struct { + EndpointResponse +} + +func (myres *myResponse) Error() string { + return myres.EndpointResponse.Error() +} // The EndpointResponse when returned as error should be able to converted // to liberrors.E using errors.As(). func TestEndpointResponse_errors_As(t *testing.T) { myres := &myResponse{ - E: liberrors.E{ - Code: 400, - Message: "bad request", + EndpointResponse: EndpointResponse{ + E: liberrors.E{ + Code: 400, + Message: "bad request", + }, }, } diff --git a/lib/http/server.go b/lib/http/server.go index b81e414f..bbdc8007 100644 --- a/lib/http/server.go +++ b/lib/http/server.go @@ -56,13 +56,13 @@ func NewServer(opts *ServerOptions) (srv *Server, err error) { srv.Server = opts.Conn srv.Server.Addr = opts.Address - srv.Handler = srv + srv.Server.Handler = srv - if srv.ReadTimeout == 0 { - srv.ReadTimeout = defRWTimeout + if srv.Server.ReadTimeout == 0 { + srv.Server.ReadTimeout = defRWTimeout } - if srv.WriteTimeout == 0 { - srv.WriteTimeout = defRWTimeout + if srv.Server.WriteTimeout == 0 { + srv.Server.WriteTimeout = defRWTimeout } if srv.Options.Memfs != nil { err = srv.Options.Memfs.Init() @@ -278,10 +278,10 @@ func (srv *Server) ServeHTTP(res http.ResponseWriter, req *http.Request) { // Start the HTTP server. func (srv *Server) Start() (err error) { - if srv.TLSConfig == nil { - err = srv.ListenAndServe() + if srv.Server.TLSConfig == nil { + err = srv.Server.ListenAndServe() } else { - err = srv.ListenAndServeTLS("", "") + err = srv.Server.ListenAndServeTLS("", "") } if errors.Is(err, http.ErrServerClosed) { err = nil @@ -298,7 +298,7 @@ func (srv *Server) Stop(wait time.Duration) (err error) { } ctx, cancel := context.WithTimeout(context.Background(), wait) defer cancel() - return srv.Shutdown(ctx) + return srv.Server.Shutdown(ctx) } func (srv *Server) getFSNode(reqPath string) (node *memfs.Node) { |
