httputil

package
v1.0.7 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2018 License: Apache-2.0 Imports: 11 Imported by: 43

Documentation

Index

Constants

View Source
const (
	ProjectParam   = "project"
	NamespaceParam = "namespace"
)
View Source
const (
	FingerPrintContextKey contextKey = iota
	ClientIPContextKey
	UserAgentContextKey
	RequestIDContextKey
	UserIDContextKey
	TokenIDContextKey
	UserRoleContextKey

	AcceptLanguageContextKey
)

Keys to inject data to context

View Source
const (
	UserClientHeader    = "User-Client"
	AuthorizationHeader = "User-Token"
)

Extrernal headers

View Source
const (
	RequestIDXHeader      = "X-Request-ID"
	RequestNameXHeader    = "X-Request-Name"
	UserIDXHeader         = "X-User-ID"
	UserClientXHeader     = "X-User-Client"
	UserAgentXHeader      = "X-User-Agent"
	UserIPXHeader         = "X-Client-IP"
	TokenIDXHeader        = "X-Token-ID"
	UserRoleXHeader       = "X-User-Role"
	UserNamespacesXHeader = "X-User-Namespace"
	UserVolumesXHeader    = "X-User-Volume"
	UserHideDataXHeader   = "X-User-Hide-Data"
)

Internal headers

View Source
const AccessContext = "access-ctx"
View Source
const AllAccessContext = "all-access-ctx"

Variables

This section is empty.

Functions

func ErrHeaderRequired

func ErrHeaderRequired(name string) error

ErrHeaderRequired return if header not required

func ErrInvalidFormat

func ErrInvalidFormat(name string) error

ErrInvalidFormat return if header has invalid format

func GetAcceptedLanguages

func GetAcceptedLanguages(ctx context.Context) []string

GetAcceptedLanguages extracts accepted languages from context

func MaskForNonAdmin

func MaskForNonAdmin(ctx *gin.Context, m Masker)

func MustGetClientIP

func MustGetClientIP(ctx context.Context) string

MustGetClientIP attempts to extract client IP address using ClientIPContextKey from context. It panics if value was not found.

func MustGetFingerprint

func MustGetFingerprint(ctx context.Context) string

MustGetFingerprint attempts to extract client fingerprint using FingerPrintContextKey from context. It panics if value was not found.

func MustGetRequestID

func MustGetRequestID(ctx context.Context) string

MustGetSessionID attempts to extract session ID using RequestIDContextKey from context. It panics if value was not found in context.

func MustGetTokenID

func MustGetTokenID(ctx context.Context) string

MustGetTokenID attempts to extract token ID using TokenIDContextKey from context. It panics if value was not found in context.

func MustGetUserAgent

func MustGetUserAgent(ctx context.Context) string

MustGetUserAgent attempts to extract client IP address using UserAgentContextKey from context. It panics if value was not found.

func MustGetUserID

func MustGetUserID(ctx context.Context) string

MustGetUserID attempts to extract user ID using RequestIDContextKey from context. It panics if value was not found in context.

func MustGetUserRole

func MustGetUserRole(ctx context.Context) string

MustGetUserRole attempts to extract user role using UserRoleContextKey from context It panics if value was not found in context.

func PrepareContext

func PrepareContext(ctx *gin.Context)

PrepareContext is a gin middleware which adds values from header to context

func RequestHeaders

func RequestHeaders(ctx context.Context) http.Header

RequestHeaders extracts saved headers from context. saveHeaders middleware required for operation.

func RequestHeadersMap

func RequestHeadersMap(ctx context.Context) map[string]string

RequestHeadersMap extracts saved headers from context as map[string]string (useful for resty). saveHeaders middleware required for operation.

func RequestXHeadersMap

func RequestXHeadersMap(ctx context.Context) map[string]string

RequestXHeadersMap works like RequestHeadersMap but returns only "X-" headers

func RequireAdminRole

func RequireAdminRole(errToReturn cherry.ErrConstruct) gin.HandlerFunc

RequireAdminRole is a gin middleware which requires admin role

func RequireHeaders

func RequireHeaders(errToReturn cherry.ErrConstruct, headers ...string) gin.HandlerFunc

RequireHeaders is a gin middleware to ensure that headers is set

func SaveHeaders

func SaveHeaders(ctx *gin.Context)

SaveHeaders is a gin middleware which saves headers to request context

func ServiceStatus added in v1.0.7

func ServiceStatus(status *kubeModel.ServiceStatus) gin.HandlerFunc

func SubstituteUserMiddleware

func SubstituteUserMiddleware(validate *validator.Validate, translator *ut.UniversalTranslator, validationErr cherry.ErrConstruct) gin.HandlerFunc

SubstituteUserMiddleware replaces user id in context with user id from query if it set and user is admin

func ValidateQueryParamsMiddleware added in v1.0.1

func ValidateQueryParamsMiddleware(vmap map[string]string, validate *validator.Validate, translator *ut.UniversalTranslator, validationErr cherry.ErrConstruct) gin.HandlerFunc

ValidateQueryParamsMiddleware validates query parameters with provided tags. Key of "vmap" is parameter name, value is tag

func ValidateURLParamsMiddleware added in v1.0.1

func ValidateURLParamsMiddleware(vmap map[string]string, validate *validator.Validate, translator *ut.UniversalTranslator, validationErr cherry.ErrConstruct) gin.HandlerFunc

ValidateURLParamsMiddleware validates URL parameters with provided tags. Key of "vmap" is parameter name, value is tag

Types

type AccessChecker added in v1.0.4

type AccessChecker struct {
	PermissionsClient Permissions
	AccessError       cherry.ErrConstruct
	NotFoundError     cherry.ErrConstruct
}

func (*AccessChecker) CheckAccess added in v1.0.4

func (a *AccessChecker) CheckAccess(requiredAccess kubeModel.UserGroupAccess) gin.HandlerFunc

func (*AccessChecker) SaveAllAccesses added in v1.0.4

func (a *AccessChecker) SaveAllAccesses() gin.HandlerFunc

type Masker

type Masker interface {
	Mask()
}

type NamespaceAccess added in v1.0.4

type NamespaceAccess struct {
	NamespaceID    string                    `json:"namespace_id"`
	NamespaceLabel string                    `json:"namespace_label"`
	Access         kubeModel.UserGroupAccess `json:"access"`
}

type Permissions added in v1.0.4

type Permissions interface {
	GetAllAccesses(ctx context.Context) ([]ProjectAccess, error)
	GetNamespaceAccess(ctx context.Context, projectID, namespaceID string) (NamespaceAccess, error)
}

type ProjectAccess added in v1.0.4

type ProjectAccess struct {
	ProjectID          string            `json:"project_id"`
	ProjectLabel       string            `json:"project_label"`
	NamespacesAccesses []NamespaceAccess `json:"namespaces"`
}

Jump to

Keyboard shortcuts

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