mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
* Adds root level middleware * Added todo * Better way for extensions to be added. * Bad conflict merge?
38 lines
769 B
Go
38 lines
769 B
Go
package agent
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/fnproject/fn/api/models"
|
|
"github.com/fnproject/fn/fnext"
|
|
)
|
|
|
|
type callTrigger interface {
|
|
fireBeforeCall(context.Context, *models.Call) error
|
|
fireAfterCall(context.Context, *models.Call) error
|
|
}
|
|
|
|
func (a *agent) AddCallListener(listener fnext.CallListener) {
|
|
a.callListeners = append(a.callListeners, listener)
|
|
}
|
|
|
|
func (a *agent) fireBeforeCall(ctx context.Context, call *models.Call) error {
|
|
for _, l := range a.callListeners {
|
|
err := l.BeforeCall(ctx, call)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (a *agent) fireAfterCall(ctx context.Context, call *models.Call) error {
|
|
for _, l := range a.callListeners {
|
|
err := l.AfterCall(ctx, call)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|