uhttp

package module
v1.0.83 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2021 License: MIT Imports: 34 Imported by: 7

README

Build Status GoDoc codecov

uhttp

A simple http-framework. Working but not yet well documented...

Documentation

Index

Constants

View Source
const (
	Metric_Requests_Total    string = "uhttp_requests_total"
	Metric_Requests_Duration string = "uhttp_requests_durations"
)
View Source
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"
)
View Source
const CACHE_HEADER = "X-UHTTP-CACHE"
View Source
const CACHE_HEADER_AGE_HUMAN_READABLE = "X-UHTTP-CACHE-AGE-HUMAN-READABLE"
View Source
const CACHE_HEADER_AGE_MS = "X-UHTTP-CACHE-AGE-MS"
View Source
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 AddLogOutput(w interface{}, key, value string) error

func ENUM added in v1.0.41

func ENUM(values ...string) []string

func ErrorFromHttpResponseBody added in v1.0.70

func ErrorFromHttpResponseBody(r io.ReadCloser) (error, error)

func ExecuteHandler added in v1.0.41

func ExecuteHandler(
	handler Handler,
	method string,
	expectedStatus int,
	requestBody []byte,
	expectedResponseBody []byte,
	u *UHTTP,
	t *testing.T,
)

func ExecuteHandlerWithGzipRequestAndResponse added in v1.0.42

func ExecuteHandlerWithGzipRequestAndResponse(
	handler Handler,
	method string,
	expectedStatus int,
	requestBody []byte,
	expectedResponseBody []byte,
	u *UHTTP,
	t *testing.T,
)

func ExecuteHandlerWithGzipResponse added in v1.0.42

func ExecuteHandlerWithGzipResponse(
	handler Handler,
	method string,
	expectedStatus int,
	requestBody []byte,
	expectedResponseBody []byte,
	u *UHTTP,
	t *testing.T,
)

func GetAsBool added in v1.0.41

func GetAsBool(key string, r *http.Request) *bool

func GetAsBoolFromContext added in v1.0.41

func GetAsBoolFromContext(key string, ctx context.Context) *bool

func GetAsFloat32 added in v1.0.41

func GetAsFloat32(key string, r *http.Request) *float32

func GetAsFloat32FromContext added in v1.0.41

func GetAsFloat32FromContext(key string, ctx context.Context) *float32

func GetAsFloat64 added in v1.0.41

func GetAsFloat64(key string, r *http.Request) *float64

func GetAsFloat64FromContext added in v1.0.41

func GetAsFloat64FromContext(key string, ctx context.Context) *float64

func GetAsInt added in v1.0.41

func GetAsInt(key string, r *http.Request) *int

func GetAsInt32 added in v1.0.41

func GetAsInt32(key string, r *http.Request) *int32

func GetAsInt32FromContext added in v1.0.41

func GetAsInt32FromContext(key string, ctx context.Context) *int32

func GetAsInt64 added in v1.0.41

func GetAsInt64(key string, r *http.Request) *int64

func GetAsInt64FromContext added in v1.0.41

func GetAsInt64FromContext(key string, ctx context.Context) *int64

func GetAsIntFromContext added in v1.0.41

func GetAsIntFromContext(key string, ctx context.Context) *int

func GetAsString added in v1.0.41

func GetAsString(key string, r *http.Request) *string

func GetAsStringFromContext added in v1.0.41

func GetAsStringFromContext(key string, ctx context.Context) *string

func GetAsTime added in v1.0.41

func GetAsTime(key string, r *http.Request) *time.Time

func GetAsTimeFromContext added in v1.0.41

func GetAsTimeFromContext(key string, ctx context.Context) *time.Time

func GzipDecodeRequestBody added in v1.0.42

func GzipDecodeRequestBody(r *http.Request, model interface{}) error

func GzipDecodeResponseBody added in v1.0.42

func GzipDecodeResponseBody(res *http.Response) ([]byte, error)

func GzipEncodeRequestBody added in v1.0.42

func GzipEncodeRequestBody(body []byte) (io.ReadCloser, error)

func HandleMetrics added in v1.0.63

func HandleMetrics(metrics map[string]interface{}, method string, status int, uri string, duration time.Duration) error

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

func RequireHTTPBodyAndNotHeader(
	t *testing.T,
	handler http.HandlerFunc,
	method string,
	url string,
	values url.Values,
	expectedBody string,
	bannedHeaders []string,
)

func RequireHTTPBodyJSONEq added in v1.0.81

func RequireHTTPBodyJSONEq(
	t *testing.T,
	handlerFunc http.HandlerFunc,
	method string,
	url string,
	values url.Values,
	expected string,
)

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 HandlerFunc func(r *http.Request, returnCode *int) interface{}

type HandlerFuncWithModel added in v1.0.50

type HandlerFuncWithModel func(r *http.Request, model interface{}, returnCode *int) interface{}

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 PreProcessFunc func(ctx context.Context) error

type R added in v1.0.41

type R map[string]interface{}

func (R) Printable added in v1.0.41

func (r R) Printable() (map[string]string, error)

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) CORS added in v1.0.72

func (u *UHTTP) CORS() string

func (*UHTTP) Handle added in v1.0.50

func (u *UHTTP) Handle(pattern string, handler Handler)

Handle configuration

func (*UHTTP) ListenAndServe added in v1.0.50

func (u *UHTTP) ListenAndServe() error

func (*UHTTP) Log added in v1.0.72

func (u *UHTTP) Log() ulog.ULogger

func (*UHTTP) RegisterStaticFilesHandler added in v1.0.50

func (u *UHTTP) RegisterStaticFilesHandler(root string) error

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 (u *UHTTP) RenderError(w http.ResponseWriter, r *http.Request, err error)

func (*UHTTP) RenderErrorWithStatusCode added in v1.0.50

func (u *UHTTP) RenderErrorWithStatusCode(w http.ResponseWriter, r *http.Request, statusCode int, err error, logOut bool)

func (*UHTTP) RenderWithStatusCode added in v1.0.50

func (u *UHTTP) RenderWithStatusCode(w http.ResponseWriter, r *http.Request, statusCode int, model interface{})

func (*UHTTP) ServeMux added in v1.0.60

func (u *UHTTP) ServeMux() *http.ServeMux

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

Directories

Path Synopsis
cli module
uhttpcli module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL