Documentation ¶
Index ¶
- func ContextWithLogger(ctx context.Context, l *log.Entry) context.Context
- func GetLogger(ctx context.Context) *log.Entry
- func GetRequestID(ctx context.Context) string
- func MakeJSONAPI(handler JSONRequestHandler) http.HandlerFunc
- func Protect(handler http.HandlerFunc) http.HandlerFunc
- func RandomString(n int) string
- func RequestWithLogging(req *http.Request) *http.Request
- 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
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextWithLogger ¶
ContextWithLogger creates a new context, which will use the given logger.
func GetLogger ¶
GetLogger retrieves the logrus logger from the supplied context. Always returns a logger, even if there wasn't one originally supplied.
func GetRequestID ¶
GetRequestID returns the request ID associated with this context, or the empty string if one is not associated with this context.
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 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 pseudo-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 a list and removes duplicate entries 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(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 turns a list of strings into a sorted list 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]string }
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.