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 MakeHTTPAPI(metricsName string, userAPI userapi.QueryAcccessTokenAPI, 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.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusMethodNotAllowed) unrecognizedErr, _ := json.Marshal(spec.Unrecognized("Unrecognized request")) _, _ = w.Write(unrecognizedErr) }))
var NotFoundCORSHandler = WrapHandlerInCORS(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusNotFound) unrecognizedErr, _ := json.Marshal(spec.Unrecognized("Unrecognized request")) _, _ = w.Write(unrecognizedErr) }))
Functions ¶
func MakeAdminAPI ¶
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 MakeHTTPAPI ¶
func MakeHTTPAPI(metricsName string, userAPI userapi.QueryAcccessTokenAPI, enableMetrics bool, f func(http.ResponseWriter, *http.Request), checks ...AuthAPIOption) http.Handler
MakeHTTPAPI 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 ¶
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 ¶
func WithAllowGuests() AuthAPIOption
WithAllowGuests checks that guest users have access to this endpoint
func WithAuth ¶
func WithAuth() AuthAPIOption
WithAuth is an option to MakeHTTPAPI to add authentication.
type AuthAPIOpts ¶
type RateLimits ¶
type RateLimits struct {
// contains filtered or unexported fields
}
func NewRateLimits ¶
func NewRateLimits(cfg *config.RateLimiting) *RateLimits
func (*RateLimits) Limit ¶
func (l *RateLimits) Limit(req *http.Request, device *userapi.Device) *util.JSONResponse