From 498785e213846539f72ad97ad6b5181674a11ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Fri, 3 Nov 2023 16:53:41 +0100 Subject: [PATCH] v0.0.299 pctx.RawBody( *[]byte ) --- cryptext/passHash.go | 1 - ginext/preContext.go | 26 ++++++++++++++++++++++++++ go.mod | 2 +- go.sum | 2 ++ goextVersion.go | 4 ++-- 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/cryptext/passHash.go b/cryptext/passHash.go index fdd0407..15108ff 100644 --- a/cryptext/passHash.go +++ b/cryptext/passHash.go @@ -66,7 +66,6 @@ func (ph PassHash) Data() (_version int, _seed []byte, _payload []byte, _totp bo return int(version), nil, payload, false, nil, true } - // if version == 2 { if len(split) != 3 { return -1, nil, nil, false, nil, false diff --git a/ginext/preContext.go b/ginext/preContext.go index 80a2a91..a331e5b 100644 --- a/ginext/preContext.go +++ b/ginext/preContext.go @@ -1,12 +1,15 @@ package ginext import ( + "bytes" "context" "fmt" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" + "gogs.mikescher.com/BlackForestBytes/goext/dataext" "gogs.mikescher.com/BlackForestBytes/goext/exerr" "gogs.mikescher.com/BlackForestBytes/goext/langext" + "io" "runtime/debug" "time" ) @@ -17,6 +20,7 @@ type PreContext struct { uri any query any body any + rawbody *[]byte form any header any timeout *time.Duration @@ -37,6 +41,11 @@ func (pctx *PreContext) Body(body any) *PreContext { return pctx } +func (pctx *PreContext) RawBody(rawbody *[]byte) *PreContext { + pctx.rawbody = rawbody + return pctx +} + func (pctx *PreContext) Form(form any) *PreContext { pctx.form = form return pctx @@ -90,6 +99,23 @@ func (pctx PreContext) Start() (*AppContext, *gin.Context, *HTTPResponse) { } } + if pctx.rawbody != nil { + if brc, ok := pctx.ginCtx.Request.Body.(dataext.BufferedReadCloser); ok { + v, err := brc.BufferedAll() + if err != nil { + return nil, nil, langext.Ptr(Error(err)) + } + *pctx.rawbody = v + } else { + buf := &bytes.Buffer{} + _, err := io.Copy(buf, pctx.ginCtx.Request.Body) + if err != nil { + return nil, nil, langext.Ptr(Error(err)) + } + *pctx.rawbody = buf.Bytes() + } + } + if pctx.form != nil { if pctx.ginCtx.ContentType() == "multipart/form-data" { if err := pctx.ginCtx.ShouldBindWith(pctx.form, binding.Form); err != nil { diff --git a/go.mod b/go.mod index 9da3df0..05eca48 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( require ( github.com/bytedance/sonic v1.10.2 // indirect github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect - github.com/chenzhuoyu/iasm v0.9.0 // indirect + github.com/chenzhuoyu/iasm v0.9.1 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect diff --git a/go.sum b/go.sum index 5aea8f0..b188a70 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA= github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo= github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= +github.com/chenzhuoyu/iasm v0.9.1 h1:tUHQJXo3NhBqw6s33wkGn9SP3bvrWLdlVIJ3hQBL7P0= +github.com/chenzhuoyu/iasm v0.9.1/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/goextVersion.go b/goextVersion.go index f06b348..45394ba 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.298" +const GoextVersion = "0.0.299" -const GoextVersionTimestamp = "2023-11-01T04:20:08+0100" +const GoextVersionTimestamp = "2023-11-03T16:53:41+0100"