Documentation ¶
Index ¶
- Constants
- Variables
- func MakeAdminAPI(metricsName string, userAPI userapi.QueryAcccessTokenAPI, ...) http.Handler
- func MakeAuthAPI(metricsName string, userAPI userapi.QueryAcccessTokenAPI, ...) http.Handler
- func MakeExternalAPI(metricsName string, f func(*http.Request) util.JSONResponse) http.Handler
- func MakeHTMLAPI(metricsName string, enableMetrics bool, ...) http.Handler
- func URLDecodeMapValues(vmap map[string]string) (map[string]string, error)
- func WrapHandlerInBasicAuth(h http.Handler, b BasicAuth) http.HandlerFunc
- func WrapHandlerInCORS(h http.Handler) http.HandlerFunc
- type AuthAPIOption
- type AuthAPIOpts
- type BasicAuth
- type RateLimits
- type Routers
Constants ¶
const ( PublicClientPathPrefix = "/_matrix/client/" PublicFederationPathPrefix = "/_matrix/federation/" PublicKeyPathPrefix = "/_matrix/key/" PublicMediaPathPrefix = "/_matrix/media/" PublicStaticPath = "/_matrix/static/" PublicWellKnownPrefix = "/.well-known/matrix/" DendriteAdminPathPrefix = "/_dendrite/" SynapseAdminPathPrefix = "/_synapse/" )
Variables ¶
var NotAllowedHandler = WrapHandlerInCORS(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusMethodNotAllowed) w.Header().Set("Content-Type", "application/json") unrecognizedErr, _ := json.Marshal(spec.Unrecognized("Unrecognized request")) _, _ = w.Write(unrecognizedErr) }))
var NotFoundCORSHandler = WrapHandlerInCORS(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotFound) w.Header().Set("Content-Type", "application/json") unrecognizedErr, _ := json.Marshal(spec.Unrecognized("Unrecognized request")) _, _ = w.Write(unrecognizedErr) }))
Functions ¶
func MakeAdminAPI ¶ added in v0.9.2
func MakeAdminAPI( metricsName string, userAPI userapi.QueryAcccessTokenAPI, f func(*http.Request, *userapi.Device) util.JSONResponse, ) http.Handler
MakeAdminAPI is a wrapper around MakeAuthAPI which enforces that the request can only be completed by a user that is a server administrator.
func MakeAuthAPI ¶
func MakeAuthAPI( metricsName string, userAPI userapi.QueryAcccessTokenAPI, f func(*http.Request, *userapi.Device) util.JSONResponse, checks ...AuthAPIOption, ) http.Handler
MakeAuthAPI turns a util.JSONRequestHandler function into an http.Handler which authenticates the request.
func MakeExternalAPI ¶
MakeExternalAPI turns a util.JSONRequestHandler function into an http.Handler. This is used for APIs that are called from the internet.
func MakeHTMLAPI ¶
func MakeHTMLAPI(metricsName string, enableMetrics bool, f func(http.ResponseWriter, *http.Request)) http.Handler
MakeHTMLAPI adds Span metrics to the HTML Handler function This is used to serve HTML alongside JSON error messages
func URLDecodeMapValues ¶
URLDecodeMapValues is a function that iterates through each of the items in a map, URL decodes the value, and returns a new map with the decoded values under the same key names
func WrapHandlerInBasicAuth ¶
func WrapHandlerInBasicAuth(h http.Handler, b BasicAuth) http.HandlerFunc
WrapHandlerInBasicAuth adds basic auth to a handler. Only used for /metrics
func WrapHandlerInCORS ¶
func WrapHandlerInCORS(h http.Handler) http.HandlerFunc
WrapHandlerInCORS adds CORS headers to all responses, including all error responses. Handles OPTIONS requests directly.
Types ¶
type AuthAPIOption ¶ added in v0.10.8
type AuthAPIOption func(opts *AuthAPIOpts)
AuthAPIOption is an option to MakeAuthAPI to add additional checks (e.g. guest access) to verify the user is allowed to do specific things.
func WithAllowGuests ¶ added in v0.10.8
func WithAllowGuests() AuthAPIOption
WithAllowGuests checks that guest users have access to this endpoint
type AuthAPIOpts ¶ added in v0.10.8
type AuthAPIOpts struct {
GuestAccessAllowed bool
}
type RateLimits ¶ added in v0.6.0
type RateLimits struct {
// contains filtered or unexported fields
}
func NewRateLimits ¶ added in v0.6.0
func NewRateLimits(cfg *config.RateLimiting) *RateLimits
func (*RateLimits) Limit ¶ added in v0.6.0
func (l *RateLimits) Limit(req *http.Request, device *userapi.Device) *util.JSONResponse