Documentation ¶
Overview ¶
TODO: it would be nice to move these into the top level folder so people can use these with the "functions" package, eg: functions.ApiHandler
Index ¶
- Constants
- Variables
- func HandleErrorResponse(ctx context.Context, w http.ResponseWriter, err error)
- type ApiAppHandler
- type ApiAppHandlerFunc
- type ApiHandler
- type ApiHandlerFunc
- type AppListener
- type Middleware
- type MiddlewareFunc
- type RunnerListener
- type Server
- func (s *Server) AddAppEndpoint(method, path string, handler ApiAppHandler)
- func (s *Server) AddAppEndpointFunc(method, path string, ...)
- func (s *Server) AddAppListener(listener AppListener)
- func (s *Server) AddEndpoint(method, path string, handler ApiHandler)
- func (s *Server) AddEndpointFunc(method, path string, handler func(w http.ResponseWriter, r *http.Request))
- func (s *Server) AddMiddleware(m Middleware)
- func (s *Server) AddMiddlewareFunc(m MiddlewareFunc)
- func (s *Server) AddRunnerListener(listener RunnerListener)
- func (s *Server) FireAfterAppCreate(ctx context.Context, app *models.App) error
- func (s *Server) FireAfterAppDelete(ctx context.Context, app *models.App) error
- func (s *Server) FireAfterAppUpdate(ctx context.Context, app *models.App) error
- func (s *Server) FireAfterDispatch(ctx context.Context, route *models.Route) error
- func (s *Server) FireBeforeAppCreate(ctx context.Context, app *models.App) error
- func (s *Server) FireBeforeAppDelete(ctx context.Context, app *models.App) error
- func (s *Server) FireBeforeAppUpdate(ctx context.Context, app *models.App) error
- func (s *Server) FireBeforeDispatch(ctx context.Context, route *models.Route) error
- func (s *Server) Start(ctx context.Context)
- type ServerOption
Constants ¶
const ( EnvLogLevel = "log_level" EnvMQURL = "mq_url" EnvDBURL = "db_url" EnvLOGDBURL = "logstore_url" EnvPort = "port" // be careful, Gin expects this variable to be "port" EnvAPIURL = "api_url" EnvZipkinURL = "zipkin_url" )
Variables ¶
var ErrInternalServerError = errors.New("internal server error")
ErrInternalServerError returned when something exceptional happens.
Functions ¶
func HandleErrorResponse ¶
func HandleErrorResponse(ctx context.Context, w http.ResponseWriter, err error)
HandleErrorResponse used to handle response errors in the same way.
Types ¶
type ApiAppHandler ¶
type ApiAppHandlerFunc ¶
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) }
type ApiHandlerFunc ¶
type ApiHandlerFunc func(w http.ResponseWriter, r *http.Request)
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 }
AppListener is an interface used to inject custom code at key points in app lifecycle.
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 RunnerListener ¶
type Server ¶
type Server struct { Router *gin.Engine Agent agent.Agent Datastore models.Datastore MQ models.MessageQueue LogDB models.LogStore // contains filtered or unexported fields }
func New ¶
func New(ctx context.Context, ds models.Datastore, mq models.MessageQueue, logDB models.LogStore, opts ...ServerOption) *Server
New creates a new Functions server with the passed in datastore, message queue and API URL
func NewFromEnv ¶
func NewFromEnv(ctx context.Context, opts ...ServerOption) *Server
NewFromEnv creates a new Functions server based on env vars.
func (*Server) AddAppEndpoint ¶
func (s *Server) AddAppEndpoint(method, path string, handler ApiAppHandler)
AddAppEndpoint adds an endpoints to /v1/apps/:app/x
func (*Server) AddAppEndpointFunc ¶
func (s *Server) AddAppEndpointFunc(method, path string, handler func(w http.ResponseWriter, r *http.Request, app *models.App))
AddAppEndpoint adds an endpoints to /v1/apps/:app/x
func (*Server) AddAppListener ¶
func (s *Server) AddAppListener(listener AppListener)
AddAppListener adds a listener that will be notified on App created.
func (*Server) AddEndpoint ¶
func (s *Server) AddEndpoint(method, path string, handler ApiHandler)
AddEndpoint adds an endpoint to /v1/x
func (*Server) AddEndpointFunc ¶
func (s *Server) AddEndpointFunc(method, path string, handler func(w http.ResponseWriter, r *http.Request))
AddEndpoint adds an endpoint to /v1/x
func (*Server) AddMiddleware ¶
func (s *Server) AddMiddleware(m Middleware)
AddMiddleware add middleware
func (*Server) AddMiddlewareFunc ¶
func (s *Server) AddMiddlewareFunc(m MiddlewareFunc)
AddMiddlewareFunc add middlewarefunc
func (*Server) AddRunnerListener ¶
func (s *Server) AddRunnerListener(listener RunnerListener)
AddRunListeners adds a listener that will be fired before and after a function run.
func (*Server) FireAfterAppCreate ¶
FireAfterAppCreate is used to call all the server's Listeners AfterAppCreate functions.
func (*Server) FireAfterAppDelete ¶
FireAfterAppDelete is used to call all the server's Listeners AfterAppDelete functions.
func (*Server) FireAfterAppUpdate ¶
FireAfterAppUpdate is used to call all the server's Listeners AfterAppUpdate functions.
func (*Server) FireAfterDispatch ¶
func (*Server) FireBeforeAppCreate ¶
FireBeforeAppCreate is used to call all the server's Listeners BeforeAppCreate functions.
func (*Server) FireBeforeAppDelete ¶
FireBeforeAppDelete is used to call all the server's Listeners BeforeAppDelete functions.
func (*Server) FireBeforeAppUpdate ¶
FireBeforeAppUpdate is used to call all the server's Listeners BeforeAppUpdate functions.
func (*Server) FireBeforeDispatch ¶
type ServerOption ¶
type ServerOption func(*Server)
func EnableShutdownEndpoint ¶
func EnableShutdownEndpoint(halt context.CancelFunc) ServerOption
func LimitRequestBody ¶
func LimitRequestBody(max int64) ServerOption
Source Files ¶
- app_listeners.go
- apps_create.go
- apps_delete.go
- apps_get.go
- apps_list.go
- apps_update.go
- call_get.go
- call_list.go
- call_logs.go
- error_response.go
- extension_points.go
- init.go
- middleware.go
- ping.go
- prometheus_metrics.go
- routes_create_update.go
- routes_delete.go
- routes_get.go
- routes_list.go
- runner.go
- runner_listeners.go
- server.go
- server_options.go
- shutdown.go
- stats.go
- version.go