Documentation
¶
Index ¶
- Constants
- func Default(ctx context.Context, flags Flags, logger zerolog.Logger, ...) (API, Services, error)
- func GetSessionKeyVar(logger zerolog.Logger) []byte
- func NewFatalWorkerError(err error) error
- func RegisterRoutes(ctx context.Context, conf config.CanopsisConf, router gin.IRouter, ...) error
- func RegisterValidators(secConfig libsecurity.Config, tplExecutor libtemplate.Executor) (*ut.UniversalTranslator, error)
- type API
- type CookieOptions
- type DeferFunc
- type FatalWorkerError
- type Flags
- type Router
- type Security
- type Services
- type Worker
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 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.
type CookieOptions ¶
func DefaultCookieOptions ¶
func DefaultCookieOptions() CookieOptions
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
}
type Router ¶
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
}
Source Files
¶
- api.go
- default.go
- flags.go
- router.go
- security.go
- validators.go
- workers.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package sessionauth contains authentication by session.
|
Package sessionauth contains authentication by session. |
|
Package websocket contains implementation of websocket.
|
Package websocket contains implementation of websocket. |
Click to show internal directories.
Click to hide internal directories.