v0.0.483
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m37s
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m37s
This commit is contained in:
parent
6ded615723
commit
bc5c61e43d
@ -25,6 +25,7 @@ type PreContext struct {
|
|||||||
header any
|
header any
|
||||||
timeout *time.Duration
|
timeout *time.Duration
|
||||||
persistantData *preContextData // must be a ptr, so that we can get the values back in out Wrap func
|
persistantData *preContextData // must be a ptr, so that we can get the values back in out Wrap func
|
||||||
|
ignoreWrongContentType bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type preContextData struct {
|
type preContextData struct {
|
||||||
@ -71,7 +72,12 @@ func (pctx *PreContext) WithSession(sessionObj SessionObject) *PreContext {
|
|||||||
return pctx
|
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 pctx.uri != nil {
|
||||||
if err := pctx.ginCtx.ShouldBindUri(pctx.uri); err != nil {
|
if err := pctx.ginCtx.ShouldBindUri(pctx.uri); err != nil {
|
||||||
err = exerr.Wrap(err, "Failed to read uri").
|
err = exerr.Wrap(err, "Failed to read uri").
|
||||||
@ -102,12 +108,14 @@ func (pctx PreContext) Start() (*AppContext, *gin.Context, *HTTPResponse) {
|
|||||||
return nil, nil, langext.Ptr(Error(err))
|
return nil, nil, langext.Ptr(Error(err))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if !pctx.ignoreWrongContentType {
|
||||||
err := exerr.New(exerr.TypeBindFailJSON, "missing JSON body").
|
err := exerr.New(exerr.TypeBindFailJSON, "missing JSON body").
|
||||||
Str("struct_type", fmt.Sprintf("%T", pctx.body)).
|
Str("struct_type", fmt.Sprintf("%T", pctx.body)).
|
||||||
Build()
|
Build()
|
||||||
return nil, nil, langext.Ptr(Error(err))
|
return nil, nil, langext.Ptr(Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if pctx.rawbody != nil {
|
if pctx.rawbody != nil {
|
||||||
if brc, ok := pctx.ginCtx.Request.Body.(dataext.BufferedReadCloser); ok {
|
if brc, ok := pctx.ginCtx.Request.Body.(dataext.BufferedReadCloser); ok {
|
||||||
@ -144,12 +152,14 @@ func (pctx PreContext) Start() (*AppContext, *gin.Context, *HTTPResponse) {
|
|||||||
return nil, nil, langext.Ptr(Error(err))
|
return nil, nil, langext.Ptr(Error(err))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if !pctx.ignoreWrongContentType {
|
||||||
err := exerr.New(exerr.TypeBindFailFormData, "missing form body").
|
err := exerr.New(exerr.TypeBindFailFormData, "missing form body").
|
||||||
Str("struct_type", fmt.Sprintf("%T", pctx.form)).
|
Str("struct_type", fmt.Sprintf("%T", pctx.form)).
|
||||||
Build()
|
Build()
|
||||||
return nil, nil, langext.Ptr(Error(err))
|
return nil, nil, langext.Ptr(Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if pctx.header != nil {
|
if pctx.header != nil {
|
||||||
if err := pctx.ginCtx.ShouldBindHeader(pctx.header); err != nil {
|
if err := pctx.ginCtx.ShouldBindHeader(pctx.header); err != nil {
|
||||||
|
@ -36,6 +36,13 @@ type InspectableHTTPResponse interface {
|
|||||||
Headers() []string
|
Headers() []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type InspectableHTTPErrorResponse interface {
|
||||||
|
HTTPResponse
|
||||||
|
InspectableHTTPResponse
|
||||||
|
|
||||||
|
Error() error
|
||||||
|
}
|
||||||
|
|
||||||
func NotImplemented() HTTPResponse {
|
func NotImplemented() HTTPResponse {
|
||||||
return Error(exerr.New(exerr.TypeNotImplemented, "").Build())
|
return Error(exerr.New(exerr.TypeNotImplemented, "").Build())
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,10 @@ type jsonAPIErrResponse struct {
|
|||||||
cookies []cookieval
|
cookies []cookieval
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (j jsonAPIErrResponse) Error() error {
|
||||||
|
return j.err
|
||||||
|
}
|
||||||
|
|
||||||
func (j jsonAPIErrResponse) Write(g *gin.Context) {
|
func (j jsonAPIErrResponse) Write(g *gin.Context) {
|
||||||
for _, v := range j.headers {
|
for _, v := range j.headers {
|
||||||
g.Header(v.Key, v.Val)
|
g.Header(v.Key, v.Val)
|
||||||
@ -64,7 +68,7 @@ func (j jsonAPIErrResponse) Unwrap() error {
|
|||||||
return j.err
|
return j.err
|
||||||
}
|
}
|
||||||
|
|
||||||
func Error(e error) HTTPResponse {
|
func Error(e error) InspectableHTTPErrorResponse {
|
||||||
return &jsonAPIErrResponse{
|
return &jsonAPIErrResponse{
|
||||||
err: exerr.FromError(e),
|
err: exerr.FromError(e),
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package goext
|
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"
|
||||||
|
Loading…
Reference in New Issue
Block a user