aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-02-25 19:36:18 +0700
committerShulhan <ms@kilabit.info>2023-02-25 19:56:24 +0700
commitfee20f0aeb51113a995c8fe21ff1e34f4244eb8f (patch)
tree79e25493dde2931cefa5fbb812717355bcef8cce /lib
parent4100f2dbd433ec885c3c9f5eb963ba98bb1ab1e4 (diff)
downloadpakakeh.go-fee20f0aeb51113a995c8fe21ff1e34f4244eb8f.tar.xz
all: access embedded field or methods using the type name
This is for clarity in the code, better to be explicit by typing where the field or methods come from.
Diffstat (limited to 'lib')
-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
-rw-r--r--lib/ssh/client.go2
-rw-r--r--lib/xmlrpc/response.go10
6 files changed, 35 insertions, 23 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) {
diff --git a/lib/ssh/client.go b/lib/ssh/client.go
index 3063153c..ea624066 100644
--- a/lib/ssh/client.go
+++ b/lib/ssh/client.go
@@ -112,7 +112,7 @@ func NewClientFromConfig(cfg *config.Section) (cl *Client, err error) {
// Execute a command on remote server.
func (cl *Client) Execute(cmd string) (err error) {
- sess, err := cl.NewSession()
+ sess, err := cl.Client.NewSession()
if err != nil {
return fmt.Errorf("ssh: NewSession: " + err.Error())
}
diff --git a/lib/xmlrpc/response.go b/lib/xmlrpc/response.go
index 85e2d4bf..ada93acb 100644
--- a/lib/xmlrpc/response.go
+++ b/lib/xmlrpc/response.go
@@ -24,15 +24,15 @@ func (resp *Response) MarshalText() (out []byte, err error) {
buf.WriteString(xml.Header)
buf.WriteString("<methodResponse>")
- if resp.Code <= 200 {
+ if resp.E.Code <= 200 {
fmt.Fprintf(&buf, "<params><param>%s</param></params>",
resp.Param)
} else {
buf.WriteString("<fault><value><struct>")
fmt.Fprintf(&buf, "<member><name>faultCode</name><value><int>%d</int></value></member>",
- resp.Code)
+ resp.E.Code)
fmt.Fprintf(&buf, "<member><name>faultString</name><value><string>%s</string></value></member>",
- resp.Message)
+ resp.E.Message)
buf.WriteString("</struct></value></fault>")
}
@@ -113,8 +113,8 @@ func (resp *Response) unmarshalFault(dec *xml.Decoder) (err error) {
return fmt.Errorf("unmarshalFault: %w", err)
}
- resp.Code = v.GetFieldAsInteger(memberNameFaultCode)
- resp.Message = v.GetFieldAsString(memberNameFaultString)
+ resp.E.Code = v.GetFieldAsInteger(memberNameFaultCode)
+ resp.E.Message = v.GetFieldAsString(memberNameFaultString)
return nil
}