Documentation ¶
Index ¶
- Constants
- func AddLogOutput(w interface{}, key, value string) error
- func ENUM(values ...string) []string
- func ErrorFromHttpResponseBody(r io.ReadCloser) (error, error)
- func ExecuteHandler(handler Handler, method string, expectedStatus int, requestBody []byte, ...)
- func ExecuteHandlerWithGzipRequestAndResponse(handler Handler, method string, expectedStatus int, requestBody []byte, ...)
- func ExecuteHandlerWithGzipResponse(handler Handler, method string, expectedStatus int, requestBody []byte, ...)
- func GetAsBool(key string, r *http.Request) *bool
- func GetAsBoolFromContext(key string, ctx context.Context) *bool
- func GetAsFloat32(key string, r *http.Request) *float32
- func GetAsFloat32FromContext(key string, ctx context.Context) *float32
- func GetAsFloat64(key string, r *http.Request) *float64
- func GetAsFloat64FromContext(key string, ctx context.Context) *float64
- func GetAsInt(key string, r *http.Request) *int
- func GetAsInt32(key string, r *http.Request) *int32
- func GetAsInt32FromContext(key string, ctx context.Context) *int32
- func GetAsInt64(key string, r *http.Request) *int64
- func GetAsInt64FromContext(key string, ctx context.Context) *int64
- func GetAsIntFromContext(key string, ctx context.Context) *int
- func GetAsString(key string, r *http.Request) *string
- func GetAsStringFromContext(key string, ctx context.Context) *string
- func GetAsTime(key string, r *http.Request) *time.Time
- func GetAsTimeFromContext(key string, ctx context.Context) *time.Time
- func GzipDecodeRequestBody(r *http.Request, model interface{}) error
- func GzipDecodeResponseBody(res *http.Response) ([]byte, error)
- func GzipEncodeRequestBody(body []byte) (io.ReadCloser, error)
- func HandleMetrics(metrics map[string]interface{}, method string, status int, uri string, ...) error
- func ReaderHelper(header http.Header, body io.ReadCloser) (io.Reader, error)
- func RequireHTTPBodyAndHeader(t *testing.T, handler http.HandlerFunc, method string, url string, ...)
- func RequireHTTPBodyAndNotHeader(t *testing.T, handler http.HandlerFunc, method string, url string, ...)
- func RequireHTTPBodyJSONEq(t *testing.T, handlerFunc http.HandlerFunc, method string, url string, ...)
- type ContextKey
- type Handler
- type HandlerFunc
- type HandlerFuncWithModel
- type HandlerOption
- func WithAutomaticCacheUpdates(interval time.Duration, skipMiddleware *string) HandlerOption
- func WithCache(maxAge time.Duration) HandlerOption
- func WithDelete(h HandlerFunc) HandlerOption
- func WithDeleteModel(m interface{}, h HandlerFuncWithModel) HandlerOption
- func WithGet(h HandlerFunc) HandlerOption
- func WithGetModel(m interface{}, h HandlerFuncWithModel) HandlerOption
- func WithMiddlewares(m ...Middleware) HandlerOption
- func WithOptionalGet(r R) HandlerOption
- func WithPost(h HandlerFunc) HandlerOption
- func WithPostModel(m interface{}, h HandlerFuncWithModel) HandlerOption
- func WithPreProcess(p PreProcessFunc) HandlerOption
- func WithRequiredGet(r R) HandlerOption
- func WithTimeout(timeout time.Duration, timeoutMessage string) HandlerOption
- type HttpResponseErrorModel
- type LoggingResponseWriter
- func (lrw *LoggingResponseWriter) AddLogOutput(key, value string)
- func (lrw *LoggingResponseWriter) Header() http.Header
- func (lrw *LoggingResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error)
- func (lrw *LoggingResponseWriter) Write(data []byte) (int, error)
- func (lrw *LoggingResponseWriter) WriteHeader(code int)
- type Middleware
- type PreProcessFunc
- type R
- type UHTTP
- func (u *UHTTP) AddContext(key ContextKey, value interface{}) error
- func (u *UHTTP) CORS() string
- func (u *UHTTP) Handle(pattern string, handler Handler)
- func (u *UHTTP) ListenAndServe() error
- func (u *UHTTP) Log() ulog.ULogger
- func (u *UHTTP) RegisterStaticFilesHandler(root string) error
- func (u *UHTTP) Render(w http.ResponseWriter, r *http.Request, model interface{})
- func (u *UHTTP) RenderError(w http.ResponseWriter, r *http.Request, err error)
- func (u *UHTTP) RenderErrorWithStatusCode(w http.ResponseWriter, r *http.Request, statusCode int, err error, logOut bool)
- func (u *UHTTP) RenderWithStatusCode(w http.ResponseWriter, r *http.Request, statusCode int, model interface{})
- func (u *UHTTP) ServeMux() *http.ServeMux
- type UhttpOption
- func WithAddress(address string) UhttpOption
- func WithCORS(cors string) UhttpOption
- func WithCacheTTLEnforcerInterval(i time.Duration) UhttpOption
- func WithEncodingErrorLogLevel(level ulog.LogLevel) UhttpOption
- func WithExposeCacheHandlers() UhttpOption
- func WithGlobalMiddlewares(middlewares []Middleware) UhttpOption
- func WithGranularLogging(logHandlerCalls bool, logHandlerErrors bool, logHandlerRegistrations bool) UhttpOption
- func WithGzipCompressionLevel(level int) UhttpOption
- func WithIdleTimeout(idleTimeout time.Duration) UhttpOption
- func WithLogCustomMiddlewareRegistration() UhttpOption
- func WithLogger(logger ulog.ULogger) UhttpOption
- func WithMetrics(metricsSocket string, metricsPath string) UhttpOption
- func WithParseModelErrorLogLevel(level ulog.LogLevel) UhttpOption
- func WithReadHeaderTimeout(readHeaderTimeout time.Duration) UhttpOption
- func WithReadTimeout(readTimeout time.Duration) UhttpOption
- func WithSendPanicInfoToClient(sendPanicInfoToClient bool) UhttpOption
- func WithSilentStaticFileRegistration(makeFileRegistrationSilent bool) UhttpOption
- func WithStaticFileEncodings(enableGzip bool, enableBrotli bool) UhttpOption
- func WithTLS(certPath string, keyPath string, tlsErrorLogger *log.Logger) UhttpOption
- func WithWriteTimeout(writeTimeout time.Duration) UhttpOption
Constants ¶
const ( Metric_Requests_Total string = "uhttp_requests_total" Metric_Requests_Duration string = "uhttp_requests_durations" )
const ( STRING string = "string" BOOL string = "bool" INT string = "int" INT32 string = "int32" INT64 string = "int64" FLOAT32 string = "float32" FLOAT64 string = "float64" SHORT_DATE string = "shortDate" // 2006-01-02 RFC3339_DATE string = "rfc3339Date" )
const CACHE_HEADER = "X-UHTTP-CACHE"
const CACHE_HEADER_AGE_HUMAN_READABLE = "X-UHTTP-CACHE-AGE-HUMAN-READABLE"
const CACHE_HEADER_AGE_MS = "X-UHTTP-CACHE-AGE-MS"
const NO_LOG_MAGIC_URL_FORCE_CACHE = "UHTTP_NO_LOG_FORCE_CACHE"
Variables ¶
This section is empty.
Functions ¶
func AddLogOutput ¶ added in v1.0.41
func ErrorFromHttpResponseBody ¶ added in v1.0.70
func ErrorFromHttpResponseBody(r io.ReadCloser) (error, error)
func ExecuteHandler ¶ added in v1.0.41
func ExecuteHandlerWithGzipRequestAndResponse ¶ added in v1.0.42
func ExecuteHandlerWithGzipResponse ¶ added in v1.0.42
func GetAsBoolFromContext ¶ added in v1.0.41
func GetAsFloat32FromContext ¶ added in v1.0.41
func GetAsFloat64FromContext ¶ added in v1.0.41
func GetAsInt32FromContext ¶ added in v1.0.41
func GetAsInt64FromContext ¶ added in v1.0.41
func GetAsIntFromContext ¶ added in v1.0.41
func GetAsStringFromContext ¶ added in v1.0.41
func GetAsTimeFromContext ¶ added in v1.0.41
func GzipDecodeRequestBody ¶ added in v1.0.42
func GzipDecodeResponseBody ¶ added in v1.0.42
func GzipEncodeRequestBody ¶ added in v1.0.42
func GzipEncodeRequestBody(body []byte) (io.ReadCloser, error)
func HandleMetrics ¶ added in v1.0.63
func ReaderHelper ¶ added in v1.0.39
inspired by https://medium.com/axiomzenteam/put-your-http-requests-on-a-diet-3e1e52333014
func RequireHTTPBodyAndHeader ¶ added in v1.0.81
func RequireHTTPBodyAndHeader( t *testing.T, handler http.HandlerFunc, method string, url string, values url.Values, expectedBody string, expectedHeader http.Header, )
Right out of testify but with headers
func RequireHTTPBodyAndNotHeader ¶ added in v1.0.81
Types ¶
type ContextKey ¶ added in v1.0.61
type ContextKey string
const ( CtxKeyPostModel ContextKey = "uhttp.postModel" CtxKeyCache ContextKey = "uhttp.cache" CtxKeyGetParams ContextKey = "uhttp.getParams" CtxKeyResponseWriter ContextKey = "uhttp.responseWriter" )
func ContextKeysFromMap ¶ added in v1.0.62
func ContextKeysFromMap(m interface{}) []ContextKey
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
func NewHandler ¶ added in v1.0.50
func NewHandler(opts ...HandlerOption) Handler
func (Handler) HandlerFunc ¶
func (h Handler) HandlerFunc(u *UHTTP) http.HandlerFunc
func (Handler) WsReady ¶ added in v1.0.32
func (h Handler) WsReady(u *UHTTP) Middleware
type HandlerFunc ¶ added in v1.0.50
type HandlerFuncWithModel ¶ added in v1.0.50
type HandlerOption ¶ added in v1.0.50
type HandlerOption interface {
// contains filtered or unexported methods
}
func WithAutomaticCacheUpdates ¶ added in v1.0.81
func WithAutomaticCacheUpdates(interval time.Duration, skipMiddleware *string) HandlerOption
func WithCache ¶ added in v1.0.81
func WithCache(maxAge time.Duration) HandlerOption
func WithDelete ¶ added in v1.0.50
func WithDelete(h HandlerFunc) HandlerOption
func WithDeleteModel ¶ added in v1.0.50
func WithDeleteModel(m interface{}, h HandlerFuncWithModel) HandlerOption
func WithGet ¶ added in v1.0.50
func WithGet(h HandlerFunc) HandlerOption
func WithGetModel ¶ added in v1.0.50
func WithGetModel(m interface{}, h HandlerFuncWithModel) HandlerOption
func WithMiddlewares ¶ added in v1.0.50
func WithMiddlewares(m ...Middleware) HandlerOption
func WithOptionalGet ¶ added in v1.0.53
func WithOptionalGet(r R) HandlerOption
func WithPost ¶ added in v1.0.50
func WithPost(h HandlerFunc) HandlerOption
func WithPostModel ¶ added in v1.0.50
func WithPostModel(m interface{}, h HandlerFuncWithModel) HandlerOption
func WithPreProcess ¶ added in v1.0.50
func WithPreProcess(p PreProcessFunc) HandlerOption
func WithRequiredGet ¶ added in v1.0.50
func WithRequiredGet(r R) HandlerOption
func WithTimeout ¶ added in v1.0.50
func WithTimeout(timeout time.Duration, timeoutMessage string) HandlerOption
type HttpResponseErrorModel ¶ added in v1.0.70
type HttpResponseErrorModel struct {
Error string `json:"error"`
}
func NewHttpErrorResponse ¶ added in v1.0.70
func NewHttpErrorResponse(err error) HttpResponseErrorModel
type LoggingResponseWriter ¶ added in v1.0.41
type LoggingResponseWriter struct {
// contains filtered or unexported fields
}
func (*LoggingResponseWriter) AddLogOutput ¶ added in v1.0.41
func (lrw *LoggingResponseWriter) AddLogOutput(key, value string)
func (*LoggingResponseWriter) Header ¶ added in v1.0.66
func (lrw *LoggingResponseWriter) Header() http.Header
Delegate Header() to underlying responseWriter
func (*LoggingResponseWriter) Hijack ¶ added in v1.0.66
func (lrw *LoggingResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error)
Delegate Hijack() to underlying responseWriter
func (*LoggingResponseWriter) Write ¶ added in v1.0.66
func (lrw *LoggingResponseWriter) Write(data []byte) (int, error)
Delegate Write() to underlying responseWriter
func (*LoggingResponseWriter) WriteHeader ¶ added in v1.0.41
func (lrw *LoggingResponseWriter) WriteHeader(code int)
Delegate WriteHeader() to underlying responseWriter AND save code
type Middleware ¶
type Middleware func(next http.HandlerFunc) http.HandlerFunc
type PreProcessFunc ¶ added in v1.0.50
type UHTTP ¶ added in v1.0.50
type UHTTP struct {
// contains filtered or unexported fields
}
func NewUHTTP ¶ added in v1.0.50
func NewUHTTP(opts ...UhttpOption) *UHTTP
func (*UHTTP) AddContext ¶ added in v1.0.50
func (u *UHTTP) AddContext(key ContextKey, value interface{}) error
func (*UHTTP) ListenAndServe ¶ added in v1.0.50
func (*UHTTP) RegisterStaticFilesHandler ¶ added in v1.0.50
RegisterStaticFilesHandler which serves content from a directory and redirects all requests to non-existant files to index.html index.html must be present! - read all files from root directory - create cache for these files containing original, gzip, br - register handlers for main http-mux
func (*UHTTP) Render ¶ added in v1.0.50
func (u *UHTTP) Render(w http.ResponseWriter, r *http.Request, model interface{})
func (*UHTTP) RenderError ¶ added in v1.0.50
func (*UHTTP) RenderErrorWithStatusCode ¶ added in v1.0.50
func (*UHTTP) RenderWithStatusCode ¶ added in v1.0.50
type UhttpOption ¶ added in v1.0.50
type UhttpOption interface {
// contains filtered or unexported methods
}
func WithAddress ¶ added in v1.0.50
func WithAddress(address string) UhttpOption
func WithCORS ¶ added in v1.0.50
func WithCORS(cors string) UhttpOption
func WithCacheTTLEnforcerInterval ¶ added in v1.0.81
func WithCacheTTLEnforcerInterval(i time.Duration) UhttpOption
func WithEncodingErrorLogLevel ¶ added in v1.0.50
func WithEncodingErrorLogLevel(level ulog.LogLevel) UhttpOption
func WithExposeCacheHandlers ¶ added in v1.0.81
func WithExposeCacheHandlers() UhttpOption
func WithGlobalMiddlewares ¶ added in v1.0.50
func WithGlobalMiddlewares(middlewares []Middleware) UhttpOption
func WithGranularLogging ¶ added in v1.0.77
func WithGranularLogging(logHandlerCalls bool, logHandlerErrors bool, logHandlerRegistrations bool) UhttpOption
func WithGzipCompressionLevel ¶ added in v1.0.50
func WithGzipCompressionLevel(level int) UhttpOption
func WithIdleTimeout ¶ added in v1.0.50
func WithIdleTimeout(idleTimeout time.Duration) UhttpOption
func WithLogCustomMiddlewareRegistration ¶ added in v1.0.82
func WithLogCustomMiddlewareRegistration() UhttpOption
func WithLogger ¶ added in v1.0.50
func WithLogger(logger ulog.ULogger) UhttpOption
func WithMetrics ¶ added in v1.0.63
func WithMetrics(metricsSocket string, metricsPath string) UhttpOption
func WithParseModelErrorLogLevel ¶ added in v1.0.50
func WithParseModelErrorLogLevel(level ulog.LogLevel) UhttpOption
func WithReadHeaderTimeout ¶ added in v1.0.50
func WithReadHeaderTimeout(readHeaderTimeout time.Duration) UhttpOption
func WithReadTimeout ¶ added in v1.0.50
func WithReadTimeout(readTimeout time.Duration) UhttpOption
func WithSendPanicInfoToClient ¶ added in v1.0.67
func WithSendPanicInfoToClient(sendPanicInfoToClient bool) UhttpOption
func WithSilentStaticFileRegistration ¶ added in v1.0.80
func WithSilentStaticFileRegistration(makeFileRegistrationSilent bool) UhttpOption
WithSilentStaticFileRegistration disables logging for every static file registration, handy, if dealing with large file trees
func WithStaticFileEncodings ¶ added in v1.0.74
func WithStaticFileEncodings(enableGzip bool, enableBrotli bool) UhttpOption
func WithTLS ¶ added in v1.0.59
func WithTLS(certPath string, keyPath string, tlsErrorLogger *log.Logger) UhttpOption
func WithWriteTimeout ¶ added in v1.0.50
func WithWriteTimeout(writeTimeout time.Duration) UhttpOption
Source Files ¶
- ContextKeyHelpers.go
- ContextKeys.go
- HandleStaticFiles.go
- Handler.go
- HandlerOptions.go
- HelpersGzip.go
- HelpersRendering.go
- HttpResponseErrorModel.go
- Metrics.go
- Middleware.go
- MiddlewareAddLogging.go
- MiddlewareCache.go
- MiddlewareCors.go
- MiddlewareGetParams.go
- MiddlewareParseModel.go
- MiddlewarePreProcess.go
- MiddlewareSetJSONResponse.go
- MiddlewareWithContext.go
- MiddlewareWithOriginalResponseWriter.go
- Params.go
- ParamsHelpers.go
- ParamsParse.go
- SelectMethodMiddleware.go
- TestingHelpers.go
- UHttp.go
- UhttpOptions.go
- cache_handlers.go
- cache_model.go
- executeHandlerMethod.go