api

package
v0.0.0-...-19d5731 Latest Latest
Warning

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

Go to latest
Published: Jan 14, 2026 License: AGPL-3.0 Imports: 142 Imported by: 0

Documentation

Index

Constants

View Source
const BaseUrl = "/api/v4"
View Source
const JwtSecretEnv = "CPS_JWT_SECRET" //nolint:gosec

Variables

This section is empty.

Functions

func Default

func Default(
	ctx context.Context,
	flags Flags,
	logger zerolog.Logger,
	pgPoolProvider postgres.PoolProvider,
	metricsEntityMetaUpdater metrics.MetaUpdater,
	metricsUserMetaUpdater metrics.MetaUpdater,
	tplTestTypePermMapping map[int][]any,
	deferFunc DeferFunc,
	overrideDocs bool,
) (API, Services, error)

func GetSessionKeyVar

func GetSessionKeyVar(logger zerolog.Logger) []byte

func NewFatalWorkerError

func NewFatalWorkerError(err error) error

func RegisterRoutes

func RegisterRoutes(
	ctx context.Context,
	conf config.CanopsisConf,
	router gin.IRouter,
	security Security,
	enforcer libsecurity.Enforcer,
	errorResponder httperror.Responder,
	linkGenerator link.Generator,
	primaryDbClient mongo.DbClient,
	secondaryDbClient mongo.DbClient,
	dbExportClient mongo.DbClient,
	pgPoolProvider postgres.PoolProvider,
	amqpPublisher amqp.Channel,
	lockRedisSession redis.Cmdable,
	apiConfigProvider config.ApiConfigProvider,
	timezoneConfigProvider config.TimezoneConfigProvider,
	templateConfigProvider config.TemplateConfigProvider,
	pbhEntityTypeResolver libpbehavior.EntityTypeResolver,
	pbhComputeChan chan<- rpc.PbehaviorRecomputeEvent,
	entityPublChan chan<- libentityservice.ChangeEntityMessage,
	entityCleanerTaskChan chan<- libentity.CleanTask,
	exportTaskExecutor export.TaskExecutor,
	techMetricsTaskExecutor techmetrics.TaskExecutor,
	userInterfaceConfig config.UserInterfaceConfigProvider,
	websocketHub websocket.Hub,
	websocketStore websocket.Store,
	broadcastMessageChan chan<- bool,
	metricsEntityMetaUpdater metrics.MetaUpdater,
	metricsUserMetaUpdater metrics.MetaUpdater,
	authorProvider author.Provider,
	healthcheckStore healthcheck.Store,
	tplExecutor libtemplate.Executor,
	stateSettingsUpdatesChan chan statesetting.RuleUpdatedMessage,
	enableSameServiceNames bool,
	eventGenerator libevent.Generator,
	securityConfig libsecurity.Config,
	exdataImportWorker externaldatatable.ImportWorker,
	notifStore usernotification.Store,
	externalDataContainer *externaldata.GetterContainer,
	tplTestTypePermMapping map[int][]any,
	logger zerolog.Logger,
) error

RegisterRoutes nolint: contextcheck

func RegisterValidators

func RegisterValidators(secConfig libsecurity.Config, tplExecutor libtemplate.Executor) (*ut.UniversalTranslator, error)

Types

type API

type API interface {
	// Run starts http server.
	Run(context.Context) error
	// AddRouter adds new routes.
	AddRouter(Router)
	// AddWorker adds new worker.
	AddWorker(string, Worker)
	// AddNoRoute adds handlers for no route.
	AddNoRoute(...gin.HandlerFunc)
	// AddNoMethod adds handlers for no method.
	AddNoMethod(...gin.HandlerFunc)
	// SetWebsocketHub sets websocket hub.
	SetWebsocketHub(websocket.Hub)
	// GetWebsocketHub gets websocket hub.
	GetWebsocketHub() websocket.Hub
}

API is used to implement API http server.

func New

func New(
	addr string,
	deferFunc DeferFunc,
	logger zerolog.Logger,
) API

New creates new api.

type CookieOptions

type CookieOptions struct {
	FileAccessName string
	MaxAge         int
}

func DefaultCookieOptions

func DefaultCookieOptions() CookieOptions

type DeferFunc

type DeferFunc func(ctx context.Context)

type FatalWorkerError

type FatalWorkerError struct {
	// contains filtered or unexported fields
}

FatalWorkerError should be used in the Worker function with panic() call, when there is a need to stop the api, when worker fails. the worker will be recovered from the panic, but it won't be restarted and the api will be stopped normally.

func (FatalWorkerError) Error

func (e FatalWorkerError) Error() string

type Flags

type Flags struct {
	log.Options

	Version       bool
	Port          int64
	ConfigDir     string
	SecureSession bool
	EnableDocs    bool

	PeriodicalWaitTime                            time.Duration
	IntegrationPeriodicalWaitTime                 time.Duration
	EntityCategoryMetaPeriodicalWaitTime          time.Duration
	InstructionRateNotificationPeriodicalWaitTime time.Duration
	BroadcastMessagePeriodicalWaitTime            time.Duration

	StateSettingRecomputeDelay time.Duration

	// EnableSameServiceNames affects entityservice Create/Update payload validation
	EnableSameServiceNames bool

	ExternalDataAPITimeout time.Duration

	LogBody        bool
	LogBodyOnError bool
}

func (*Flags) ParseArgs

func (f *Flags) ParseArgs()

type Router

type Router func(*gin.Engine) error

Router is used to implement adding new routes to API.

type Security

type Security interface {
	// GetHttpAuthProviders creates http providers which authenticates each API request.
	GetHttpAuthProviders() []libsecurity.HttpProvider
	// GetAuthProviders creates providers which are used in auth API request.
	GetAuthProviders() []libsecurity.Provider
	// RegisterCallbackRoutes registers callback routes for auth methods.
	RegisterCallbackRoutes(ctx context.Context, router gin.IRouter, client mongo.DbClient, sessionStore sessions.Store) error
	// GetAuthMiddleware returns corresponding config auth middlewares.
	GetAuthMiddleware() []gin.HandlerFunc
	// GetFileAuthMiddleware returns auth middleware for files.
	GetFileAuthMiddleware() gin.HandlerFunc
	GetSessionStore() libsession.Store
	GetConfig() libsecurity.Config
	GetPasswordEncoder() password.Encoder
	GetTokenService() apisecurity.TokenService
	GetTokenGenerator() token.Generator
	GetTokenProviders() []libsecurity.TokenProvider
	GetCookieOptions() CookieOptions
}

Security is used to init auth methods by config.

func NewSecurity

func NewSecurity(
	config libsecurity.Config,
	globalConfig config.CanopsisConf,
	dbClient mongo.DbClient,
	sessionStore libsession.Store,
	enforcer libsecurity.Enforcer,
	apiConfigProvider config.ApiConfigProvider,
	maintenanceAdapter config.MaintenanceAdapter,
	cookieOptions CookieOptions,
	errorResponder httperror.Responder,
	logger zerolog.Logger,
) Security

NewSecurity creates new security.

type Services

type Services struct {
	ExportTaskExecutor export.TaskExecutor
	LinkGenerator      link.Generator
	Enforcer           libsecurity.Enforcer
	DocsFile           fs.ReadFileFS

	DataStorageConfigProvider   *config.BaseDataStorageConfigProvider
	TimezoneConfigProvider      *config.BaseTimezoneConfigProvider
	ApiConfigProvider           *config.BaseApiConfigProvider
	TemplateConfigProvider      *config.BaseTemplateConfigProvider
	UserInterfaceConfigProvider *config.BaseUserInterfaceConfigProvider
	ExternalDataContainer       *externaldata.GetterContainer
	NotificationStore           usernotification.Store
	ErrorResponder              httperror.Responder
}

type Worker

type Worker func(context.Context)

Worker is used to implement adding new worker to API.

Source Files

  • api.go
  • default.go
  • flags.go
  • router.go
  • security.go
  • validators.go
  • workers.go

Jump to

Keyboard shortcuts

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