v0.0.483
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m37s

This commit is contained in:
Mike Schwörer 2024-07-16 15:08:37 +02:00
parent 6ded615723
commit bc5c61e43d
Signed by: Mikescher
GPG Key ID: D3C7172E0A70F8CF
4 changed files with 43 additions and 22 deletions

View File

@ -15,16 +15,17 @@ import (
)
type PreContext struct {
ginCtx *gin.Context
wrapper *GinWrapper
uri any
query any
body any
rawbody *[]byte
form any
header any
timeout *time.Duration
persistantData *preContextData // must be a ptr, so that we can get the values back in out Wrap func
ginCtx *gin.Context
wrapper *GinWrapper
uri any
query any
body any
rawbody *[]byte
form any
header any
timeout *time.Duration
persistantData *preContextData // must be a ptr, so that we can get the values back in out Wrap func
ignoreWrongContentType bool
}
type preContextData struct {
@ -71,7 +72,12 @@ func (pctx *PreContext) WithSession(sessionObj SessionObject) *PreContext {
return pctx
}
func (pctx PreContext) Start() (*AppContext, *gin.Context, *HTTPResponse) {
func (pctx *PreContext) IgnoreWrongContentType() *PreContext {
pctx.ignoreWrongContentType = true
return pctx
}
func (pctx PreContext) Start() (*AppContext, *gin.Context, *InspectableHTTPErrorResponse) {
if pctx.uri != nil {
if err := pctx.ginCtx.ShouldBindUri(pctx.uri); err != nil {
err = exerr.Wrap(err, "Failed to read uri").
@ -102,10 +108,12 @@ func (pctx PreContext) Start() (*AppContext, *gin.Context, *HTTPResponse) {
return nil, nil, langext.Ptr(Error(err))
}
} else {
err := exerr.New(exerr.TypeBindFailJSON, "missing JSON body").
Str("struct_type", fmt.Sprintf("%T", pctx.body)).
Build()
return nil, nil, langext.Ptr(Error(err))
if !pctx.ignoreWrongContentType {
err := exerr.New(exerr.TypeBindFailJSON, "missing JSON body").
Str("struct_type", fmt.Sprintf("%T", pctx.body)).
Build()
return nil, nil, langext.Ptr(Error(err))
}
}
}
@ -144,10 +152,12 @@ func (pctx PreContext) Start() (*AppContext, *gin.Context, *HTTPResponse) {
return nil, nil, langext.Ptr(Error(err))
}
} else {
err := exerr.New(exerr.TypeBindFailFormData, "missing form body").
Str("struct_type", fmt.Sprintf("%T", pctx.form)).
Build()
return nil, nil, langext.Ptr(Error(err))
if !pctx.ignoreWrongContentType {
err := exerr.New(exerr.TypeBindFailFormData, "missing form body").
Str("struct_type", fmt.Sprintf("%T", pctx.form)).
Build()
return nil, nil, langext.Ptr(Error(err))
}
}
}

View File

@ -36,6 +36,13 @@ type InspectableHTTPResponse interface {
Headers() []string
}
type InspectableHTTPErrorResponse interface {
HTTPResponse
InspectableHTTPResponse
Error() error
}
func NotImplemented() HTTPResponse {
return Error(exerr.New(exerr.TypeNotImplemented, "").Build())
}

View File

@ -13,6 +13,10 @@ type jsonAPIErrResponse struct {
cookies []cookieval
}
func (j jsonAPIErrResponse) Error() error {
return j.err
}
func (j jsonAPIErrResponse) Write(g *gin.Context) {
for _, v := range j.headers {
g.Header(v.Key, v.Val)
@ -64,7 +68,7 @@ func (j jsonAPIErrResponse) Unwrap() error {
return j.err
}
func Error(e error) HTTPResponse {
func Error(e error) InspectableHTTPErrorResponse {
return &jsonAPIErrResponse{
err: exerr.FromError(e),
}

View File

@ -1,5 +1,5 @@
package goext
const GoextVersion = "0.0.482"
const GoextVersion = "0.0.483"
const GoextVersionTimestamp = "2024-07-12T16:33:42+0200"
const GoextVersionTimestamp = "2024-07-16T15:08:37+0200"