Documentation
¶
Overview ¶
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides utility functions and helpers for common operations. revive:disable:var-naming
Package util provides various utility functions for common tasks revive:disable:var-naming
Index ¶
- Constants
- func CloseAndLogOnError(ctx context.Context, closer io.Closer, message ...string)
- func ContextWithLogger(ctx context.Context, logger *LogEntry) context.Context
- func ContextWithRequestID(ctx context.Context, requestID string) context.Context
- func GetEnv(key string, fallback ...string) string
- func GetIP(r *http.Request) string
- func GetLocalIP() string
- func GetMacAddress() string
- func GetRequestID(ctx context.Context) string
- func IDString() string
- func IDStringWithTime(t time.Time) string
- func MakeJSONAPI(handler JSONRequestHandler) http.HandlerFunc
- func ParseLevel(levelStr string) (slog.Level, error)
- func Protect(handler http.HandlerFunc) http.HandlerFunc
- func RandomString(n int) string
- func RequestWithLogging(req *http.Request) *http.Request
- func SLog(ctx context.Context) *slog.Logger
- func SetCORSHeaders(w http.ResponseWriter)
- func SortAndUnique(data sort.Interface) int
- func Unique(data sort.Interface) int
- func UniqueStrings(strings []string) []string
- func WithCORSOptions(handler http.HandlerFunc) http.HandlerFunc
- type JSONRequestHandler
- type JSONResponse
- type LogEntry
- func (e *LogEntry) Debug(msg string, args ...any)
- func (e *LogEntry) Enabled(ctx context.Context, level slog.Level) bool
- func (e *LogEntry) Error(msg string, args ...any)
- func (e *LogEntry) Exit(code int)
- func (e *LogEntry) Fatal(msg string, args ...any)
- func (e *LogEntry) Info(msg string, args ...any)
- func (e *LogEntry) LevelEnabled(ctx context.Context, level slog.Level) bool
- func (e *LogEntry) Log(ctx context.Context, level slog.Level, msg string, fields ...any)
- func (e *LogEntry) Logf(ctx context.Context, level slog.Level, format string, args ...interface{})
- func (e *LogEntry) Panic(msg string, _ ...any)
- func (e *LogEntry) Printf(format string, args ...any)
- func (e *LogEntry) Release()
- func (e *LogEntry) SLog() *slog.Logger
- func (e *LogEntry) Trace(msg string, args ...any)
- func (e *LogEntry) Warn(msg string, args ...any)
- func (e *LogEntry) With(args ...any) *LogEntry
- func (e *LogEntry) WithContext(ctx context.Context) *LogEntry
- func (e *LogEntry) WithError(err error) *LogEntry
- func (e *LogEntry) WithField(key string, value any) *LogEntry
- type Option
Constants ¶
const ( StatusFound = 302 StatusInternalServerError = 500 DefaultRequestIDLength = 12 Status2xx = 2 )
const ( CallerDepth = 3 FileLineAttr = 4 )
Variables ¶
This section is empty.
Functions ¶
func CloseAndLogOnError ¶ added in v0.3.2
CloseAndLogOnError Closes io.Closer and logs the error if any with the messages supplied.
func ContextWithLogger ¶
ContextWithLogger pushes a LogEntry instance into the supplied context for easier propagation.
func ContextWithRequestID ¶ added in v0.2.4
func GetEnv ¶ added in v0.3.3
GetEnv Obtains the environment key or returns the first fallback value.
func GetIP ¶ added in v0.3.3
GetIP retrieves the client's IP address from an HTTP request. It checks for common proxy headers and falls back to the remote address.
func GetLocalIP ¶ added in v0.3.3
func GetLocalIP() string
GetLocalIP convenience method that obtains the non localhost ip address for machine running app.
func GetMacAddress ¶ added in v0.3.3
func GetMacAddress() string
GetMacAddress convenience method to get some unique address based on the network interfaces the application is running on.
func GetRequestID ¶
GetRequestID returns the request ID associated with this context, or the empty string if one is not associated with this context.
func IDStringWithTime ¶ added in v0.1.3
func MakeJSONAPI ¶
func MakeJSONAPI(handler JSONRequestHandler) http.HandlerFunc
MakeJSONAPI creates an HTTP handler which always responds to incoming requests with JSON responses. Incoming http.Requests will have a logger (with a request ID/method/path logged) attached to the Context. This can be accessed via GetLogger(Context).
func ParseLevel ¶ added in v0.2.0
ParseLevel converts a string to a log.level. It is case-insensitive. Returns an error if the string does not match a known level.
func Protect ¶
func Protect(handler http.HandlerFunc) http.HandlerFunc
Protect panicking HTTP requests from taking down the entire process, and log them using the correct logger, returning a 500 with a JSON response rather than abruptly closing the connection. The http.Request MUST have a ctxValueLogger.
func RandomString ¶
RandomString generates a cryptographically secure random string of length n.
func RequestWithLogging ¶
RequestWithLogging sets up standard logging for http.Requests. http.Requests will have a logger (with a request ID/method/path logged) attached to the Context. This can be accessed via GetLogger(Context).
func SetCORSHeaders ¶
func SetCORSHeaders(w http.ResponseWriter)
SetCORSHeaders sets unrestricted origin Access-Control headers on the response writer.
func SortAndUnique ¶
SortAndUnique sorts the data and removes duplicates. O(nlog(n)).
func Unique ¶
Unique removes duplicate items from a sorted list in place. Takes the same interface as sort.Sort Returns the length of the data without duplicates Uses the last occurrence of a duplicate. O(n).
func UniqueStrings ¶
UniqueStrings returns a sorted slice of unique strings. O(nlog(n)).
func WithCORSOptions ¶
func WithCORSOptions(handler http.HandlerFunc) http.HandlerFunc
WithCORSOptions intercepts all OPTIONS requests and responds with CORS headers. The request handler is not invoked when this happens.
Types ¶
type JSONRequestHandler ¶
type JSONRequestHandler interface {
OnIncomingRequest(req *http.Request) JSONResponse
}
JSONRequestHandler represents an interface that must be satisfied in order to respond to incoming HTTP requests with JSON.
func NewJSONRequestHandler ¶
func NewJSONRequestHandler(f func(req *http.Request) JSONResponse) JSONRequestHandler
NewJSONRequestHandler converts the given OnIncomingRequest function into a JSONRequestHandler.
type JSONResponse ¶
type JSONResponse struct { // HTTP status code. Code int // JSON represents the JSON that should be serialised and sent to the client JSON interface{} // Headers represent any headers that should be sent to the client Headers map[string]any }
JSONResponse represents an HTTP response which contains a JSON body.
func ErrorResponse ¶
func ErrorResponse(err error) JSONResponse
ErrorResponse returns an HTTP 500 JSONResponse with the stringified form of the given error.
func MatrixErrorResponse ¶
func MatrixErrorResponse(httpStatusCode int, errCode, message string) JSONResponse
MatrixErrorResponse is a function that returns error responses in the standard Matrix Error format (errcode / error).
func MessageResponse ¶
func MessageResponse(code int, msg string) JSONResponse
MessageResponse returns a JSONResponse with a 'message' key containing the given text.
func RedirectResponse ¶
func RedirectResponse(location string) JSONResponse
RedirectResponse returns a JSONResponse which 302s the client to the given location.
func (JSONResponse) Is2xx ¶
func (r JSONResponse) Is2xx() bool
Is2xx returns true if the Code is between 200 and 299.
type LogEntry ¶ added in v0.2.0
type LogEntry struct {
// contains filtered or unexported fields
}
LogEntry handles logging functionality with immutable chained calls.
func NewLogger ¶ added in v0.2.1
NewLogger creates a new instance of LogEntry with the provided context and options.
func (*LogEntry) Enabled ¶ added in v0.2.5
Enabled returns whether the logger will log at the given level.
func (*LogEntry) LevelEnabled ¶ added in v0.2.0
LevelEnabled is an alias for Enabled for backward compatibility.
func (*LogEntry) Release ¶ added in v0.2.5
func (e *LogEntry) Release()
Release returns the LogEntry to the pool for reuse. Call this when you're done with a LogEntry and won't use it again.
func (*LogEntry) Trace ¶ added in v0.2.0
Trace logs a message at debug level (alias for backward compatibility).
func (*LogEntry) With ¶ added in v0.2.0
With returns a new LogEntry with the provided attributes added.
func (*LogEntry) WithContext ¶ added in v0.2.0
WithContext returns a new LogEntry with the given context.
type Option ¶ added in v0.3.0
type Option func(*logOptions)
Option is a function that configures logOptions.
func WithLogAddSource ¶ added in v0.3.0
WithLogAddSource enables or disables source code position in log entries.
func WithLogHandler ¶ added in v0.3.0
WithLogHandler sets a custom slog.Handler implementation.
func WithLogLevel ¶ added in v0.3.0
WithLogLevel sets the log level.
func WithLogNoColor ¶ added in v0.3.0
WithLogNoColor enables or disables colored output.
func WithLogOutput ¶ added in v0.3.0
WithLogOutput sets the output writer for logs.
func WithLogStackTrace ¶ added in v0.3.0
func WithLogStackTrace() Option
WithLogStackTrace enables automatic stack trace printing.
func WithLogTimeFormat ¶ added in v0.3.0
WithLogTimeFormat sets the time format for log timestamps.