httputil

package
v0.0.0-...-811715e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2022 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
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 CallInternalProxyAPI[reqtype, restype any, errtype error](name, url string, client *http.Client, ctx context.Context, request *reqtype) (restype, error)

func CallInternalRPCAPI

func CallInternalRPCAPI[reqtype, restype any](name, url string, client *http.Client, ctx context.Context, request *reqtype, response *restype) error

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

func MakeExternalAPI(metricsName string, f func(*http.Request) util.JSONResponse) http.Handler

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

func MakeInternalAPI(metricsName string, f func(*http.Request) util.JSONResponse) http.Handler

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 MakeInternalProxyAPI[reqtype, restype any](metricsName string, f func(context.Context, *reqtype) (*restype, error)) http.Handler

func MakeInternalRPCAPI

func MakeInternalRPCAPI[reqtype, restype any](metricsName string, f func(context.Context, *reqtype, *restype) error) http.Handler

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

func URLDecodeMapValues(vmap map[string]string) (map[string]string, error)

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 BasicAuth

type BasicAuth struct {
	Username string `yaml:"username"`
	Password string `yaml:"password"`
}

BasicAuth is used for authorization on /metrics handlers

type InternalAPIError

type InternalAPIError struct {
	Type    string
	Message string
}

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL