diecast

package module
v1.11.7 Latest Latest
Warning

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

Go to latest
Published: May 29, 2019 License: LGPL-2.1 Imports: 93 Imported by: 10

README

GoDoc

Introduction

Diecast is a web server that allows you to render a directory tree of template files into HTML, CSS or anything other text-based media in real-time. Data can be retrieved from remote sources during the template rendering process, creating dynamic web pages built by consuming APIs and remote files without the need to use client-side Javascript/AJAX calls or an intermediate server framework.

Documentation

You can read the complete Diecast manual at https://ghetzel.github.io/diecast.

Documentation

Index

Constants

View Source
const (
	ActionSummarize BindingErrorAction = `summarize`
	ActionPrint                        = `print`
	ActionContinue                     = `continue`
	ActionBreak                        = `break`
	ActionIgnore                       = `ignore`
)
View Source
const ApplicationName = `diecast`
View Source
const ApplicationSummary = `a standalone site templating engine that consumes REST services and renders static HTML output in realtime`
View Source
const ApplicationVersion = `1.11.7`
View Source
const ContentTemplateName = `content`
View Source
const ContextRequestKey = `diecast-request-id`
View Source
const DebuggingQuerystringParam = `__viewsource`
View Source
const DefaultAddress = `127.0.0.1:28419`
View Source
const DefaultConfigFile = `diecast.yml`
View Source
const DefaultErrorsPath = `/_errors`
View Source
const DefaultLayoutsPath = `/_layouts`
View Source
const DefaultRoutePrefix = `/`
View Source
const LayoutTemplateName = `layout`

Variables

View Source
var AllowInsecureLoopbackBindings bool
View Source
var Base32Alphabet = base32.NewEncoding(`abcdefghijklmnopqrstuvwxyz234567`)
View Source
var BindingClient = &http.Client{
	Timeout: 60 * time.Second,
}
View Source
var ConvertRoundToPlaces = 12
View Source
var DefaultActionStepTimeout = 10 * time.Second
View Source
var DefaultAutoindexFilename = `/autoindex.html`
View Source
var DefaultAutolayoutPatterns = []string{
	`*.html`,
	`*.md`,
}
View Source
var DefaultIndexFile = `index.html`
View Source
var DefaultOauth2SessionCookieName = `DCO2SESSION`
View Source
var DefaultParamJoiner = `;`
View Source
var DefaultProxyMountTimeout = time.Duration(10) * time.Second
View Source
var DefaultRendererMappings = map[string]string{
	`md`:   `markdown`,
	`scss`: `sass`,
}
View Source
var DefaultShellSessionCookieName = `DCSESSION`
View Source
var DefaultTemplatePatterns = []string{`*.html`, `*.md`, `*.scss`}
View Source
var DefaultTryExtensions = []string{`html`, `md`}
View Source
var DefaultVerifyFile = `/` + DefaultIndexFile
View Source
var DirectoryErr = errors.New(`is a directory`)
View Source
var HeaderSeparator = []byte{'-', '-', '-'}
View Source
var ITotallyUnderstandRunningArbitraryCommandsAsRootIsRealRealBad = false
View Source
var MaxBufferedBodySize = 16535
View Source
var MountHaltErr = errors.New(`mount halted`)
View Source
var SassIndentString = `    `

Functions

func Dir

func Dir(useLocal bool, name string) http.FileSystem

Dir returns a http.Filesystem for the embedded assets on a given prefix dir. If useLocal is true, the filesystem's contents are instead used.

func EvalInline

func EvalInline(input string, data map[string]interface{}, funcs FuncMap) string

func FS

func FS(useLocal bool) http.FileSystem

FS returns a http.Filesystem for the embedded assets. If useLocal is true, the filesystem's contents are instead used.

func FSByte

func FSByte(useLocal bool, name string) ([]byte, error)

FSByte returns the named file from the embedded assets. If useLocal is true, the filesystem's contents are instead used.

func FSMustByte

func FSMustByte(useLocal bool, name string) []byte

FSMustByte is the same as FSByte, but panics if name is not present.

func FSMustString

func FSMustString(useLocal bool, name string) string

FSMustString is the string version of FSMustByte.

func FSString

func FSString(useLocal bool, name string) (string, error)

FSString is the string version of FSByte.

func IsDirectoryErr added in v1.11.2

func IsDirectoryErr(err error) bool

func IsDirectoryError

func IsDirectoryError(err error) bool

func IsHardStop

func IsHardStop(err error) bool

func MinNonZero

func MinNonZero(data stats.Float64Data) (float64, error)

func MultiReadCloser added in v1.10.7

func MultiReadCloser(readers ...io.Reader) *multiReadCloser

func PrettifyHTML

func PrettifyHTML(in string) (string, error)

func RegisterActionStep added in v1.11.0

func RegisterActionStep(typeName string, performable Performable)

Register a performable step type to the given type name.

func RegisterPostprocessor

func RegisterPostprocessor(name string, ppfunc PostprocessorFunc)

func TrimEmptyLines

func TrimEmptyLines(in string) (string, error)

Types

type Action added in v1.11.0

type Action struct {
	Name   string        `json:"name,omitempty"`
	Path   string        `json:"path"`
	Method interface{}   `json:"method"`
	Steps  []*StepConfig `json:"steps"`
}

func (*Action) ServeHTTP added in v1.11.0

func (self *Action) ServeHTTP(w http.ResponseWriter, req *http.Request)

Performs the action in response to an HTTP request, evaluating all action steps. Steps are responsible for generating and manipulating output. The output of the last step will be returned, or an error will be returned if not nil.

type Authenticator

type Authenticator interface {
	Authenticate(http.ResponseWriter, *http.Request) bool
	IsCallback(*url.URL) bool
	Callback(w http.ResponseWriter, req *http.Request)
	Name() string
}

type AuthenticatorConfig

type AuthenticatorConfig struct {
	Name         string                 `json:"name,omitempty"`
	Type         string                 `json:"type"`
	Paths        []string               `json:"paths"`
	Except       []string               `json:"except"`
	CallbackPath string                 `json:"callback"`
	Options      map[string]interface{} `json:"options"`
	// contains filtered or unexported fields
}

func (*AuthenticatorConfig) O added in v1.10.10

func (self *AuthenticatorConfig) O(key string, fallback ...interface{}) typeutil.Variant

type AuthenticatorConfigs

type AuthenticatorConfigs []AuthenticatorConfig

func (AuthenticatorConfigs) Authenticator

func (self AuthenticatorConfigs) Authenticator(req *http.Request) (Authenticator, error)

type BasicAuthenticator

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

func NewBasicAuthenticator

func NewBasicAuthenticator(config *AuthenticatorConfig) (*BasicAuthenticator, error)

func (*BasicAuthenticator) AddPasswdFile

func (self *BasicAuthenticator) AddPasswdFile(filename string) error

func (*BasicAuthenticator) Authenticate

func (self *BasicAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool

func (*BasicAuthenticator) Callback added in v1.10.10

func (self *BasicAuthenticator) Callback(w http.ResponseWriter, req *http.Request)

func (*BasicAuthenticator) IsCallback added in v1.10.10

func (self *BasicAuthenticator) IsCallback(_ *url.URL) bool

func (*BasicAuthenticator) Name added in v1.11.0

func (self *BasicAuthenticator) Name() string

type Binding

type Binding struct {
	Name               string                     `json:"name,omitempty"`
	Restrict           []string                   `json:"restrict,omitempty"`
	OnlyIfExpr         string                     `json:"only_if,omitempty"`
	NotIfExpr          string                     `json:"not_if,omitempty"`
	Method             string                     `json:"method,omitempty"`
	Resource           string                     `json:"resource,omitempty"`
	Timeout            interface{}                `json:"timeout,omitempty"`
	Insecure           bool                       `json:"insecure,omitempty"`
	ParamJoiner        string                     `json:"param_joiner,omitempty"`
	Params             map[string]interface{}     `json:"params,omitempty"`
	Headers            map[string]string          `json:"headers,omitempty"`
	BodyParams         map[string]interface{}     `json:"body,omitempty"`
	RawBody            string                     `json:"rawbody,omitempty"`
	Formatter          string                     `json:"formatter,omitempty"`
	Parser             string                     `json:"parser,omitempty"`
	NoTemplate         bool                       `json:"no_template,omitempty"`
	Optional           bool                       `json:"optional,omitempty"`
	Fallback           interface{}                `json:"fallback,omitempty"`
	OnError            BindingErrorAction         `json:"on_error,omitempty"`
	IfStatus           map[int]BindingErrorAction `json:"if_status,omitempty"`
	Repeat             string                     `json:"repeat,omitempty"`
	SkipInheritHeaders bool                       `json:"skip_inherit_headers,omitempty"`
	DisableCache       bool                       `json:"disable_cache,omitempty"`
	// contains filtered or unexported fields
}

func (*Binding) Evaluate

func (self *Binding) Evaluate(req *http.Request, header *TemplateHeader, data map[string]interface{}, funcs FuncMap) (interface{}, error)

func (*Binding) ShouldEvaluate

func (self *Binding) ShouldEvaluate(req *http.Request) bool

type BindingErrorAction

type BindingErrorAction string

type Engine

type Engine int
const (
	TextEngine Engine = iota
	HtmlEngine
)

func GetEngineForFile

func GetEngineForFile(filename string) Engine

func (Engine) String

func (self Engine) String() string

type FileMount

type FileMount struct {
	MountPoint  string          `json:"mount"`
	Path        string          `json:"source"`
	Passthrough bool            `json:"passthrough"`
	FileSystem  http.FileSystem `json:"-"`
}

func (*FileMount) GetMountPoint

func (self *FileMount) GetMountPoint() string

func (*FileMount) Open

func (self *FileMount) Open(name string) (http.File, error)

func (*FileMount) OpenWithType

func (self *FileMount) OpenWithType(name string, req *http.Request, requestBody io.Reader) (*MountResponse, error)

func (*FileMount) String

func (self *FileMount) String() string

func (*FileMount) WillRespondTo

func (self *FileMount) WillRespondTo(name string, req *http.Request, requestBody io.Reader) bool

type Fragment added in v1.11.0

type Fragment struct {
	Name   string
	Header *TemplateHeader
	Data   []byte
}

type FragmentSet added in v1.11.0

type FragmentSet []*Fragment

func (FragmentSet) DebugOutput added in v1.11.0

func (self FragmentSet) DebugOutput() []byte

func (FragmentSet) Get added in v1.11.0

func (self FragmentSet) Get(name string) (*Fragment, bool)

func (FragmentSet) HasLayout added in v1.11.0

func (self FragmentSet) HasLayout() bool

func (FragmentSet) Header added in v1.11.0

func (self FragmentSet) Header(server *Server) TemplateHeader

func (*FragmentSet) Parse added in v1.11.0

func (self *FragmentSet) Parse(name string, source io.Reader) error

func (*FragmentSet) Set added in v1.11.0

func (self *FragmentSet) Set(name string, header *TemplateHeader, data []byte) error

type FuncMap

type FuncMap map[string]interface{}

func GetFunctions added in v1.10.7

func GetFunctions(server *Server) (funcGroups, FuncMap)

func GetStandardFunctions

func GetStandardFunctions(server *Server) FuncMap

type HttpProtocol added in v1.11.3

type HttpProtocol struct {
}

The HTTP binding protocol is used to interact with web servers and RESTful APIs. It is specified with URLs that use the http:// or https:// schemes.

func (*HttpProtocol) Retrieve added in v1.11.3

func (self *HttpProtocol) Retrieve(rr *ProtocolRequest) (*ProtocolResponse, error)

type MarkdownRenderer added in v1.9.20

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

func (*MarkdownRenderer) Render added in v1.9.20

func (self *MarkdownRenderer) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error

func (*MarkdownRenderer) SetPrewriteFunc added in v1.11.0

func (self *MarkdownRenderer) SetPrewriteFunc(fn PrewriteFunc)

func (*MarkdownRenderer) ShouldPrerender added in v1.9.22

func (self *MarkdownRenderer) ShouldPrerender() bool

type Mount

type Mount interface {
	Open(string) (http.File, error)
	OpenWithType(string, *http.Request, io.Reader) (*MountResponse, error)
	WillRespondTo(string, *http.Request, io.Reader) bool
	GetMountPoint() string
	String() string
}

func NewMountFromSpec

func NewMountFromSpec(spec string) (Mount, error)

type MountConfig

type MountConfig struct {
	Mount   string                 `json:"mount"`
	To      string                 `json:"to"`
	Options map[string]interface{} `json:"options"`
}

type MountResponse

type MountResponse struct {
	ContentType  string
	StatusCode   int
	Metadata     map[string]interface{}
	RedirectTo   string
	RedirectCode int
	// contains filtered or unexported fields
}

func NewMountResponse

func NewMountResponse(name string, size int64, payload interface{}) *MountResponse

func (*MountResponse) Close

func (self *MountResponse) Close() error

func (*MountResponse) GetFile

func (self *MountResponse) GetFile() http.File

func (*MountResponse) GetPayload

func (self *MountResponse) GetPayload() interface{}

func (*MountResponse) IsDir

func (self *MountResponse) IsDir() bool

func (*MountResponse) ModTime

func (self *MountResponse) ModTime() time.Time

func (*MountResponse) Mode

func (self *MountResponse) Mode() os.FileMode

func (*MountResponse) Name

func (self *MountResponse) Name() string

func (*MountResponse) Read

func (self *MountResponse) Read(p []byte) (int, error)

func (*MountResponse) Readdir

func (self *MountResponse) Readdir(count int) ([]os.FileInfo, error)

func (*MountResponse) Seek

func (self *MountResponse) Seek(offset int64, whence int) (int64, error)

func (*MountResponse) Size

func (self *MountResponse) Size() int64

func (*MountResponse) Stat

func (self *MountResponse) Stat() (os.FileInfo, error)

func (*MountResponse) Sys

func (self *MountResponse) Sys() interface{}

type OauthAuthenticator added in v1.10.10

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

func NewOauthAuthenticator added in v1.10.10

func NewOauthAuthenticator(config *AuthenticatorConfig) (*OauthAuthenticator, error)

func (*OauthAuthenticator) Authenticate added in v1.10.10

func (self *OauthAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool

func (*OauthAuthenticator) Callback added in v1.10.10

func (self *OauthAuthenticator) Callback(w http.ResponseWriter, req *http.Request)

OAuth2: Leg 2: receive callback from consent page, validate session, and set session cookie

func (*OauthAuthenticator) IsCallback added in v1.10.10

func (self *OauthAuthenticator) IsCallback(u *url.URL) bool

func (*OauthAuthenticator) Name added in v1.11.0

func (self *OauthAuthenticator) Name() string

type PdfRenderer added in v1.9.20

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

func (*PdfRenderer) Render added in v1.9.20

func (self *PdfRenderer) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error

func (*PdfRenderer) SetPrewriteFunc added in v1.11.0

func (self *PdfRenderer) SetPrewriteFunc(fn PrewriteFunc)

func (*PdfRenderer) ShouldPrerender added in v1.9.22

func (self *PdfRenderer) ShouldPrerender() bool

type Performable added in v1.11.0

type Performable interface {
	Perform(config *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)
}

type PostprocessorFunc

type PostprocessorFunc func(string) (string, error)

type PrewriteFunc added in v1.11.0

type PrewriteFunc func(*http.Request)

type ProcessStep added in v1.11.0

type ProcessStep struct{}

[type=process] Process the output of the previous step by performing a sequence of discrete

operations on the data.

-------------------------------------------------------------------------------------------------

func (*ProcessStep) Perform added in v1.11.0

func (self *ProcessStep) Perform(config *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)

type Protocol added in v1.11.3

type Protocol interface {
	Retrieve(*ProtocolRequest) (*ProtocolResponse, error)
}

type ProtocolConfig added in v1.11.3

type ProtocolConfig map[string]interface{}

func (ProtocolConfig) Get added in v1.11.3

func (self ProtocolConfig) Get(key string, fallbacks ...interface{}) typeutil.Variant

type ProtocolRequest added in v1.11.3

type ProtocolRequest struct {
	Verb          string
	URL           *url.URL
	Binding       *Binding
	Request       *http.Request
	Header        *TemplateHeader
	TemplateData  map[string]interface{}
	TemplateFuncs FuncMap
}

func (*ProtocolRequest) Conf added in v1.11.3

func (self *ProtocolRequest) Conf(proto string, key string, fallbacks ...interface{}) typeutil.Variant

func (*ProtocolRequest) Template added in v1.11.3

func (self *ProtocolRequest) Template(input interface{}) typeutil.Variant

type ProtocolResponse added in v1.11.3

type ProtocolResponse struct {
	MimeType   string
	StatusCode int
	Raw        interface{}
	// contains filtered or unexported fields
}

func (*ProtocolResponse) Close added in v1.11.3

func (self *ProtocolResponse) Close() error

func (*ProtocolResponse) Read added in v1.11.3

func (self *ProtocolResponse) Read(b []byte) (int, error)

type ProxyMount

type ProxyMount struct {
	MountPoint          string                 `json:"-"`
	URL                 string                 `json:"-"`
	Method              string                 `json:"method,omitempty"`
	Headers             map[string]interface{} `json:"headers,omitempty"`
	Params              map[string]interface{} `json:"params,omitempty"`
	Timeout             time.Duration          `json:"timeout,omitempty"`
	PassthroughRequests bool                   `json:"passthrough_requests"`
	PassthroughErrors   bool                   `json:"passthrough_errors"`
	StripPathPrefix     string                 `json:"strip_path_prefix"`
	Insecure            bool                   `json:"insecure"`
	Client              *http.Client
	// contains filtered or unexported fields
}

func (*ProxyMount) GetMountPoint

func (self *ProxyMount) GetMountPoint() string

func (*ProxyMount) Open

func (self *ProxyMount) Open(name string) (http.File, error)

func (*ProxyMount) OpenWithType

func (self *ProxyMount) OpenWithType(name string, req *http.Request, requestBody io.Reader) (*MountResponse, error)

func (*ProxyMount) String

func (self *ProxyMount) String() string

func (*ProxyMount) WillRespondTo

func (self *ProxyMount) WillRespondTo(name string, req *http.Request, requestBody io.Reader) bool

type Redirect

type Redirect struct {
	URL  string `json:"url"`
	Code int    `json:"code"`
}

type RedirectTo

type RedirectTo string

func (RedirectTo) Error

func (self RedirectTo) Error() string

type RedisProtocol added in v1.11.3

type RedisProtocol struct {
}

The Redis binding protocol is used to retrieve or modify items in a Redis server. It is specified with URLs that use the redis://[host[:port]]/db/key scheme.

Protocol Options

  • redis.default_host (localhost:6379) Specifies the hostname:port to use if a resource URI does not specify one.
  • redis.max_idle (10) The maximum number of idle connections to maintain in a connection pool.
  • redis.idle_timeout (120s) The maximum idle time of a connection before it is closed.
  • redis.max_lifetime (10m) The maximum amount of time a connection can remain open before being recycled.

func (*RedisProtocol) Retrieve added in v1.11.3

func (self *RedisProtocol) Retrieve(rr *ProtocolRequest) (*ProtocolResponse, error)

type RenderOptions added in v1.9.20

type RenderOptions struct {
	Header        *TemplateHeader
	HeaderOffset  int
	FunctionSet   FuncMap
	Input         io.ReadCloser
	Fragments     FragmentSet
	Data          map[string]interface{}
	MimeType      string
	RequestedPath string
	Timeout       time.Duration
}

type Renderer added in v1.9.20

type Renderer interface {
	SetPrewriteFunc(PrewriteFunc)
	Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error
	ShouldPrerender() bool
}

func GetRenderer added in v1.9.20

func GetRenderer(name string, server *Server) (Renderer, error)

func GetRendererForFilename added in v1.9.20

func GetRendererForFilename(filename string, server *Server) (Renderer, bool)

type SassRenderer added in v1.10.3

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

func (*SassRenderer) Render added in v1.10.3

func (self *SassRenderer) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error

func (*SassRenderer) SetPrewriteFunc added in v1.11.0

func (self *SassRenderer) SetPrewriteFunc(fn PrewriteFunc)

func (*SassRenderer) ShouldPrerender added in v1.10.3

func (self *SassRenderer) ShouldPrerender() bool

type Server

type Server struct {
	// Exposes the location of the diecast binary
	BinPath string `json:"-"`

	// The host:port address the server is listening on
	Address string `json:"address"`

	// Top-level bindings that apply to every rendered template
	Bindings []Binding `json:"bindings"`

	// Specify a string to prefix all binding resource values that start with "/"
	BindingPrefix string `json:"bindingPrefix"`

	// The filesystem location where templates and files are served from
	RootPath string `json:"root"`

	// The path to the layouts template directory
	LayoutPath string `json:"layouts"`

	// The path to the errors template directory
	ErrorsPath string `json:"errors"`

	// Enables additional options for debugging applications. Caution: can expose secrets and other sensitive data.
	EnableDebugging bool `json:"debug"`

	// Disable emitting per-request Server-Timing headers to aid in tracing bottlenecks and performance issues.
	DisableTimings bool `json:"disableTimings"`

	// Specifies whether layouts are enabled
	EnableLayouts bool `json:"enableLayouts"`

	// If specified, all requests must be prefixed with this string.
	RoutePrefix string `json:"routePrefix"`

	// A set of glob patterns specifying which files will be rendered as templates.
	TemplatePatterns []string `json:"patterns"`

	// Allow for the programmatic addition of extra functions for use in templates.
	AdditionalFunctions template.FuncMap `json:"-"`

	// Whether to attempt to locate a local file matching the requested path before attempting to find a template.
	TryLocalFirst bool `json:"localFirst"`

	// The name of the template file to use when a directory is requested.
	IndexFile string `json:"indexFile"`

	// A file that must exist and be readable before starting the server.
	VerifyFile string `json:"verifyFile"`

	// The set of all registered mounts.
	Mounts []Mount `json:"-"`

	// A list of mount configurations read from the diecast.yml config file.
	MountConfigs []MountConfig `json:"mounts"`

	// A default header that all templates will inherit from.
	BaseHeader         *TemplateHeader        `json:"header"`
	DefaultPageObject  map[string]interface{} `json:"-"`
	OverridePageObject map[string]interface{} `json:"-"`

	// A command that will be executed before the server is started.
	PrestartCommand StartCommand `json:"prestart"`

	// A command that will be executed after the server is confirmed running.
	StartCommand StartCommand `json:"start"`

	// A set of authenticator configurations used to protect some or all routes.
	Authenticators AuthenticatorConfigs `json:"authenticators"`

	// Try these file extensions when looking for default (i.e.: "index") files.  If IndexFile has an extension, it will be stripped first.
	TryExtensions []string `json:"tryExtensions"`

	// Map file extensions to preferred renderers for a given file type.
	RendererMappings map[string]string `json:"rendererMapping"`

	// Which types of files will automatically have layouts applied.
	AutolayoutPatterns []string `json:"autolayoutPatterns"`

	// List of filenames containing PEM-encoded X.509 TLS certificates that represent trusted authorities.
	// Use to validate certificates signed by an internal, non-public authority.
	TrustedRootPEMs []string `json:"trustedRootPEMs"`

	// Configure routes and actions to execute when those routes are requested.
	Actions []*Action `json:"actions"`

	// Specify that requests that terminate at a filesystem directory should automatically generate an index
	// listing of that directory.
	Autoindex bool `json:"autoindex"`

	// If Autoindex is enabled, this allows the template used to generate the index page to be customized.
	AutoindexTemplate string `json:"autoindex_template"`

	// Setup global configuration details for Binding Protocols
	Protocols map[string]ProtocolConfig `json:"protocols"`
	// contains filtered or unexported fields
}

func NewServer

func NewServer(root interface{}, patterns ...string) *Server

func (*Server) Connect added in v1.11.7

func (self *Server) Connect(route string, handler http.HandlerFunc)

Add a handler for an HTTP CONNECT endpoint.

func (*Server) Delete added in v1.11.7

func (self *Server) Delete(route string, handler http.HandlerFunc)

Add a handler for an HTTP DELETE endpoint.

func (*Server) Get added in v1.11.7

func (self *Server) Get(route string, handler http.HandlerFunc)

Add a handler for an HTTP GET endpoint.

func (*Server) GetTemplateData

func (self *Server) GetTemplateData(req *http.Request, header *TemplateHeader) (FuncMap, map[string]interface{}, error)

func (*Server) GetTemplateFunctions

func (self *Server) GetTemplateFunctions(data interface{}) FuncMap

Retrieves the set of standard template functions, as well as functions for working with data in the current request.

func (*Server) Handle added in v1.11.7

func (self *Server) Handle(route string, handler http.Handler)

Add a handler function for an endpoint (any HTTP method.)

func (*Server) HandleFunc added in v1.11.7

func (self *Server) HandleFunc(route string, handler http.HandlerFunc)

Add a handler for an endpoint (any HTTP method.)

func (*Server) Head added in v1.11.7

func (self *Server) Head(route string, handler http.HandlerFunc)

Add a handler for an HTTP HEAD endpoint.

func (*Server) Initialize

func (self *Server) Initialize() error

func (*Server) IsInRootPath added in v1.11.2

func (self *Server) IsInRootPath(path string) bool

func (*Server) ListenAndServe

func (self *Server) ListenAndServe(address string) error

func (*Server) LoadConfig

func (self *Server) LoadConfig(filename string) error

func (*Server) LoadLayout

func (self *Server) LoadLayout(name string) (io.Reader, error)

func (*Server) Options added in v1.11.7

func (self *Server) Options(route string, handler http.HandlerFunc)

Add a handler for an HTTP OPTIONS endpoint.

func (*Server) P added in v1.11.7

func (self *Server) P(req *http.Request, param string, fallback ...interface{}) typeutil.Variant

Return the value of a URL parameter within a given request handler.

func (*Server) Patch added in v1.11.7

func (self *Server) Patch(route string, handler http.HandlerFunc)

Add a handler for an HTTP PATCH endpoint.

func (*Server) Post added in v1.11.7

func (self *Server) Post(route string, handler http.HandlerFunc)

Add a handler for an HTTP POST endpoint.

func (*Server) Put added in v1.11.7

func (self *Server) Put(route string, handler http.HandlerFunc)

Add a handler for an HTTP PUT endpoint.

func (*Server) RunStartCommand

func (self *Server) RunStartCommand(scmd *StartCommand, waitForCommand bool) error

func (*Server) Serve

func (self *Server) Serve() error

func (*Server) ServeHTTP

func (self *Server) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*Server) SetFileSystem

func (self *Server) SetFileSystem(fs http.FileSystem)

func (*Server) SetMounts

func (self *Server) SetMounts(mounts []Mount)

Append the specified mounts to the current server.

func (*Server) ShouldReturnSource

func (self *Server) ShouldReturnSource(req *http.Request) bool

func (*Server) ToTemplateName

func (self *Server) ToTemplateName(requestPath string) string

func (*Server) Trace added in v1.11.7

func (self *Server) Trace(route string, handler http.HandlerFunc)

Add a handler for an HTTP TRACE endpoint.

type ShellAuthenticator added in v1.11.0

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

func NewShellAuthenticator added in v1.11.0

func NewShellAuthenticator(config *AuthenticatorConfig) (*ShellAuthenticator, error)

func (*ShellAuthenticator) Authenticate added in v1.11.0

func (self *ShellAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool

func (*ShellAuthenticator) Callback added in v1.11.0

func (self *ShellAuthenticator) Callback(w http.ResponseWriter, req *http.Request)

func (*ShellAuthenticator) IsCallback added in v1.11.0

func (self *ShellAuthenticator) IsCallback(_ *url.URL) bool

func (*ShellAuthenticator) Name added in v1.11.0

func (self *ShellAuthenticator) Name() string

type ShellStep added in v1.11.0

type ShellStep struct{}

[type=shell] Return the output of a command as a response. Valid Configurations

Command string passed to the user's $SHELL:

data: 'some shell command'

Command array executed via exec*() system calls:

data: ['command', '--arg', 'x=1', '--help']

Command options specified as an object:

	data:
		command:   				# interpreted the same as above (string or array)
		inherit: true|false 	# whether the current shell environment should be inherited by the command
     env:
			X: abc
			Y: zyx

-------------------------------------------------------------------------------------------------

func (*ShellStep) Perform added in v1.11.0

func (self *ShellStep) Perform(config *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)

type StartCommand

type StartCommand struct {
	Command          string                 `json:"command"`
	Directory        string                 `json:"directory"`
	Environment      map[string]interface{} `json:"env"`
	WaitBefore       string                 `json:"delay"`
	Wait             string                 `json:"timeout"`
	ExitOnCompletion bool                   `json:"exitOnCompletion"`
	// contains filtered or unexported fields
}

type StaticAuthenticator added in v1.11.0

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

func NewStaticAuthenticator added in v1.11.0

func NewStaticAuthenticator(config *AuthenticatorConfig, allow bool) (*StaticAuthenticator, error)

func (*StaticAuthenticator) Authenticate added in v1.11.0

func (self *StaticAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool

func (*StaticAuthenticator) Callback added in v1.11.0

func (self *StaticAuthenticator) Callback(w http.ResponseWriter, req *http.Request)

func (*StaticAuthenticator) IsCallback added in v1.11.0

func (self *StaticAuthenticator) IsCallback(_ *url.URL) bool

func (*StaticAuthenticator) Name added in v1.11.0

func (self *StaticAuthenticator) Name() string

type StepConfig added in v1.11.0

type StepConfig struct {
	Type    string      `json:"type"`
	Data    interface{} `json:"data"`
	Timeout string      `json:"timeout,omitempty"`
	Parser  string      `json:"parser"`
	Output  interface{} `json:"-"`
	Error   error       `json:"-"`
	// contains filtered or unexported fields
}

func (*StepConfig) Perform added in v1.11.0

func (self *StepConfig) Perform(_ *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)

func (*StepConfig) String added in v1.11.0

func (self *StepConfig) String() string

type SwitchCase added in v1.9.9

type SwitchCase struct {
	Condition string `json:"condition,omitempty"`
	UsePath   string `json:"use,omitempty"`
}

type Template

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

func NewTemplate

func NewTemplate(name string, engine Engine) *Template

func (*Template) AddPostProcessors

func (self *Template) AddPostProcessors(postprocessors ...string) error

func (*Template) Engine

func (self *Template) Engine() Engine

func (*Template) Funcs

func (self *Template) Funcs(funcs FuncMap)

func (*Template) ParseFragments added in v1.11.0

func (self *Template) ParseFragments(fragments FragmentSet) error

func (*Template) ParseFrom

func (self *Template) ParseFrom(r io.Reader) error

func (*Template) ParseString added in v1.11.0

func (self *Template) ParseString(input string) error

func (*Template) Render

func (self *Template) Render(w io.Writer, data interface{}, subtemplate string) error

func (*Template) SetDelimiters added in v1.10.7

func (self *Template) SetDelimiters(open string, close string)

func (*Template) SetEngine

func (self *Template) SetEngine(engine Engine)

func (*Template) SetHeaderOffset

func (self *Template) SetHeaderOffset(offset int)

func (*Template) SetPrewriteFunc added in v1.11.0

func (self *Template) SetPrewriteFunc(fn func())

type TemplateHeader

type TemplateHeader struct {
	// An object that is accessible to this template (and all inheriting templates) under the `$.page` variable.
	Page map[string]interface{} `json:"page,omitempty"`

	// An array of remote URLs to to be retrieved (in order) and added to the `$.bindings` object.
	Bindings []Binding `json:"bindings,omitempty"`

	// An object containing default query string values that can be accessed via the `qs` function.
	Defaults map[string]string `json:"defaults,omitempty"`

	// An object containing default HTTP request header values that can be accessed via the `$.request.headers` variable.
	DefaultHeaders map[string]string `json:"default_headers,omitempty"`

	// Specifies an HTTP redirect should be performed when this page is accessed.
	Redirect *Redirect `json:"redirect,omitempty"`

	// Specify which template file to load in lieu of this one depending on which condition evaluates true first.
	Switch []*SwitchCase `json:"switch,omitempty"`

	// The name of the layout (in the _layouts folder) to apply to this template.
	Layout string `json:"layout,omitempty"`

	// An object specifying a custom name and path to other templates to include when evaluating this one.
	Includes map[string]string `json:"includes,omitempty"`

	Headers map[string]interface{} `json:"headers,omitempty"`

	UrlParams map[string]interface{} `json:"params,omitempty"`

	// An object containing names and expressions to add to a `$.flags` variable.
	FlagDefs map[string]interface{} `json:"flags,omitempty"`

	// An array of built-in postprocessors to apply to the output before being returned to the user.
	Postprocessors []string `json:"postprocessors,omitempty"`

	// The built-in renderer to use when generating the page.
	Renderer string `json:"renderer,omitempty"`
	// contains filtered or unexported fields
}

func SplitTemplateHeaderContent

func SplitTemplateHeaderContent(reader io.Reader) (*TemplateHeader, []byte, error)

func (*TemplateHeader) Merge

func (self *TemplateHeader) Merge(other *TemplateHeader) (*TemplateHeader, error)

type TemplateRenderer added in v1.9.20

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

func (*TemplateRenderer) Render added in v1.9.20

func (self *TemplateRenderer) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error

func (*TemplateRenderer) SetPrewriteFunc added in v1.11.0

func (self *TemplateRenderer) SetPrewriteFunc(fn PrewriteFunc)

func (*TemplateRenderer) ShouldPrerender added in v1.9.22

func (self *TemplateRenderer) ShouldPrerender() bool

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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