Documentation ¶
Index ¶
- Constants
- func CallInternalProxyAPI[reqtype, restype any, errtype error](name, url string, client *http.Client, ctx context.Context, request *reqtype) (restype, error)
- func CallInternalRPCAPI[reqtype, restype any](name, url string, client *http.Client, ctx context.Context, request *reqtype, ...) error
- 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, ...) http.Handler
- func MakeInternalAPI(metricsName string, f func(*http.Request) util.JSONResponse) http.Handler
- func MakeInternalProxyAPI[reqtype, restype any](metricsName string, f func(context.Context, *reqtype) (*restype, error)) http.Handler
- func MakeInternalRPCAPI[reqtype, restype any](metricsName string, f func(context.Context, *reqtype, *restype) error) http.Handler
- func PostJSON[reqtype, restype any, errtype error](ctx context.Context, span opentracing.Span, httpClient *http.Client, ...) error
- 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 InternalAPIError
- type RateLimits
Constants ¶
const ( PublicClientPathPrefix = "/_matrix/client/" PublicFederationPathPrefix = "/_matrix/federation/" PublicKeyPathPrefix = "/_matrix/key/" PublicMediaPathPrefix = "/_matrix/media/" PublicWellKnownPrefix = "/.well-known/matrix/" InternalPathPrefix = "/api/" DendriteAdminPathPrefix = "/_dendrite/" SynapseAdminPathPrefix = "/_synapse/" )
Variables ¶
This section is empty.
Functions ¶
func CallInternalProxyAPI ¶
func CallInternalRPCAPI ¶
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 MakeHTMLAPI ¶
func MakeHTMLAPI(metricsName string, f func(http.ResponseWriter, *http.Request) *util.JSONResponse) http.Handler
MakeHTMLAPI adds Span metrics to the HTML Handler function This is used to serve HTML alongside JSON error messages
func MakeInternalAPI ¶
MakeInternalAPI turns a util.JSONRequestHandler function into an http.Handler. This is used for APIs that are internal to dendrite. If we are passed a tracing context in the request headers then we use that as the parent of any tracing spans we create.
func MakeInternalProxyAPI ¶
func MakeInternalRPCAPI ¶
func PostJSON ¶
func PostJSON[reqtype, restype any, errtype error]( ctx context.Context, span opentracing.Span, httpClient *http.Client, apiURL string, request *reqtype, response *restype, ) error
PostJSON performs a POST request with JSON on an internal HTTP API. The error will match the errtype if returned from the remote API, or will be a different type if there was a problem reaching the API.
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
type AuthAPIOpts ¶
type AuthAPIOpts struct {
GuestAccessAllowed bool
}
type InternalAPIError ¶
func (InternalAPIError) Error ¶
func (e InternalAPIError) Error() string
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