Documentation ¶
Index ¶
- Variables
- func NewDatastore(ds models.Datastore, al AppListener, fl FnListener, tl TriggerListener) models.Datastore
- type APIAppHandler
- type APIAppHandlerFunc
- type APIHandler
- type APIHandlerFunc
- type AppListener
- type CallListener
- type ExtServer
- type Extension
- type FnListener
- type Middleware
- type MiddlewareFunc
- type TriggerListener
Constants ¶
This section is empty.
Variables ¶
var ( // MiddlewareControllerKey is a context key. It can be used in handlers with context.WithValue to // access the MiddlewareContext. MiddlewareControllerKey = contextKey("middleware_controller") // AppNameKey AppNameKey = contextKey("app_name") )
Keys for extensions to get things out of the context
Functions ¶
func NewDatastore ¶
func NewDatastore(ds models.Datastore, al AppListener, fl FnListener, tl TriggerListener) models.Datastore
NewDatastore returns a Datastore that wraps the provided Datastore, calling any relevant listeners around any of the Datastore methods.
Types ¶
type APIAppHandler ¶
type APIAppHandler interface { // Handle(ctx context.Context) ServeHTTP(w http.ResponseWriter, r *http.Request, app *models.App) }
APIAppHandler may be used to add an http endpoint on the versioned route of fn API, at /:version/apps/:app
type APIAppHandlerFunc ¶
APIAppHandlerFunc is a convenience for getting an APIAppHandler.
func (APIAppHandlerFunc) ServeHTTP ¶
func (f APIAppHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request, app *models.App)
ServeHTTP calls f(w, r).
type APIHandler ¶
type APIHandler interface { // Handle(ctx context.Context) ServeHTTP(w http.ResponseWriter, r *http.Request) }
APIHandler may be used to add an http endpoint on the versioned route of the Fn API.
type APIHandlerFunc ¶
type APIHandlerFunc func(w http.ResponseWriter, r *http.Request)
APIHandlerFunc is a convenience to make an APIHandler.
func (APIHandlerFunc) ServeHTTP ¶
func (f APIHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP calls f(w, r).
type AppListener ¶
type AppListener interface { // BeforeAppCreate called right before creating App in the database BeforeAppCreate(ctx context.Context, app *models.App) error // AfterAppCreate called after creating App in the database AfterAppCreate(ctx context.Context, app *models.App) error // BeforeAppUpdate called right before updating App in the database BeforeAppUpdate(ctx context.Context, app *models.App) error // AfterAppUpdate called after updating App in the database AfterAppUpdate(ctx context.Context, app *models.App) error // BeforeAppDelete called right before deleting App in the database BeforeAppDelete(ctx context.Context, app *models.App) error // AfterAppDelete called after deleting App in the database AfterAppDelete(ctx context.Context, app *models.App) error // BeforeAppGet called right before getting an app BeforeAppGet(ctx context.Context, appID string) error // AfterAppGet called after getting app from database AfterAppGet(ctx context.Context, app *models.App) error // BeforeAppsList called right before getting a list of all user's apps. Modify the filter to adjust what gets returned. BeforeAppsList(ctx context.Context, filter *models.AppFilter) error // AfterAppsList called after deleting getting a list of user's apps. apps is the result after applying AppFilter. AfterAppsList(ctx context.Context, apps []*models.App) error }
AppListener is an interface used to inject custom code at key points in the app lifecycle.
type CallListener ¶
type CallListener interface { // BeforeCall called before a function is executed BeforeCall(ctx context.Context, call *models.Call) error // AfterCall called after a function completes AfterCall(ctx context.Context, call *models.Call) error }
CallListener enables callbacks around Call events.
type ExtServer ¶
type ExtServer interface { // AddAppListener adds a listener that will be invoked around any relevant methods. AddAppListener(listener AppListener) // AddCallListener adds a listener that will be invoked around any call invocations. AddCallListener(listener CallListener) // AddAPIMiddleware add middleware AddAPIMiddleware(m Middleware) // AddAPIMiddlewareFunc add middlewarefunc AddAPIMiddlewareFunc(m MiddlewareFunc) // AddRootMiddleware add middleware add middleware for end user applications AddRootMiddleware(m Middleware) // AddRootMiddlewareFunc add middleware for end user applications AddRootMiddlewareFunc(m MiddlewareFunc) // AddEndpoint adds an endpoint to /v1/x AddEndpoint(method, path string, handler APIHandler) // AddEndpoint adds an endpoint to /v1/x AddEndpointFunc(method, path string, handler func(w http.ResponseWriter, r *http.Request)) // AddAppEndpoint adds an endpoints to /v1/apps/:app/x AddAppEndpoint(method, path string, handler APIAppHandler) // AddAppEndpoint adds an endpoints to /v1/apps/:app/x AddAppEndpointFunc(method, path string, handler func(w http.ResponseWriter, r *http.Request, app *models.App)) // Datastore returns the Datastore Fn is using Datastore() models.Datastore }
ExtServer limits what the extension should do and prevents dependency loop, it can be used to alter / modify / add the behavior of fn server.
type Extension ¶
Extension is the interface that all extensions must implement in order to configure themselves against an ExtServer.
type FnListener ¶
type FnListener interface { // BeforeFnCreate called before fn created in the datastore BeforeFnCreate(ctx context.Context, fn *models.Fn) error // AfterFnCreate called after fn create in the datastore AfterFnCreate(ctx context.Context, fn *models.Fn) error // BeforeFnUpdate called before fn update in datastore BeforeFnUpdate(ctx context.Context, fn *models.Fn) error // AfterFnUpdate called after fn updated in datastore AfterFnUpdate(ctx context.Context, fn *models.Fn) error // BeforeFnDelete called before fn deleted from the datastore BeforeFnDelete(ctx context.Context, fnID string) error // AfterFnDelete called after fn deleted from the datastore AfterFnDelete(ctx context.Context, fnID string) error }
FnListener enables callbacks around Fn events
type Middleware ¶
Middleware just takes a http.Handler and returns one. So the next middle ware must be called within the returned handler or it would be ignored.
type MiddlewareFunc ¶
MiddlewareFunc is a here to allow a plain function to be a middleware.
type TriggerListener ¶
type TriggerListener interface { // BeforeTriggerCreate called before trigger created in the datastore BeforeTriggerCreate(ctx context.Context, trigger *models.Trigger) error // AfterTriggerCreate called after trigger create in the datastore AfterTriggerCreate(ctx context.Context, trigger *models.Trigger) error // BeforeTriggerUpdate called before trigger update in datastore BeforeTriggerUpdate(ctx context.Context, trigger *models.Trigger) error // AfterTriggerUpdate called after trigger updated in datastore AfterTriggerUpdate(ctx context.Context, trigger *models.Trigger) error // BeforeTriggerDelete called before trigger deleted from the datastore BeforeTriggerDelete(ctx context.Context, triggerId string) error // AfterTriggerDelete called after trigger deleted from the datastore AfterTriggerDelete(ctx context.Context, triggerId string) error }
// TriggerListener enables callbacks around Trigger events