aboutsummaryrefslogtreecommitdiff
path: root/lib/http
diff options
context:
space:
mode:
Diffstat (limited to 'lib/http')
-rw-r--r--lib/http/endpoint_response.go4
-rw-r--r--lib/http/endpoint_response_example_test.go8
-rw-r--r--lib/http/endpoint_response_test.go16
-rw-r--r--lib/http/server.go18
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) {