1
0
mirror of https://github.com/kataras/iris.git synced 2025-12-25 13:57:04 +00:00

Implement ResultHandler as requested at: https://github.com/kataras/iris/issues/1465

Former-commit-id: 9d76c2f00766afd53cf6e591c25f861f179dd817
This commit is contained in:
Gerasimos (Makis) Maropoulos
2020-04-18 22:40:47 +03:00
parent 68c5883bce
commit dcf02480b3
7 changed files with 94 additions and 46 deletions

View File

@@ -79,6 +79,11 @@ func makeHandler(fn interface{}, c *Container, paramsCount int) context.Handler
bindings := getBindingsForFunc(v, c.Dependencies, paramsCount)
resultHandler := defaultResultHandler
for i, lidx := 0, len(c.resultHandlers)-1; i <= lidx; i++ {
resultHandler = c.resultHandlers[lidx-i](resultHandler)
}
return func(ctx context.Context) {
inputs := make([]reflect.Value, numIn)
@@ -102,7 +107,7 @@ func makeHandler(fn interface{}, c *Container, paramsCount int) context.Handler
}
outputs := v.Call(inputs)
if err := dispatchFuncResult(ctx, outputs); err != nil {
if err := dispatchFuncResult(ctx, outputs, resultHandler); err != nil {
c.GetErrorHandler(ctx).HandleError(ctx, err)
}
}