server

package
Version: v0.0.0-...-57f36d7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2017 License: Apache-2.0 Imports: 31 Imported by: 0

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

TODO: it would be nice to move these into the top level folder so people can use these with the "functions" package, eg: functions.AddMiddleware(...)

Index

Constants

View Source
const (
	EnvLogLevel = "log_level"
	EnvMQURL    = "mq_url"
	EnvDBURL    = "db_url"
	EnvPort     = "port" // be careful, Gin expects this variable to be "port"
	EnvAPIURL   = "api_url"
	EnvDriver   = "driver"
)

Variables

View Source
var ErrInternalServerError = errors.New("Something unexpected happened on the server")
View Source
var ErrNoSpecialHandlerFound = errors.New("Path not found")

Functions

func DefaultEnqueue

func DefaultEnqueue(ctx context.Context, mq models.MessageQueue, task *models.Task) (*models.Task, error)

Types

type ApiAppHandler

type ApiAppHandler interface {
	// Handle(ctx context.Context)
	ServeHTTP(w http.ResponseWriter, r *http.Request, app *models.App)
}

type ApiAppHandlerFunc

type ApiAppHandlerFunc func(w http.ResponseWriter, r *http.Request, app *models.App)

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
}

type Handle

type Handle func(http.ResponseWriter, *http.Request, Params)

type HandlerContext

type HandlerContext interface {
	// Context return the context object
	Context() context.Context

	// Request returns the underlying http.Request object
	Request() *http.Request

	// Response returns the http.ResponseWriter
	Response() http.ResponseWriter

	// Overwrite value in the context
	Set(key string, value interface{})
}

Each handler can modify the context here so when it gets passed along, it will use the new info.

type Middleware

type Middleware interface {
	// Serve is what the Middleware must implement. Can modify the request, write output, etc.
	// todo: should we abstract the HTTP out of this?  In case we want to support other protocols.
	Serve(ctx MiddlewareContext, w http.ResponseWriter, r *http.Request, app *models.App) error
}

Middleware is the interface required for implementing functions middlewar

type MiddlewareContext

type MiddlewareContext interface {
	context.Context
	// Middleware can call Next() explicitly to call the next middleware in the chain. If Next() is not called and an error is not returned, Next() will automatically be called.
	Next()
	// Index returns the index of where we're at in the chain
	Index() int
}

MiddlewareContext extends context.Context for Middleware

type MiddlewareFunc

type MiddlewareFunc func(ctx MiddlewareContext, w http.ResponseWriter, r *http.Request, app *models.App) error

MiddlewareFunc func form of Middleware

func (MiddlewareFunc) Serve

Serve wrapper

type Param

type Param struct {
	Key   string
	Value string
}

type Params

type Params []Param

type RunnerListener

type RunnerListener interface {
	// BeforeDispatch called before a function run
	BeforeDispatch(ctx context.Context, route *models.Route) error
	// AfterDispatch called after a function run
	AfterDispatch(ctx context.Context, route *models.Route) error
}

type Server

type Server struct {
	Datastore models.Datastore
	Runner    *runner.Runner
	Router    *gin.Engine
	MQ        models.MessageQueue
	Enqueue   models.Enqueue
	// contains filtered or unexported fields
}

func New

func New(ctx context.Context, drv string, ds models.Datastore, mq models.MessageQueue, apiURL string, opts ...ServerOption) *Server

New creates a new IronFunctions server with the passed in datastore, message queue and API URL

func NewFromEnv

func NewFromEnv(ctx context.Context) *Server

NewFromEnv creates a new IronFunctions 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)

AddAppCreateListener 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)

AddAppEndpoint adds an endpoints to /v1/apps/:app/x

func (*Server) AddMiddlewareFunc

func (s *Server) AddMiddlewareFunc(m func(ctx MiddlewareContext, w http.ResponseWriter, r *http.Request, app *models.App) error)

AddAppEndpoint adds an endpoints to /v1/apps/:app/x

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) AddSpecialHandler

func (s *Server) AddSpecialHandler(handler SpecialHandler)

func (*Server) FireAfterAppCreate

func (s *Server) FireAfterAppCreate(ctx context.Context, app *models.App) error

func (*Server) FireAfterAppDelete

func (s *Server) FireAfterAppDelete(ctx context.Context, app *models.App) error

func (*Server) FireAfterAppUpdate

func (s *Server) FireAfterAppUpdate(ctx context.Context, app *models.App) error

func (*Server) FireAfterDispatch

func (s *Server) FireAfterDispatch(ctx context.Context, route *models.Route) error

func (*Server) FireBeforeAppCreate

func (s *Server) FireBeforeAppCreate(ctx context.Context, app *models.App) error

func (*Server) FireBeforeAppDelete

func (s *Server) FireBeforeAppDelete(ctx context.Context, app *models.App) error

func (*Server) FireBeforeAppUpdate

func (s *Server) FireBeforeAppUpdate(ctx context.Context, app *models.App) error

func (*Server) FireBeforeDispatch

func (s *Server) FireBeforeDispatch(ctx context.Context, route *models.Route) error

func (*Server) Start

func (s *Server) Start(ctx context.Context)

func (*Server) UseSpecialHandlers

func (s *Server) UseSpecialHandlers(ctx context.Context, req *http.Request, resp http.ResponseWriter) (context.Context, error)

UseSpecialHandlers execute all special handlers

type ServerOption

type ServerOption func(*Server)

func EnableShutdownEndpoint

func EnableShutdownEndpoint(halt context.CancelFunc) ServerOption

type SpecialHandler

type SpecialHandler interface {
	Handle(c HandlerContext) error
}

type SpecialHandlerContext

type SpecialHandlerContext struct {
	// contains filtered or unexported fields
}

func (*SpecialHandlerContext) Context

func (c *SpecialHandlerContext) Context() context.Context

func (*SpecialHandlerContext) Request

func (c *SpecialHandlerContext) Request() *http.Request

func (*SpecialHandlerContext) Response

func (*SpecialHandlerContext) Set

func (c *SpecialHandlerContext) Set(key string, value interface{})

Directories

Path Synopsis
internal
routecache
Package routecache is meant to assist in resolving the most used routes at an application.
Package routecache is meant to assist in resolving the most used routes at an application.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL