From 73432aac428ea4b6a19a4cafa46694b874c66fb8 Mon Sep 17 00:00:00 2001 From: Brien Colwell Date: Thu, 4 Dec 2025 14:31:14 -0600 Subject: [PATCH] router: add client session to all router steps --- api/handlers/device_association_handlers.go | 4 ++-- controller/circle_wallet_controller.go | 2 +- controller/subscription_controller.go | 8 ++++---- router/handler_utils.go | 20 +++++++++----------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/api/handlers/device_association_handlers.go b/api/handlers/device_association_handlers.go index 4d9b885f..c5b67e31 100644 --- a/api/handlers/device_association_handlers.go +++ b/api/handlers/device_association_handlers.go @@ -29,7 +29,7 @@ func DeviceShareCodeQR(w http.ResponseWriter, r *http.Request) { impl, w, r, - func(result *model.DeviceShareCodeQRResult) bool { + func(_ *session.ClientSession, result *model.DeviceShareCodeQRResult) bool { w.Header().Set("Content-Type", "image/png") w.Write(result.PngBytes) return true @@ -62,7 +62,7 @@ func DeviceAdoptCodeQR(w http.ResponseWriter, r *http.Request) { impl, w, r, - func(result *model.DeviceAdoptCodeQRResult) bool { + func(_ *session.ClientSession, result *model.DeviceAdoptCodeQRResult) bool { w.Header().Set("Content-Type", "image/png") w.Write(result.PngBytes) return true diff --git a/controller/circle_wallet_controller.go b/controller/circle_wallet_controller.go index b4f23a26..bb8e259b 100644 --- a/controller/circle_wallet_controller.go +++ b/controller/circle_wallet_controller.go @@ -489,7 +489,7 @@ func findMostRecentCircleWallet(session *session.ClientSession) (*CircleWalletIn return mostRecentWalletInfo, nil } -func VerifyCircleBody(req *http.Request) (io.Reader, error) { +func VerifyCircleBody(clientSession *session.ClientSession, req *http.Request) (io.Reader, error) { // server.Logger().Println("VerifyCircleBody") diff --git a/controller/subscription_controller.go b/controller/subscription_controller.go index 05a71f02..60d454da 100644 --- a/controller/subscription_controller.go +++ b/controller/subscription_controller.go @@ -1483,7 +1483,7 @@ func PlaySubscriptionRenewalPost( return nil } -func VerifyStripeBody(req *http.Request) (io.Reader, error) { +func VerifyStripeBody(clientSession *session.ClientSession, req *http.Request) (io.Reader, error) { bodyBytes, err := io.ReadAll(req.Body) if err != nil { return nil, err @@ -1502,7 +1502,7 @@ func VerifyStripeBody(req *http.Request) (io.Reader, error) { return bytes.NewReader(bodyBytes), nil } -func VerifyCoinbaseBody(req *http.Request) (io.Reader, error) { +func VerifyCoinbaseBody(clientSession *session.ClientSession, req *http.Request) (io.Reader, error) { bodyBytes, err := io.ReadAll(req.Body) if err != nil { return nil, err @@ -1533,7 +1533,7 @@ func coinbaseSignature(bodyBytes []byte, header string, secret string) error { return errors.New("Invalid authentication.") } -func VerifyPlayBody(req *http.Request) (io.Reader, error) { +func VerifyPlayBody(clientSession *session.ClientSession, req *http.Request) (io.Reader, error) { bodyBytes, err := io.ReadAll(req.Body) if err != nil { @@ -1941,7 +1941,7 @@ var heliusAuthSecret = sync.OnceValue(func() string { return c["helius"].(map[string]any)["webhook_auth_header"].(string) }) -func VerifyHeliusBody(req *http.Request) (io.Reader, error) { +func VerifyHeliusBody(clientSession *session.ClientSession, req *http.Request) (io.Reader, error) { bodyBytes, err := io.ReadAll(req.Body) if err != nil { return nil, err diff --git a/router/handler_utils.go b/router/handler_utils.go index c198e046..d0d4832d 100644 --- a/router/handler_utils.go +++ b/router/handler_utils.go @@ -24,11 +24,11 @@ import ( type ImplFunction[R any] func(*session.ClientSession) (R, error) type ImplWithInputFunction[T any, R any] func(T, *session.ClientSession) (R, error) -type BodyFormatFunction func(*http.Request) (io.Reader, error) -type FormatFunction[R any] func(result R) (complete bool) +type BodyFormatFunction func(*session.ClientSession, *http.Request) (io.Reader, error) +type FormatFunction[R any] func(*session.ClientSession, R) (complete bool) func JsonFormatter[R any](w http.ResponseWriter) FormatFunction[R] { - formatter := func(result R) bool { + formatter := func(clientSession *session.ClientSession, result R) bool { responseJson, err := json.Marshal(result) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) @@ -70,12 +70,11 @@ func wrap[R any]( } for _, formatter := range formatters { - if complete := formatter(result); complete { + if complete := formatter(session, result); complete { return } } - - JsonFormatter[R](w)(result) + JsonFormatter[R](w)(session, result) } func implName[R any](impl ImplFunction[R]) string { @@ -208,7 +207,7 @@ func wrapWithInput[T any, R any]( // return // } - body, err := bodyFormatter(req) + body, err := bodyFormatter(session, req) if err != nil { glog.Infof("[h]request body formatter error %s\n", err) http.Error(w, err.Error(), http.StatusBadRequest) @@ -245,12 +244,11 @@ func wrapWithInput[T any, R any]( } for _, formatter := range formatters { - if complete := formatter(result); complete { + if complete := formatter(session, result); complete { return } } - - JsonFormatter[R](w)(result) + JsonFormatter[R](w)(session, result) } // guarantees NetworkId+UserId @@ -425,6 +423,6 @@ func RaiseHttpError(err error, w http.ResponseWriter) (statusError bool) { return } -func RequestBodyFormatter(req *http.Request) (io.Reader, error) { +func RequestBodyFormatter(clientSession *session.ClientSession, req *http.Request) (io.Reader, error) { return req.Body, nil }