Documentation
¶
Index ¶
- Variables
- func Compatible() *tls.Config
- func Global(ctx context.Context, key interface{}) interface{}
- func Modern() *tls.Config
- func Restricted() *tls.Config
- func Route(ctx context.Context, name string, params ...interface{}) string
- func SafeRedirectPath(p string) string
- func StartHTTPSRedirectServer(addr string) error
- type App
- func (app *App) Address(addr string) *App
- func (app *App) Clone() *App
- func (app *App) Config(config AppConfig) *App
- func (app *App) Global(key interface{}) interface{}
- func (app *App) Globals(globals Globals) *App
- func (app *App) GracefulShutdown() *GracefulShutdown
- func (app *App) Handler(h http.Handler) *App
- func (app *App) ListenAndServe() error
- func (app *App) ParseConfig(data []byte) *App
- func (app *App) ParseConfigFile(filename string) *App
- func (app *App) ReusePort(enable bool) *App
- func (app *App) Route(name string, params ...interface{}) string
- func (app *App) Routes(routes Routes) *App
- func (app *App) SelfSign(s SelfSign) *App
- func (app *App) Serve(l net.Listener) error
- func (app *App) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (app *App) Server() *http.Server
- func (app *App) Shutdown(ctx context.Context) error
- func (app *App) TCPKeepAlive(d time.Duration) *App
- func (app *App) TLS(certFile, keyFile string) *App
- func (app *App) Template() *Template
- func (app *App) TemplateFunc(name string, f interface{}) *App
- func (app *App) TemplateFuncs(funcs ...template.FuncMap) *App
- type AppConfig
- type Apps
- func (apps *Apps) Config(config AppsConfig) *Apps
- func (apps *Apps) GracefulShutdown() *GracefulShutdown
- func (apps *Apps) ListenAndServe() error
- func (apps *Apps) ParseConfig(data []byte) *Apps
- func (apps *Apps) ParseConfigFile(filename string) *Apps
- func (apps *Apps) Shutdown(ctx context.Context) error
- type AppsConfig
- type Context
- func (ctx *Context) AddHeader(key, value string)
- func (ctx *Context) AddHeaderIfNotExists(key, value string)
- func (ctx *Context) Bytes(b []byte) error
- func (ctx *Context) CopyFrom(src io.Reader) error
- func (ctx *Context) Deadline() (deadline time.Time, ok bool)
- func (ctx *Context) DelHeader(key string)
- func (ctx *Context) Done() <-chan struct{}
- func (ctx *Context) ETag(enable bool) *Context
- func (ctx *Context) Err() error
- func (ctx *Context) Error(error string) error
- func (ctx *Context) File(name string) error
- func (ctx *Context) FormFileHeader(key string) (*multipart.FileHeader, error)
- func (ctx *Context) FormFileHeaderNotEmpty(key string) (*multipart.FileHeader, error)
- func (ctx *Context) FormFileNotEmpty(key string) (multipart.File, *multipart.FileHeader, error)
- func (ctx *Context) FormValueFloat32(key string) float32
- func (ctx *Context) FormValueFloat64(key string) float64
- func (ctx *Context) FormValueInt(key string) int
- func (ctx *Context) FormValueInt64(key string) int64
- func (ctx *Context) FormValueTrimSpace(key string) string
- func (ctx *Context) FormValueTrimSpaceComma(key string) string
- func (ctx *Context) Global(key interface{}) interface{}
- func (ctx *Context) HTML(data string) error
- func (ctx *Context) Handle(h http.Handler) error
- func (ctx *Context) JSON(data interface{}) error
- func (ctx *Context) NoContent() error
- func (ctx *Context) NotFound() error
- func (ctx *Context) Param(name string, value interface{}) *Param
- func (ctx *Context) PostFormValueFloat32(key string) float32
- func (ctx *Context) PostFormValueFloat64(key string) float64
- func (ctx *Context) PostFormValueInt(key string) int
- func (ctx *Context) PostFormValueInt64(key string) int64
- func (ctx *Context) PostFormValueTrimSpace(key string) string
- func (ctx *Context) PostFormValueTrimSpaceComma(key string) string
- func (ctx *Context) Redirect(url string, params ...interface{}) error
- func (ctx *Context) RedirectBack(fallback string) error
- func (ctx *Context) RedirectBackToGet() error
- func (ctx *Context) RedirectTo(name string, params ...interface{}) error
- func (ctx *Context) RedirectToGet() error
- func (ctx *Context) ResponseWriter() http.ResponseWriter
- func (ctx *Context) Route(name string, params ...interface{}) string
- func (ctx *Context) SafeRedirect(url string, params ...interface{}) error
- func (ctx *Context) SafeRedirectBack(fallback string) error
- func (ctx *Context) SetHeader(key, value string)
- func (ctx *Context) Status(code int) *Context
- func (ctx *Context) StatusText() error
- func (ctx *Context) String(format string, a ...interface{}) error
- func (ctx *Context) Value(key interface{}) interface{}
- func (ctx *Context) View(name string, data interface{}) error
- func (ctx *Context) WithContext(nctx context.Context) *Context
- func (ctx Context) WithRequest(r *http.Request) *Context
- func (ctx Context) WithResponseWriter(w http.ResponseWriter) *Context
- func (ctx *Context) WithValue(key interface{}, val interface{}) *Context
- type ErrRouteNotFound
- type ErrTemplateDuplicate
- type ErrTemplateNotFound
- type Globals
- type GracefulShutdown
- func (gs *GracefulShutdown) Notify(fn func()) *GracefulShutdown
- func (gs *GracefulShutdown) Timeout(d time.Duration) *GracefulShutdown
- func (gs *GracefulShutdown) UnmarshalJSON(b []byte) error
- func (gs *GracefulShutdown) UnmarshalYAML(unmarshal func(interface{}) error) error
- func (gs *GracefulShutdown) Wait(d time.Duration) *GracefulShutdown
- type HTTPSRedirect
- type Handler
- type Param
- type Routes
- type SelfSign
- type TLS
- type Template
- func (tp *Template) Component(ts ...*template.Template) *Template
- func (tp *Template) Config(cfg TemplateConfig) *Template
- func (tp *Template) Delims(left, right string) *Template
- func (tp *Template) Dir(path string) *Template
- func (tp *Template) FS(fs fs.FS) *Template
- func (tp *Template) Func(name string, f interface{}) *Template
- func (tp *Template) Funcs(funcs ...template.FuncMap) *Template
- func (tp *Template) Minify() *Template
- func (tp *Template) MinifyWith(cfg TemplateMinifyConfig) *Template
- func (tp *Template) Parse(name string, text string) *Template
- func (tp *Template) ParseConfig(data []byte) *Template
- func (tp *Template) ParseConfigFile(filename string) *Template
- func (tp *Template) ParseFiles(name string, filenames ...string) *Template
- func (tp *Template) ParseGlob(name string, pattern string) *Template
- func (tp *Template) Preload(filename ...string) *Template
- func (tp *Template) Root(name string) *Template
- type TemplateConfig
- type TemplateMinifyConfig
Constants ¶
This section is empty.
Variables ¶
var (
ErrAppNotFound = errors.New("hime: app not found")
)
Errors
Functions ¶
func Compatible ¶ added in v0.10.0
Compatible is the tls config for compatible mode
func Restricted ¶ added in v0.10.0
Restricted is the tls config for restricted mode
func SafeRedirectPath ¶ added in v0.0.17
SafeRedirectPath filters domain out from path
func StartHTTPSRedirectServer ¶ added in v0.10.0
StartHTTPSRedirectServer starts http to https redirect server
Types ¶
type App ¶
type App struct { ETag bool // contains filtered or unexported fields }
App is the hime app
func (*App) Config ¶ added in v0.4.0
Config merges config into app's config
Example:
globals:
data1: test
routes:
index: / about: /about
templates:
- dir: view root: layout delims: ["{{", "}}"] minify: true preload:
- comp/comp1.tmpl
- comp/comp2.tmpl list: main.tmpl:
- main.tmpl
- _layout.tmpl about.tmpl: [about.tmpl, _layout.tmpl]
server:
readTimeout: 10s readHeaderTimeout: 5s writeTimeout: 5s idleTimeout: 30s gracefulShutdown: timeout: 1m wait: 5s
func (*App) Global ¶ added in v0.0.11
func (app *App) Global(key interface{}) interface{}
Global gets value from global storage
func (*App) GracefulShutdown ¶
func (app *App) GracefulShutdown() *GracefulShutdown
GracefulShutdown changes server to graceful shutdown mode
func (*App) ListenAndServe ¶
ListenAndServe starts web server
func (*App) ParseConfig ¶ added in v0.4.0
ParseConfig parses config data
func (*App) ParseConfigFile ¶ added in v0.4.0
ParseConfigFile parses config from file
func (*App) ReusePort ¶ added in v0.10.0
ReusePort uses SO_REUSEPORT when create listener using app.ListenAndServe
func (*App) ServeHTTP ¶ added in v0.2.0
func (app *App) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (*App) TCPKeepAlive ¶ added in v0.10.0
TCPKeepAlive sets tcp keep-alive interval when using app.ListenAndServe
func (*App) TemplateFunc ¶ added in v0.4.2
TemplateFunc registers an app's level template func
type AppConfig ¶ added in v0.4.2
type AppConfig struct { Globals Globals `yaml:"globals" json:"globals"` Routes Routes `yaml:"routes" json:"routes"` Templates []TemplateConfig `yaml:"templates" json:"templates"` Server struct { Addr string `yaml:"addr" json:"addr"` ReadTimeout string `yaml:"readTimeout" json:"readTimeout"` ReadHeaderTimeout string `yaml:"readHeaderTimeout" json:"readHeaderTimeout"` WriteTimeout string `yaml:"writeTimeout" json:"writeTimeout"` IdleTimeout string `yaml:"idleTimeout" json:"idleTimeout"` ReusePort *bool `yaml:"reusePort" json:"reusePort"` TCPKeepAlive string `yaml:"tcpKeepAlive" json:"tcpKeepAlive"` GracefulShutdown *GracefulShutdown `yaml:"gracefulShutdown" json:"gracefulShutdown"` TLS *TLS `yaml:"tls" json:"tls"` HTTPSRedirect *HTTPSRedirect `yaml:"httpsRedirect" json:"httpsRedirect"` } `yaml:"server" json:"server"` }
AppConfig is hime app's config
type Apps ¶ added in v0.5.0
type Apps struct {
// contains filtered or unexported fields
}
Apps is the collection of App to start together
func (*Apps) Config ¶ added in v0.10.0
func (apps *Apps) Config(config AppsConfig) *Apps
Config merges config into apps config
func (*Apps) GracefulShutdown ¶ added in v0.5.0
func (apps *Apps) GracefulShutdown() *GracefulShutdown
GracefulShutdown changes apps to graceful shutdown mode
func (*Apps) ListenAndServe ¶ added in v0.5.0
ListenAndServe starts web servers
func (*Apps) ParseConfig ¶ added in v0.10.0
ParseConfig parses config data
func (*Apps) ParseConfigFile ¶ added in v0.10.0
ParseConfigFile parses config from file
type AppsConfig ¶ added in v0.10.0
type AppsConfig struct { GracefulShutdown *GracefulShutdown `yaml:"gracefulShutdown" json:"gracefulShutdown"` HTTPSRedirect *HTTPSRedirect `yaml:"httpsRedirect" json:"httpsRedirect"` }
AppsConfig is the hime multiple apps config
type Context ¶
Context is hime context
func NewAppContext ¶ added in v0.10.0
NewAppContext creates new hime's context with given app
func NewContext ¶ added in v0.0.15
func NewContext(w http.ResponseWriter, r *http.Request) *Context
NewContext creates new hime's context
func (*Context) AddHeaderIfNotExists ¶ added in v0.10.0
AddHeaderIfNotExists adds a header to response if not exists
func (*Context) Done ¶ added in v0.10.0
func (ctx *Context) Done() <-chan struct{}
Done implements context.Context
func (*Context) FormFileHeader ¶ added in v0.10.0
func (ctx *Context) FormFileHeader(key string) (*multipart.FileHeader, error)
FormFileHeader returns file header for given key without open file
func (*Context) FormFileHeaderNotEmpty ¶ added in v0.10.0
func (ctx *Context) FormFileHeaderNotEmpty(key string) (*multipart.FileHeader, error)
FormFileHeaderNotEmpty returns file header if not empty, or http.ErrMissingFile if file is empty
This function will be deprecated after drop go1.10 support, since go1.11 bring back old behavior
func (*Context) FormFileNotEmpty ¶ added in v0.0.18
FormFileNotEmpty returns file from r.FormFile only when file size is not empty, or return http.ErrMissingFile if file is empty
func (*Context) FormValueFloat32 ¶ added in v0.0.17
FormValueFloat32 converts form value to float32
func (*Context) FormValueFloat64 ¶ added in v0.0.17
FormValueFloat64 converts form value to float64
func (*Context) FormValueInt ¶ added in v0.0.17
FormValueInt converts form value to int
func (*Context) FormValueInt64 ¶ added in v0.0.17
FormValueInt64 converts form value to int64
func (*Context) FormValueTrimSpace ¶ added in v0.0.17
FormValueTrimSpace trims space from form value
func (*Context) FormValueTrimSpaceComma ¶ added in v0.0.17
FormValueTrimSpaceComma trims space and remove comma from form value
func (*Context) Global ¶ added in v0.0.11
func (ctx *Context) Global(key interface{}) interface{}
Global returns global value
func (*Context) NoContent ¶ added in v0.0.8
NoContent writes http.StatusNoContent into response writer
func (*Context) PostFormValueFloat32 ¶ added in v0.0.17
PostFormValueFloat32 converts post form value to flost32
func (*Context) PostFormValueFloat64 ¶ added in v0.0.17
PostFormValueFloat64 converts post form value to flost64
func (*Context) PostFormValueInt ¶ added in v0.0.17
PostFormValueInt converts post form value to int
func (*Context) PostFormValueInt64 ¶ added in v0.0.17
PostFormValueInt64 converts post form value to int64
func (*Context) PostFormValueTrimSpace ¶ added in v0.0.17
PostFormValueTrimSpace trims space from post form value
func (*Context) PostFormValueTrimSpaceComma ¶ added in v0.0.17
PostFormValueTrimSpaceComma trims space and remove comma from post form value
func (*Context) RedirectBack ¶ added in v0.0.25
RedirectBack redirects to referer or fallback if referer not exists
func (*Context) RedirectBackToGet ¶ added in v0.0.27
RedirectBackToGet redirects to referer or fallback with same url
func (*Context) RedirectTo ¶
RedirectTo redirects to route name
func (*Context) RedirectToGet ¶ added in v0.0.14
RedirectToGet redirects to same url back to Get
func (*Context) ResponseWriter ¶
func (ctx *Context) ResponseWriter() http.ResponseWriter
ResponseWriter returns response writer
func (*Context) SafeRedirect ¶
SafeRedirect extracts only path from url then redirect
func (*Context) SafeRedirectBack ¶ added in v0.0.25
SafeRedirectBack safe redirects to referer
func (*Context) StatusText ¶ added in v0.0.8
StatusText writes status text from seted status code tnto response writer
func (*Context) Value ¶ added in v0.10.0
func (ctx *Context) Value(key interface{}) interface{}
Value implements context.Context
func (*Context) WithContext ¶ added in v0.0.24
WithContext returns new context with new request with given context
func (Context) WithRequest ¶ added in v0.0.26
WithRequest returns new context with given request
func (Context) WithResponseWriter ¶ added in v0.0.26
func (ctx Context) WithResponseWriter(w http.ResponseWriter) *Context
WithResponseWriter returns new context with given response writer
type ErrRouteNotFound ¶ added in v0.0.15
type ErrRouteNotFound struct {
Route string
}
ErrRouteNotFound is the error for route not found
func (*ErrRouteNotFound) Error ¶ added in v0.0.15
func (err *ErrRouteNotFound) Error() string
type ErrTemplateDuplicate ¶ added in v0.0.15
type ErrTemplateDuplicate struct {
Name string
}
ErrTemplateDuplicate is the error for template duplicate
func (*ErrTemplateDuplicate) Error ¶ added in v0.0.15
func (err *ErrTemplateDuplicate) Error() string
type ErrTemplateNotFound ¶ added in v0.0.15
type ErrTemplateNotFound struct {
Name string
}
ErrTemplateNotFound is the error for template not found
func (*ErrTemplateNotFound) Error ¶ added in v0.0.15
func (err *ErrTemplateNotFound) Error() string
type Globals ¶ added in v0.0.11
type Globals map[interface{}]interface{}
Globals is the global const map
type GracefulShutdown ¶ added in v0.2.0
type GracefulShutdown struct {
// contains filtered or unexported fields
}
GracefulShutdown is the graceful shutdown configure
func (*GracefulShutdown) Notify ¶ added in v0.2.0
func (gs *GracefulShutdown) Notify(fn func()) *GracefulShutdown
Notify calls fn when receive terminate signal from os
func (*GracefulShutdown) Timeout ¶ added in v0.2.0
func (gs *GracefulShutdown) Timeout(d time.Duration) *GracefulShutdown
Timeout sets shutdown timeout for graceful shutdown, set to 0 to disable timeout
default is 0
func (*GracefulShutdown) UnmarshalJSON ¶ added in v0.10.0
func (gs *GracefulShutdown) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler
func (*GracefulShutdown) UnmarshalYAML ¶ added in v0.10.0
func (gs *GracefulShutdown) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements yaml.Unmarshaler
func (*GracefulShutdown) Wait ¶ added in v0.2.0
func (gs *GracefulShutdown) Wait(d time.Duration) *GracefulShutdown
Wait sets wait time before shutdown
type HTTPSRedirect ¶ added in v0.10.0
type HTTPSRedirect struct {
Addr string `json:"addr"`
}
HTTPSRedirect type
func (*HTTPSRedirect) ServeHTTP ¶ added in v0.10.0
func (s *HTTPSRedirect) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (HTTPSRedirect) Server ¶ added in v0.10.0
func (s HTTPSRedirect) Server() *http.Server
Server generates https redirect server
type Param ¶ added in v0.0.16
type Param struct { Name string Value interface{} }
Param is the query param when redirect
type SelfSign ¶ added in v0.10.0
type SelfSign struct { Key struct { Algo string `yaml:"algo" json:"algo"` Size int `yaml:"size" json:"size"` } `yaml:"key" json:"key"` CN string `yaml:"cn" json:"cn"` Hosts []string `yaml:"host" json:"host"` }
SelfSign type
type TLS ¶ added in v0.10.0
type TLS struct { SelfSign *SelfSign `yaml:"selfSign" json:"selfSign"` CertFile string `yaml:"certFile" json:"certFile"` KeyFile string `yaml:"keyFile" json:"keyFile"` Profile string `yaml:"profile" json:"profile"` MinVersion string `yaml:"minVersion" json:"minVersion"` MaxVersion string `yaml:"maxVersion" json:"maxVersion"` Curves []string `yaml:"curves" json:"curves"` }
TLS type
type Template ¶ added in v0.3.0
type Template struct {
// contains filtered or unexported fields
}
Template is template loader
func (*Template) Config ¶ added in v0.4.2
func (tp *Template) Config(cfg TemplateConfig) *Template
Config loads template config
func (*Template) MinifyWith ¶ added in v1.0.1
func (tp *Template) MinifyWith(cfg TemplateMinifyConfig) *Template
MinifyWith enables minify with custom options
func (*Template) ParseConfig ¶ added in v0.4.2
ParseConfig parses template config data
func (*Template) ParseConfigFile ¶ added in v0.4.2
ParseConfigFile parses template config from file
func (*Template) ParseFiles ¶ added in v0.10.0
ParseFiles loads template from file
type TemplateConfig ¶ added in v0.4.2
type TemplateConfig struct { Dir string `yaml:"dir" json:"dir"` Root string `yaml:"root" json:"root"` Minify bool `yaml:"minify" json:"minify"` Preload []string `yaml:"preload" json:"preload"` List map[string][]string `yaml:"list" json:"list"` Delims []string `yaml:"delims" json:"delims"` }
TemplateConfig is template config
type TemplateMinifyConfig ¶ added in v1.0.1
type TemplateMinifyConfig struct { HTML minify.Minifier CSS minify.Minifier JS minify.Minifier }