Documentation
¶
Index ¶
- Constants
- Variables
- func ActionInvoker(c *Controller, _ []Filter)
- func AddInitEventHandler(handler EventHandler)
- func Atob(v string) bool
- func BeforeAfterFilter(c *Controller, fc []Filter)
- func Bind(params *Params, name string, typ reflect.Type) reflect.Value
- func BindFile(fileHeader *multipart.FileHeader, typ reflect.Type) reflect.Value
- func BindValue(val string, typ reflect.Type) reflect.Value
- func CheckInit()
- func ClientIP(r *Request) string
- func CompressFilter(c *Controller, fc []Filter)
- func ContainsString(list []string, target string) bool
- func ContentTypeByFilename(filename string) string
- func DirExists(filename string) bool
- func EngineHandles(engine TemplateEngine, templateView *TemplateView) bool
- func Equal(a, b interface{}) bool
- func ExecuteTemplate(tmpl ExecutableTemplate, data interface{}) string
- func FilterConfiguringFilter(c *Controller, fc []Filter)
- func FilterEq(a, b Filter) bool
- func FindMethod(recvType reflect.Type, funcVal reflect.Value) *reflect.Method
- func FirstNonEmpty(strs ...string) string
- func FlashFilter(c *Controller, fc []Filter)
- func GetRootLogHandler() *logger.CompositeMultiHandler
- func HTTPMethodOverride(c *Controller, fc []Filter)
- func I18nFilter(c *Controller, fc []Filter)
- func Init(mode, importPath, srcPath string)
- func InitServer()
- func InitServerEngine(port int, serverEngine string)
- func InterceptFunc(intc InterceptorFunc, when When, target interface{})
- func InterceptMethod(intc InterceptorMethod, when When)
- func InterceptorFilter(c *Controller, fc []Filter)
- func LoadMimeConfig()
- func Message(locale, message string, args ...interface{}) string
- func MessageLanguages() []string
- func MustReadLines(filename string) []string
- func OnAppStart(f func(), order ...int)
- func PanicFilter(c *Controller, fc []Filter)
- func ParamsFilter(c *Controller, fc []Filter)
- func ParseKeyValueCookie(val string, cb func(key, val string))
- func ParseParams(params *Params, req *Request)
- func ParseTemplateError(err error) (templateName string, line int, description string)
- func ReadLines(filename string) ([]string, error)
- func RegisterController(c interface{}, methods []*MethodType)
- func RegisterModuleInit(callback ModuleCallbackInterface)
- func RegisterServerEngine(name string, loader func() ServerEngine)
- func RegisterTemplateLoader(key string, loader func(loader *TemplateLoader) (TemplateEngine, error)) (err error)
- func ResolveContentType(req *Request) string
- func ResolveFormat(req *Request) string
- func ResolveImportPath(importPath string) (string, error)
- func ReverseURL(args ...interface{}) (template.URL, error)
- func RouterFilter(c *Controller, fc []Filter)
- func Run(port int)
- func SessionFilter(c *Controller, fc []Filter)
- func SetSecretKey(newKey []byte) error
- func Sign(message string) string
- func Slug(text string) string
- func TemplateOutputArgs(templatePath string, args map[string]interface{}) (data []byte, err error)
- func TimeAgo(args ...interface{}) string
- func ToBool(val interface{}) bool
- func Unbind(output map[string]string, name string, val interface{})
- func ValidationFilter(c *Controller, fc []Filter)
- func ValueBinder(f func(value string, typ reflect.Type) reflect.Value) func(*Params, string, reflect.Type) reflect.Value
- func Verify(message, sig string) bool
- func Walk(root string, walkFn filepath.WalkFunc) error
- type AcceptLanguage
- type AcceptLanguages
- type ActionDefinition
- type ActionPathData
- type BinaryResult
- type Binder
- type BufferedServerHeader
- func (bsh *BufferedServerHeader) Add(key string, value string)
- func (bsh *BufferedServerHeader) Del(key string)
- func (bsh *BufferedServerHeader) Get(key string) (value []string)
- func (bsh *BufferedServerHeader) GetCookie(key string) (value ServerCookie, err error)
- func (bsh *BufferedServerHeader) Release()
- func (bsh *BufferedServerHeader) Set(key string, value string)
- func (bsh *BufferedServerHeader) SetCookie(cookie string)
- func (bsh *BufferedServerHeader) SetStatus(statusCode int)
- type CompressResponseWriter
- type ContentDisposition
- type Controller
- func (c *Controller) Destroy()
- func (c *Controller) FlashParams()
- func (c *Controller) Forbidden(msg string, objs ...interface{}) Result
- func (c *Controller) Message(message string, args ...interface{}) string
- func (c *Controller) NotFound(msg string, objs ...interface{}) Result
- func (c *Controller) Redirect(val interface{}, args ...interface{}) Result
- func (c *Controller) Render(extraViewArgs ...interface{}) Result
- func (c *Controller) RenderBinary(memfile io.Reader, filename string, delivery ContentDisposition, ...) Result
- func (c *Controller) RenderError(err error) Result
- func (c *Controller) RenderFile(file *os.File, delivery ContentDisposition) Result
- func (c *Controller) RenderHTML(html string) Result
- func (c *Controller) RenderJSON(o interface{}) Result
- func (c *Controller) RenderJSONP(callback string, o interface{}) Result
- func (c *Controller) RenderTemplate(templatePath string) Result
- func (c *Controller) RenderText(text string, objs ...interface{}) Result
- func (c *Controller) RenderXML(o interface{}) Result
- func (c *Controller) SetAction(controllerName, methodName string) error
- func (c *Controller) SetController(context ServerContext)
- func (c *Controller) SetCookie(cookie *http.Cookie)
- func (c *Controller) SetTypeAction(controllerName, methodName string, typeOfController *ControllerType) error
- func (c *Controller) Stats() map[string]interface{}
- func (c *Controller) TemplateOutput(templatePath string) (data []byte, err error)
- func (c *Controller) Todo() Result
- type ControllerFieldPath
- type ControllerType
- type ControllerTypeEvents
- type DiscerningListener
- type Domain
- type Email
- type EngineInit
- type Error
- type ErrorCoder
- type ErrorResult
- type EventHandler
- type ExecutableTemplate
- type Field
- type FilePath
- type Filter
- type FilterConfigurator
- type Flash
- type GoContext
- type GoCookie
- type GoEngine
- func (i *GoEngine) ConvertPath(path string) string
- func (engine *GoEngine) Event(action int, i interface{})
- func (i *GoEngine) Handles(templateView *TemplateView) bool
- func (engine *GoEngine) Lookup(templateName string) Template
- func (engine *GoEngine) Name() string
- func (engine *GoEngine) ParseAndAdd(baseTemplate *TemplateView) error
- type GoHeader
- func (r *GoHeader) Add(key string, value string)
- func (r *GoHeader) Del(key string)
- func (r *GoHeader) Get(key string) (value []string)
- func (r *GoHeader) GetCookie(key string) (value ServerCookie, err error)
- func (r *GoHeader) Set(key string, value string)
- func (r *GoHeader) SetCookie(cookie string)
- func (r *GoHeader) SetStatus(statusCode int)
- type GoHttpServer
- func (g *GoHttpServer) Engine() interface{}
- func (g *GoHttpServer) Event(event int, args interface{})
- func (g *GoHttpServer) Handle(w http.ResponseWriter, r *http.Request)
- func (g *GoHttpServer) Init(init *EngineInit)
- func (g *GoHttpServer) Name() string
- func (g *GoHttpServer) Start()
- func (g *GoHttpServer) Stats() map[string]interface{}
- type GoMultipartForm
- type GoRequest
- func (r *GoRequest) Destroy()
- func (r *GoRequest) Get(key int) (value interface{}, err error)
- func (r *GoRequest) GetForm() (url.Values, error)
- func (r *GoRequest) GetHeader() ServerHeader
- func (r *GoRequest) GetMultipartForm() (ServerMultipartForm, error)
- func (r *GoRequest) GetRaw() interface{}
- func (r *GoRequest) Set(key int, value interface{}) bool
- func (r *GoRequest) SetRequest(req *http.Request)
- type GoResponse
- func (r *GoResponse) Destroy()
- func (r *GoResponse) Get(key int) (value interface{}, err error)
- func (r *GoResponse) GetRaw() interface{}
- func (r *GoResponse) Header() ServerHeader
- func (r *GoResponse) Set(key int, value interface{}) (set bool)
- func (r *GoResponse) SetResponse(w http.ResponseWriter)
- func (r *GoResponse) SetWriter(writer io.Writer)
- func (r *GoResponse) WriteStream(name string, contentlen int64, modtime time.Time, reader io.Reader) error
- type GoTemplate
- type GoWebSocket
- type IPAddr
- type InterceptTarget
- type Interception
- type InterceptorFunc
- type InterceptorMethod
- type Length
- type Listener
- type MacAddr
- type Match
- type Max
- type MaxSize
- type MethodArg
- type MethodType
- type Min
- type MinSize
- type Module
- type ModuleCallbackInterface
- type MultipartForm
- type ObjectDestroy
- type OutResponse
- type Params
- type PlaintextErrorResult
- type PureText
- type Range
- type RedirectToActionResult
- type RedirectToURLResult
- type RenderHTMLResult
- type RenderJSONResult
- type RenderTemplateResult
- type RenderTextResult
- type RenderXMLResult
- type Request
- func (req *Request) Context() map[string]interface{}
- func (req *Request) Cookie(key string) (ServerCookie, error)
- func (req *Request) Destroy()
- func (req *Request) FormValue(key string) (value string)
- func (req *Request) GetBody() (body io.Reader)
- func (req *Request) GetForm() (url.Values, error)
- func (req *Request) GetHttpHeader(key string) string
- func (req *Request) GetMultipartForm() (ServerMultipartForm, error)
- func (req *Request) GetPath() (path string)
- func (req *Request) GetQuery() (v url.Values)
- func (req *Request) GetRequestURI() string
- func (r *Request) GetValue(key int) (value interface{})
- func (req *Request) MultipartReader() (*multipart.Reader, error)
- func (req *Request) ParseForm() (e error)
- func (req *Request) ParseMultipartForm(_ int64) (e error)
- func (req *Request) PostFormValue(key string) (value string)
- func (req *Request) Referer() string
- func (req *Request) SetRequest(r ServerRequest)
- func (r *Request) UserAgent() string
- type Required
- type Response
- func (resp *Response) Destroy()
- func (resp *Response) GetStreamWriter() (writer StreamWriter)
- func (resp *Response) GetWriter() (writer io.Writer)
- func (resp *Response) SetResponse(r ServerResponse)
- func (resp *Response) SetStatus(statusCode int)
- func (resp *Response) SetWriter(writer io.Writer) bool
- func (resp *Response) WriteHeader(defaultStatusCode int, defaultContentType string)
- type Result
- type RevelHeader
- func (h *RevelHeader) Add(key, value string)
- func (h *RevelHeader) Destroy()
- func (h *RevelHeader) Get(key string) (value string)
- func (h *RevelHeader) GetAll(key string) (values []string)
- func (h *RevelHeader) Set(key, value string)
- func (h *RevelHeader) SetCookie(cookie string)
- func (h *RevelHeader) SetStatus(status int)
- type Route
- type RouteMatch
- type Router
- type ServerContext
- type ServerCookie
- type ServerEngine
- type ServerEngineEmpty
- type ServerHeader
- type ServerMultipartForm
- type ServerRequest
- type ServerResponse
- type ServerWebSocket
- type Session
- type SimpleLockStack
- type SimpleLockStackElement
- type SourceLine
- type StartupHook
- type StartupHooks
- type StreamWriter
- type Template
- type TemplateEngine
- type TemplateLoader
- func (loader *TemplateLoader) CreateTemplateEngine(templateEngineName string) (TemplateEngine, error)
- func (loader *TemplateLoader) Refresh() (err *Error)
- func (loader *TemplateLoader) Template(name string) (tmpl Template, err error)
- func (loader *TemplateLoader) TemplateLang(name, lang string) (tmpl Template, err error)
- func (loader *TemplateLoader) WatchDir(info os.FileInfo) bool
- func (loader *TemplateLoader) WatchFile(basename string) bool
- type TemplateView
- type URL
- type Validation
- func (v *Validation) Check(obj interface{}, checks ...Validator) *ValidationResult
- func (v *Validation) Clear()
- func (v *Validation) Domain(str string) *ValidationResult
- func (v *Validation) Email(str string) *ValidationResult
- func (v *Validation) Error(message string, args ...interface{}) *ValidationResult
- func (v *Validation) ErrorKey(message string, args ...interface{}) *ValidationResult
- func (v *Validation) ErrorMap() map[string]*ValidationError
- func (v *Validation) FilePath(str string, m int) *ValidationResult
- func (v *Validation) HasErrors() bool
- func (v *Validation) IPAddr(str string, cktype ...int) *ValidationResult
- func (v *Validation) Keep()
- func (v *Validation) Length(obj interface{}, n int) *ValidationResult
- func (v *Validation) MacAddr(str string) *ValidationResult
- func (v *Validation) Match(str string, regex *regexp.Regexp) *ValidationResult
- func (v *Validation) Max(n int, max int) *ValidationResult
- func (v *Validation) MaxFloat(n float64, max float64) *ValidationResult
- func (v *Validation) MaxSize(obj interface{}, max int) *ValidationResult
- func (v *Validation) Min(n int, min int) *ValidationResult
- func (v *Validation) MinFloat(n float64, min float64) *ValidationResult
- func (v *Validation) MinSize(obj interface{}, min int) *ValidationResult
- func (v *Validation) PureText(str string, m int) *ValidationResult
- func (v *Validation) Range(n, min, max int) *ValidationResult
- func (v *Validation) RangeFloat(n, min, max float64) *ValidationResult
- func (v *Validation) Required(obj interface{}) *ValidationResult
- func (v *Validation) URL(str string) *ValidationResult
- func (v *Validation) ValidationResult(ok bool) *ValidationResult
- type ValidationError
- type ValidationResult
- type Validator
- type Watcher
- type When
- type WriteFlusher
Constants ¶
const ( DefaultDateFormat = "2006-01-02" DefaultDateTimeFormat = "2006-01-02 15:04" )
Revel's default date and time constants
const ( // Event type when templates are going to be refreshed (receivers are registered template engines added to the template.engine conf option) TEMPLATE_REFRESH_REQUESTED = iota // Event type when templates are refreshed (receivers are registered template engines added to the template.engine conf option) TEMPLATE_REFRESH_COMPLETED // Event type before all module loads, events thrown to handlers added to AddInitEventHandler REVEL_BEFORE_MODULES_LOADED // Event type after all module loads, events thrown to handlers added to AddInitEventHandler REVEL_AFTER_MODULES_LOADED // Event type before server engine is initialized, receivers are active server engine and handlers added to AddInitEventHandler ENGINE_BEFORE_INITIALIZED // Event type before server engine is started, receivers are active server engine and handlers added to AddInitEventHandler ENGINE_STARTED // Event type after server engine is stopped, receivers are active server engine and handlers added to AddInitEventHandler ENGINE_SHUTDOWN // Called before routes are refreshed ROUTE_REFRESH_REQUESTED // Called after routes have been refreshed ROUTE_REFRESH_COMPLETED )
const ( ENGINE_RESPONSE_STATUS ENGINE_WRITER ENGINE_PARAMETERS ENGINE_PATH ENGINE_REQUEST ENGINE_RESPONSE )
const ( /* HTTP Engine Type Values Starts at 1000 */ HTTP_QUERY = ENGINE_PARAMETERS HTTP_PATH = ENGINE_PATH HTTP_BODY = iota + 1000 HTTP_FORM = iota + 1000 HTTP_MULTIPART_FORM = iota + 1000 HTTP_METHOD = iota + 1000 HTTP_REQUEST_URI = iota + 1000 HTTP_REMOTE_ADDR = iota + 1000 HTTP_HOST = iota + 1000 HTTP_URL = iota + 1000 HTTP_SERVER_HEADER = iota + 1000 HTTP_STREAM_WRITER = iota + 1000 HTTP_WRITER = ENGINE_WRITER )
const ( SessionIDKey = "_ID" TimestampKey = "_TS" )
Session constants
const ( None = 0 IPAny = 1 IPv4 = 32 // IPv4 (32 chars) IPv6 = 39 // IPv6(39 chars) IPv4MappedIPv6 = 45 // IP4-mapped IPv6 (45 chars) , Ex) ::FFFF:129.144.52.38 IPv4CIDR = IPv4 + 3 IPv6CIDR = IPv6 + 3 IPv4MappedIPv6CIDR = IPv4MappedIPv6 + 3 )
const ( NORMAL = 0 STRICT = 4 )
NORMAL BenchmarkRegex-8 2000000000 0.24 ns/op STRICT BenchmarkLoop-8 2000000000 0.01 ns/op
const ( ONLY_FILENAME = 0 ALLOW_RELATIVE_PATH = 1 )
const ( // Version current Revel version Version = "0.18.0" // BuildDate latest commit/release date BuildDate = "2017-10-30" // MinimumGoVersion minimum required Go version for Revel MinimumGoVersion = ">= go1.6" )
const (
// CurrentLocaleViewArg the key for the current locale view arg value
CurrentLocaleViewArg = "currentLocale"
)
const (
// DefaultFileContentType Revel's default response content type
DefaultFileContentType = "application/octet-stream"
)
const GO_NATIVE_SERVER_ENGINE = "go"
const GO_TEMPLATE = "go"
const (
// RevelImportPath Revel framework import path
RevelImportPath = "github.com/revel/revel"
)
Variables ¶
var ( // These are the lookups to find a Binder for any type of data. // The most specific binder found will be used (Type before Kind) TypeBinders = make(map[reflect.Type]Binder) KindBinders = make(map[reflect.Kind]Binder) // Applications can add custom time formats to this array, and they will be // automatically attempted when binding a time.Time. TimeFormats = []string{} DateFormat string DateTimeFormat string IntBinder = Binder{ Bind: ValueBinder(func(val string, typ reflect.Type) reflect.Value { if len(val) == 0 { return reflect.Zero(typ) } intValue, err := strconv.ParseInt(val, 10, 64) if err != nil { binderLog.Warn("IntBinder Conversion Error", "error", err) return reflect.Zero(typ) } pValue := reflect.New(typ) pValue.Elem().SetInt(intValue) return pValue.Elem() }), Unbind: func(output map[string]string, key string, val interface{}) { output[key] = fmt.Sprintf("%d", val) }, } UintBinder = Binder{ Bind: ValueBinder(func(val string, typ reflect.Type) reflect.Value { if len(val) == 0 { return reflect.Zero(typ) } uintValue, err := strconv.ParseUint(val, 10, 64) if err != nil { binderLog.Warn("UintBinder Conversion Error", "error", err) return reflect.Zero(typ) } pValue := reflect.New(typ) pValue.Elem().SetUint(uintValue) return pValue.Elem() }), Unbind: func(output map[string]string, key string, val interface{}) { output[key] = fmt.Sprintf("%d", val) }, } FloatBinder = Binder{ Bind: ValueBinder(func(val string, typ reflect.Type) reflect.Value { if len(val) == 0 { return reflect.Zero(typ) } floatValue, err := strconv.ParseFloat(val, 64) if err != nil { binderLog.Warn("FloatBinder Conversion Error", "error", err) return reflect.Zero(typ) } pValue := reflect.New(typ) pValue.Elem().SetFloat(floatValue) return pValue.Elem() }), Unbind: func(output map[string]string, key string, val interface{}) { output[key] = fmt.Sprintf("%f", val) }, } StringBinder = Binder{ Bind: ValueBinder(func(val string, typ reflect.Type) reflect.Value { return reflect.ValueOf(val) }), Unbind: func(output map[string]string, name string, val interface{}) { output[name] = val.(string) }, } // Booleans support a various value formats, // refer `revel.Atob` method. BoolBinder = Binder{ Bind: ValueBinder(func(val string, typ reflect.Type) reflect.Value { return reflect.ValueOf(Atob(val)) }), Unbind: func(output map[string]string, name string, val interface{}) { output[name] = fmt.Sprintf("%t", val) }, } PointerBinder = Binder{ Bind: func(params *Params, name string, typ reflect.Type) reflect.Value { v := Bind(params, name, typ.Elem()) if v.CanAddr() { return v.Addr() } return v }, Unbind: func(output map[string]string, name string, val interface{}) { Unbind(output, name, reflect.ValueOf(val).Elem().Interface()) }, } TimeBinder = Binder{ Bind: ValueBinder(func(val string, typ reflect.Type) reflect.Value { for _, f := range TimeFormats { if r, err := time.Parse(f, val); err == nil { return reflect.ValueOf(r) } } return reflect.Zero(typ) }), Unbind: func(output map[string]string, name string, val interface{}) { var ( t = val.(time.Time) format = DateTimeFormat h, m, s = t.Clock() ) if h == 0 && m == 0 && s == 0 { format = DateFormat } output[name] = t.Format(format) }, } MapBinder = Binder{ Bind: bindMap, Unbind: unbindMap, } )
Binders type and kind definition
var ( NilFilter = func(_ *Controller, _ []Filter) {} NilChain = []Filter{NilFilter} )
NilFilter and NilChain are helpful in writing filter tests.
var ( // The root log is what all other logs are branched from, meaning if you set the handler for the root // it will adjust all children RootLog = logger.New() // This logger is the application logger, use this for your application log messages - ie jobs and startup, // Use Controller.Log for Controller logging // The requests are logged to this logger with the context of `section:requestlog` AppLog = RootLog.New("module", "app") // This is the logger revel writes to, added log messages will have a context of module:revel in them // It is based off of `RootLog` RevelLog = RootLog.New("module", "revel") // System logger SysLog = AppLog.New("section", "system") // DEPRECATED Use AppLog TRACE = log.New(os.Stderr, "TRACE ", log.Ldate|log.Ltime|log.Lshortfile) // DEPRECATED Use AppLog INFO = log.New(os.Stderr, "INFO ", log.Ldate|log.Ltime|log.Lshortfile) // DEPRECATED Use AppLog WARN = log.New(os.Stderr, "WARN ", log.Ldate|log.Ltime|log.Lshortfile) // DEPRECATED Use AppLog ERROR = log.New(os.Stderr, "ERROR ", log.Ldate|log.Ltime|log.Lshortfile) )
Logger
var ( AppName string // e.g. "sample" AppRoot string // e.g. "/app1" BasePath string // e.g. "$GOPATH/src/corp/sample" AppPath string // e.g. "$GOPATH/src/corp/sample/app" ViewsPath string // e.g. "$GOPATH/src/corp/sample/app/views" ImportPath string // e.g. "corp/sample" SourcePath string // e.g. "$GOPATH/src" Config *config.Context RunMode string // Application-defined (by default, "dev" or "prod") DevMode bool // if true, RunMode is a development mode. // Revel installation details RevelPath string // e.g. "$GOPATH/src/github.com/revel/revel" // Where to look for templates // Ordered by priority. (Earlier paths take precedence over later paths.) CodePaths []string // Code base directories, for modules and app TemplatePaths []string // Template path directories manually added // ConfPaths where to look for configurations // Config load order // 1. framework (revel/conf/*) // 2. application (conf/*) // 3. user supplied configs (...) - User configs can override/add any from above ConfPaths []string // Server config. // // Alert: This is how the app is configured, which may be different from // the current process reality. For example, if the app is configured for // port 9000, HTTPPort will always be 9000, even though in dev mode it is // run on a random port and proxied. HTTPPort int // e.g. 9000 HTTPAddr string // e.g. "", "127.0.0.1" HTTPSsl bool // e.g. true if using ssl HTTPSslCert string // e.g. "/path/to/cert.pem" HTTPSslKey string // e.g. "/path/to/key.pem" // All cookies dropped by the framework begin with this prefix. CookiePrefix string // Cookie domain CookieDomain string // Cookie flags CookieSecure bool // True when revel engine has been initialized (Init has returned) Initialized bool )
App details
var ( MainRouter *Router MainTemplateLoader *TemplateLoader MainWatcher *Watcher CurrentEngine ServerEngine ServerEngineInit *EngineInit )
Revel's variables server, router, etc
var DefaultValidationKeys map[string]map[int]string
DefaultValidationKeys register default validation keys for all calls to Controller.Validation.Func(). Map from (package).func => (line => name of first arg to Validation func) E.g. "myapp/controllers.helper" or "myapp/controllers.(*Application).Action" This is set on initialization in the generated main.go file.
var (
ENGINE_UNKNOWN_GET = errors.New("Server Engine Invalid Get")
)
var ErrorCSSClass = "hasError"
ErrorCSSClass httml CSS error class name
var FORM_NOT_FOUND = errors.New("Form Not Found")
var Filters = []Filter{ PanicFilter, RouterFilter, FilterConfiguringFilter, ParamsFilter, SessionFilter, FlashFilter, ValidationFilter, I18nFilter, InterceptorFilter, CompressFilter, ActionInvoker, }
Filters is the default set of global filters. It may be set by the application on initialization.
var MessageFunc = Message
MessageFunc allows you to override the translation interface.
Set this to your own function that translates to the current locale. This allows you to set up your own loading and logging of translated texts.
See Message(...) in i18n.go for example of function.
var (
Modules []*Module // The list of modules in use
)
var ( // The functions available for use in the templates. TemplateFuncs = map[string]interface{}{ "url": ReverseURL, "set": func(viewArgs map[string]interface{}, key string, value interface{}) template.JS { viewArgs[key] = value return template.JS("") }, "append": func(viewArgs map[string]interface{}, key string, value interface{}) template.JS { if viewArgs[key] == nil { viewArgs[key] = []interface{}{value} } else { viewArgs[key] = append(viewArgs[key].([]interface{}), value) } return template.JS("") }, "field": NewField, "firstof": func(args ...interface{}) interface{} { for _, val := range args { switch val.(type) { case nil: continue case string: if val == "" { continue } return val default: return val } } return nil }, "option": func(f *Field, val interface{}, label string) template.HTML { selected := "" if f.Flash() == val || (f.Flash() == "" && f.Value() == val) { selected = " selected" } return template.HTML(fmt.Sprintf(`<option value="%s"%s>%s</option>`, html.EscapeString(fmt.Sprintf("%v", val)), selected, html.EscapeString(label))) }, "radio": func(f *Field, val string) template.HTML { checked := "" if f.Flash() == val { checked = " checked" } return template.HTML(fmt.Sprintf(`<input type="radio" name="%s" value="%s"%s>`, html.EscapeString(f.Name), html.EscapeString(val), checked)) }, "checkbox": func(f *Field, val string) template.HTML { checked := "" if f.Flash() == val { checked = " checked" } return template.HTML(fmt.Sprintf(`<input type="checkbox" name="%s" value="%s"%s>`, html.EscapeString(f.Name), html.EscapeString(val), checked)) }, "pad": func(str string, width int) template.HTML { if len(str) >= width { return template.HTML(html.EscapeString(str)) } return template.HTML(html.EscapeString(str) + strings.Repeat(" ", width-len(str))) }, "errorClass": func(name string, viewArgs map[string]interface{}) template.HTML { errorMap, ok := viewArgs["errors"].(map[string]*ValidationError) if !ok || errorMap == nil { templateLog.Warn("errorClass: Called 'errorClass' without 'errors' in the view args.") return template.HTML("") } valError, ok := errorMap[name] if !ok || valError == nil { return template.HTML("") } return template.HTML(ErrorCSSClass) }, "msg": func(viewArgs map[string]interface{}, message string, args ...interface{}) template.HTML { str, ok := viewArgs[CurrentLocaleViewArg].(string) if !ok { return "" } return template.HTML(MessageFunc(str, message, args...)) }, "nl2br": func(text string) template.HTML { return template.HTML(strings.Replace(template.HTMLEscapeString(text), "\n", "<br>", -1)) }, "raw": func(text string) template.HTML { return template.HTML(text) }, "pluralize": func(items interface{}, pluralOverrides ...string) string { singular, plural := "", "s" if len(pluralOverrides) >= 1 { singular = pluralOverrides[0] if len(pluralOverrides) == 2 { plural = pluralOverrides[1] } } switch v := reflect.ValueOf(items); v.Kind() { case reflect.Int: if items.(int) != 1 { return plural } case reflect.Slice: if v.Len() != 1 { return plural } default: templateLog.Error("pluralize: unexpected type: ", "value", v) } return singular }, "date": func(date time.Time) string { return date.Format(DateFormat) }, "datetime": func(date time.Time) string { return date.Format(DateTimeFormat) }, "slug": Slug, "even": func(a int) bool { return (a % 2) == 0 }, "timeago": TimeAgo, "i18ntemplate": func(args ...interface{}) (template.HTML, error) { templateName, lang := "", "" var viewArgs interface{} switch len(args) { case 0: templateLog.Error("i18ntemplate: No arguments passed to template call") case 1: templateName = args[0].(string) case 2: templateName = args[0].(string) viewArgs = args[1] if viewargsmap, ok := viewArgs.(map[string]interface{}); ok { lang, _ = viewargsmap[CurrentLocaleViewArg].(string) } default: templateName = args[0].(string) viewArgs = args[1] lang, _ = args[2].(string) if len(args) > 3 { templateLog.Error("i18ntemplate: Received more parameters then needed for", "template", templateName) } } var buf bytes.Buffer tmpl, err := MainTemplateLoader.TemplateLang(templateName, lang) if err == nil { err = tmpl.Render(&buf, viewArgs) } else { templateLog.Error("i18ntemplate: Failed to render i18ntemplate ", "name", templateName, "error", err) } return template.HTML(buf.String()), err }, } )
var WatchFilter = func(c *Controller, fc []Filter) { if MainWatcher != nil { err := MainWatcher.Notify() if err != nil { c.Result = c.RenderError(err) return } } fc[0](c, fc[1:]) }
Functions ¶
func ActionInvoker ¶
func ActionInvoker(c *Controller, _ []Filter)
func AddInitEventHandler ¶ added in v0.16.0
func AddInitEventHandler(handler EventHandler)
Add event handler to listen for all system events
func Atob ¶ added in v0.14.0
Atob converts string into boolean. It is in-case sensitive When converting to boolean, the following values are considered FALSE: - The "" (empty) string - The "false" string - The "f" string - The "off" string, - The string "0" & "0.0"
func BeforeAfterFilter ¶ added in v0.18.0
func BeforeAfterFilter(c *Controller, fc []Filter)
Autocalls any defined before and after methods on the target controller If either calls returns a value then the result is returned
func Bind ¶
Bind takes the name and type of the desired parameter and constructs it from one or more values from Params. Returns the zero value of the type upon any sort of failure.
func CheckInit ¶
func CheckInit()
CheckInit method checks `revel.Initialized` if not initialized it panics
func ClientIP ¶ added in v0.13.0
ClientIP method returns client IP address from HTTP request.
Note: Set property "app.behind.proxy" to true only if Revel is running behind proxy like nginx, haproxy, apache, etc. Otherwise you may get inaccurate Client IP address. Revel parses the IP address in the order of X-Forwarded-For, X-Real-IP.
By default revel will get http.Request's RemoteAddr
func CompressFilter ¶
func CompressFilter(c *Controller, fc []Filter)
CompressFilter does compression of response body in gzip/deflate if `results.compressed=true` in the app.conf
func ContainsString ¶
func ContentTypeByFilename ¶
ContentTypeByFilename returns a MIME content type based on the filename's extension. If no appropriate one is found, returns "application/octet-stream" by default. Additionally, specifies the charset as UTF-8 for text/* types.
func EngineHandles ¶ added in v0.16.0
func EngineHandles(engine TemplateEngine, templateView *TemplateView) bool
func Equal ¶
func Equal(a, b interface{}) bool
Equal is a helper for comparing value equality, following these rules:
- Values with equivalent types are compared with reflect.DeepEqual
- int, uint, and float values are compared without regard to the type width. for example, Equal(int32(5), int64(5)) == true
- strings and byte slices are converted to strings before comparison.
- else, return false.
func ExecuteTemplate ¶
func ExecuteTemplate(tmpl ExecutableTemplate, data interface{}) string
ExecuteTemplate execute a template and returns the result as a string.
func FilterConfiguringFilter ¶
func FilterConfiguringFilter(c *Controller, fc []Filter)
FilterConfiguringFilter is a filter stage that customizes the remaining filter chain for the action being invoked.
func FindMethod ¶
FindMethod returns the reflect.Method, given a Receiver type and Func value.
func FirstNonEmpty ¶
func FlashFilter ¶
func FlashFilter(c *Controller, fc []Filter)
FlashFilter is a Revel Filter that retrieves and sets the flash cookie. Within Revel, it is available as a Flash attribute on Controller instances. The name of the Flash cookie is set as CookiePrefix + "_FLASH".
func GetRootLogHandler ¶ added in v0.18.0
func GetRootLogHandler() *logger.CompositeMultiHandler
Return the root log handler
func HTTPMethodOverride ¶ added in v0.14.0
func HTTPMethodOverride(c *Controller, fc []Filter)
HTTPMethodOverride overrides allowed http methods via form or browser param
func I18nFilter ¶
func I18nFilter(c *Controller, fc []Filter)
func Init ¶
func Init(mode, importPath, srcPath string)
Init initializes Revel -- it provides paths for getting around the app.
Params:
mode - the run mode, which determines which app.conf settings are used. importPath - the Go import path of the application. srcPath - the path to the source directory, containing Revel and the app. If not specified (""), then a functioning Go installation is required.
func InitServer ¶ added in v0.13.0
func InitServer()
InitServer initializes the server and returns the handler It can be used as an alternative entry-point if one needs the http handler to be exposed. E.g. to run on multiple addresses and ports or to set custom TLS options.
func InitServerEngine ¶ added in v0.18.0
func InterceptFunc ¶
func InterceptFunc(intc InterceptorFunc, when When, target interface{})
InterceptFunc installs a general interceptor. This can be applied to any Controller. It must have the signature of:
func example(c *revel.Controller) revel.Result
func InterceptMethod ¶
func InterceptMethod(intc InterceptorMethod, when When)
InterceptMethod installs an interceptor method that applies to its own Controller.
func (c AppController) example() revel.Result func (c *AppController) example() revel.Result
func InterceptorFilter ¶
func InterceptorFilter(c *Controller, fc []Filter)
func Message ¶
Message performs a message look-up for the given locale and message using the given arguments.
When either an unknown locale or message is detected, a specially formatted string is returned.
func MessageLanguages ¶
func MessageLanguages() []string
MessageLanguages returns all currently loaded message languages.
func MustReadLines ¶
MustReadLines reads the lines of the given file. Panics in the case of error.
func OnAppStart ¶
func OnAppStart(f func(), order ...int)
OnAppStart registers a function to be run at app startup.
The order you register the functions will be the order they are run. You can think of it as a FIFO queue. This process will happen after the config file is read and before the server is listening for connections.
Ideally, your application should have only one call to init() in the file init.go. The reason being that the call order of multiple init() functions in the same package is undefined. Inside of init() call revel.OnAppStart() for each function you wish to register.
Example:
// from: yourapp/app/controllers/somefile.go func InitDB() { // do DB connection stuff here } func FillCache() { // fill a cache from DB // this depends on InitDB having been run } // from: yourapp/app/init.go func init() { // set up filters... // register startup functions revel.OnAppStart(InitDB) revel.OnAppStart(FillCache) }
This can be useful when you need to establish connections to databases or third-party services, setup app components, compile assets, or any thing you need to do between starting Revel and accepting connections.
func PanicFilter ¶
func PanicFilter(c *Controller, fc []Filter)
PanicFilter wraps the action invocation in a protective defer blanket that converts panics into 500 error pages.
func ParamsFilter ¶
func ParamsFilter(c *Controller, fc []Filter)
func ParseKeyValueCookie ¶
ParseKeyValueCookie takes the raw (escaped) cookie value and parses out key values.
func ParseParams ¶
ParseParams parses the `http.Request` params into `revel.Controller.Params`
func ParseTemplateError ¶ added in v0.16.0
Parse the line, and description from an error message like: html/template:Application/Register.html:36: no such template "footer.html"
func RegisterController ¶
func RegisterController(c interface{}, methods []*MethodType)
RegisterController registers a Controller and its Methods with Revel.
func RegisterModuleInit ¶ added in v0.18.0
func RegisterModuleInit(callback ModuleCallbackInterface)
Called by a module init() function, caller will receive the *Module object created for that module This would be useful for assigning a logger for logging information in the module (since the module context would be correct)
func RegisterServerEngine ¶ added in v0.18.0
func RegisterServerEngine(name string, loader func() ServerEngine)
func RegisterTemplateLoader ¶ added in v0.16.0
func RegisterTemplateLoader(key string, loader func(loader *TemplateLoader) (TemplateEngine, error)) (err error)
Allow for templates to be registered during init but not initialized until application has been started
func ResolveContentType ¶
ResolveContentType gets the content type. e.g. From "multipart/form-data; boundary=--" to "multipart/form-data" If none is specified, returns "text/html" by default.
func ResolveFormat ¶
ResolveFormat maps the request's Accept MIME type declaration to a Request.Format attribute, specifically "html", "xml", "json", or "txt", returning a default of "html" when Accept header cannot be mapped to a value above.
func ResolveImportPath ¶
ResolveImportPath returns the filesystem path for the given import path. Returns an error if the import path could not be found.
func ReverseURL ¶ added in v0.14.0
ReverseURL returns a url capable of invoking a given controller method: "Application.ShowApp 123" => "/app/123"
func RouterFilter ¶
func RouterFilter(c *Controller, fc []Filter)
func Run ¶
func Run(port int)
Run the server. This is called from the generated main file. If port is non-zero, use that. Else, read the port from app.conf.
func SessionFilter ¶
func SessionFilter(c *Controller, fc []Filter)
SessionFilter is a Revel Filter that retrieves and sets the session cookie. Within Revel, it is available as a Session attribute on Controller instances. The name of the Session cookie is set as CookiePrefix + "_SESSION".
func Sign ¶
Sign a given string with the app-configured secret key. If no secret key is set, returns the empty string. Return the signature in base64 (URLEncoding).
func TemplateOutputArgs ¶ added in v0.18.0
TemplateOutputArgs returns the result of the template rendered using the passed in arguments.
func ToBool ¶ added in v0.14.0
func ToBool(val interface{}) bool
ToBool method converts/assert value into true or false. Default is true. When converting to boolean, the following values are considered FALSE: - The integer value is 0 (zero) - The float value 0.0 (zero) - The complex value 0.0 (zero) - For string value, please refer `revel.Atob` method - An array, map, slice with zero elements - Boolean value returned as-is - "nil" value
func ValidationFilter ¶
func ValidationFilter(c *Controller, fc []Filter)
ValidationFilter revel Filter function to be hooked into the filter chain.
func ValueBinder ¶
func ValueBinder(f func(value string, typ reflect.Type) reflect.Value) func(*Params, string, reflect.Type) reflect.Value
ValueBinder is adapter for easily making one-key-value binders.
Types ¶
type AcceptLanguage ¶
AcceptLanguage is a single language from the Accept-Language HTTP header.
type AcceptLanguages ¶
type AcceptLanguages []AcceptLanguage
AcceptLanguages is collection of sortable AcceptLanguage instances.
func ResolveAcceptLanguage ¶
func ResolveAcceptLanguage(req *Request) AcceptLanguages
ResolveAcceptLanguage returns a sorted list of Accept-Language header values.
The results are sorted using the quality defined in the header for each language range with the most qualified language range as the first element in the slice.
See the HTTP header fields specification (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4) for more details.
func (AcceptLanguages) Len ¶
func (al AcceptLanguages) Len() int
func (AcceptLanguages) Less ¶
func (al AcceptLanguages) Less(i, j int) bool
func (AcceptLanguages) String ¶
func (al AcceptLanguages) String() string
func (AcceptLanguages) Swap ¶
func (al AcceptLanguages) Swap(i, j int)
type ActionDefinition ¶
func (*ActionDefinition) String ¶
func (a *ActionDefinition) String() string
type ActionPathData ¶ added in v0.17.1
type ActionPathData struct { Key string // The unique key ControllerNamespace string // The controller namespace ControllerName string // The controller name MethodName string // The method name Action string // The action ModuleSource *Module // The module Route *Route // The route FixedParamsByName map[string]string // The fixed parameters TypeOfController *ControllerType // The controller type }
type BinaryResult ¶
type BinaryResult struct { Reader io.Reader Name string Length int64 Delivery ContentDisposition ModTime time.Time }
func (*BinaryResult) Apply ¶
func (r *BinaryResult) Apply(req *Request, resp *Response)
type Binder ¶
type Binder struct { // Bind takes the name and type of the desired parameter and constructs it // from one or more values from Params. // // Example // // Request: // url?id=123&ol[0]=1&ol[1]=2&ul[]=str&ul[]=array&user.Name=rob // // Action: // Example.Action(id int, ol []int, ul []string, user User) // // Calls: // Bind(params, "id", int): 123 // Bind(params, "ol", []int): {1, 2} // Bind(params, "ul", []string): {"str", "array"} // Bind(params, "user", User): User{Name:"rob"} // // Note that only exported struct fields may be bound. Bind func(params *Params, name string, typ reflect.Type) reflect.Value // Unbind serializes a given value to one or more URL parameters of the given // name. Unbind func(output map[string]string, name string, val interface{}) }
A Binder translates between string parameters and Go data structures.
type BufferedServerHeader ¶ added in v0.18.0
type BufferedServerHeader struct {
// contains filtered or unexported fields
}
BufferedServerHeader will not send content out until the Released is called, from that point on it will act normally It implements all the ServerHeader
func NewBufferedServerHeader ¶ added in v0.18.0
func NewBufferedServerHeader(o ServerHeader) *BufferedServerHeader
func (*BufferedServerHeader) Add ¶ added in v0.18.0
func (bsh *BufferedServerHeader) Add(key string, value string)
func (*BufferedServerHeader) Del ¶ added in v0.18.0
func (bsh *BufferedServerHeader) Del(key string)
func (*BufferedServerHeader) Get ¶ added in v0.18.0
func (bsh *BufferedServerHeader) Get(key string) (value []string)
func (*BufferedServerHeader) GetCookie ¶ added in v0.18.0
func (bsh *BufferedServerHeader) GetCookie(key string) (value ServerCookie, err error)
func (*BufferedServerHeader) Release ¶ added in v0.18.0
func (bsh *BufferedServerHeader) Release()
func (*BufferedServerHeader) Set ¶ added in v0.18.0
func (bsh *BufferedServerHeader) Set(key string, value string)
func (*BufferedServerHeader) SetCookie ¶ added in v0.18.0
func (bsh *BufferedServerHeader) SetCookie(cookie string)
func (*BufferedServerHeader) SetStatus ¶ added in v0.18.0
func (bsh *BufferedServerHeader) SetStatus(statusCode int)
type CompressResponseWriter ¶
type CompressResponseWriter struct { Header *BufferedServerHeader ControllerResponse *Response OriginalWriter io.Writer // contains filtered or unexported fields }
func (*CompressResponseWriter) Close ¶ added in v0.10.0
func (c *CompressResponseWriter) Close() error
func (CompressResponseWriter) CloseNotify ¶ added in v0.10.0
func (c CompressResponseWriter) CloseNotify() <-chan bool
func (*CompressResponseWriter) Write ¶
func (c *CompressResponseWriter) Write(b []byte) (int, error)
func (*CompressResponseWriter) WriteHeader ¶
func (c *CompressResponseWriter) WriteHeader(status int)
type ContentDisposition ¶
type ContentDisposition string
var ( Attachment ContentDisposition = "attachment" Inline ContentDisposition = "inline" )
type Controller ¶
type Controller struct { Name string // The controller name, e.g. "Application" Type *ControllerType // A description of the controller type. MethodName string // The method name, e.g. "Index" MethodType *MethodType // A description of the invoked action type. AppController interface{} // The controller that was instantiated. embeds revel.Controller Action string // The fully qualified action name, e.g. "App.Index" ClientIP string // holds IP address of request came from Request *Request Response *Response Result Result Flash Flash // User cookie, cleared after 1 request. Session Session // Session, stored in cookie, signed. Params *Params // Parameters from URL and form (including multipart). Args map[string]interface{} // Per-request scratch space. ViewArgs map[string]interface{} // Variables passed to the template. Validation *Validation // Data validation helpers Log logger.MultiLogger // Context Logger }
Controller Revel's controller structure that gets embedded in user defined controllers
func NewController ¶
func NewController(context ServerContext) *Controller
New controller, creates a new instance wrapping the request and response in it
func NewControllerEmpty ¶ added in v0.18.0
func NewControllerEmpty() *Controller
NewController returns new controller instance for Request and Response
func (*Controller) Destroy ¶ added in v0.18.0
func (c *Controller) Destroy()
func (*Controller) FlashParams ¶
func (c *Controller) FlashParams()
FlashParams serializes the contents of Controller.Params to the Flash cookie.
func (*Controller) Forbidden ¶
func (c *Controller) Forbidden(msg string, objs ...interface{}) Result
Forbidden returns an HTTP 403 Forbidden response whose body is the formatted string of msg and objs.
func (*Controller) Message ¶
func (c *Controller) Message(message string, args ...interface{}) string
Message performs a lookup for the given message name using the given arguments using the current language defined for this controller.
The current language is set by the i18n plugin.
func (*Controller) NotFound ¶
func (c *Controller) NotFound(msg string, objs ...interface{}) Result
NotFound returns an HTTP 404 Not Found response whose body is the formatted string of msg and objs.
func (*Controller) Redirect ¶
func (c *Controller) Redirect(val interface{}, args ...interface{}) Result
Redirect to an action or to a URL.
c.Redirect(Controller.Action) c.Redirect("/controller/action") c.Redirect("/controller/%d/action", id)
func (*Controller) Render ¶
func (c *Controller) Render(extraViewArgs ...interface{}) Result
Render a template corresponding to the calling Controller method. Arguments will be added to c.ViewArgs prior to rendering the template. They are keyed on their local identifier.
For example:
func (c Users) ShowUser(id int) revel.Result { user := loadUser(id) return c.Render(user) }
This action will render views/Users/ShowUser.html, passing in an extra key-value "user": (User).
This is the slower magical version which uses the runtime to determine 1) Set c.ViewArgs to the arguments passed into this function 2) How to call the RenderTemplate by building the following line c.RenderTemplate(c.Name + "/" + c.MethodType.Name + "." + c.Request.Format)
If you want your code to run faster it is recommended you add the template values directly to the c.ViewArgs and call c.RenderTemplate directly
func (*Controller) RenderBinary ¶
func (c *Controller) RenderBinary(memfile io.Reader, filename string, delivery ContentDisposition, modtime time.Time) Result
RenderBinary is like RenderFile() except that it instead of a file on disk, it renders data from memory (which could be a file that has not been written, the output from some function, or bytes streamed from somewhere else, as long it implements io.Reader). When called directly on something generated or streamed, modtime should mostly likely be time.Now().
func (*Controller) RenderError ¶
func (c *Controller) RenderError(err error) Result
func (*Controller) RenderFile ¶
func (c *Controller) RenderFile(file *os.File, delivery ContentDisposition) Result
RenderFile returns a file, either displayed inline or downloaded as an attachment. The name and size are taken from the file info.
func (*Controller) RenderHTML ¶ added in v0.14.0
func (c *Controller) RenderHTML(html string) Result
RenderHTML renders html in response
func (*Controller) RenderJSON ¶ added in v0.14.0
func (c *Controller) RenderJSON(o interface{}) Result
RenderJSON uses encoding/json.Marshal to return JSON to the client.
func (*Controller) RenderJSONP ¶ added in v0.14.0
func (c *Controller) RenderJSONP(callback string, o interface{}) Result
RenderJSONP renders JSONP result using encoding/json.Marshal
func (*Controller) RenderTemplate ¶
func (c *Controller) RenderTemplate(templatePath string) Result
RenderTemplate method does less magical way to render a template. Renders the given template, using the current ViewArgs.
func (*Controller) RenderText ¶
func (c *Controller) RenderText(text string, objs ...interface{}) Result
RenderText renders plaintext in response, printf style.
func (*Controller) RenderXML ¶ added in v0.14.0
func (c *Controller) RenderXML(o interface{}) Result
RenderXML uses encoding/xml.Marshal to return XML to the client.
func (*Controller) SetAction ¶
func (c *Controller) SetAction(controllerName, methodName string) error
SetAction sets the action that is being invoked in the current request. It sets the following properties: Name, Action, Type, MethodType
func (*Controller) SetController ¶ added in v0.18.0
func (c *Controller) SetController(context ServerContext)
Sets the request and the response for the controller
func (*Controller) SetCookie ¶
func (c *Controller) SetCookie(cookie *http.Cookie)
func (*Controller) SetTypeAction ¶ added in v0.17.1
func (c *Controller) SetTypeAction(controllerName, methodName string, typeOfController *ControllerType) error
SetAction sets the assigns the Controller type, sets the action and initializes the controller
func (*Controller) Stats ¶ added in v0.18.0
func (c *Controller) Stats() map[string]interface{}
This stats returns some interesting stats based on what is cached in memory and what is available directly
func (*Controller) TemplateOutput ¶ added in v0.18.0
func (c *Controller) TemplateOutput(templatePath string) (data []byte, err error)
TemplateOutput returns the result of the template rendered using the controllers ViewArgs.
func (*Controller) Todo ¶
func (c *Controller) Todo() Result
Todo returns an HTTP 501 Not Implemented "todo" indicating that the action isn't done yet.
type ControllerFieldPath ¶ added in v0.18.0
The controller field path provides the caller the ability to invoke the call directly
type ControllerType ¶
type ControllerType struct { Namespace string // The namespace of the controller ModuleSource *Module // The module for the controller Type reflect.Type Methods []*MethodType ControllerIndexes [][]int // FieldByIndex to all embedded *Controllers ControllerEvents *ControllerTypeEvents }
Controller registry and types.
func AddControllerType ¶ added in v0.17.1
func AddControllerType(moduleSource *Module, controllerType reflect.Type, methods []*MethodType) (newControllerType *ControllerType)
Adds the controller to the controllers map using its namespace, also adds it to the module list of controllers. If the controller is in the main application it is added without its namespace as well.
func ControllerTypeByName ¶ added in v0.17.1
func ControllerTypeByName(controllerName string, moduleSource *Module) (c *ControllerType)
func (*ControllerType) Method ¶
func (ct *ControllerType) Method(name string) *MethodType
Method searches for a given exported method (case insensitive)
func (*ControllerType) Name ¶ added in v0.17.1
func (ct *ControllerType) Name() string
The controller name with the namespace
func (*ControllerType) ShortName ¶ added in v0.17.1
func (ct *ControllerType) ShortName() string
The controller name without the namespace
type ControllerTypeEvents ¶ added in v0.18.0
type ControllerTypeEvents struct {
Before, After, Finally, Panic []*ControllerFieldPath
}
func NewControllerTypeEvents ¶ added in v0.18.0
func NewControllerTypeEvents(c *ControllerType) (ce *ControllerTypeEvents)
type DiscerningListener ¶
type DiscerningListener interface { Listener WatchDir(info os.FileInfo) bool WatchFile(basename string) bool }
DiscerningListener allows the receiver to selectively watch files.
type Domain ¶ added in v0.17.1
Requires a Domain string to be exactly
func ValidDomain ¶ added in v0.17.1
func ValidDomain() Domain
func (Domain) DefaultMessage ¶ added in v0.17.1
func (Domain) IsSatisfied ¶ added in v0.17.1
type Email ¶
type Email struct {
Match
}
func ValidEmail ¶ added in v0.9.1
func ValidEmail() Email
func (Email) DefaultMessage ¶
type EngineInit ¶ added in v0.18.0
type EngineInit struct { Address, Network string Port int Callback func(ServerContext) }
type Error ¶
type Error struct { SourceType string // The type of source that failed to build. Title, Path, Description string // Description of the error, as presented to the user. Line, Column int // Where the error was encountered. SourceLines []string // The entire source file, split into lines. Stack string // The raw stack trace string from debug.Stack(). MetaError string // Error that occurred producing the error page. Link string // A configurable link to wrap the error source in }
Error description, used as an argument to the error template.
func NewErrorFromPanic ¶
func NewErrorFromPanic(err interface{}) *Error
NewErrorFromPanic method finds the deepest stack from in user code and provide a code listing of that, on the line that eventually triggered the panic. Returns nil if no relevant stack frame can be found.
func (*Error) ContextSource ¶
func (e *Error) ContextSource() []SourceLine
ContextSource method returns a snippet of the source around where the error occurred.
type ErrorCoder ¶ added in v0.18.0
type ErrorCoder interface {
HTTPCode() int
}
type ErrorResult ¶
ErrorResult structure used to handles all kinds of error codes (500, 404, ..). It renders the relevant error page (errors/CODE.format, e.g. errors/500.json). If RunMode is "dev", this results in a friendly error page.
func (ErrorResult) Apply ¶
func (r ErrorResult) Apply(req *Request, resp *Response)
type EventHandler ¶ added in v0.16.0
type ExecutableTemplate ¶
ExecutableTemplate adds some more methods to the default Template.
type Field ¶
type Field struct { Name string Error *ValidationError // contains filtered or unexported fields }
Field represents a data field that may be collected in a web form.
func (*Field) ErrorClass ¶
ErrorClass returns ErrorCSSClass if this field has a validation error, else empty string.
func (*Field) FlashArray ¶
FlashArray returns the flashed value of this Field as a list split on comma.
type FilePath ¶ added in v0.17.1
type FilePath struct {
Mode int
}
Requires an string to be sanitary file path
func ValidFilePath ¶ added in v0.17.1
func (FilePath) DefaultMessage ¶ added in v0.17.1
func (FilePath) IsSatisfied ¶ added in v0.17.1
type Filter ¶
type Filter func(c *Controller, filterChain []Filter)
Filter type definition for Revel's filter
type FilterConfigurator ¶
type FilterConfigurator struct {
// contains filtered or unexported fields
}
FilterConfigurator allows the developer configure the filter chain on a per-controller or per-action basis. The filter configuration is applied by the FilterConfiguringFilter, which is itself a filter stage. For example,
Assuming:
Filters = []Filter{ RouterFilter, FilterConfiguringFilter, SessionFilter, ActionInvoker, }
Add:
FilterAction(App.Action). Add(OtherFilter) => RouterFilter, FilterConfiguringFilter, SessionFilter, OtherFilter, ActionInvoker
Remove:
FilterAction(App.Action). Remove(SessionFilter) => RouterFilter, FilterConfiguringFilter, OtherFilter, ActionInvoker
Insert:
FilterAction(App.Action). Insert(OtherFilter, revel.BEFORE, SessionFilter) => RouterFilter, FilterConfiguringFilter, OtherFilter, SessionFilter, ActionInvoker
Filter modifications may be combined between Controller and Action. For example:
FilterController(App{}). Add(Filter1) FilterAction(App.Action). Add(Filter2) .. would result in App.Action being filtered by both Filter1 and Filter2.
Note: the last filter stage is not subject to the configurator. In particular, Add() adds a filter to the second-to-last place.
func FilterAction ¶
func FilterAction(methodRef interface{}) FilterConfigurator
FilterAction returns a configurator for the filters applied to the given controller method. For example:
FilterAction(MyController.MyAction)
func FilterController ¶
func FilterController(controllerInstance interface{}) FilterConfigurator
FilterController returns a configurator for the filters applied to all actions on the given controller instance. For example:
FilterController(MyController{})
func (FilterConfigurator) Add ¶
func (conf FilterConfigurator) Add(f Filter) FilterConfigurator
Add the given filter in the second-to-last position in the filter chain. (Second-to-last so that it is before ActionInvoker)
func (FilterConfigurator) Insert ¶
func (conf FilterConfigurator) Insert(insert Filter, where When, target Filter) FilterConfigurator
Insert a filter into the filter chain before or after another. This may be called with the BEFORE or AFTER constants, for example:
revel.FilterAction(App.Index). Insert(MyFilter, revel.BEFORE, revel.ActionInvoker). Insert(MyFilter2, revel.AFTER, revel.PanicFilter)
func (FilterConfigurator) Remove ¶
func (conf FilterConfigurator) Remove(target Filter) FilterConfigurator
Remove a filter from the filter chain.
type Flash ¶
type Flash struct {
// `Data` is the input which is read in `restoreFlash`, `Out` is the output which is set in a FLASH cookie at the end of the `FlashFilter()`
Data, Out map[string]string
}
Flash represents a cookie that is overwritten on each request. It allows data to be stored across one page at a time. This is commonly used to implement success or error messages. E.g. the Post/Redirect/Get pattern: http://en.wikipedia.org/wiki/Post/Redirect/Get
type GoContext ¶ added in v0.18.0
type GoContext struct { Request *GoRequest Response *GoResponse WebSocket *GoWebSocket }
func NewGoContext ¶ added in v0.18.0
func NewGoContext(instance *GoHttpServer) *GoContext
func (*GoContext) GetRequest ¶ added in v0.18.0
func (c *GoContext) GetRequest() ServerRequest
func (*GoContext) GetResponse ¶ added in v0.18.0
func (c *GoContext) GetResponse() ServerResponse
type GoEngine ¶ added in v0.16.0
type GoEngine struct { CaseInsensitive bool // contains filtered or unexported fields }
func (*GoEngine) ConvertPath ¶ added in v0.16.0
func (*GoEngine) Handles ¶ added in v0.16.0
func (i *GoEngine) Handles(templateView *TemplateView) bool
func (*GoEngine) ParseAndAdd ¶ added in v0.16.0
func (engine *GoEngine) ParseAndAdd(baseTemplate *TemplateView) error
type GoHeader ¶ added in v0.18.0
type GoHeader struct { Source interface{} // contains filtered or unexported fields }
type GoHttpServer ¶ added in v0.18.0
type GoHttpServer struct { Server *http.Server ServerInit *EngineInit MaxMultipartSize int64 // contains filtered or unexported fields }
func (*GoHttpServer) Engine ¶ added in v0.18.0
func (g *GoHttpServer) Engine() interface{}
func (*GoHttpServer) Event ¶ added in v0.18.0
func (g *GoHttpServer) Event(event int, args interface{})
func (*GoHttpServer) Handle ¶ added in v0.18.0
func (g *GoHttpServer) Handle(w http.ResponseWriter, r *http.Request)
func (*GoHttpServer) Init ¶ added in v0.18.0
func (g *GoHttpServer) Init(init *EngineInit)
func (*GoHttpServer) Name ¶ added in v0.18.0
func (g *GoHttpServer) Name() string
func (*GoHttpServer) Start ¶ added in v0.18.0
func (g *GoHttpServer) Start()
Handler is assigned in the Init
func (*GoHttpServer) Stats ¶ added in v0.18.0
func (g *GoHttpServer) Stats() map[string]interface{}
type GoMultipartForm ¶ added in v0.18.0
func (*GoMultipartForm) GetFiles ¶ added in v0.18.0
func (f *GoMultipartForm) GetFiles() map[string][]*multipart.FileHeader
func (*GoMultipartForm) GetValues ¶ added in v0.18.0
func (f *GoMultipartForm) GetValues() url.Values
func (*GoMultipartForm) RemoveAll ¶ added in v0.18.0
func (f *GoMultipartForm) RemoveAll() error
type GoRequest ¶ added in v0.18.0
type GoRequest struct { Original *http.Request FormParsed bool MultiFormParsed bool WebSocket *websocket.Conn ParsedForm *GoMultipartForm Goheader *GoHeader Engine *GoHttpServer }
func (*GoRequest) GetHeader ¶ added in v0.18.0
func (r *GoRequest) GetHeader() ServerHeader
func (*GoRequest) GetMultipartForm ¶ added in v0.18.0
func (r *GoRequest) GetMultipartForm() (ServerMultipartForm, error)
func (*GoRequest) SetRequest ¶ added in v0.18.0
type GoResponse ¶ added in v0.18.0
type GoResponse struct { Original http.ResponseWriter Goheader *GoHeader Writer io.Writer Request *GoRequest Engine *GoHttpServer }
func (*GoResponse) Destroy ¶ added in v0.18.0
func (r *GoResponse) Destroy()
func (*GoResponse) Get ¶ added in v0.18.0
func (r *GoResponse) Get(key int) (value interface{}, err error)
func (*GoResponse) GetRaw ¶ added in v0.18.0
func (r *GoResponse) GetRaw() interface{}
func (*GoResponse) Header ¶ added in v0.18.0
func (r *GoResponse) Header() ServerHeader
func (*GoResponse) Set ¶ added in v0.18.0
func (r *GoResponse) Set(key int, value interface{}) (set bool)
func (*GoResponse) SetResponse ¶ added in v0.18.0
func (r *GoResponse) SetResponse(w http.ResponseWriter)
func (*GoResponse) SetWriter ¶ added in v0.18.0
func (r *GoResponse) SetWriter(writer io.Writer)
func (*GoResponse) WriteStream ¶ added in v0.18.0
type GoTemplate ¶
type GoTemplate struct { *template.Template *TemplateView // contains filtered or unexported fields }
Adapter for Go Templates.
type GoWebSocket ¶ added in v0.18.0
type GoWebSocket struct { Conn *websocket.Conn GoResponse }
func (*GoWebSocket) MessageReceiveJSON ¶ added in v0.18.0
func (g *GoWebSocket) MessageReceiveJSON(v interface{}) error
func (*GoWebSocket) MessageSendJSON ¶ added in v0.18.0
func (g *GoWebSocket) MessageSendJSON(v interface{}) error
type IPAddr ¶ added in v0.17.1
type IPAddr struct {
Vaildtypes []int
}
Requires a string(IP Address) to be within IP Pattern type inclusive.
func ValidIPAddr ¶ added in v0.17.1
Requires an IP Address string to be exactly a given validation type (IPv4, IPv6, IPv4MappedIPv6, IPv4CIDR, IPv6CIDR, IPv4MappedIPv6CIDR OR IPAny)
func (IPAddr) DefaultMessage ¶ added in v0.17.1
func (IPAddr) IsSatisfied ¶ added in v0.17.1
type Interception ¶
type Interception struct { When When // contains filtered or unexported fields }
type InterceptorFunc ¶
type InterceptorFunc func(*Controller) Result
An InterceptorFunc is functionality invoked by the framework BEFORE or AFTER an action.
An interceptor may optionally return a Result (instead of nil). Depending on when the interceptor was invoked, the response is different: 1. BEFORE: No further interceptors are invoked, and neither is the action. 2. AFTER: Further interceptors are still run. In all cases, any returned Result will take the place of any existing Result.
In the BEFORE case, that returned Result is guaranteed to be final, while in the AFTER case it is possible that a further interceptor could emit its own Result.
Interceptors are called in the order that they are added.
***
Two types of interceptors are provided: Funcs and Methods
Func Interceptors may apply to any / all Controllers.
func example(*revel.Controller) revel.Result
Method Interceptors are provided so that properties can be set on application controllers.
func (c AppController) example() revel.Result func (c *AppController) example() revel.Result
type InterceptorMethod ¶
type InterceptorMethod interface{}
type Length ¶
type Length struct {
N int
}
Length requires an array or string to be exactly a given length.
func ValidLength ¶
func (Length) DefaultMessage ¶
func (Length) IsSatisfied ¶
type Listener ¶
type Listener interface { // Refresh is invoked by the watcher on relevant filesystem events. // If the listener returns an error, it is served to the user on the current request. Refresh() *Error }
Listener is an interface for receivers of filesystem events.
type MacAddr ¶ added in v0.17.1
type MacAddr struct{}
Requires a MAC Address string to be exactly
func ValidMacAddr ¶ added in v0.17.1
func ValidMacAddr() MacAddr
func (MacAddr) DefaultMessage ¶ added in v0.17.1
func (MacAddr) IsSatisfied ¶ added in v0.17.1
type Match ¶
Match requires a string to match a given regex.
func ValidMatch ¶
func (Match) DefaultMessage ¶
func (Match) IsSatisfied ¶
type Max ¶
type Max struct {
Max float64
}
func ValidMaxFloat ¶ added in v0.18.0
func (Max) DefaultMessage ¶
func (Max) IsSatisfied ¶
type MaxSize ¶
type MaxSize struct {
Max int
}
MaxSize requires an array or string to be at most a given length.
func ValidMaxSize ¶
func (MaxSize) DefaultMessage ¶
func (MaxSize) IsSatisfied ¶
type MethodType ¶
type Min ¶
type Min struct {
Min float64
}
func ValidMinFloat ¶ added in v0.18.0
func (Min) DefaultMessage ¶
func (Min) IsSatisfied ¶
type MinSize ¶
type MinSize struct {
Min int
}
MinSize requires an array or string to be at least a given length.
func ValidMinSize ¶
func (MinSize) DefaultMessage ¶
func (MinSize) IsSatisfied ¶
type Module ¶
type Module struct {
Name, ImportPath, Path string
ControllerTypeList []*ControllerType
Log logger.MultiLogger
// contains filtered or unexported fields
}
Module specific functions
func ModuleByName ¶
ModuleByName returns the module of the given name, if loaded, case insensitive.
func ModuleFromPath ¶ added in v0.17.1
Based on the full path given return the relevant module Only to be used on initialization
func (*Module) AddController ¶ added in v0.17.1
func (m *Module) AddController(ct *ControllerType)
Adds the controller type to this module
func (*Module) ControllerByName ¶ added in v0.17.1
func (m *Module) ControllerByName(name, action string) (ctype *ControllerType)
Returns the named controller and action that is in this module
type ModuleCallbackInterface ¶ added in v0.18.0
type ModuleCallbackInterface func(*Module)
Modules can be called back after they are loaded in revel by using this interface.
type MultipartForm ¶ added in v0.18.0
type MultipartForm struct { File map[string][]*multipart.FileHeader Value url.Values // contains filtered or unexported fields }
Deprecated for backwards compatibility only
type ObjectDestroy ¶ added in v0.18.0
type ObjectDestroy interface {
Destroy()
}
type OutResponse ¶ added in v0.18.0
type OutResponse struct { Server ServerResponse // contains filtered or unexported fields }
func (*OutResponse) Destroy ¶ added in v0.18.0
func (o *OutResponse) Destroy()
func (*OutResponse) Header ¶ added in v0.18.0
func (o *OutResponse) Header() *RevelHeader
type Params ¶
type Params struct { url.Values // A unified view of all the individual param maps below. // Set by the router Fixed url.Values // Fixed parameters from the route, e.g. App.Action("fixed param") Route url.Values // Parameters extracted from the route, e.g. /customers/{id} // Set by the ParamsFilter Query url.Values // Parameters from the query string, e.g. /index?limit=10 Form url.Values // Parameters from the request body. Files map[string][]*multipart.FileHeader // Files uploaded in a multipart form JSON []byte // JSON data from request body // contains filtered or unexported fields }
Params provides a unified view of the request params. Includes: - URL query string - Form values - File uploads
Warning: param maps other than Values may be nil if there were none.
type PlaintextErrorResult ¶
type PlaintextErrorResult struct {
Error error
}
func (PlaintextErrorResult) Apply ¶
func (r PlaintextErrorResult) Apply(req *Request, resp *Response)
Apply method is used when the template loader or error template is not available.
type PureText ¶ added in v0.17.1
type PureText struct {
Mode int
}
Requires a string to be without invisible characters
func ValidPureText ¶ added in v0.17.1
func (PureText) DefaultMessage ¶ added in v0.17.1
func (PureText) IsSatisfied ¶ added in v0.17.1
type Range ¶
Range requires an integer to be within Min, Max inclusive.
func ValidRange ¶
func ValidRangeFloat ¶ added in v0.18.0
func (Range) DefaultMessage ¶
func (Range) IsSatisfied ¶
type RedirectToActionResult ¶
type RedirectToActionResult struct {
// contains filtered or unexported fields
}
func (*RedirectToActionResult) Apply ¶
func (r *RedirectToActionResult) Apply(req *Request, resp *Response)
type RedirectToURLResult ¶ added in v0.14.0
type RedirectToURLResult struct {
// contains filtered or unexported fields
}
func (*RedirectToURLResult) Apply ¶ added in v0.14.0
func (r *RedirectToURLResult) Apply(req *Request, resp *Response)
type RenderHTMLResult ¶ added in v0.14.0
type RenderHTMLResult struct {
// contains filtered or unexported fields
}
func (RenderHTMLResult) Apply ¶ added in v0.14.0
func (r RenderHTMLResult) Apply(req *Request, resp *Response)
type RenderJSONResult ¶ added in v0.14.0
type RenderJSONResult struct {
// contains filtered or unexported fields
}
func (RenderJSONResult) Apply ¶ added in v0.14.0
func (r RenderJSONResult) Apply(req *Request, resp *Response)
type RenderTemplateResult ¶
RenderTemplateResult action methods returns this result to request a template be rendered.
func (*RenderTemplateResult) Apply ¶
func (r *RenderTemplateResult) Apply(req *Request, resp *Response)
type RenderTextResult ¶
type RenderTextResult struct {
// contains filtered or unexported fields
}
func (RenderTextResult) Apply ¶
func (r RenderTextResult) Apply(req *Request, resp *Response)
type RenderXMLResult ¶ added in v0.14.0
type RenderXMLResult struct {
// contains filtered or unexported fields
}
func (RenderXMLResult) Apply ¶ added in v0.14.0
func (r RenderXMLResult) Apply(req *Request, resp *Response)
type Request ¶
type Request struct { In ServerRequest Header *RevelHeader ContentType string Format string // "html", "xml", "json", or "txt" AcceptLanguages AcceptLanguages Locale string WebSocket ServerWebSocket Method string RemoteAddr string Host string // URL request path from the server (built) URL *url.URL // DEPRECATED use GetForm() Form url.Values // DEPRECATED use GetMultipartForm() MultipartForm *MultipartForm // contains filtered or unexported fields }
Request is Revel's HTTP request object structure
func NewRequest ¶
func NewRequest(r ServerRequest) *Request
NewRequest returns a Revel's HTTP request instance with given HTTP instance
func (*Request) Cookie ¶ added in v0.18.0
func (req *Request) Cookie(key string) (ServerCookie, error)
func (*Request) GetHttpHeader ¶ added in v0.18.0
func (*Request) GetMultipartForm ¶ added in v0.18.0
func (req *Request) GetMultipartForm() (ServerMultipartForm, error)
func (*Request) GetRequestURI ¶ added in v0.18.0
func (*Request) MultipartReader ¶ added in v0.18.0
func (*Request) ParseMultipartForm ¶ added in v0.18.0
Deprecated use GetMultipartForm() instead
func (*Request) PostFormValue ¶ added in v0.18.0
Deprecated use controller.Params.Form[Key]
func (*Request) SetRequest ¶ added in v0.18.0
func (req *Request) SetRequest(r ServerRequest)
type Required ¶
type Required struct{}
func ValidRequired ¶
func ValidRequired() Required
func (Required) DefaultMessage ¶
func (Required) IsSatisfied ¶
type Response ¶
type Response struct { Status int ContentType string Out OutResponse // contains filtered or unexported fields }
Response is Revel's HTTP response object structure
func NewResponse ¶
func NewResponse(w ServerResponse) (r *Response)
NewResponse wraps ServerResponse inside a Revel's Response and returns it
func (*Response) GetStreamWriter ¶ added in v0.18.0
func (resp *Response) GetStreamWriter() (writer StreamWriter)
func (*Response) SetResponse ¶ added in v0.18.0
func (resp *Response) SetResponse(r ServerResponse)
func (*Response) WriteHeader ¶
WriteHeader writes the header (for now, just the status code). The status may be set directly by the application (c.Response.Status = 501). If it isn't, then fall back to the provided status code.
type RevelHeader ¶ added in v0.18.0
type RevelHeader struct {
Server ServerHeader
}
func (*RevelHeader) Add ¶ added in v0.18.0
func (h *RevelHeader) Add(key, value string)
func (*RevelHeader) Destroy ¶ added in v0.18.0
func (h *RevelHeader) Destroy()
func (*RevelHeader) Get ¶ added in v0.18.0
func (h *RevelHeader) Get(key string) (value string)
func (*RevelHeader) GetAll ¶ added in v0.18.0
func (h *RevelHeader) GetAll(key string) (values []string)
GetAll returns []string of items (the header split by a comma)
func (*RevelHeader) Set ¶ added in v0.18.0
func (h *RevelHeader) Set(key, value string)
func (*RevelHeader) SetCookie ¶ added in v0.18.0
func (h *RevelHeader) SetCookie(cookie string)
func (*RevelHeader) SetStatus ¶ added in v0.18.0
func (h *RevelHeader) SetStatus(status int)
type Route ¶
type Route struct { ModuleSource *Module // Module name of route Method string // e.g. GET Path string // e.g. /app/:id Action string // e.g. "Application.ShowApp", "404" ControllerNamespace string // e.g. "testmodule.", ControllerName string // e.g. "Application", "" MethodName string // e.g. "ShowApp", "" FixedParams []string // e.g. "arg1","arg2","arg3" (CSV formatting) TreePath string // e.g. "/GET/app/:id" TypeOfController *ControllerType // The controller type (if route is not wild carded) // contains filtered or unexported fields }
func NewRoute ¶
func NewRoute(moduleSource *Module, method, path, action, fixedArgs, routesPath string, line int) (r *Route)
NewRoute prepares the route to be used in matching.
func (*Route) ActionPath ¶ added in v0.17.1
type RouteMatch ¶
type Router ¶
type Router struct { Routes []*Route Tree *pathtree.Node Module string // The module the route is associated with // contains filtered or unexported fields }
func (*Router) Refresh ¶
Refresh re-reads the routes file and re-calculates the routing table. Returns an error if a specified action could not be found.
func (*Router) Reverse ¶
func (router *Router) Reverse(action string, argValues map[string]string) (ad *ActionDefinition)
func (*Router) Route ¶
func (router *Router) Route(req *Request) (routeMatch *RouteMatch)
type ServerContext ¶ added in v0.18.0
type ServerContext interface { GetRequest() ServerRequest GetResponse() ServerResponse }
type ServerCookie ¶ added in v0.18.0
type ServerCookie interface {
GetValue() string
}
Expected response for FROM_HTTP_COOKIE type (if implemented)
type ServerEngine ¶ added in v0.18.0
type ServerEngine interface { // Initialize the server (non blocking) Init(init *EngineInit) // Starts the server. This will block until server is stopped Start() // Fires a new event to the server Event(event int, args interface{}) // Returns the engine instance for specific calls Engine() interface{} // Returns the engine Name Name() string // Returns any stats Stats() map[string]interface{} }
type ServerEngineEmpty ¶ added in v0.18.0
type ServerEngineEmpty struct { }
func (*ServerEngineEmpty) Get ¶ added in v0.18.0
func (e *ServerEngineEmpty) Get(_ string) interface{}
func (*ServerEngineEmpty) Set ¶ added in v0.18.0
func (e *ServerEngineEmpty) Set(_ string, _ interface{}) bool
type ServerHeader ¶ added in v0.18.0
type ServerHeader interface { SetCookie(cookie string) GetCookie(key string) (value ServerCookie, err error) Set(key string, value string) Add(key string, value string) Del(key string) Get(key string) (value []string) SetStatus(statusCode int) }
Expected response for HTTP_SERVER_HEADER type (if implemented)
type ServerMultipartForm ¶ added in v0.18.0
type ServerMultipartForm interface { GetFiles() map[string][]*multipart.FileHeader GetValues() url.Values RemoveAll() error }
Expected response for HTTP_MULTIPART_FORM
type ServerRequest ¶ added in v0.18.0
type ServerRequest interface { GetRaw() interface{} Get(theType int) (interface{}, error) Set(theType int, theValue interface{}) bool }
Callback ServerRequest type
type ServerResponse ¶ added in v0.18.0
type ServerResponse interface { ServerRequest }
Callback ServerResponse type
type ServerWebSocket ¶ added in v0.18.0
type ServerWebSocket interface { ServerResponse MessageSendJSON(v interface{}) error MessageReceiveJSON(v interface{}) error }
Callback WebSocket type
type Session ¶
Session a signed cookie (and thus limited to 4kb in size). Restriction: Keys may not have a colon in them.
func GetSessionFromCookie ¶ added in v0.12.0
func GetSessionFromCookie(cookie ServerCookie) Session
GetSessionFromCookie returns a Session struct pulled from the signed session cookie.
func (Session) Cookie ¶ added in v0.12.0
Cookie returns an http.Cookie containing the signed session.
func (Session) ID ¶ added in v0.14.0
ID retrieves from the cookie or creates a time-based UUID identifying this session.
func (Session) SetDefaultExpiration ¶
func (s Session) SetDefaultExpiration()
SetDefaultExpiration sets session to expire after default duration
func (Session) SetNoExpiration ¶
func (s Session) SetNoExpiration()
SetNoExpiration sets session to expire when browser session ends
type SimpleLockStack ¶ added in v0.18.0
type SimpleLockStack struct { Current *SimpleLockStackElement Creator func() interface{} // contains filtered or unexported fields }
func NewStackLock ¶ added in v0.18.0
func NewStackLock(startsize, maxsize int, creator func() interface{}) *SimpleLockStack
func (*SimpleLockStack) Active ¶ added in v0.18.0
func (s *SimpleLockStack) Active() int
func (*SimpleLockStack) Capacity ¶ added in v0.18.0
func (s *SimpleLockStack) Capacity() int
func (*SimpleLockStack) Len ¶ added in v0.18.0
func (s *SimpleLockStack) Len() int
func (*SimpleLockStack) Pop ¶ added in v0.18.0
func (s *SimpleLockStack) Pop() (value interface{})
func (*SimpleLockStack) Push ¶ added in v0.18.0
func (s *SimpleLockStack) Push(value interface{})
func (*SimpleLockStack) String ¶ added in v0.18.0
func (s *SimpleLockStack) String() string
type SimpleLockStackElement ¶ added in v0.18.0
type SimpleLockStackElement struct { Value interface{} Previous *SimpleLockStackElement Next *SimpleLockStackElement }
type SourceLine ¶ added in v0.14.0
SourceLine structure to hold the per-source-line details.
type StartupHook ¶ added in v0.13.0
type StartupHook struct {
// contains filtered or unexported fields
}
type StartupHooks ¶ added in v0.13.0
type StartupHooks []StartupHook
func (StartupHooks) Len ¶ added in v0.13.0
func (slice StartupHooks) Len() int
func (StartupHooks) Less ¶ added in v0.13.0
func (slice StartupHooks) Less(i, j int) bool
func (StartupHooks) Swap ¶ added in v0.13.0
func (slice StartupHooks) Swap(i, j int)
type StreamWriter ¶ added in v0.18.0
type Template ¶
type Template interface { // The name of the template. Name() string // Name of template // The content of the template as a string (Used in error handling). Content() []string // Content // Called by the server to render the template out the io.Writer, context contains the view args to be passed to the template. Render(wr io.Writer, context interface{}) error // The full path to the file on the disk. Location() string // Disk location }
type TemplateEngine ¶ added in v0.16.0
type TemplateEngine interface { // prase template string and add template to the set. ParseAndAdd(basePath *TemplateView) error // returns Template corresponding to the given templateName, or nil Lookup(templateName string) Template // Fired by the template loader when events occur Event(event int, arg interface{}) // returns true if this engine should be used to parse the file specified in baseTemplate Handles(templateView *TemplateView) bool // returns the name of the engine Name() string }
type TemplateLoader ¶
type TemplateLoader struct {
// contains filtered or unexported fields
}
TemplateLoader object handles loading and parsing of templates. Everything below the application's views directory is treated as a template.
func NewTemplateLoader ¶
func NewTemplateLoader(paths []string) *TemplateLoader
func (*TemplateLoader) CreateTemplateEngine ¶ added in v0.16.0
func (loader *TemplateLoader) CreateTemplateEngine(templateEngineName string) (TemplateEngine, error)
Sets the template name from Config Sets the template API methods for parsing and storing templates before rendering
func (*TemplateLoader) Refresh ¶
func (loader *TemplateLoader) Refresh() (err *Error)
Refresh method scans the views directory and parses all templates as Go Templates. If a template fails to parse, the error is set on the loader. (It's awkward to refresh a single Go Template)
func (*TemplateLoader) Template ¶
func (loader *TemplateLoader) Template(name string) (tmpl Template, err error)
DEPRECATED Use TemplateLang, will be removed in future release
func (*TemplateLoader) TemplateLang ¶ added in v0.16.0
func (loader *TemplateLoader) TemplateLang(name, lang string) (tmpl Template, err error)
func (*TemplateLoader) WatchDir ¶
func (loader *TemplateLoader) WatchDir(info os.FileInfo) bool
WatchDir returns true of directory doesn't start with . (dot) otherwise false
func (*TemplateLoader) WatchFile ¶
func (loader *TemplateLoader) WatchFile(basename string) bool
WatchFile returns true of file doesn't start with . (dot) otherwise false
type TemplateView ¶ added in v0.16.0
type TemplateView struct { TemplateName string // The name of the view FilePath string // The file path (view relative) BasePath string // The file system base path FileBytes []byte // The file loaded EngineType string // The name of the engine used to render the view }
The template view information
func NewBaseTemplate ¶ added in v0.16.0
func NewBaseTemplate(templateName, filePath, basePath string, fileBytes []byte) *TemplateView
func (*TemplateView) Content ¶ added in v0.16.0
func (i *TemplateView) Content() (content []string)
func (*TemplateView) Location ¶ added in v0.16.0
func (i *TemplateView) Location() string
type URL ¶ added in v0.17.1
type URL struct {
Domain
}
func (URL) DefaultMessage ¶ added in v0.17.1
func (URL) IsSatisfied ¶ added in v0.17.1
type Validation ¶
type Validation struct { Errors []*ValidationError Request *Request Translator func(locale, message string, args ...interface{}) string // contains filtered or unexported fields }
Validation context manages data validation and error messages.
func (*Validation) Check ¶
func (v *Validation) Check(obj interface{}, checks ...Validator) *ValidationResult
Check applies a group of validators to a field, in order, and return the ValidationResult from the first one that fails, or the last one that succeeds.
func (*Validation) Domain ¶ added in v0.17.1
func (v *Validation) Domain(str string) *ValidationResult
func (*Validation) Email ¶
func (v *Validation) Email(str string) *ValidationResult
func (*Validation) Error ¶
func (v *Validation) Error(message string, args ...interface{}) *ValidationResult
Error adds an error to the validation context.
func (*Validation) ErrorKey ¶ added in v0.18.0
func (v *Validation) ErrorKey(message string, args ...interface{}) *ValidationResult
Error adds an error to the validation context.
func (*Validation) ErrorMap ¶
func (v *Validation) ErrorMap() map[string]*ValidationError
ErrorMap returns the errors mapped by key. If there are multiple validation errors associated with a single key, the first one "wins". (Typically the first validation will be the more basic).
func (*Validation) FilePath ¶ added in v0.17.1
func (v *Validation) FilePath(str string, m int) *ValidationResult
func (*Validation) HasErrors ¶
func (v *Validation) HasErrors() bool
HasErrors returns true if there are any (ie > 0) errors. False otherwise.
func (*Validation) IPAddr ¶ added in v0.17.1
func (v *Validation) IPAddr(str string, cktype ...int) *ValidationResult
func (*Validation) Keep ¶
func (v *Validation) Keep()
Keep tells revel to set a flash cookie on the client to make the validation errors available for the next request. This is helpful when redirecting the client after the validation failed. It is good practice to always redirect upon a HTTP POST request. Thus one should use this method when HTTP POST validation failed and redirect the user back to the form.
func (*Validation) Length ¶
func (v *Validation) Length(obj interface{}, n int) *ValidationResult
func (*Validation) MacAddr ¶ added in v0.17.1
func (v *Validation) MacAddr(str string) *ValidationResult
func (*Validation) Match ¶
func (v *Validation) Match(str string, regex *regexp.Regexp) *ValidationResult
func (*Validation) Max ¶
func (v *Validation) Max(n int, max int) *ValidationResult
func (*Validation) MaxFloat ¶ added in v0.18.0
func (v *Validation) MaxFloat(n float64, max float64) *ValidationResult
func (*Validation) MaxSize ¶
func (v *Validation) MaxSize(obj interface{}, max int) *ValidationResult
func (*Validation) Min ¶
func (v *Validation) Min(n int, min int) *ValidationResult
func (*Validation) MinFloat ¶ added in v0.18.0
func (v *Validation) MinFloat(n float64, min float64) *ValidationResult
func (*Validation) MinSize ¶
func (v *Validation) MinSize(obj interface{}, min int) *ValidationResult
func (*Validation) PureText ¶ added in v0.17.1
func (v *Validation) PureText(str string, m int) *ValidationResult
func (*Validation) Range ¶
func (v *Validation) Range(n, min, max int) *ValidationResult
func (*Validation) RangeFloat ¶ added in v0.18.0
func (v *Validation) RangeFloat(n, min, max float64) *ValidationResult
func (*Validation) Required ¶
func (v *Validation) Required(obj interface{}) *ValidationResult
Required tests that the argument is non-nil and non-empty (if string or list)
func (*Validation) URL ¶ added in v0.17.1
func (v *Validation) URL(str string) *ValidationResult
func (*Validation) ValidationResult ¶ added in v0.18.0
func (v *Validation) ValidationResult(ok bool) *ValidationResult
Error adds an error to the validation context.
type ValidationError ¶
type ValidationError struct {
Message, Key string
}
ValidationError simple struct to store the Message & Key of a validation error
func (*ValidationError) String ¶
func (e *ValidationError) String() string
String returns the Message field of the ValidationError struct.
type ValidationResult ¶
type ValidationResult struct { Error *ValidationError Ok bool Locale string Translator func(locale, message string, args ...interface{}) string }
ValidationResult is returned from every validation method. It provides an indication of success, and a pointer to the Error (if any).
func (*ValidationResult) Key ¶
func (r *ValidationResult) Key(key string) *ValidationResult
Key sets the ValidationResult's Error "key" and returns itself for chaining
func (*ValidationResult) Message ¶
func (r *ValidationResult) Message(message string, args ...interface{}) *ValidationResult
Message sets the error message for a ValidationResult. Returns itself to allow chaining. Allows Sprintf() type calling with multiple parameters
func (*ValidationResult) MessageKey ¶ added in v0.18.0
func (r *ValidationResult) MessageKey(message string, args ...interface{}) *ValidationResult
Allow a message key to be passed into the validation result. The Validation has already setup the translator to translate the message key
type Watcher ¶
type Watcher struct {
// contains filtered or unexported fields
}
Watcher allows listeners to register to be notified of changes under a given directory.
func NewWatcher ¶
func NewWatcher() *Watcher
func (*Watcher) Listen ¶
Listen registers for events within the given root directories (recursively).
func (*Watcher) Notify ¶
Notify causes the watcher to forward any change events to listeners. It returns the first (if any) error returned.
func (*Watcher) NotifyWhenUpdated ¶ added in v0.11.0
NotifyWhenUpdated notifies the watcher when a file event is received.
Source Files
¶
- before_after_filter.go
- binder.go
- compress.go
- controller.go
- controller_type.go
- errors.go
- field.go
- filter.go
- filterconfig.go
- flash.go
- http.go
- i18n.go
- intercept.go
- invoker.go
- libs.go
- logger.go
- module.go
- namespace.go
- panic.go
- params.go
- results.go
- revel.go
- router.go
- server-engine.go
- server.go
- server_adapter_go.go
- session.go
- simplestack.go
- template.go
- template_adapter_go.go
- template_engine.go
- template_functions.go
- util.go
- validation.go
- validators.go
- version.go
- watcher.go