policy

package
v0.2.4 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultMode = ModeEnforce

Variables

View Source
var (
	ErrNotFound          = fmt.Errorf("policy: %w", commonerrors.ErrNotFound)
	ErrAlreadyExists     = fmt.Errorf("policy: %w", commonerrors.ErrAlreadyExists)
	ErrHasDependents     = fmt.Errorf("policy: %w", commonerrors.ErrHasDependents)
	ErrInvalidName       = fmt.Errorf("policy: invalid name: %w", commonerrors.ErrValidation)
	ErrInvalidGatewayID  = fmt.Errorf("policy: invalid gateway_id: %w", commonerrors.ErrValidation)
	ErrInvalidConsumerID = fmt.Errorf("policy: invalid consumer_id: %w", commonerrors.ErrValidation)
	ErrInvalidSlug       = fmt.Errorf("policy: invalid slug: %w", commonerrors.ErrValidation)
	ErrInvalidStage      = fmt.Errorf("policy: invalid stage: %w", commonerrors.ErrValidation)
	ErrInvalidMode       = fmt.Errorf("policy: invalid mode: %w", commonerrors.ErrValidation)
	ErrInvalidPriority   = fmt.Errorf("policy: invalid priority: %w", commonerrors.ErrValidation)
)

Functions

This section is empty.

Types

type ListFilter

type ListFilter struct {
	GatewayID    ids.GatewayID
	NameContains string
	Page         int
	Size         int
}

type Mode

type Mode string
const (
	ModeEnforce  Mode = "enforce"
	ModeThrottle Mode = "throttle"
	ModeObserve  Mode = "observe"
)

func (Mode) IsValid

func (m Mode) IsValid() bool

func (Mode) Normalize

func (m Mode) Normalize() Mode

type PluginConfig

type PluginConfig struct {
	ID       string
	Slug     string
	Name     string
	Settings map[string]any
}

type Policy

type Policy struct {
	ID          ids.PolicyID     `json:"id"`
	GatewayID   ids.GatewayID    `json:"gateway_id"`
	ConsumerIDs []ids.ConsumerID `json:"consumer_ids,omitempty"`
	Name        string           `json:"name"`
	Description string           `json:"description,omitempty"`
	Slug        string           `json:"slug"`
	Enabled     bool             `json:"enabled"`
	Global      bool             `json:"global"`
	Priority    int              `json:"priority"`
	Parallel    bool             `json:"parallel"`
	Settings    map[string]any   `json:"settings,omitempty"`
	Stages      []Stage          `json:"stages,omitempty"`
	Mode        Mode             `json:"mode"`
	CreatedAt   time.Time        `json:"created_at"`
	UpdatedAt   time.Time        `json:"updated_at"`
}

func NewPolicy

func NewPolicy(
	gatewayID ids.GatewayID,
	name string,
	slug string,
	enabled bool,
	priority int,
	parallel bool,
	settings map[string]any,
	stages []Stage,
	description string,
	mode Mode,
) (*Policy, error)

func Rehydrate

func Rehydrate(
	id ids.PolicyID,
	gatewayID ids.GatewayID,
	consumerIDs []ids.ConsumerID,
	name string,
	description string,
	slug string,
	enabled bool,
	global bool,
	priority int,
	parallel bool,
	settings map[string]any,
	stages []Stage,
	mode Mode,
	createdAt, updatedAt time.Time,
) *Policy

func (*Policy) IsGlobal

func (p *Policy) IsGlobal() bool

func (*Policy) Validate

func (p *Policy) Validate() error

type Repository

type Repository interface {
	Save(ctx context.Context, p *Policy) error
	Update(ctx context.Context, p *Policy) error
	SetGlobal(ctx context.Context, gatewayID ids.GatewayID, id ids.PolicyID, global bool) error
	Delete(ctx context.Context, gatewayID ids.GatewayID, id ids.PolicyID) error
	FindByID(ctx context.Context, id ids.PolicyID) (*Policy, error)
	FindByIDs(ctx context.Context, gatewayID ids.GatewayID, policyIDs []ids.PolicyID) ([]*Policy, error)
	ListByGateway(ctx context.Context, gatewayID ids.GatewayID) ([]*Policy, error)
	List(ctx context.Context, filter ListFilter) (items []*Policy, total int, err error)
}

type Stage

type Stage string
const (
	StagePreRequest   Stage = "pre_request"
	StagePostRequest  Stage = "post_request"
	StagePreResponse  Stage = "pre_response"
	StagePostResponse Stage = "post_response"
)

func (Stage) IsValid

func (s Stage) IsValid() bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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