bolt

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2016 License: MPL-2.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const ConfigPath = "/etc/bolt/config.json"

ConfigPath is the file location to check for a config.json file

View Source
const HaltCallCommandName = "HALT_CALL"

HaltCallCommandName is the string pased to payload.nextCommand to stop all further processing of an api call

View Source
const Version = "1.0"

Version for bolt engine and components

Variables

This section is empty.

Functions

func BuiltinHandlers

func BuiltinHandlers(eng *Engine)

BuiltinHandlers registers the core bolt engine calls

func ExtractCallName

func ExtractCallName(r *http.Request) (string, error)

ExtractCallName pulls the API call name from the URL and returns the string.

func OutputError

func OutputError(w http.ResponseWriter, err *bolterror.BoltError)

OutputError writes a JSON error response to w with no other outputs params or variables

Types

type Context

type Context struct {
	Engine      *Engine
	RequireAuth bool
}

Context containts the variables relevant to this http request (engine, logger, etc)

type Engine

type Engine struct {
	Config     *config.Config
	ConfigPath string

	Server        *http.Server
	Mux           *http.ServeMux
	ContextNoAuth *Context
	ContextAuth   *Context

	Log      *logrus.Logger
	Requests *requestmanager.RequestManager
	Stats    *stats.Collector
	Throttle map[string]map[int]time.Time
	// contains filtered or unexported fields
}

Engine holds config info, server struct, etc for a running engine

func CreateTestEngine

func CreateTestEngine(loglevel string) *Engine

CreateTestEngine returns a fully configured engine with a special test config to be used in unit tests, etc. go ListenAndServe() must be called by the test if needed. -- DO NOT USE IN PRODUCTION CODE --

func (*Engine) CacheCallResult

func (engine *Engine) CacheCallResult(cp *commandprocess.CommandProcess) error

CacheCallResult sets the cache for an commandprocess if applicable

func (*Engine) CreateLogger

func (engine *Engine) CreateLogger()

CreateLogger sets up a logger instance with configed hooks, etc

func (*Engine) DelCacheItem

func (engine *Engine) DelCacheItem(apicall string, inputjson string) error

DelCacheItem attempts to force-delete a cached key

func (*Engine) GetCacheItem

func (engine *Engine) GetCacheItem(apicall string, inputjson string) (string, error)

GetCacheItem tries to get an item from cache if possible

func (*Engine) HandleCall

func (engine *Engine) HandleCall(reqtype int, w http.ResponseWriter, r *http.Request, hmacGroup string)

HandleCall preps and performs queing, validation, and initiates processing for an API call. reqtype is a constant which tells the engine how to handle the request (commandprocess.CallType*).

CallTypeRequest: Engine processes the API call and returns the result, however if the timeout is reached,
			 it will return the task ID so the client can retrieve the result later
CallTypeTask: Engine processes the API call, but returns the task ID immedately without waiting for the result.
CallTypeWork: Engine processes the API call with no task ID or returned results

func (*Engine) IsShutdown

func (engine *Engine) IsShutdown() bool

IsShutdown returns true if engine is in shutdown mode

func (*Engine) ListenAndServe

func (engine *Engine) ListenAndServe() error

ListenAndServe performs final configs and starts the http server listening with the config port and https certs

func (*Engine) LogDebug

func (engine *Engine) LogDebug(code string, fields log.Fields, message string)

LogDebug logs an info message with fields

func (*Engine) LogError

func (engine *Engine) LogError(code string, fields log.Fields, message string)

LogError logs an info message with fields

func (*Engine) LogFatal

func (engine *Engine) LogFatal(code string, fields log.Fields, message string)

LogFatal logs an info message with fields

func (*Engine) LogInfo

func (engine *Engine) LogInfo(code string, fields log.Fields, message string)

LogInfo logs an info message with fields

func (*Engine) LogPanic

func (engine *Engine) LogPanic(code string, fields log.Fields, message string)

LogPanic logs an info message with fields

func (*Engine) LogWarn

func (engine *Engine) LogWarn(code string, fields log.Fields, message string)

LogWarn logs an info message with fields

func (*Engine) OutputDebugForm

func (engine *Engine) OutputDebugForm(w http.ResponseWriter, r *http.Request)

OutputDebugForm spits out the debug form template for /form/

func (*Engine) OutputError

func (engine *Engine) OutputError(w http.ResponseWriter, err *bolterror.BoltError)

OutputError outputs an error message and logs it using the engine's log system

func (*Engine) OutputRequest

func (engine *Engine) OutputRequest(w http.ResponseWriter, req *commandprocess.CommandProcess, filterKeys []string)

OutputRequest filters the payload and writes a call request to w

func (*Engine) PostConfig

func (engine *Engine) PostConfig(cfg *config.Config) error

PostConfig takes the populated config and prepares auto cors, command durations, etc.

func (*Engine) SetCacheItem

func (engine *Engine) SetCacheItem(apicall string, inputjson string, value string, expiration time.Duration) error

SetCacheItem adds an item to cache, forces non-local cache use

func (*Engine) SetupCache

func (engine *Engine) SetupCache() error

SetupCache uses the current config to connect and setup a cache system

func (*Engine) Shutdown

func (engine *Engine) Shutdown() bool

Shutdown sets the engine to reject new non-core API calls, and waits for current commands to timeout or complete before exiting. Returns false if a shutdown process was already started, true otherwise

type Handler

type Handler struct {
	Context   *Context
	H         func(*Context, http.ResponseWriter, *http.Request, string) error
	HMACGroup string
}

Handler contains the context and handler function for a bolt api http request

func (Handler) ServeHTTP

func (ah Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP for bolt handles security (if applicable) and logging Output mime-type defaults to application/json

Jump to

Keyboard shortcuts

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