Select Git revision
extension.go
extension.go 4.28 KiB
package extension
import (
"context"
"fmt"
"net/url"
"strings"
"git.perx.ru/perxis/perxis-go/pkg/content"
"git.perx.ru/perxis/perxis-go/pkg/errors"
"git.perx.ru/perxis/perxis-go/pkg/items"
pb "git.perx.ru/perxis/perxis-go/proto/extensions"
)
const (
RequestOK = pb.ExtensionRequestResult_OK
RequestError = pb.ExtensionRequestResult_ERROR
ExtensionsCollectionID = "space_extensions"
ExtensionsCollectionName = "Настройки/Расширения"
StatePending = pb.SpaceExtensions_PENDING
StateInstalled = pb.SpaceExtensions_INSTALLED
StateInProgress = pb.SpaceExtensions_IN_PROGRESS
StateFail = pb.SpaceExtensions_FAIL
ExtensionMetadataKey = "extension"
)
type (
InstallRequest = pb.InstallRequest
InstallResponse = pb.InstallResponse
CheckRequest = pb.CheckRequest
CheckResponse = pb.CheckResponse
UpdateRequest = pb.UpdateRequest
UpdateResponse = pb.UpdateResponse
UninstallRequest = pb.UninstallRequest
UninstallResponse = pb.UninstallResponse
RequestResult = pb.ExtensionRequestResult
ExtensionDescriptor = pb.ExtensionDescriptor
SpaceExtensionsState = pb.SpaceExtensions_State
)
var (
ErrStart = errors.New("start failed")
ErrStop = errors.New("stop failed")
ErrInstall = errors.New("install failed")
ErrUpdate = errors.New("update failed")
ErrCheck = errors.New("check failed")
ErrUninstall = errors.New("uninstall failed")
ErrUpdateAvailable = errors.New("update available")
ErrNotInstalled = errors.New("not installed")
ErrUnknownExtension = errors.New("unknown extension")
)
// Runnable описывает интерфейс сервиса с запуском и остановкой. Вызывается сервером расширений
type Runnable interface {
Start() error
Stop() error
}
// Extension описывает интерфейс расширения Perxis
type Extension interface {
// GetDescriptor возвращает описание расширения
GetDescriptor() *ExtensionDescriptor
// Install вызывается при установке расширения в пространство