Documentation
¶
Overview ¶
Package aah is A secure, flexible, rapid Go web framework.
Visit: https://aahframework.org to know more.
Index ¶
- Constants
- Variables
- func ActionMiddleware(ctx *Context, m *Middleware)
- func AntiCSRFMiddleware(ctx *Context, m *Middleware)
- func AuthcAuthzMiddleware(ctx *Context, m *Middleware)
- func BindMiddleware(ctx *Context, m *Middleware)
- func CORSMiddleware(ctx *Context, m *Middleware)
- func RouteMiddleware(ctx *Context, m *Middleware)
- type Application
- func (a *Application) AddCommand(cmds ...console.Command) error
- func (a *Application) AddController(c interface{}, methods []*ainsp.Method)
- func (a *Application) AddLoggerHook(name string, hook log.HookFunc) error
- func (a *Application) AddPasswordAlgorithm(name string, encoder acrypto.PasswordEncoder) error
- func (a *Application) AddSessionStore(name string, store session.Storer) error
- func (a *Application) AddTemplateFunc(funcs template.FuncMap)
- func (a *Application) AddValueParser(typ reflect.Type, parser valpar.Parser) error
- func (a *Application) AddViewEngine(name string, engine view.Enginer) error
- func (a *Application) AddWebSocket(w interface{}, methods []*ainsp.Method)
- func (a *Application) BaseDir() string
- func (a *Application) BuildInfo() *BuildInfo
- func (a *Application) CacheManager() *cache.Manager
- func (a *Application) Config() *config.Config
- func (a *Application) Copyrights() string
- func (a *Application) DefaultI18nLang() string
- func (a *Application) Desc() string
- func (a *Application) EnvProfile() string
- func (a *Application) EnvProfiles() []string
- func (a *Application) EventStore() *EventStore
- func (a *Application) HTTPAddress() string
- func (a *Application) HTTPEngine() *HTTPEngine
- func (a *Application) HTTPPort() string
- func (a *Application) I18n() *i18n.I18n
- func (a *Application) ImportPath() string
- func (a *Application) InitForCLI(importPath string) error
- func (a *Application) InstanceName() string
- func (a *Application) IsEnvProfile(envProfile string) bool
- func (a *Application) IsLetsEncryptEnabled() bool
- func (a *Application) IsPackaged() bool
- func (a *Application) IsSSLEnabled() bool
- func (a *Application) IsWebSocketEnabled() bool
- func (a *Application) Log() log.Loggerer
- func (a *Application) Name() string
- func (a *Application) NewChildLogger(fields log.Fields) log.Loggerer
- func (a *Application) OnConfigHotReload(ecb EventCallbackFunc, priority ...int)
- func (a *Application) OnInit(ecb EventCallbackFunc, priority ...int)
- func (a *Application) OnPostShutdown(ecb EventCallbackFunc, priority ...int)
- func (a *Application) OnPreShutdown(ecb EventCallbackFunc, priority ...int)
- func (a *Application) OnStart(ecb EventCallbackFunc, priority ...int)
- func (a *Application) PublishEvent(eventName string, data interface{})
- func (a *Application) PublishEventSync(eventName string, data interface{})
- func (a *Application) Router() *router.Router
- func (a *Application) Run(args []string) error
- func (a *Application) SecurityManager() *security.Manager
- func (a *Application) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (a *Application) SessionManager() *session.Manager
- func (a *Application) SetBuildInfo(bi *BuildInfo)
- func (a *Application) SetErrorHandler(handlerFunc ErrorHandlerFunc)
- func (a *Application) SetMinifier(fn MinifierFunc)
- func (a *Application) SetPackaged(pack bool)
- func (a *Application) SetTLSConfig(tlsCfg *tls.Config)
- func (a *Application) Shutdown()
- func (a *Application) Start()
- func (a *Application) SubscribeEvent(eventName string, ec EventCallback)
- func (a *Application) SubscribeEventFunc(eventName string, ecf EventCallbackFunc)
- func (a *Application) Type() string
- func (a *Application) UnsubscribeEvent(eventName string, ec EventCallback)
- func (a *Application) UnsubscribeEventFunc(eventName string, ecf EventCallbackFunc)
- func (a *Application) VFS() *vfs.VFS
- func (a *Application) Validate(s interface{}) (validator.ValidationErrors, error)
- func (a *Application) ValidateValue(v interface{}, rules string) bool
- func (a *Application) Validator() *validator.Validate
- func (a *Application) ViewEngine() view.Enginer
- func (a *Application) VirtualBaseDir() string
- func (a *Application) WSEngine() *ws.Engine
- type BuildInfo
- type Context
- func (ctx *Context) Abort()
- func (ctx *Context) AddViewArg(key string, value interface{}) *Context
- func (ctx *Context) Get(key string) interface{}
- func (ctx *Context) IsStaticRoute() bool
- func (ctx *Context) Log() log.Loggerer
- func (ctx *Context) Msg(key string, args ...interface{}) string
- func (ctx *Context) Msgl(locale *ahttp.Locale, key string, args ...interface{}) string
- func (ctx *Context) Reply() *Reply
- func (ctx *Context) RouteURL(routeName string, args ...interface{}) string
- func (ctx *Context) RouteURLNamedArgs(routeName string, args map[string]interface{}) string
- func (ctx *Context) Session() *session.Session
- func (ctx *Context) Set(key string, value interface{})
- func (ctx *Context) SetMethod(method string)
- func (ctx *Context) SetURL(pathURL string)
- func (ctx *Context) Subdomain() string
- func (ctx *Context) Subject() *security.Subject
- func (ctx *Context) ViewArgs() map[string]interface{}
- type Data
- type Error
- type ErrorHandler
- type ErrorHandlerFunc
- type Event
- type EventCallback
- type EventCallbackFunc
- type EventCallbacks
- type EventStore
- func (es *EventStore) IsEventExists(eventName string) bool
- func (es *EventStore) Publish(e *Event)
- func (es *EventStore) PublishSync(e *Event)
- func (es *EventStore) Subscribe(event string, ec EventCallback)
- func (es *EventStore) SubscriberCount(eventName string) int
- func (es *EventStore) Unsubscribe(event string, callback EventCallbackFunc)
- type HTTPEngine
- func (e *HTTPEngine) Handle(w http.ResponseWriter, r *http.Request)
- func (e *HTTPEngine) Log() log.Loggerer
- func (e *HTTPEngine) Middlewares(middlewares ...MiddlewareFunc)
- func (e *HTTPEngine) OnHeaderReply(sef EventCallbackFunc)
- func (e *HTTPEngine) OnPostAuth(sef EventCallbackFunc)
- func (e *HTTPEngine) OnPostReply(sef EventCallbackFunc)
- func (e *HTTPEngine) OnPreAuth(sef EventCallbackFunc)
- func (e *HTTPEngine) OnPreReply(sef EventCallbackFunc)
- func (e *HTTPEngine) OnRequest(sef EventCallbackFunc)
- type Middleware
- type MiddlewareFunc
- type MinifierFunc
- type Render
- type RenderFunc
- type Reply
- func (r *Reply) Accepted() *Reply
- func (r *Reply) BadRequest() *Reply
- func (r *Reply) Binary(b []byte) *Reply
- func (r *Reply) Body() *bytes.Buffer
- func (r *Reply) Conflict() *Reply
- func (r *Reply) ContentType(contentType string) *Reply
- func (r *Reply) Cookie(cookie *http.Cookie) *Reply
- func (r *Reply) Created() *Reply
- func (r *Reply) DisableGzip() *Reply
- func (r *Reply) Done() *Reply
- func (r *Reply) Error(err *Error) *Reply
- func (r *Reply) File(file string) *Reply
- func (r *Reply) FileDownload(file, targetName string) *Reply
- func (r *Reply) FileInline(file, targetName string) *Reply
- func (r *Reply) Forbidden() *Reply
- func (r *Reply) Found() *Reply
- func (r *Reply) FromReader(reader io.Reader) *Reply
- func (r *Reply) HTML(data Data) *Reply
- func (r *Reply) HTMLf(filename string, data Data) *Reply
- func (r *Reply) HTMLl(layout string, data Data) *Reply
- func (r *Reply) HTMLlf(layout, filename string, data Data) *Reply
- func (r *Reply) Header(key, value string) *Reply
- func (r *Reply) HeaderAppend(key, value string) *Reply
- func (r *Reply) InternalServerError() *Reply
- func (r *Reply) IsContentTypeSet() bool
- func (r *Reply) JSON(data interface{}) *Reply
- func (r *Reply) JSONP(data interface{}, callback string) *Reply
- func (r *Reply) JSONSecure(data interface{}) *Reply
- func (r *Reply) MethodNotAllowed() *Reply
- func (r *Reply) MovedPermanently() *Reply
- func (r *Reply) NoContent() *Reply
- func (r *Reply) NotAcceptable() *Reply
- func (r *Reply) NotFound() *Reply
- func (r *Reply) Ok() *Reply
- func (r *Reply) Redirect(redirectURL string) *Reply
- func (r *Reply) RedirectWithStatus(redirectURL string, code int) *Reply
- func (r *Reply) Render(rdr Render) *Reply
- func (r *Reply) ServiceUnavailable() *Reply
- func (r *Reply) Status(code int) *Reply
- func (r *Reply) TemporaryRedirect() *Reply
- func (r *Reply) Text(format string, values ...interface{}) *Reply
- func (r *Reply) Unauthorized() *Reply
- func (r *Reply) UnsupportedMediaType() *Reply
- func (r *Reply) XML(data interface{}) *Reply
Constants ¶
const ( // EventOnInit is published once the aah.AppConfig() is loaded. At this stage, // only aah.conf config is initialized. App Variables, Routes, i18n, Security, // View Engine, Logs and so on will be initialized after this event. EventOnInit = "OnInit" // EventOnStart is published just before the start of aah Server. // The application is completely initialized at this stage. The server // is yet to be started. EventOnStart = "OnStart" // EventOnPreShutdown is published when application receives OS Signals // `SIGINT` or `SIGTERM` and before the triggering graceful shutdown. After this // event, aah triggers graceful shutdown with config value of // `server.timeout.grace_shutdown`. EventOnPreShutdown = "OnPreShutdown" // EventOnPostShutdown is published just after the successful grace shutdown // of aah server and then application does clean exit. EventOnPostShutdown = "OnPostShutdown" // EventOnConfigHotReload is published just after aah application internal config // hot-reload and re-initialize completes without an error otherwise it won't be // published. It happens when application receives the signal based on // config `runtime.config_hotreload.signal`. EventOnConfigHotReload = "OnConfigHotReload" // EventOnRequest is published on each incoming request to the aah server. EventOnRequest = "OnRequest" // EventOnPreReply is published just before writing a reply/response on the wire. // At this point, the response writer is clean. i.e. Headers, Cookies, Redirects, // Status Code and Response Body are not written. event is published when // before server writes the reply on the wire. // // Except when // // 1) `Reply().Done()`, // // 2) `Reply().Redirect(...)` is called. // // Refer `aah.Reply().Done()` godoc for more info. EventOnPreReply = "OnPreReply" // EventOnHeaderReply is published before writing HTTP header Status. // At this point, all the headers except the header Status get written on // the http.ResponseWriter. // // Except when // // 1) `Reply().Done()`, // // 2) `Reply().Redirect(...)` is called. // // Refer `aah.Reply().Done()` godoc for more info. EventOnHeaderReply = "OnHeaderReply" // EventOnPostReply is published right after the response gets written on the // wire. We can do nothing about the response, however the context has valuable // information such as response bytes size, response status code, etc. // // Except when // // 1) `Reply().Done()`, // // 2) `Reply().Redirect(...)` is called. // // Refer `aah.Reply().Done()` godoc for more info. EventOnPostReply = "OnPostReply" // EventOnPreAuth is published just before the Authentication and Authorization. EventOnPreAuth = "OnPreAuth" // EventOnPostAuth is published once the Authentication and Authorization // info gets populated into Subject. EventOnPostAuth = "OnPostAuth" )
const ( // KeyViewArgAuthcInfo key name is used to store `AuthenticationInfo` instance into `ViewArgs`. KeyViewArgAuthcInfo = "_aahAuthcInfo" // KeyViewArgSubject key name is used to store `Subject` instance into `ViewArgs`. KeyViewArgSubject = "_aahSubject" // KeyOAuth2Token key name is used to store OAuth2 Access Token into `aah.Context`. KeyOAuth2Token = "_aahOAuth2Token" )
const ( // KeyViewArgRequest key name is used to store HTTP Request instance // into `ViewArgs`. KeyViewArgRequest = "_aahRequest" )
const Version = "0.12.5"
Version no. of aah framework
Variables ¶
var ( ErrPanicRecovery = errors.New("aah: panic recovery") ErrDomainNotFound = errors.New("aah: domain not found") ErrRouteNotFound = errors.New("aah: route not found") ErrStaticFileNotFound = errors.New("aah: static file not found") ErrControllerOrActionNotFound = errors.New("aah: controller or action not found") ErrInvalidRequestParameter = errors.New("aah: invalid request parameter") ErrContentTypeNotAccepted = errors.New("aah: content type not accepted") ErrContentTypeNotOffered = errors.New("aah: content type not offered") ErrHTTPMethodNotAllowed = errors.New("aah: http method not allowed") ErrNotAuthenticated = errors.New("aah: not authenticated") ErrAccessDenied = errors.New("aah: access denied") ErrAuthenticationFailed = errors.New("aah: authentication failed") ErrAuthorizationFailed = errors.New("aah: authorization failed") ErrSessionAuthenticationInfo = errors.New("aah: session authentication info") ErrUnableToGetPrincipal = errors.New("aah: unable to get principal") ErrGeneric = errors.New("aah: generic error") ErrValidation = errors.New("aah: validation error") ErrRenderResponse = errors.New("aah: render response error") ErrWriteResponse = errors.New("aah: write response error") )
aah errors
Functions ¶
func ActionMiddleware ¶ added in v0.10.1
func ActionMiddleware(ctx *Context, m *Middleware)
ActionMiddleware performs
- Executes Interceptors (Before, Before<ActionName>, After, After<ActionName>, Panic, Panic<ActionName>, Finally, Finally<ActionName>)
- Invokes Controller Action
func AntiCSRFMiddleware ¶ added in v0.10.1
func AntiCSRFMiddleware(ctx *Context, m *Middleware)
AntiCSRFMiddleware provides feature to prevent Cross-Site Request Forgery (CSRF) attacks.
func AuthcAuthzMiddleware ¶ added in v0.10.1
func AuthcAuthzMiddleware(ctx *Context, m *Middleware)
AuthcAuthzMiddleware is aah Authentication and Authorization Middleware.
func BindMiddleware ¶ added in v0.10.1
func BindMiddleware(ctx *Context, m *Middleware)
BindMiddleware method parses the incoming HTTP request to collects request parameters (Path, Form, Query, Multipart) stores into context. Request params are made available in View via template functions.
func CORSMiddleware ¶ added in v0.10.1
func CORSMiddleware(ctx *Context, m *Middleware)
CORSMiddleware provides Cross-Origin Resource Sharing (CORS) access control feature.
func RouteMiddleware ¶ added in v0.10.1
func RouteMiddleware(ctx *Context, m *Middleware)
RouteMiddleware method performs the routing logic.
Types ¶
type Application ¶ added in v0.12.0
Application struct represents aah application.
func App ¶ added in v0.12.0
func App() *Application
App method returns the aah application instance.
func (*Application) AddCommand ¶ added in v0.12.0
func (a *Application) AddCommand(cmds ...console.Command) error
AddCommand method adds the aah application CLI commands. Introduced in v0.12.0 release aah application binary fully compliant using module console and POSIX flags.
func (*Application) AddController ¶ added in v0.12.0
func (a *Application) AddController(c interface{}, methods []*ainsp.Method)
AddController method adds given controller into controller registory.
func (*Application) AddLoggerHook ¶ added in v0.12.0
func (a *Application) AddLoggerHook(name string, hook log.HookFunc) error
AddLoggerHook method adds given logger into aah application default logger.
func (*Application) AddPasswordAlgorithm ¶ added in v0.12.0
func (a *Application) AddPasswordAlgorithm(name string, encoder acrypto.PasswordEncoder) error
AddPasswordAlgorithm method adds given password algorithm to encoders list. Implementation have to implement interface `PasswordEncoder`.
Then you can use it in the configuration `security.auth_schemes.*`.
func (*Application) AddSessionStore ¶ added in v0.12.0
func (a *Application) AddSessionStore(name string, store session.Storer) error
AddSessionStore method allows you to add custom session store which implements `session.Storer` interface. Then configure `name` parameter in the configfuration as `session.store.type = "name"`.
func (*Application) AddTemplateFunc ¶ added in v0.12.0
func (a *Application) AddTemplateFunc(funcs template.FuncMap)
AddTemplateFunc method adds template func map into view engine.
func (*Application) AddValueParser ¶ added in v0.12.0
AddValueParser method adds given custom value parser for the `reflect.Type`
func (*Application) AddViewEngine ¶ added in v0.12.0
func (a *Application) AddViewEngine(name string, engine view.Enginer) error
AddViewEngine method adds the given name and view engine to view store.
func (*Application) AddWebSocket ¶ added in v0.12.0
func (a *Application) AddWebSocket(w interface{}, methods []*ainsp.Method)
AddWebSocket method adds given WebSocket into WebSocket registry.
func (*Application) BaseDir ¶ added in v0.12.0
func (a *Application) BaseDir() string
BaseDir method returns the application base or binary's base directory
For e.g.: $GOPATH/src/github.com/user/myproject <path/to/the/aah/myproject> <app/binary/path/base/directory>
func (*Application) BuildInfo ¶ added in v0.12.0
func (a *Application) BuildInfo() *BuildInfo
BuildInfo method return user application version no.
func (*Application) CacheManager ¶ added in v0.12.0
func (a *Application) CacheManager() *cache.Manager
CacheManager returns aah application cache manager.
func (*Application) Config ¶ added in v0.12.0
func (a *Application) Config() *config.Config
Config method returns aah application configuration instance.
func (*Application) Copyrights ¶ added in v0.12.0
func (a *Application) Copyrights() string
Copyrights method returns application copyrights info from configuration.
Value of `copyrights` from `aah.conf`.
func (*Application) DefaultI18nLang ¶ added in v0.12.0
func (a *Application) DefaultI18nLang() string
DefaultI18nLang method returns application i18n default language if configured otherwise framework defaults to "en".
func (*Application) Desc ¶ added in v0.12.0
func (a *Application) Desc() string
Desc method returns aah application friendly description from app config otherwise empty string.
Value of `desc` from `aah.conf`.
func (*Application) EnvProfile ¶ added in v0.12.0
func (a *Application) EnvProfile() string
EnvProfile returns active environment profile name of aah application. For e.g.: dev, prod, etc. Default is `dev`.
Value of `env.active` from `aah.conf`.
func (*Application) EnvProfiles ¶ added in v0.12.0
func (a *Application) EnvProfiles() []string
EnvProfiles method returns all available environment profile names from aah application.
func (*Application) EventStore ¶ added in v0.12.0
func (a *Application) EventStore() *EventStore
EventStore method returns aah application event store.
func (*Application) HTTPAddress ¶ added in v0.12.0
func (a *Application) HTTPAddress() string
HTTPAddress method returns aah application HTTP address otherwise empty string
Value of `server.address` from `aah.conf`.
func (*Application) HTTPEngine ¶ added in v0.12.0
func (a *Application) HTTPEngine() *HTTPEngine
HTTPEngine method returns aah HTTP engine.
func (*Application) HTTPPort ¶ added in v0.12.0
func (a *Application) HTTPPort() string
HTTPPort method returns aah application HTTP port number based on `server.port` value. Possible outcomes are user-defined port, `80`, `443` and `8080`.
func (*Application) I18n ¶ added in v0.12.0
func (a *Application) I18n() *i18n.I18n
I18n method returns aah application I18n store instance.
func (*Application) ImportPath ¶ added in v0.12.0
func (a *Application) ImportPath() string
ImportPath method returns the application Go import path.
func (*Application) InitForCLI ¶ added in v0.12.0
func (a *Application) InitForCLI(importPath string) error
InitForCLI method is for purpose aah CLI tool. IT IS NOT FOR AAH USER. Introduced in v0.12.0 release.
func (*Application) InstanceName ¶ added in v0.12.0
func (a *Application) InstanceName() string
InstanceName method returns aah application instane name from app config `instance_name` otherwise empty string.
Value of `instance_name` from `aah.conf`.
func (*Application) IsEnvProfile ¶ added in v0.12.0
func (a *Application) IsEnvProfile(envProfile string) bool
IsEnvProfile method returns true if given environment profile match with active environment in aah application otherwise false.
func (*Application) IsLetsEncryptEnabled ¶ added in v0.12.0
func (a *Application) IsLetsEncryptEnabled() bool
IsLetsEncryptEnabled method returns true if aah application is enabled with Let's Encrypt certs otherwise false.
func (*Application) IsPackaged ¶ added in v0.12.0
func (a *Application) IsPackaged() bool
IsPackaged method returns true when application built for deployment.
func (*Application) IsSSLEnabled ¶ added in v0.12.0
func (a *Application) IsSSLEnabled() bool
IsSSLEnabled method returns true if aah application is enabled with SSL otherwise false.
func (*Application) IsWebSocketEnabled ¶ added in v0.12.0
func (a *Application) IsWebSocketEnabled() bool
IsWebSocketEnabled method returns to true if aah application enabled with WebSocket feature.
Value of `server.websocket.enable` from `aah.conf`.
func (*Application) Log ¶ added in v0.12.0
func (a *Application) Log() log.Loggerer
Log method returns app logger instance.
func (*Application) Name ¶ added in v0.12.0
func (a *Application) Name() string
Name method returns aah application name from app config `name` otherwise app name of the base directory.
func (*Application) NewChildLogger ¶ added in v0.12.0
func (a *Application) NewChildLogger(fields log.Fields) log.Loggerer
NewChildLogger method create a child logger from aah application default logger.
func (*Application) OnConfigHotReload ¶ added in v0.12.0
func (a *Application) OnConfigHotReload(ecb EventCallbackFunc, priority ...int)
OnConfigHotReload method is to subscribe to aah application `OnConfigHotReload` event. `OnConfigHotReload` is published just after aah application internal config hot-reload and re-initialize completes without an error otherwise it won't be published.
func (*Application) OnInit ¶ added in v0.12.0
func (a *Application) OnInit(ecb EventCallbackFunc, priority ...int)
OnInit method is to subscribe to aah application `OnInit` event. `OnInit` event published right after the aah application configuration `aah.conf` initialized.
func (*Application) OnPostShutdown ¶ added in v0.12.0
func (a *Application) OnPostShutdown(ecb EventCallbackFunc, priority ...int)
OnPostShutdown method is to subscribe to aah application `OnPostShutdown` event. `OnPostShutdown` event pubished right the successful grace shutdown of aah server.
func (*Application) OnPreShutdown ¶ added in v0.12.0
func (a *Application) OnPreShutdown(ecb EventCallbackFunc, priority ...int)
OnPreShutdown method is to subscribe to aah application `OnPreShutdown` event. `OnPreShutdown` event pubished right before the triggering aah server graceful shutdown.
func (*Application) OnStart ¶ added in v0.12.0
func (a *Application) OnStart(ecb EventCallbackFunc, priority ...int)
OnStart method is to subscribe to aah application `OnStart` event. `OnStart` event pubished right before the aah server starts listening to the request.
func (*Application) PublishEvent ¶ added in v0.12.0
func (a *Application) PublishEvent(eventName string, data interface{})
PublishEvent method publishes events to subscribed callbacks asynchronously. It means each subscribed callback executed via goroutine.
func (*Application) PublishEventSync ¶ added in v0.12.0
func (a *Application) PublishEventSync(eventName string, data interface{})
PublishEventSync method publishes events to subscribed callbacks synchronously.
func (*Application) Router ¶ added in v0.12.0
func (a *Application) Router() *router.Router
Router method returns aah application router instance.
func (*Application) Run ¶ added in v0.12.0
func (a *Application) Run(args []string) error
Run method initializes `aah` application and runs the given command. If anything goes wrong during an initialize process, it would return an error.
func (*Application) SecurityManager ¶ added in v0.12.0
func (a *Application) SecurityManager() *security.Manager
SecurityManager method returns the application security instance, which manages the Session, CORS, CSRF, Security Headers, etc.
func (*Application) ServeHTTP ¶ added in v0.12.0
func (a *Application) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP method implementation of http.Handler interface.
func (*Application) SessionManager ¶ added in v0.12.0
func (a *Application) SessionManager() *session.Manager
SessionManager method returns the application session manager. By default session is stateless.
func (*Application) SetBuildInfo ¶ added in v0.12.0
func (a *Application) SetBuildInfo(bi *BuildInfo)
SetBuildInfo method sets the user application build info into aah instance.
func (*Application) SetErrorHandler ¶ added in v0.12.0
func (a *Application) SetErrorHandler(handlerFunc ErrorHandlerFunc)
SetErrorHandler method is used to register custom centralized application error handler. If custom handler is not then default error handler takes place.
func (*Application) SetMinifier ¶ added in v0.12.0
func (a *Application) SetMinifier(fn MinifierFunc)
SetMinifier method sets the given minifier func into aah framework. Note: currently minifier is called only for HTML contentType.
func (*Application) SetPackaged ¶ added in v0.12.0
func (a *Application) SetPackaged(pack bool)
SetPackaged method sets the info of binary is packaged or not.
It is used by framework during application startup. IT'S NOT FOR AAH USER(S).
func (*Application) SetTLSConfig ¶ added in v0.12.0
func (a *Application) SetTLSConfig(tlsCfg *tls.Config)
SetTLSConfig method is used to set custom TLS config for aah server. Note: if `server.ssl.lets_encrypt.enable=true` then framework sets the `GetCertificate` from autocert manager.
Use `aah.OnInit` or `func init() {...}` to assign your custom TLS Config.
func (*Application) Shutdown ¶ added in v0.12.0
func (a *Application) Shutdown()
Shutdown method allows aah server to shutdown gracefully with given timeout in seconds. It's invoked on OS signal `SIGINT` and `SIGTERM`.
Method performs:
- Graceful server shutdown with timeout by `server.timeout.grace_shutdown`
- Publishes `OnPostShutdown` event
- Exits program with code 0
func (*Application) Start ¶ added in v0.12.0
func (a *Application) Start()
Start method starts the Go HTTP server based on aah config "server.*".
func (*Application) SubscribeEvent ¶ added in v0.12.0
func (a *Application) SubscribeEvent(eventName string, ec EventCallback)
SubscribeEvent method is to subscribe to new or existing event.
func (*Application) SubscribeEventFunc ¶ added in v0.12.0
func (a *Application) SubscribeEventFunc(eventName string, ecf EventCallbackFunc)
SubscribeEventFunc method is to subscribe to new or existing event by `EventCallbackFunc`.
func (*Application) Type ¶ added in v0.12.0
func (a *Application) Type() string
Type method returns aah application type info e.g.: web, api, websocket.
Value of `type` from `aah.conf`.
func (*Application) UnsubscribeEvent ¶ added in v0.12.0
func (a *Application) UnsubscribeEvent(eventName string, ec EventCallback)
UnsubscribeEvent method is to unsubscribe by event name and `EventCallback` from app event store.
func (*Application) UnsubscribeEventFunc ¶ added in v0.12.0
func (a *Application) UnsubscribeEventFunc(eventName string, ecf EventCallbackFunc)
UnsubscribeEventFunc method is to unsubscribe by event name and `EventCallbackFunc` from app event store.
func (*Application) VFS ¶ added in v0.12.0
func (a *Application) VFS() *vfs.VFS
VFS method returns aah Virtual FileSystem instance.
func (*Application) Validate ¶ added in v0.12.0
func (a *Application) Validate(s interface{}) (validator.ValidationErrors, error)
Validate method is to validate struct via underneath validator.
Returns:
For validation errors: returns `validator.ValidationErrors` and nil
For invalid input: returns nil, error (invalid input such as nil, non-struct, etc.)
For no validation errors: nil, nil
func (*Application) ValidateValue ¶ added in v0.12.0
func (a *Application) ValidateValue(v interface{}, rules string) bool
ValidateValue method is to validate individual value on demand.
Returns -
true: validation passed
false: validation failed
For example:
i := 15 result := valpar.ValidateValue(i, "gt=1,lt=10") emailAddress := "sample@sample" result := valpar.ValidateValue(emailAddress, "email") numbers := []int{23, 67, 87, 23, 90} result := valpar.ValidateValue(numbers, "unique")
func (*Application) Validator ¶ added in v0.12.0
func (a *Application) Validator() *validator.Validate
Validator method return the default validator of aah framework.
Refer to https://godoc.org/gopkg.in/go-playground/validator.v9 for detailed documentation.
func (*Application) ViewEngine ¶ added in v0.12.0
func (a *Application) ViewEngine() view.Enginer
ViewEngine method returns aah application view Engine instance.
func (*Application) VirtualBaseDir ¶ added in v0.12.0
func (a *Application) VirtualBaseDir() string
VirtualBaseDir method returns "/app". In `v0.11.0` Virtual FileSystem (VFS) introduced in aah to provide single binary build packaging and provides seamless experience of Read-Only access to application directory and its sub-tree across OS platforms via `aah.App().VFS()`.
func (*Application) WSEngine ¶ added in v0.12.0
func (a *Application) WSEngine() *ws.Engine
WSEngine method returns aah WebSocket engine.
Note: It could be nil if WebSocket is not enabled.
type BuildInfo ¶
type BuildInfo struct { BinaryName string Version string Timestamp string AahVersion string // introduced in v0.12.0 GoVersion string // introduced in v0.12.0 }
BuildInfo holds the aah application build information; such as BinaryName, Version and Date.
type Context ¶
type Context struct { // Req is HTTP request instance Req *ahttp.Request // Res is HTTP response writer compliant. // // Note 1: It is highly recommended to use `Reply()` builder for // composing your response. // // Note 2: If you're using `cxt.Res` directly, don't forget to call // `Reply().Done()`; so that aah will not intervene with your // response. Res ahttp.ResponseWriter // contains filtered or unexported fields }
Context type for aah framework, gets embedded in application controller.
Note: this is not standard package `context.Context`.
func (*Context) Abort ¶
func (ctx *Context) Abort()
Abort method sets the abort to true. It means framework will not proceed with next middleware, next interceptor or action based on context it being used. Contexts:
- If it's called in the middleware, then middleware chain stops; framework starts processing response.
- If it's called in Before interceptor then Before<Action> interceptor, mapped <Action>, After<Action> interceptor and After interceptor will not execute; framework starts processing response.
- If it's called in Mapped <Action> then After<Action> interceptor and After interceptor will not execute; framework starts processing response.
func (*Context) AddViewArg ¶
AddViewArg method adds given key and value into `viewArgs`. These view args values accessible on templates. Chained call is possible.
func (*Context) Get ¶ added in v0.10.1
Get method returns the value for the given key, otherwise it returns nil.
func (*Context) IsStaticRoute ¶ added in v0.5.1
IsStaticRoute method returns true if it's static route otherwise false.
func (*Context) Log ¶ added in v0.10.1
Log method adds field `Request ID` into current log context and returns the logger.
func (*Context) Msg ¶
Msg method returns the i18n value for given key otherwise empty string returned.
func (*Context) Msgl ¶
Msgl method returns the i18n value for given local and key otherwise empty string returned.
func (*Context) Reply ¶
Reply method gives you control and convenient way to write a response effectively.
func (*Context) RouteURL ¶ added in v0.11.0
RouteURL method returns the URL for given route name and args. See `router.Domain.RouteURL` for more information.
func (*Context) RouteURLNamedArgs ¶ added in v0.11.0
RouteURLNamedArgs method returns the URL for given route name and key-value paris. See `router.Domain.RouteURLNamedArgs` for more information.
func (*Context) Session ¶
Session method always returns `session.Session` object. Use `Session.IsNew` to identify whether sesison is newly created or restored from the request which was already created.
func (*Context) Set ¶ added in v0.10.1
Set method is used to set value for the given key in the current request flow.
func (*Context) SetMethod ¶
SetMethod method is to set the request `Method` to change the behaviour of request routing. Ideal for URL rewrting.
Note: This method only takes effect on `OnRequest` HTTP server event.
func (*Context) SetURL ¶
SetURL method is to set the request URL to change the behaviour of request routing. Ideal for URL rewrting. URL can be relative or absolute URL.
Note: This method only takes effect on `OnRequest` HTTP server event.
func (*Context) Subdomain ¶ added in v0.10.1
Subdomain method returns the subdomain from the incoming request if available as per routes.conf. Otherwise empty string.
type Data ¶
type Data map[string]interface{}
Data type used for convenient data type of map[string]interface{}
func (Data) MarshalXML ¶ added in v0.10.1
MarshalXML method is to marshal `aah.Data` into XML.
type Error ¶ added in v0.10.1
type Error struct { Reason error `json:"-" xml:"-"` Code int `json:"code,omitempty" xml:"code,omitempty"` Message string `json:"message,omitempty" xml:"message,omitempty"` Data interface{} `json:"data,omitempty" xml:"data,omitempty"` }
Error structure is used to represent the error information in aah framework.
type ErrorHandler ¶ added in v0.10.1
type ErrorHandler interface { // HandleError method is to handle controller specific errors // // - Returns `true` if one or more errors are handled. aah just writes the reply on the wire. // // - Return `false` if one or more errors could not be handled. aah propagates the error(s) // further onto centralized error handler. If not handled, then finally default // error handler takes control. HandleError(err *Error) bool }
ErrorHandler is an interface to implement controller level error handling
type ErrorHandlerFunc ¶ added in v0.10.1
ErrorHandlerFunc is a function type. It is used to define a centralized error handler for an application.
Returns `true` when one or more errors are handled. aah just writes the reply on the wire.
Returns `false' when one or more errors could not be handled. aah propagates the error(s)
to default error handler.
type Event ¶
type Event struct { Name string Data interface{} }
Event type holds the details of single event.
type EventCallback ¶
type EventCallback struct { Callback EventCallbackFunc CallOnce bool // contains filtered or unexported fields }
EventCallback type is store particular callback in priority for calling sequance.
type EventCallbackFunc ¶
type EventCallbackFunc func(e *Event)
EventCallbackFunc is signature of event callback function.
type EventCallbacks ¶
type EventCallbacks []EventCallback
EventCallbacks type is slice of `EventCallback` type.
type EventStore ¶
type EventStore struct {
// contains filtered or unexported fields
}
EventStore type holds all the events belongs to aah application.
func (*EventStore) IsEventExists ¶
func (es *EventStore) IsEventExists(eventName string) bool
IsEventExists method returns true if given event is exists in the event store otherwise false.
func (*EventStore) Publish ¶
func (es *EventStore) Publish(e *Event)
Publish method publishes events to subscribed callbacks asynchronously. It means each subscribed callback executed via goroutine.
func (*EventStore) PublishSync ¶
func (es *EventStore) PublishSync(e *Event)
PublishSync method publishes events to subscribed callbacks synchronously.
func (*EventStore) Subscribe ¶
func (es *EventStore) Subscribe(event string, ec EventCallback)
Subscribe method is to subscribe any event with event callback info.
func (*EventStore) SubscriberCount ¶
func (es *EventStore) SubscriberCount(eventName string) int
SubscriberCount method returns subscriber count for given event name.
func (*EventStore) Unsubscribe ¶
func (es *EventStore) Unsubscribe(event string, callback EventCallbackFunc)
Unsubscribe method is to unsubscribe any callback from event store by event.
type HTTPEngine ¶ added in v0.11.0
type HTTPEngine struct {
// contains filtered or unexported fields
}
HTTPEngine holds the implementation handling HTTP request, response, middlewares, interceptors, etc.
func (*HTTPEngine) Handle ¶ added in v0.11.0
func (e *HTTPEngine) Handle(w http.ResponseWriter, r *http.Request)
Handle method is HTTP handler for aah application.
func (*HTTPEngine) Log ¶ added in v0.11.0
func (e *HTTPEngine) Log() log.Loggerer
Log method returns HTTP engine logger.
func (*HTTPEngine) Middlewares ¶ added in v0.11.0
func (e *HTTPEngine) Middlewares(middlewares ...MiddlewareFunc)
Middlewares method adds given middleware into middleware stack
func (*HTTPEngine) OnHeaderReply ¶ added in v0.11.0
func (e *HTTPEngine) OnHeaderReply(sef EventCallbackFunc)
OnHeaderReply method is to subscribe to aah HTTP engine `OnHeaderReply` extension point. `OnHeaderReply` called for every reply from aah server.
Except when 1) `Reply().Done()`, 2) `Reply().Redirect(...)` is called.
Refer `aah.Reply().Done()` godoc for more info.
func (*HTTPEngine) OnPostAuth ¶ added in v0.11.0
func (e *HTTPEngine) OnPostAuth(sef EventCallbackFunc)
OnPostAuth method is to subscribe to aah application `OnPreAuth` event. `OnPostAuth` event pubished right after the aah server authenticates & authorizes an incoming request.
func (*HTTPEngine) OnPostReply ¶ added in v0.11.0
func (e *HTTPEngine) OnPostReply(sef EventCallbackFunc)
OnPostReply method is to subscribe to aah HTTP engine `OnPostReply` extension point. `OnPostReply` called for every reply from aah server.
Except when 1) `Reply().Done()`, 2) `Reply().Redirect(...)` is called.
Refer `aah.Reply().Done()` godoc for more info.
func (*HTTPEngine) OnPreAuth ¶ added in v0.11.0
func (e *HTTPEngine) OnPreAuth(sef EventCallbackFunc)
OnPreAuth method is to subscribe to aah application `OnPreAuth` event. `OnPreAuth` event pubished right before the aah server authenticates & authorizes an incoming request.
func (*HTTPEngine) OnPreReply ¶ added in v0.11.0
func (e *HTTPEngine) OnPreReply(sef EventCallbackFunc)
OnPreReply method is to subscribe to aah HTTP engine `OnPreReply` extension point. `OnPreReply` called for every reply from aah server.
Except when 1) `Reply().Done()`, 2) `Reply().Redirect(...)` is called.
Refer `aah.Reply().Done()` godoc for more info.
func (*HTTPEngine) OnRequest ¶ added in v0.11.0
func (e *HTTPEngine) OnRequest(sef EventCallbackFunc)
OnRequest method is to subscribe to aah HTTP engine `OnRequest` extension point. `OnRequest` called for every incoming HTTP request.
The `aah.Context` object passed to the extension functions is decorated with the `ctx.SetURL()` and `ctx.SetMethod()` methods. Calls to these methods will impact how the request is routed and can be used for rewrite rules.
Note: Route is not yet populated/evaluated at this point.
type Middleware ¶
type Middleware struct {
// contains filtered or unexported fields
}
Middleware struct is to implement aah framework middleware chain.
func (*Middleware) Next ¶
func (mw *Middleware) Next(ctx *Context)
Next method calls next middleware in the chain if available.
type MiddlewareFunc ¶
type MiddlewareFunc func(ctx *Context, m *Middleware)
MiddlewareFunc func type is aah framework middleware signature.
func ToMiddleware ¶
func ToMiddleware(handler interface{}) MiddlewareFunc
ToMiddleware method expands the possibilities. It helps aah users to register the third-party or your own net/http middleware into `aah.MiddlewareFunc`.
It is highly recommended to refactored to `aah.MiddlewareFunc`.
You can register below handler types: 1) aah.ToMiddleware(h http.Handler) 2) aah.ToMiddleware(h http.HandlerFunc) 3) aah.ToMiddleware(func(w http.ResponseWriter, r *http.Request))
type MinifierFunc ¶ added in v0.10.1
MinifierFunc is to minify the HTML buffer and write the response into writer.
type RenderFunc ¶ added in v0.10.1
RenderFunc type is an adapter to allow the use of regular function as custom Render.
type Reply ¶
Reply gives you control and convenient way to write a response effectively.
func (*Reply) BadRequest ¶
BadRequest method sets the HTTP Code as 400 RFC 7231, 6.5.1.
func (*Reply) Binary ¶ added in v0.5.1
Binary method writes given bytes into response. It auto-detects the content type of the given bytes if header `Content-Type` is not set.
func (*Reply) Body ¶ added in v0.5.1
Body method returns the response body buffer.
It might be nil if the - 1) Response was written successfully on the wire 2) Response is not yet rendered 3) Static files, since response is written via `http.ServeContent`
func (*Reply) ContentType ¶
ContentType method sets given Content-Type string for the response. Also Reply instance provides easy to use method for very frequently used Content-Type(s).
By default aah framework try to determine response 'Content-Type' from 'ahttp.Request.AcceptContentType()'.
func (*Reply) DisableGzip ¶ added in v0.5.1
DisableGzip method allows you disable Gzip for the reply. By default every response is gzip compressed if the client supports it and gzip enabled in app config.
func (*Reply) Done ¶
Done method is used to indicate response has already been written using `aah.Context.Res` so no further action is needed from framework.
Note: Framework doesn't intervene with response if this method called by aah user.
func (*Reply) Error ¶ added in v0.10.1
Error method is used send an error reply, which is handled by aah error handling mechanism.
More Info: https://docs.aahframework.org/error-handling.html
func (*Reply) File ¶
File method send the given as file to client. It auto-detects the content type of the file if `Content-Type` is not set.
Note: If give filepath is relative path then application base directory is used as prefix.
func (*Reply) FileDownload ¶ added in v0.5.1
FileDownload method send the given as file to client as a download. It sets the `Content-Disposition` as `attachment` with given target name and auto-detects the content type of the file if `Content-Type` is not set.
func (*Reply) FileInline ¶
FileInline method send the given as file to client to display. For e.g.: display within the browser. It sets the `Content-Disposition` as `inline` with given target name and auto-detects the content type of the file if `Content-Type` is not set.
func (*Reply) FromReader ¶ added in v0.11.0
FromReader method reads the data from given reader and writes into response. It auto-detects the content type of the file if `Content-Type` is not set.
Note: Method will close the reader after serving if it's satisfies the `io.Closer`.
func (*Reply) HTML ¶
HTML method renders given data with auto mapped template name and layout by framework. Also it sets HTTP 'Content-Type' as 'text/html; charset=utf-8'.
aah renders the view template based on -
1) path 'Namespace/Sub-package' of Controller,
2) path 'Controller.Action',
3) view extension 'view.ext' and
4) case sensitive 'view.case_sensitive' from aah.conf
5) default layout is 'master.html'
For e.g.: Namespace/Sub-package: frontend Controller: App Action: Login view.ext: html Outcome view template path => /views/pages/frontend/app/login.html
func (*Reply) HTMLf ¶ added in v0.5.1
HTMLf method renders based on given filename and data. Refer `Reply.HTML(...)` method.
func (*Reply) HTMLl ¶
HTMLl method renders based on given layout and data. Refer `Reply.HTML(...)` method.
func (*Reply) HTMLlf ¶
HTMLlf method renders based on given layout, filename and data. Refer `Reply.HTML(...)` method.
func (*Reply) Header ¶
Header method sets the given header and value for the response. If value == "", then this method deletes the header.
Note: It overwrites existing header value if it's present.
func (*Reply) HeaderAppend ¶
HeaderAppend method appends the given header and value for the response.
Note: It just appends to it. It does not overwrite existing header.
func (*Reply) InternalServerError ¶
InternalServerError method sets the HTTP Code as 500 RFC 7231, 6.6.1.
func (*Reply) IsContentTypeSet ¶
IsContentTypeSet method returns true if Content-Type is set otherwise false.
func (*Reply) JSON ¶
JSON method renders given data as JSON response and it sets HTTP 'Content-Type' as 'application/json; charset=utf-8'.
func (*Reply) JSONP ¶
JSONP method renders given data as JSONP response with callback and it sets HTTP 'Content-Type' as 'application/javascript; charset=utf-8'.
func (*Reply) JSONSecure ¶ added in v0.11.0
JSONSecure method renders given data as Secure JSON into response. and it sets HTTP 'Content-Type' as 'application/json; charset=utf-8'.
See config `render.secure_json.prefix`.
func (*Reply) MethodNotAllowed ¶
MethodNotAllowed method sets the HTTP Code as 405 RFC 7231, 6.5.5.
func (*Reply) MovedPermanently ¶
MovedPermanently method sets the HTTP Code as 301 RFC 7231, 6.4.2.
func (*Reply) NotAcceptable ¶ added in v0.11.0
NotAcceptable method sets the HTTP Code as 406 RFC 7231, 6.5.6
func (*Reply) RedirectWithStatus ¶ added in v0.11.0
RedirectWithStatus method redirects to given redirect URL and status code.
func (*Reply) Render ¶ added in v0.10.1
Render method is used render custom implementation using interface `aah.Render`.
func (*Reply) ServiceUnavailable ¶
ServiceUnavailable method sets the HTTP Code as 503 RFC 7231, 6.6.4.
func (*Reply) Status ¶
Status method sets the HTTP Code code for the response. Also Reply instance provides easy to use method for very frequently used HTTP Status Codes reference: http://www.restapitutorial.com/httpCodecodes.html
func (*Reply) TemporaryRedirect ¶
TemporaryRedirect method sets the HTTP Code as 307 RFC 7231, 6.4.7.
func (*Reply) Text ¶
Text method renders given data as Plain Text response with given values and it sets HTTP Content-Type as 'text/plain; charset=utf-8'.
func (*Reply) Unauthorized ¶
Unauthorized method sets the HTTP Code as 401 RFC 7235, 3.1.
func (*Reply) UnsupportedMediaType ¶ added in v0.11.0
UnsupportedMediaType method sets the HTTP Code as 415 RFC 7231, 6.5.13
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
Package ahttp is to cater HTTP helper methods for aah framework.
|
Package ahttp is to cater HTTP helper methods for aah framework. |
Package ainsp is a Go ast library for aah framework, it does inspect and discovers the Go `struct` which embeds particular type `struct`.
|
Package ainsp is a Go ast library for aah framework, it does inspect and discovers the Go `struct` which embeds particular type `struct`. |
Package aruntime provides aah runtime capabilities to collect debug stacktrace, goroutines diagnosis profiling.
|
Package aruntime provides aah runtime capabilities to collect debug stacktrace, goroutines diagnosis profiling. |
diagnosis
Package diagnosis brings feature of aah application profiling to do various diagnosis.
|
Package diagnosis brings feature of aah application profiling to do various diagnosis. |
Package cache provides simple and extensible cache feature for aah application.
|
Package cache provides simple and extensible cache feature for aah application. |
provider/inmemory
Module
|
|
provider/memcache
Module
|
|
provider/redis
Module
|
|
cli
module
|
|
aah
Module
|
|
Package config is nice and handy layer built around `forge` config syntax; which is similar to HOCON syntax.
|
Package config is nice and handy layer built around `forge` config syntax; which is similar to HOCON syntax. |
Package console provides a feature to implement CLI commands into your aah application easily and extensible.
|
Package console provides a feature to implement CLI commands into your aah application easily and extensible. |
ec
|
|
health
Module
|
|
Package ess provides a essentials and helper for the application development and usage.
|
Package ess provides a essentials and helper for the application development and usage. |
Package i18n is internationalization and localization support for aah framework.
|
Package i18n is internationalization and localization support for aah framework. |
internal
|
|
Package log simple logger and provides capabilities to fulfill application use cases.
|
Package log simple logger and provides capabilities to fulfill application use cases. |
minify
|
|
html
Module
|
|
Package router provides routing implementation for aah framework.
|
Package router provides routing implementation for aah framework. |
Package security houses all the application security implementation Authentication, Authorization, Session Management, CSRF, Security Headers, etc.) by aah framework.
|
Package security houses all the application security implementation Authentication, Authorization, Session Management, CSRF, Security Headers, etc.) by aah framework. |
session
Package session provides HTTP state management library for aah framework.
|
Package session provides HTTP state management library for aah framework. |
Package valpar provides feature of request value parsing, handling, binding and validating.
|
Package valpar provides feature of request value parsing, handling, binding and validating. |
Package vfs provides Virtual FileSystem (VFS) capability.
|
Package vfs provides Virtual FileSystem (VFS) capability. |
Package view is implementation of aah framework view engine using Go Template engine.
|
Package view is implementation of aah framework view engine using Go Template engine. |
Package ws is a WebSocket library for aah framework (RFC 6455 compliant).
|
Package ws is a WebSocket library for aah framework (RFC 6455 compliant). |