Documentation
¶
Index ¶
- Constants
- Variables
- func AESDecrypt(ciphertext []byte, key []byte) ([]byte, error)
- func AESEncrypt(plaintext []byte, key []byte) ([]byte, error)
- func ArrayContains(arr interface{}, val interface{}) bool
- func CaptureOutput(f func()) string
- func GenerateRandomBytes(length int) []byte
- func IsCamelCase(str string) bool
- func IsChainCase(str string) bool
- func IsDebugBuild() bool
- func IsFlatCase(str string) bool
- func IsPascalCase(str string) bool
- func IsReleaseBuild() bool
- func IsSnakeCase(str string) bool
- func ModuleName() string
- func ParseEnv(c interface{}) error
- func Plural(str string) string
- func Singular(str string) string
- func ToCamelCase(str string) string
- func ToChainCase(str string) string
- func ToFlatCase(str string) string
- func ToPascalCase(str string) string
- func ToSnakeCase(str string) string
- type Asset
- type AssetLayout
- type AssetManager
- type Config
- type H
- type I18n
- type Logger
- type NBool
- type NFloat64
- type NInt64
- type NString
- type NTime
- type ZBool
- type ZFloat64
- type ZInt64
- type ZString
- type ZTime
Constants ¶
const ( // DebugBuild tends to be slow as it includes debug lvl logging which is // more verbose. DebugBuild = "debug" // ReleaseBuild tends to be faster as it excludes debug lvl logging. ReleaseBuild = "release" // VERSION follows semantic versioning to indicate the framework's release // status. VERSION = "0.1.0" // DESCRIPTION indicates what the web framework is aiming to provide. DESCRIPTION = "An opinionated productive web framework that helps scaling business easier." )
Variables ¶
var ( // ErrMissingMasterKey indicates the master key is not provided. ErrMissingMasterKey = errors.New("master key is missing") // ErrNoEmbeddedAssets indicates the embedded asset is missing. ErrNoEmbeddedAssets = errors.New("embedded asset is missing") // ErrReadMasterKeyFile indicates there is a problem reading master key file. ErrReadMasterKeyFile = errors.New("failed to read master key file in config path") )
var ( // NewNBool creates a new NBool. NewNBool = null.BoolFrom // NewNFloat64 creates a new NFloat64. NewNFloat64 = null.FloatFrom // NewNInt64 creates a new NInt64. NewNInt64 = null.IntFrom // NewNString creates a new NString. NewNString = null.StringFrom // NewNTime creates a new NTime. NewNTime = null.TimeFrom )
var ( // Build is the current build type for the application, can be "debug" or // "release". Please take note that this value will be updated to "release" // when running "go run . build" command. Build = DebugBuild // SupportedDBAdapters indicates the list of database adapters that are // supported. SupportedDBAdapters = []string{"mysql", "postgres"} )
var ( // NewZBool creates a new ZBool. NewZBool = zero.BoolFrom // NewZFloat64 creates a new ZFloat64. NewZFloat64 = zero.FloatFrom // NewZInt64 creates a new ZInt64. NewZInt64 = zero.IntFrom // NewZString creates a new ZString. NewZString = zero.StringFrom // NewZTime creates a new ZTime. NewZTime = zero.TimeFrom )
Functions ¶
func AESDecrypt ¶
AESDecrypt decrypts a cipher text into a plain text using the key with AES-256 algorithm.
func AESEncrypt ¶
AESEncrypt encrypts a plaintext into a cipher text using the key with AES-256 algorithm.
func ArrayContains ¶
func ArrayContains(arr interface{}, val interface{}) bool
ArrayContains checks if a value is in a slice of the same type.
func GenerateRandomBytes ¶
GenerateRandomBytes generates random bytes of the specific length.
func IsChainCase ¶
IsChainCase checks if a string is a chain-case.
func IsDebugBuild ¶
func IsDebugBuild() bool
IsDebugBuild indicates the current build is debug build which is meant for local development.
func IsPascalCase ¶
IsPascalCase checks if a string is a PascalCase.
func IsReleaseBuild ¶
func IsReleaseBuild() bool
IsReleaseBuild indicates the current build is release build which is meant for production deployment.
func IsSnakeCase ¶
IsSnakeCase checks if a string is a snake_case.
func ParseEnv ¶
func ParseEnv(c interface{}) error
ParseEnv parses the environment variables into config struct.
func ToCamelCase ¶
ToCamelCase converts a string to camelCase style.
func ToChainCase ¶
ToChainCase converts a string to chain-case style.
func ToFlatCase ¶
ToFlatCase converts a string to flatcase style.
func ToPascalCase ¶
ToPascalCase converts a string to PascalCase style.
func ToSnakeCase ¶
ToSnakeCase converts a string to snake_case style.
Types ¶
type Asset ¶
type Asset struct {
// contains filtered or unexported fields
}
Asset manages the application assets.
func NewAsset ¶
func NewAsset(embedded http.FileSystem, root string) *Asset
NewAsset initializes the assets instance.
func (*Asset) Embedded ¶
func (a *Asset) Embedded() http.FileSystem
Embedded returns the embedded asset.
func (*Asset) Layout ¶
func (a *Asset) Layout() *AssetLayout
Layout keeps the path for project components.
func (*Asset) Open ¶
Open opens the named file for reading. If the current build type is debug, reads from the filesystem. Otherwise, it reads from the embedded static assets which is a virtual file system.
type AssetLayout ¶
type AssetLayout struct {
// contains filtered or unexported fields
}
AssetLayout manages the path for project components.
func (*AssetLayout) Config ¶
func (l *AssetLayout) Config() string
Config returns the path that stores the configuration.
func (*AssetLayout) Locale ¶
func (l *AssetLayout) Locale() string
Locale returns the path that stores the server-side rendering locales.
func (*AssetLayout) View ¶
func (l *AssetLayout) View() string
View returns the path that stores the server-side rendering views.
func (*AssetLayout) Web ¶
func (l *AssetLayout) Web() string
Web returns the path that stores the client-side rendering web app.
type AssetManager ¶
type AssetManager interface {
Layout() *AssetLayout
Open(path string) (io.Reader, error)
ReadDir(dir string) ([]os.FileInfo, error)
ReadFile(filename string) ([]byte, error)
}
AssetManager implements all methods for Asset.
type Config ¶
type Config struct {
// AppyEnv indicates the environment that the codebase is running on and it
// determines which config to use. By default, it is is "development" and
// its corresponding config is "configs/.env.development".
//
// Note: APPY_ENV=test is used for unit tests.
AppyEnv string `env:"APPY_ENV" envDefault:"development"`
// AssetHost indicates the asset host to use with "assetPath()" for the
// server-side rendering which is very useful it comes to hosting the static
// assets on CDN. By default, it is "" which uses the current server host.
AssetHost string `env:"ASSET_HOST" envDefault:""`
// GQLPlaygroundEnabled indicates if the GraphQL playground is enabled. By
// default, it is false.
GQLPlaygroundEnabled bool `env:"GQL_PLAYGROUND_ENABLED" envDefault:"false"`
// GQLPlaygroundPath indicates the GraphQL playground path to host at. By
// default, it is "/docs/graphql".
GQLPlaygroundPath string `env:"GQL_PLAYGROUND_PATH" envDefault:"/docs/graphql"`
// GQLAPQCacheSize indicates how many APQ to persist in the memory at one
// time. By default, it is 100. For more details about APQ, please refer to
// https://gqlgen.com/reference/apq.
GQLAPQCacheSize int `env:"GQL_APQ_CACHE_SIZE" envDefault:"100"`
// GQLQueryCacheSize indicates how many queries to cache in the memory. By
// default, it is 1000.
GQLQueryCacheSize int `env:"GQL_QUERY_CACHE_SIZE" envDefault:"1000"`
// GQLComplexityLimit indicates the query complexity which can be used to
// mitigate DDoS attacks risk. By default, it is 1000.
GQLComplexityLimit int `env:"GQL_COMPLEXITY_LIMIT" envDefault:"1000"`
// GQLMultipartMaxMemory indicates the maximum number of bytes used to parse
// a request body as multipart/form-data in memory, with the remainder stored
// on disk in temporary files. By default, it is 0 (no limit).
GQLMultipartMaxMemory int64 `env:"GQL_MULTIPART_MAX_MEMORY" envDefault:"0"`
// GQLMultipartMaxUploadSize indicates the maximum number of bytes used to
// parse a request body as multipart/form-data. By default, it is 0 (no limit).
GQLMultipartMaxUploadSize int64 `env:"GQL_MULTIPART_MAX_UPLOAD_SIZE" envDefault:"0"`
// GQLWebsocketKeepAliveDuration indicates how long the websocket connection
// should be kept alive for sending subsequent messages without re-establishing
// the connection which is an overhead. By default, it is 10s.
GQLWebsocketKeepAliveDuration time.Duration `env:"GQL_WEBSOCKET_KEEP_ALIVE_DURATION" envDefault:"10s"`
// HTTPGzipCompressLevel indicates the compression level used to compress the
// HTTP response. By default, it is -1.
//
// Available options:
// - Default Compression = -1
// - No Compression = 0
// - Fastest Compression = 1
// - Best Compression = 9
HTTPGzipCompressLevel int `env:"HTTP_GZIP_COMPRESS_LEVEL" envDefault:"-1"`
// HTTPGzipExcludedExts indicates which file extensions not to compress. By
// default, it is "".
HTTPGzipExcludedExts []string `env:"HTTP_GZIP_EXCLUDED_EXTS" envDefault:""`
// HTTPGzipExcludedPaths indicates which paths not to compress. By default,
// it is "".
HTTPGzipExcludedPaths []string `env:"HTTP_GZIP_EXCLUDED_PATHS" envDefault:""`
// HTTPLogFilterParameters indicates which query parameters in the URL to
// filter so that the sensitive information like password are masked in the
// HTTP request log. By default, it is "password".
HTTPLogFilterParameters []string `env:"HTTP_LOG_FILTER_PARAMETERS" envDefault:"password"`
// HTTPHealthCheckPath indicates the path to check if the HTTP server is healthy.
// This endpoint is a middleware that is designed to avoid redundant computing
// resource usage. By default, it is "/health_check".
//
// In general, if your server is running behind a load balancer, this endpoint
// will be served to inform the load balancer that the server is healthy and
// ready to receive HTTP requests.
HTTPHealthCheckPath string `env:"HTTP_HEALTH_CHECK_PATH" envDefault:"/health_check"`
// HTTPHost indicates which host the HTTP server should be hosted at. By
// default, it is "localhost". If you would like to connect to the HTTP server
// from within your LAN network, use "0.0.0.0" instead.
HTTPHost string `env:"HTTP_HOST" envDefault:"localhost"`
// HTTPPort indicates which port the HTTP server should be hosted at. By
// default, it is "3000".
HTTPPort string `env:"HTTP_PORT" envDefault:"3000"`
// HTTPGracefulShutdownTimeout indicates how long to wait for the HTTP server
// to shut down so that any active connection is not interrupted by
// SIGTERM/SIGINT. By default, it is "30s".
HTTPGracefulShutdownTimeout time.Duration `env:"HTTP_GRACEFUL_SHUTDOWN_TIMEOUT" envDefault:"30s"`
// HTTPIdleTimeout is the maximum amount of time to wait for the next request
// when keep-alives are enabled. If HTTPIdleTimeout is zero, the value of
// HTTPReadTimeout is used. If both are zero, there is no timeout. By default,
// it is "75s".
HTTPIdleTimeout time.Duration `env:"HTTP_IDLE_TIMEOUT" envDefault:"75s"`
// HTTPMaxHeaderBytes controls the maximum number of bytes the server will read
// parsing the request header's keys and values, including the request line.
// It does not limit the size of the request body. If zero,
// http.DefaultMaxHeaderBytes (1 << 20 which is 1 MB) is used.
HTTPMaxHeaderBytes int `env:"HTTP_MAX_HEADER_BYTES" envDefault:"0"`
// HTTPReadTimeout is the maximum duration for reading the entire request,
// including the body. Because HTTPReadTimeout does not let Handlers make
// per-request decisions on each request body's acceptable deadline or upload
// rate, most users will prefer to use HTTPReadHeaderTimeout. It is valid
// to use them both. By default, it is "60s".
HTTPReadTimeout time.Duration `env:"HTTP_READ_TIMEOUT" envDefault:"60s"`
// HTTPReadHeaderTimeout is the amount of time allowed to read request headers.
// The connection's read deadline is reset after reading the headers and the
// Handler can decide what is considered too slow for the body. If
// HTTPReadHeaderTimeout is zero, the value of HTTPReadTimeout is used. If
// both are zero, there is no timeout. By default, it is "60s".
HTTPReadHeaderTimeout time.Duration `env:"HTTP_READ_HEADER_TIMEOUT" envDefault:"60s"`
// HTTPWriteTimeout is the maximum duration before timing out writes of the
// response. It is reset whenever a new request's header is read. Like
// HTTPReadTimeout, it does not let Handlers make decisions on a per-request
// basis. By default, it is "60s".
HTTPWriteTimeout time.Duration `env:"HTTP_WRITE_TIMEOUT" envDefault:"60s"`
// HTTPSSLCertPath indicates which path to store the locally trusted SSL
// certificates which are created using "go run . ssl:setup" command. By
// default, it is "./tmp/ssl".
HTTPSSLCertPath string `env:"HTTP_SSL_CERT_PATH" envDefault:"./tmp/ssl"`
// HTTPSSLEnabled indicates if the HTTPS server should be enabled. When
// enabled, please ensure the SSL certificates are created in the
// "HTTPSSLCertPath". By default, it is false.
HTTPSSLEnabled bool `env:"HTTP_SSL_ENABLED" envDefault:"false"`
// HTTPSSLPort indicates which port the HTTPS server should be hosted at.
// By default, it is "3443".
HTTPSSLPort string `env:"HTTP_SSL_PORT" envDefault:"3443"`
// HTTPSessionProvider indicates which store to use for storing the session
// information. By default, it is "cookie".
//
// Available options:
// - cookie
// - redis
HTTPSessionProvider string `env:"HTTP_SESSION_PROVIDER" envDefault:"cookie"`
// HTTPSessionExpiration indicates how long till the session should expire.
// By default, it is 1209600 in seconds.
//
// Note: If the HTTPSessionProvider is "redis", the same value will be used
// to expire the session in Redis.
HTTPSessionExpiration int `env:"HTTP_SESSION_EXPIRATION" envDefault:"1209600"`
// HTTPSessionSecrets indicates the secrets to encrypt the session information.
// By default, it is "".
//
// Note: Multiple values are accepted with comma delimited to allow easier
// secret rotation.
HTTPSessionSecrets [][]byte `env:"HTTP_SESSION_SECRETS,required" envDefault:""`
// HTTPSessionRedisAddr indicates the Redis server to store the session. The
// Redis session store will store the session's information and use cookie to
// store the session ID. By default, it is "localhost:6379".
//
// Note: Please ensure that HTTPSessionProvider is configured to be "redis"
// when using this.
HTTPSessionRedisAddr string `env:"HTTP_SESSION_REDIS_ADDR" envDefault:"localhost:6379"`
// HTTPSessionRedisPassword indicates the password to authenticate with the Redis
// server. By default, it is "".
HTTPSessionRedisPassword string `env:"HTTP_SESSION_REDIS_PASSWORD" envDefault:""`
// HTTPSessionRedisDB indicates the Redis database to use. By default, it is "0".
HTTPSessionRedisDB int `env:"HTTP_SESSION_REDIS_DB" envDefault:"0"`
// HTTPSessionRedisPoolSize indicates how many maximum connections a CPU should
// keep in its connections pool. By default, it is 10.
HTTPSessionRedisPoolSize int `env:"HTTP_SESSION_REDIS_POOL_SIZE" envDefault:"10"`
// HTTPSessionRedisPoolTimeout indicates how long to wait for a connection to
// be returned from the connection pool before returning an error. By default,
// it is "4s".
HTTPSessionRedisPoolTimeout time.Duration `env:"HTTP_SESSION_REDIS_POOL_TIMEOUT" envDefault:"4s"`
// HTTPSessionRedisMaxConnAge indicates how long a connection should be
// kept alive. If it is 0, no connections will be closed based on the age.
// By default, it is 0.
HTTPSessionRedisMaxConnAge time.Duration `env:"HTTP_SESSION_REDIS_MAX_CONN_AGE" envDefault:"0"`
// HTTPSessionRedisMinIdleConns indicates how many minimum idle connections
// should remain in the connection pool at one time. If it is 0, there won't
// be minimum idle connections remained in the connection pool. By default,
// it is 0.
HTTPSessionRedisMinIdleConns int `env:"HTTP_SESSION_REDIS_MIN_IDLE_CONNS" envDefault:"0"`
// HTTPSessionRedisIdleCheckFrequency indicates how frequent the reaper checks
// and closes the idle connections. If it is -1, the idle connections won't be
// closed by the reaper. However, it will still be closed by the client if
// HTTPSessionRedisIdleTimeout is set. By default, it is "1m".
HTTPSessionRedisIdleCheckFrequency time.Duration `env:"HTTP_SESSION_REDIS_IDLE_CHECK_FREQUENCY" envDefault:"1m"`
// HTTPSessionRedisIdleTimeout indicates how long the idle connection should
// be kept around. If it is 0, the idle connections won't be closed. By
// default, it is "5m".
HTTPSessionRedisIdleTimeout time.Duration `env:"HTTP_SESSION_REDIS_IDLE_TIMEOUT" envDefault:"5m"`
// HTTPSessionCookieName indicates the cookie name to use to store the session.
// By default, it is "_session".
HTTPSessionCookieName string `env:"HTTP_SESSION_COOKIE_NAME" envDefault:"_session"`
// HTTPSessionCookieDomain indicates which domain the session cookie can be sent to.
// By default, it is "localhost".
HTTPSessionCookieDomain string `env:"HTTP_SESSION_COOKIE_DOMAIN" envDefault:"localhost"`
// HTTPSessionCookieHTTPOnly indicates if the session cookie is only accessible
// via HTTP request and not Javascript `Document.cookie` API.
// By default, it is true.
HTTPSessionCookieHTTPOnly bool `env:"HTTP_SESSION_COOKIE_HTTP_ONLY" envDefault:"true"`
// HTTPSessionCookiePath indicates which URL path the session cookie can be
// sent to. By default, it is "/".
HTTPSessionCookiePath string `env:"HTTP_SESSION_COOKIE_PATH" envDefault:"/"`
// HTTPSessionCookieSameSite indicates if the session cookie can be sent with
// cross-site requests. By default, it is 1.
//
// Available options:
// - SameSiteDefaultMode = 1
// - SameSiteLaxMode = 2
// - SameSiteStrictMode = 3
// - SameSiteNoneMode = 4
HTTPSessionCookieSameSite http.SameSite `env:"HTTP_SESSION_COOKIE_SAME_SITE" envDefault:"1"`
// HTTPSessionCookieSecure indicates if the session cookie can only be sent
// with HTTPS request. By default, it is false.
HTTPSessionCookieSecure bool `env:"HTTP_SESSION_COOKIE_SECURE" envDefault:"false"`
// HTTPAllowedHosts indicates a list of fully qualified domain names that are
// allowed to be processed by the HTTP server. By default, it is "" which
// allows all domain names.
HTTPAllowedHosts []string `env:"HTTP_ALLOWED_HOSTS" envDefault:""`
// HTTPCSRFCookieDomain indicates which domain the CSRF cookie can be sent
// to. By default, it is "localhost".
HTTPCSRFCookieDomain string `env:"HTTP_CSRF_COOKIE_DOMAIN" envDefault:"localhost"`
// HTTPCSRFCookieName indicates the cookie name to use to store the CSRF
// token. By default, it is "_csrf_token".
HTTPCSRFCookieName string `env:"HTTP_CSRF_COOKIE_NAME" envDefault:"_csrf_token"`
// HTTPCSRFCookieHTTPOnly indicates if the CSRF cookie is only accessible via
// HTTP request and not Javascript `Document.cookie` API. By default, it is true.
HTTPCSRFCookieHTTPOnly bool `env:"HTTP_CSRF_COOKIE_HTTP_ONLY" envDefault:"true"`
// HTTPCSRFCookieMaxAge indicates how long till the CSRF cookie should expire.
// By default, it is 0 which gets deleted if the browser is closed.
HTTPCSRFCookieMaxAge int `env:"HTTP_CSRF_COOKIE_MAX_AGE" envDefault:"0"`
// HTTPCSRFCookiePath indicates which URL path the CSRF cookie can be sent to.
// By default, it is "/".
HTTPCSRFCookiePath string `env:"HTTP_CSRF_COOKIE_PATH" envDefault:"/"`
// HTTPCSRFCookieSameSite indicates if the CSRF cookie can be sent with
// cross-site requests. By default, it is 1.
//
// Available options:
// - SameSiteDefaultMode = 1
// - SameSiteLaxMode = 2
// - SameSiteStrictMode = 3
// - SameSiteNoneMode = 4
HTTPCSRFCookieSameSite http.SameSite `env:"HTTP_CSRF_COOKIE_SAME_SITE" envDefault:"1"`
// HTTPCSRFCookieSecure indicates if the session cookie can only be sent
// with HTTPS request. By default, it is false.
HTTPCSRFCookieSecure bool `env:"HTTP_CSRF_COOKIE_SECURE" envDefault:"false"`
// HTTPCSRFAuthenticityFieldName indicates the POST form field name that
// contains the authenticity token for CSRF check. By default, it is
// "authenticity_token".
HTTPCSRFAuthenticityFieldName string `env:"HTTP_CSRF_AUTHENTICITY_FIELD_NAME" envDefault:"authenticity_token"`
// HTTPCSRFRequestHeader indicates the HTTP header that contains the
// authenticity token for CSRF check. By default, it is "X-CSRF-Token".
HTTPCSRFRequestHeader string `env:"HTTP_CSRF_REQUEST_HEADER" envDefault:"X-CSRF-Token"`
// HTTPCSRFSecret indicates the secret to encrypt the CSRF cookie. By
// default, it is "".
HTTPCSRFSecret []byte `env:"HTTP_CSRF_SECRET,required" envDefault:""`
// HTTPSSLRedirect indicates if the HTTP server should automatically
// redirect HTTP requests to HTTPS. By default, it is false.
HTTPSSLRedirect bool `env:"HTTP_SSL_REDIRECT" envDefault:"false"`
// HTTPSSLTemporaryRedirect indicates if the HTTPSSLRedirect should
// use 302 temporary redirect. By default, it is false which uses 301
// permanent redirect.
HTTPSSLTemporaryRedirect bool `env:"HTTP_SSL_TEMPORARY_REDIRECT" envDefault:"false"`
// HTTPSSLHost indicates the host name to redirect to when redirecting HTTP
// requests to HTTPS. By default, it is "" which uses the same host.
HTTPSSLHost string `env:"HTTP_SSL_HOST" envDefault:""`
// HTTPSSLProxyHeaders indicates the SSL proxy headers to verify when the
// server is running behind a proxy like Heroku to ensure the request comes
// through the SSL proxy server. By default, it is "X-Forwarded-Proto:https".
HTTPSSLProxyHeaders map[string]string `env:"HTTP_SSL_PROXY_HEADERS" envDefault:"X-Forwarded-Proto:https"`
// HTTPSTSSeconds indicates the max-age of the "Strict-Transport-Security"
// response header. By default, it is 0 which would NOT include the header.
HTTPSTSSeconds int64 `env:"HTTP_STS_SECONDS" envDefault:"0"`
// HTTPSTSIncludeSubdomains indicates if "includeSubdomains" should be
// appended to the "Strict-Transport-Security" response header. By default,
// it is false.
HTTPSTSIncludeSubdomains bool `env:"HTTP_STS_INCLUDE_SUBDOMAINS" envDefault:"false"`
// HTTPFrameDeny indicates if the page cannot be contained in an iframe by
// setting the "X-Frame-Options: DENY" response header. By default, it is false.
HTTPFrameDeny bool `env:"HTTP_FRAME_DENY" envDefault:"false"`
// HTTPCustomFrameOptionsValue indicates the custom value to be set for the
// "X-Frame-Options" response header. By default, it is "" which doesn't
// override the "DENY" value.
HTTPCustomFrameOptionsValue string `env:"HTTP_CUSTOM_FRAME_OPTIONS_VALUE" envDefault:""`
// HTTPContentTypeNosniff indicates if the "X-Content-Type-Options: nosniff"
// response header should be set. By default, it is false.
HTTPContentTypeNosniff bool `env:"HTTP_CONTENT_TYPE_NOSNIFF" envDefault:"false"`
// HTTPBrowserXSSFilter indicates if the "X-XSS-Protection: 1; mode=block"
// response header should be set. By default, it is false.
HTTPBrowserXSSFilter bool `env:"HTTP_BROWSER_XSS_FILTER" envDefault:"false"`
// HTTPContentSecurityPolicy indicates the custom value to be set for
// "Content-Security-Policy" response header. By default, it is "".
HTTPContentSecurityPolicy string `env:"HTTP_CONTENT_SECURITY_POLICY" envDefault:""`
// HTTPReferrerPolicy indicates the referrer information that is sent in the
// "Referrer" header to be included with the requests made. By default, it is "".
HTTPReferrerPolicy string `env:"HTTP_REFERRER_POLICY" envDefault:""`
// HTTPIENoOpen indicates if it should prevent Internet Explorer from
// executing downloads in your site’s context. By default, it is false.
HTTPIENoOpen bool `env:"HTTP_IE_NO_OPEN" envDefault:"false"`
// I18nDefaultLocale indicates the default locale to use for translations in
// handlers/mailers/views when the desire locale is not found. By default, it is "en".
//
// Note: If the locale is "en", the translation file would be "pkg/locales/en.yml".
I18nDefaultLocale string `env:"I18N_DEFAULT_LOCALE" envDefault:"en"`
// MailerSMTPAddr indicates the SMTP server hostname that sends out email.
// By default, it is "".
MailerSMTPAddr string `env:"MAILER_SMTP_ADDR" envDefault:""`
// MailerSMTPPlainAuthIdentity indicates the SMTP plain auth identity to use
// for sending out email. By default, it is "".
//
// Note: This is normally not needed.
MailerSMTPPlainAuthIdentity string `env:"MAILER_SMTP_PLAIN_AUTH_IDENTITY" envDefault:""`
// MailerSMTPPlainAuthUsername indicates the SMTP plain auth username to use
// for sending out email. By default, it is "".
MailerSMTPPlainAuthUsername string `env:"MAILER_SMTP_PLAIN_AUTH_USERNAME" envDefault:""`
// MailerSMTPPlainAuthPassword indicates the SMTP plain auth password to use
// for sending out email. By default, it is "".
MailerSMTPPlainAuthPassword string `env:"MAILER_SMTP_PLAIN_AUTH_PASSWORD" envDefault:""`
// MailerSMTPPlainAuthHost indicates the SMTP plain auth server host to use for
// sending out email. By default, it is "".
MailerSMTPPlainAuthHost string `env:"MAILER_SMTP_PLAIN_AUTH_HOST" envDefault:""`
// MailerPreviewPath indicates the path for previewing the mailers. By default,
// it is "/appy/mailers".
MailerPreviewPath string `env:"MAILER_PREVIEW_PATH" envDefault:"/appy/mailers"`
// WorkerRedisSentinelAddrs indicates the Redis sentinel hosts to connect to.
// By default, it is "".
//
// Note: If this is configured to non-empty string, both WorkerRedisAddr or
// WorkerRedisURL will be ignored.
WorkerRedisSentinelAddrs []string `env:"WORKER_REDIS_SENTINEL_ADDRS" envDefault:""`
// WorkerRedisSentinelDB indicates the Redis DB to connect in the sentinel hosts.
// By default, it is 0.
WorkerRedisSentinelDB int `env:"WORKER_REDIS_SENTINEL_DB" envDefault:"0"`
// WorkerRedisSentinelMasterName indicates the Redis sentinel master name to
// connect to. By default, it is "".
WorkerRedisSentinelMasterName string `env:"WORKER_REDIS_SENTINEL_MASTER_NAME" envDefault:""`
// WorkerRedisSentinelPassword indicates the password used to connect to the
// sentinel hosts. By default, it is "".
WorkerRedisSentinelPassword string `env:"WORKER_REDIS_SENTINEL_PASSWORD" envDefault:""`
// WorkerRedisSentinelPoolSize indicates the connection pool size for the
// sentinel hosts. By default, it is 25.
WorkerRedisSentinelPoolSize int `env:"WORKER_REDIS_SENTINEL_POOL_SIZE" envDefault:"25"`
// WorkerRedisAddr indicates the Redis hostname to connect. By default, it is
// "localhost:6379".
WorkerRedisAddr string `env:"WORKER_REDIS_ADDR" envDefault:"localhost:6379"`
// WorkerRedisDB indicates the Redis DB to connect. By default, it is 0.
WorkerRedisDB int `env:"WORKER_REDIS_DB" envDefault:"0"`
// WorkerRedisPassword indicates the password used to connect to the Redis
// server. By default, it is "".
WorkerRedisPassword string `env:"WORKER_REDIS_PASSWORD" envDefault:""`
// WorkerRedisPoolSize indicates the connection pool size for the Redis
// server. By default, it is 25.
WorkerRedisPoolSize int `env:"WORKER_REDIS_POOL_SIZE" envDefault:"25"`
// WorkerRedisURL indicates the Redis URL to connect to. By default, it is "".
WorkerRedisURL string `env:"WORKER_REDIS_URL" envDefault:""`
// WorkerConcurrency indicates how many background jobs should be processed
// at one time. By default, it is 25.
WorkerConcurrency int `env:"WORKER_CONCURRENCY" envDefault:"25"`
// WorkerQueues indicates how many queues to process and the number followed
// is the priority. By default, it is "default:10".
//
// If the value is "critical:6,default:3,low:1", this will allow the worker
// to process 3 queues as below:
// - tasks in critical queue will be processed 60% of the time
// - tasks in default queue will be processed 30% of the time
// - tasks in low queue will be processed 10% of the time
WorkerQueues map[string]int `env:"WORKER_QUEUES" envDefault:"default:10"`
// WorkerStrictPriority indicates if the worker should strictly follow the
// priority to process the background jobs. By default, it is false.
//
// If the value is true, the queues with higher priority is always processed
// first, and queues with lower priority is processed only if all the other
// queues with higher priorities are empty.
WorkerStrictPriority bool `env:"WORKER_STRICT_PRIORITY" envDefault:"false"`
// WorkerGracefulShutdownTimeout indicates how long to wait for the worker
// to shut down so that any active job processing is not interrupted by
// SIGTERM/SIGINT. By default, it is "30s".
WorkerGracefulShutdownTimeout time.Duration `env:"WORKER_GRACEFUL_SHUTDOWN_TIMEOUT" envDefault:"30s"`
// contains filtered or unexported fields
}
Config defines the application settings.
func NewConfig ¶
func NewConfig(asset AssetManager, logger *Logger) *Config
NewConfig initializes Config instance.
func (*Config) IsProtectedEnv ¶
IsProtectedEnv is used to protect the app from being destroyed by a command accidentally.
type I18n ¶
type I18n struct {
// contains filtered or unexported fields
}
I18n manages the application translations.
type NBool ¶
NBool is a nullable bool. If the value is zero, it equals to null in JSON and NULL in SQL.
type NFloat64 ¶
NFloat64 is a nullable float64. If the value is zero, it equals to null in JSON and NULL in SQL.
type NInt64 ¶
NInt64 is a nullable int64. If the value is zero, it equals to null in JSON and NULL in SQL.
type NString ¶
NString is a nullable string. If the value is zero, it equals to null in JSON and NULL in SQL.
type NTime ¶
NTime is a nullable time. If the value is zero, it equals to null in JSON and NULL in SQL.
type ZBool ¶
ZBool is a nullable bool. If the value is zero, it equals to false in JSON and NULL in SQL.
type ZFloat64 ¶
ZFloat64 is a nullable float64. If the value is zero, it equals to 0 in JSON and NULL in SQL.
type ZInt64 ¶
ZInt64 is a nullable int64. If the value is zero, it equals to 0 in JSON and NULL in SQL.