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 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 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 SetAppProfile(profile string) error
- func Shutdown()
- func Start()
- func SubscribeEvent(eventName string, ec EventCallback)
- func UnsubscribeEvent(eventName string, ec EventCallback)
- func UnsubscribeEventf(eventName string, ec EventCallbackFunc)
- type BuildInfo
- type Bytes
- type Context
- func (ctx *Context) Abort()
- func (ctx *Context) AddViewArg(key string, value interface{}) *Context
- func (ctx *Context) Cookie(name string) (*http.Cookie, error)
- func (ctx *Context) Cookies() []*http.Cookie
- 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 File
- 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) Bytes(contentType string, data []byte) *Reply
- 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) Done() *Reply
- func (r *Reply) File(filename string, file io.ReadCloser) *Reply
- func (r *Reply) FileInline(filename string, file io.ReadCloser) *Reply
- func (r *Reply) Forbidden() *Reply
- func (r *Reply) Found() *Reply
- func (r *Reply) HTML(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) Redirect(redirectURL string)
- func (r *Reply) Redirects(redirectURL string, code int)
- 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) Static file request, 2) `Reply().Done()` // 3) `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) Static file request, 2) `Reply().Done()` // 3) `Reply().Redirect(...)` is called. Refer `aah.Reply.Done()` godoc for more info. EventOnAfterReply = "OnAfterReply" )
const Version = "0.4"
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 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 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 if available or if empty returns port 80; otherwise returns default port number 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 1) Static file request, 2) `Reply().Done()` 3) `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 1) Static file request, 2) `Reply().Done()` 3) `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 processed 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 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
Note: This applicable only to go1.8 and above.
func SubscribeEvent ¶
func SubscribeEvent(eventName string, ec EventCallback)
SubscribeEvent method is to subscribe to new or existing event.
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, ec EventCallbackFunc)
UnsubscribeEventf method is to unsubscribe by event name and `EventCallbackFunc` from app event store.
Types ¶
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.
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: 1) If it's called in the middleware, then middleware chain stops; framework starts processing response. 2) 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. 3) 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) 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 event generated.
type EventCallback ¶
type EventCallback struct { Callback EventCallbackFunc PublishOnce 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 File ¶
type File struct {
Data io.ReadCloser
}
File renders given ReadCloser into response and closes the file.
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(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) 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) Done ¶
Done method concludes middleware flow, action flow by returning control over to framework and informing that reply has already been sent via `aahContext.Res` and that no further action is needed.
func (*Reply) File ¶
func (r *Reply) File(filename string, file io.ReadCloser) *Reply
File method writes the given file into response and close the file after write. Also it sets HTTP 'Content-Type' as 'application/octet-stream' and adds the header 'Content-Disposition' as 'attachment' with given filename. Note: Method does close the given 'io.ReadCloser' after writing a response.
func (*Reply) FileInline ¶
func (r *Reply) FileInline(filename string, file io.ReadCloser) *Reply
FileInline method writes the given file into response and close the file after write. Also it sets HTTP 'Content-Type' as 'application/octet-stream' and adds the header 'Content-Disposition' as 'inline' with given filename. Note: Method does close the given 'io.ReadCloser' after writing a response.
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',
template extension 'template.ext' and
case sensitive 'template.case_sensitive' from aah.conf
default layout is 'master' E.g.: Controller: App Action: Login template.ext: html
template => /views/pages/app/login.html => /views/pages/App/Login.html
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.
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) Redirect ¶
Redirect method redirect the to given redirect URL with status 302 and it does not provide option for chain call.
func (*Reply) Redirects ¶
Redirects method redirect the to given redirect URL and status code. It does not provide option for chain call.
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.