Documentation ¶
Overview ¶
Package aah is A scalable, performant, rapid development Web framework for Go https://aahframework.org
Index ¶
- Constants
- func AddController(c interface{}, methods []*MethodInfo)
- func AddServerTLSConfig(tlsCfg *tls.Config)
- func AddSessionStore(name string, store session.Storer) error
- func AddTemplateFunc(funcs template.FuncMap)
- func AddViewEngine(name string, engine view.Enginer) error
- func AllAppProfiles() []string
- func AppBaseDir() string
- func AppConfig() *config.Config
- func AppDateFormat() string
- func AppDateTimeFormat() string
- func AppDefaultI18nLang() string
- func AppDesc() string
- func AppHTTPAddress() string
- func AppHTTPPort() string
- func AppI18n() *i18n.I18n
- func AppI18nLocales() []string
- func AppImportPath() string
- func AppIsSSLEnabled() bool
- func AppName() string
- func AppProfile() string
- func AppRouter() *router.Router
- func AppSecurity() *security.Security
- func AppSessionManager() *session.Manager
- func AppViewEngine() view.Enginer
- func Init(importPath string)
- func Middlewares(middlewares ...MiddlewareFunc)
- func OnAfterReply(sef EventCallbackFunc)
- func OnInit(ecb EventCallbackFunc, priority ...int)
- func OnPreReply(sef EventCallbackFunc)
- func OnRequest(sef EventCallbackFunc)
- func OnShutdown(ecb EventCallbackFunc, priority ...int)
- func OnStart(ecb EventCallbackFunc, priority ...int)
- func PublishEvent(eventName string, data interface{})
- func PublishEventSync(eventName string, data interface{})
- func SetAppBuildInfo(bi *BuildInfo)
- func SetAppPackaged(pack bool)
- func SetAppProfile(profile string) error
- func Shutdown()
- func Start()
- func SubscribeEvent(eventName string, ec EventCallback)
- func SubscribeEventf(eventName string, ecf EventCallbackFunc)
- func UnsubscribeEvent(eventName string, ec EventCallback)
- func UnsubscribeEventf(eventName string, ecf EventCallbackFunc)
- type Binary
- type BuildInfo
- type Context
- func (ctx *Context) Abort()
- func (ctx *Context) AddViewArg(key string, value interface{}) *Context
- func (ctx *Context) IsStaticRoute() bool
- 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) Reset()
- func (ctx *Context) ReverseURL(routeName string, args ...interface{}) string
- func (ctx *Context) ReverseURLm(routeName string, args map[string]interface{}) string
- func (ctx *Context) Session() *session.Session
- func (ctx *Context) SetMethod(method string)
- func (ctx *Context) SetURL(pathURL string)
- func (ctx *Context) ViewArgs() map[string]interface{}
- type Data
- 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 HTML
- type JSON
- type MethodInfo
- type Middleware
- type MiddlewareFunc
- type ParameterInfo
- type Render
- 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) 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) 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) MethodNotAllowed() *Reply
- func (r *Reply) MovedPermanently() *Reply
- func (r *Reply) NoContent() *Reply
- func (r *Reply) NotFound() *Reply
- func (r *Reply) Ok() *Reply
- func (r *Reply) Readfrom(reader io.Reader) *Reply
- func (r *Reply) Redirect(redirectURL string) *Reply
- func (r *Reply) RedirectSts(redirectURL string, code int) *Reply
- func (r *Reply) Reset()
- 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) XML(data interface{}) *Reply
- type Text
- type XML
Constants ¶
const ( // EventOnInit event is fired right after aah application config is initialized. EventOnInit = "OnInit" // EventOnStart event is fired before HTTP/Unix listener starts EventOnStart = "OnStart" // EventOnShutdown event is fired when server recevies interrupt or kill command. EventOnShutdown = "OnShutdown" // EventOnRequest event is fired when server recevies incoming request. EventOnRequest = "OnRequest" // EventOnPreReply event is fired 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" // EventOnAfterReply event is fired 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. EventOnAfterReply = "OnAfterReply" )
const Version = "0.5.1"
Version no. of aah framework
Variables ¶
This section is empty.
Functions ¶
func AddController ¶
func AddController(c interface{}, methods []*MethodInfo)
AddController method adds given controller into controller registory. with "dereferenced" a.k.a "indirecting".
func AddServerTLSConfig ¶ added in v0.5.1
AddServerTLSConfig method can be used for 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 TLSConfig.
func AddSessionStore ¶
AddSessionStore method allows you to add custom session store which implements `session.Storer` interface. The `name` parameter is used in aah.conf on `session.store.type = "name"`.
func AddTemplateFunc ¶
AddTemplateFunc method adds template func map into view engine.
func AddViewEngine ¶
AddViewEngine method adds the given name and view engine to view store.
func AllAppProfiles ¶
func AllAppProfiles() []string
AllAppProfiles method returns all the aah application environment profile names.
func AppBaseDir ¶
func AppBaseDir() string
AppBaseDir method returns the application base or binary current directory
For e.g.: $GOPATH/src/github.com/user/myproject <app/binary/path/base/directory>
func AppConfig ¶
func AppConfig() *config.Config
AppConfig method returns aah application configuration instance.
func AppDateFormat ¶
func AppDateFormat() string
AppDateFormat method returns aah application date format
func AppDateTimeFormat ¶
func AppDateTimeFormat() string
AppDateTimeFormat method returns aah application date format
func AppDefaultI18nLang ¶
func AppDefaultI18nLang() string
AppDefaultI18nLang method returns aah application i18n default language if configured other framework defaults to "en".
func AppDesc ¶ added in v0.5.1
func AppDesc() string
AppDesc method returns aah application friendly description from app config otherwise empty string.
func AppHTTPAddress ¶
func AppHTTPAddress() string
AppHTTPAddress method returns aah application HTTP address otherwise empty string
func AppHTTPPort ¶
func AppHTTPPort() string
AppHTTPPort method returns aah application HTTP port number based on `server.port` value. Possible outcomes are user-defined port, `80`, `443` and `8080`.
func AppI18n ¶
func AppI18n() *i18n.I18n
AppI18n method returns aah application I18n store instance.
func AppI18nLocales ¶
func AppI18nLocales() []string
AppI18nLocales returns all the loaded locales from i18n store
func AppImportPath ¶
func AppImportPath() string
AppImportPath method returns the application Go import path.
func AppIsSSLEnabled ¶
func AppIsSSLEnabled() bool
AppIsSSLEnabled method returns true if aah application is enabled with SSL otherwise false.
func AppName ¶
func AppName() string
AppName method returns aah application name from app config otherwise app name of the base directory.
func AppProfile ¶
func AppProfile() string
AppProfile returns aah application configuration profile name For e.g.: dev, prod, etc. Default is `dev`
func AppRouter ¶
func AppRouter() *router.Router
AppRouter method returns aah application router instance.
func AppSecurity ¶
func AppSecurity() *security.Security
AppSecurity method returns the application security instance, which manages the Session, CORS, CSRF, Security Headers, etc.
func AppSessionManager ¶
AppSessionManager method returns the application session manager. By default session is stateless.
func AppViewEngine ¶
func AppViewEngine() view.Enginer
AppViewEngine method returns aah application view Engine instance.
func Init ¶
func Init(importPath string)
Init method initializes `aah` application, if anything goes wrong during initialize process, it will log it as fatal msg and exit.
func Middlewares ¶
func Middlewares(middlewares ...MiddlewareFunc)
Middlewares method adds given middleware into middleware stack
func OnAfterReply ¶
func OnAfterReply(sef EventCallbackFunc)
OnAfterReply method is to subscribe to aah server `OnAfterReply` extension point. `OnAfterReply` called for every reply from aah server.
Except when
- `Reply().Done()`,
- `Reply().Redirect(...)` is called.
Refer `aah.Reply.Done()` godoc for more info.
func OnInit ¶
func 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 OnPreReply ¶
func OnPreReply(sef EventCallbackFunc)
OnPreReply method is to subscribe to aah server `OnPreReply` extension point. `OnPreReply` called for every reply from aah server.
Except when
- `Reply().Done()`,
- `Reply().Redirect(...)` is called.
Refer `aah.Reply.Done()` godoc for more info.
func OnRequest ¶
func OnRequest(sef EventCallbackFunc)
OnRequest method is to subscribe to aah server `OnRequest` extension point. `OnRequest` called for every incoming 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.
Route is not yet populated/evaluated at this point.
func OnShutdown ¶
func OnShutdown(ecb EventCallbackFunc, priority ...int)
OnShutdown method is to subscribe to aah application `OnShutdown` event. `OnShutdown` event pubished right before the aah server is stopped Listening and serving request.
func OnStart ¶
func OnStart(ecb EventCallbackFunc, priority ...int)
OnStart method is to subscribe to aah application `OnStart` event. `OnStart` event pubished right before the aah server listen and serving request.
func PublishEvent ¶
func PublishEvent(eventName string, data interface{})
PublishEvent method publishes events to subscribed callbacks asynchronously. It means each subscribed callback executed via goroutine.
func PublishEventSync ¶
func PublishEventSync(eventName string, data interface{})
PublishEventSync method publishes events to subscribed callbacks synchronously.
func SetAppBuildInfo ¶
func SetAppBuildInfo(bi *BuildInfo)
SetAppBuildInfo method sets the user application build info into aah instance.
func SetAppPackaged ¶ added in v0.5.1
func SetAppPackaged(pack bool)
SetAppPackaged method sets the info of binary is packaged or not.
func SetAppProfile ¶
SetAppProfile method sets given profile as current aah application profile.
For Example: aah.SetAppProfile("prod")
func Shutdown ¶
func Shutdown()
Shutdown method allows aah server to shutdown gracefully with given timeoout in seconds. It's invoked on OS signal `SIGINT` and `SIGTERM`.
Method performs:
- Graceful server shutdown with timeout by `server.timeout.grace_shutdown`
- Publishes `OnShutdown` event
- Exits program with code 0
func SubscribeEvent ¶
func SubscribeEvent(eventName string, ec EventCallback)
SubscribeEvent method is to subscribe to new or existing event.
func SubscribeEventf ¶ added in v0.5.1
func SubscribeEventf(eventName string, ecf EventCallbackFunc)
SubscribeEventf method is to subscribe to new or existing event by `EventCallbackFunc`.
func UnsubscribeEvent ¶
func UnsubscribeEvent(eventName string, ec EventCallback)
UnsubscribeEvent method is to unsubscribe by event name and `EventCallback` from app event store.
func UnsubscribeEventf ¶
func UnsubscribeEventf(eventName string, ecf EventCallbackFunc)
UnsubscribeEventf method is to unsubscribe by event name and `EventCallbackFunc` from app event store.
Types ¶
type Binary ¶ added in v0.5.1
Binary renders given path or io.Reader into response and closes the file.
type BuildInfo ¶
BuildInfo holds the aah application build information; such as BinaryName, Version and Date.
func AppBuildInfo ¶
func AppBuildInfo() *BuildInfo
AppBuildInfo method return user application version no.
type Context ¶
type Context struct { // Req is HTTP request instance Req *ahttp.Request // Res is HTTP response writer compliant. It is highly recommended to use // `Reply()` builder for composing response. // // Note: If you're using `cxt.Res` directly, don't forget to call // `Reply().Done()` so that framework 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) IsStaticRoute ¶ added in v0.5.1
IsStaticRoute method returns true if it's static route otherwise false.
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) ReverseURL ¶
ReverseURL method returns the URL for given route name and args. See `Domain.ReverseURL` for more information.
func (*Context) ReverseURLm ¶
ReverseURLm method returns the URL for given route name and key-value paris. See `Domain.ReverseURLm` 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) 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` server event.
type Data ¶
type Data map[string]interface{}
Data type used for convenient data type of map[string]interface{}
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.
func (EventCallbacks) Less ¶
func (ec EventCallbacks) Less(i, j int) bool
func (EventCallbacks) Swap ¶
func (ec EventCallbacks) Swap(i, j int)
type EventStore ¶
type EventStore struct {
// contains filtered or unexported fields
}
EventStore type holds all the events belongs to aah application.
func AppEventStore ¶
func AppEventStore() *EventStore
AppEventStore method returns aah application event store.
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 MethodInfo ¶
type MethodInfo struct { Name string Parameters []*ParameterInfo }
MethodInfo holds information of single method information in the controller.
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 Golang community to convert the third-party or your own net/http middleware into `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 ParameterInfo ¶
ParameterInfo holds information of single parameter in the method.
type Reply ¶
type Reply struct { Code int ContType string Hdr http.Header Rdr Render // contains filtered or unexported fields }
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 -
- Response is written successfully on the wire
- Response is not yet rendered
- 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 indicates to framework and informing that reply has already been sent via `aah.Context.Res` and that no further action is needed. Framework doesn't intervene with response if this method called.
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.
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) 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'. By default aah framework renders the template based on
path 'Controller.Action',
view extension 'view.ext' and
case sensitive 'view.case_sensitive' from aah.conf
default layout is 'master.html' E.g.: Controller: App Action: Login view.ext: html
template => /views/pages/app/login.html => /views/pages/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 does not overwrite existing header, it just appends to it.
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. Also it sets HTTP 'Content-Type' as 'application/json; charset=utf-8'. Response rendered pretty if 'render.pretty' is true.
func (*Reply) JSONP ¶
JSONP method renders given data as JSONP response with callback. Also it sets HTTP 'Content-Type' as 'application/json; charset=utf-8'. Response rendered pretty if 'render.pretty' is true. Note: If `callback` param is empty and `callback` query param is exists then query param value will be used.
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) Readfrom ¶ added in v0.5.1
Readfrom 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) RedirectSts ¶ added in v0.5.1
RedirectSts method redirect the to given redirect URL and status code.
func (*Reply) Reset ¶ added in v0.5.1
func (r *Reply) Reset()
Reset method resets the values into initialized state.
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. Also 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.