diff options
| author | Shulhan <ms@kilabit.info> | 2024-03-08 01:42:11 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2024-03-09 01:10:24 +0700 |
| commit | 8007793b86bac3ca0bf937fe246deae5ac46a503 (patch) | |
| tree | f9297531956f219223b56b5d6730690af64a428c /lib/http/server.go | |
| parent | 6653805a0949eafc4a478749842d61b12ef5916a (diff) | |
| download | pakakeh.go-8007793b86bac3ca0bf937fe246deae5ac46a503.tar.xz | |
lib/http: refactor of RegisterEndpoint and RegisterSSE to non-pointer
Once the endpoint registered, the caller should not able to changes
any values on endpoint again.
Diffstat (limited to 'lib/http/server.go')
| -rw-r--r-- | lib/http/server.go | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/lib/http/server.go b/lib/http/server.go index e26fe082..d2e69ecc 100644 --- a/lib/http/server.go +++ b/lib/http/server.go @@ -95,42 +95,43 @@ func (srv *Server) RedirectTemp(res http.ResponseWriter, redirectURL string) { // // Endpoint with Method CONNECT or TRACE will return an error because its // not supported, yet. -func (srv *Server) RegisterEndpoint(ep *Endpoint) (err error) { - if ep == nil { - return nil - } +func (srv *Server) RegisterEndpoint(ep Endpoint) (err error) { + var logp = `RegisterEndpoint` + if ep.Call == nil { - return errors.New(`http.RegisterEndpoint: empty Call field`) + return errors.New(logp + `: empty Call field`) } switch ep.Method { case RequestMethodConnect: - return errors.New(`http.RegisterEndpoint: can't handle CONNECT method yet`) + return errors.New(logp + `: can't handle CONNECT method yet`) case RequestMethodDelete: - err = srv.registerDelete(ep) + err = srv.registerDelete(&ep) case RequestMethodHead: return nil case RequestMethodOptions: return nil case RequestMethodPatch: - err = srv.registerPatch(ep) + err = srv.registerPatch(&ep) case RequestMethodPost: - err = srv.registerPost(ep) + err = srv.registerPost(&ep) case RequestMethodPut: - err = srv.registerPut(ep) + err = srv.registerPut(&ep) case RequestMethodTrace: - return errors.New(`http.RegisterEndpoint: can't handle TRACE method yet`) + return errors.New(logp + `: can't handle TRACE method yet`) case RequestMethodGet: - ep.Method = RequestMethodGet - err = srv.registerGet(ep) + err = srv.registerGet(&ep) } - return err + if err != nil { + return fmt.Errorf(`%s: %w`, logp, err) + } + return nil } // RegisterSSE register Server-Sent Events endpoint. // It will return an error if the [SSEEndpoint.Call] field is not set or // [ErrEndpointAmbiguous] if the same path is already registered. -func (srv *Server) RegisterSSE(ep *SSEEndpoint) (err error) { +func (srv *Server) RegisterSSE(ep SSEEndpoint) (err error) { var logp = `RegisterSSE` if ep.Call == nil { @@ -149,7 +150,7 @@ func (srv *Server) RegisterSSE(ep *SSEEndpoint) (err error) { } } - rute, err = newRouteSSE(ep) + rute, err = newRouteSSE(&ep) if err != nil { return err } @@ -190,6 +191,7 @@ func (srv *Server) RegisterEvaluator(eval Evaluator) { // registerGet register HTTP method GET with callback to handle it. func (srv *Server) registerGet(ep *Endpoint) (err error) { + ep.Method = RequestMethodGet ep.RequestType = RequestTypeQuery // Check if the same route already registered. |
