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
|
||||
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,12 +108,14 @@ func (pctx PreContext) Start() (*AppContext, *gin.Context, *HTTPResponse) {
|
||||
return nil, nil, langext.Ptr(Error(err))
|
||||
}
|
||||
} else {
|
||||
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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if pctx.rawbody != nil {
|
||||
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))
|
||||
}
|
||||
} else {
|
||||
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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if pctx.header != nil {
|
||||
if err := pctx.ginCtx.ShouldBindHeader(pctx.header); err != nil {
|
||||
|
@ -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())
|
||||
}
|
||||
|
@ -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),
|
||||
}
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user