From 31d505d969e651ed7afa11aacdb85453d1310bb7 Mon Sep 17 00:00:00 2001 From: konstantinmds Date: Tue, 26 Aug 2025 16:13:05 +0200 Subject: [PATCH] Add bunrouter dependency --- go.mod | 1 + go.sum | 2 ++ request/http/server.go | 31 ++++++++++++++++++++++++------- request/http/server_test.go | 6 ++---- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index c6c6084..53674ac 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/mattn/kinako v0.0.0-20170717041458-332c0a7e205a // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/stretchr/testify v1.9.0 // indirect + github.com/uptrace/bunrouter v1.0.23 // indirect github.com/x448/float16 v0.8.4 // indirect golang.org/x/crypto v0.27.0 // indirect golang.org/x/sync v0.8.0 // indirect diff --git a/go.sum b/go.sum index bd4f3e1..bcef955 100644 --- a/go.sum +++ b/go.sum @@ -33,6 +33,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/uptrace/bunrouter v1.0.23 h1:Bi7NKw3uCQkcA/GUCtDNPq5LE5UdR9pe+UyWbjHB/wU= +github.com/uptrace/bunrouter v1.0.23/go.mod h1:O3jAcl+5qgnF+ejhgkmbceEk0E/mqaK+ADOocdNpY8M= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= diff --git a/request/http/server.go b/request/http/server.go index 97a2dd8..1283477 100644 --- a/request/http/server.go +++ b/request/http/server.go @@ -7,6 +7,7 @@ import ( "git.defalsify.org/vise.git/logging" "git.grassecon.net/grassrootseconomics/visedriver/errors" "git.grassecon.net/grassrootseconomics/visedriver/request" + "github.com/uptrace/bunrouter" ) var ( @@ -16,6 +17,7 @@ var ( // HTTPRequestHandler implements the session handler for HTTP type HTTPRequestHandler struct { request.RequestHandler + router *bunrouter.Router } func (f *HTTPRequestHandler) WriteError(w http.ResponseWriter, code int, err error) { @@ -30,12 +32,25 @@ func (f *HTTPRequestHandler) WriteError(w http.ResponseWriter, code int, err err } func NewHTTPRequestHandler(h request.RequestHandler) *HTTPRequestHandler { - return &HTTPRequestHandler{ + handler := &HTTPRequestHandler{ RequestHandler: h, + router: bunrouter.New(), } + + // Route all requests to existing vise logic + handler.router.GET("/*path", handler.handleViseRequest) + handler.router.POST("/*path", handler.handleViseRequest) + handler.router.PUT("/*path", handler.handleViseRequest) + handler.router.DELETE("/*path", handler.handleViseRequest) + + return handler } func (hh *HTTPRequestHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { + hh.router.ServeHTTP(w, req) +} + +func (hh *HTTPRequestHandler) handleViseRequest(w http.ResponseWriter, req bunrouter.Request) error { var code int var err error var perr error @@ -47,17 +62,18 @@ func (hh *HTTPRequestHandler) ServeHTTP(w http.ResponseWriter, req *http.Request rp := hh.GetRequestParser() cfg := hh.GetConfig() - cfg.SessionId, err = rp.GetSessionId(req.Context(), req) + cfg.SessionId, err = rp.GetSessionId(req.Context(), req.Request) if err != nil { logg.ErrorCtxf(rqs.Ctx, "", "header processing error", err) hh.WriteError(w, 400, err) + return err } rqs.Config = cfg - rqs.Input, err = rp.GetInput(req) + rqs.Input, err = rp.GetInput(req.Request) if err != nil { logg.ErrorCtxf(rqs.Ctx, "", "header processing error", err) hh.WriteError(w, 400, err) - return + return err } rqs, err = hh.Process(rqs) @@ -74,7 +90,7 @@ func (hh *HTTPRequestHandler) ServeHTTP(w http.ResponseWriter, req *http.Request if code != 200 { hh.WriteError(w, 500, err) - return + return err } w.WriteHeader(200) @@ -83,10 +99,11 @@ func (hh *HTTPRequestHandler) ServeHTTP(w http.ResponseWriter, req *http.Request rqs, perr = hh.Reset(rqs.Ctx, rqs) if err != nil { hh.WriteError(w, 500, err) - return + return err } if perr != nil { hh.WriteError(w, 500, perr) - return + return perr } + return nil } diff --git a/request/http/server_test.go b/request/http/server_test.go index 8bfaf8f..6690917 100644 --- a/request/http/server_test.go +++ b/request/http/server_test.go @@ -99,9 +99,7 @@ func TestRequestHandler_ServeHTTP(t *testing.T) { }, } - sessionHandler := &HTTPRequestHandler{ - RequestHandler: mockRequestHandler, - } + sessionHandler := NewHTTPRequestHandler(mockRequestHandler) req := httptest.NewRequest(http.MethodPost, "/", bytes.NewBuffer(tt.input)) req.Header.Set("X-Vise-Session", tt.sessionID) @@ -119,7 +117,7 @@ func TestRequestHandler_ServeHTTP(t *testing.T) { } func TestRequestHandler_WriteError(t *testing.T) { - handler := &HTTPRequestHandler{} + handler := NewHTTPRequestHandler(&httpmocks.MockRequestHandler{}) mockWriter := &httpmocks.MockWriter{} err := errors.New("test error")