plugin

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrCoreUnavailable = errors.New("обращения к ядру недоступны")

Functions

This section is empty.

Types

type CoreClient

type CoreClient interface {
	API(ctx context.Context, path string, in, out any) error
}

Клиент для вызовов API ядра

type Error

type Error struct {
	Status  int
	Message string
}

func (*Error) Error

func (e *Error) Error() string

type Handler

type Handler func(r Request) (any, error)

type Options

type Options struct {
	// Логгер
	Logger *slog.Logger

	// Файлы UI
	StaticFiles fs.FS

	// Основной транспорт
	Transport Transport
}

Опции плагина

type Plugin

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

func New

func New(options Options) *Plugin

New создает экземпляр плагина.

func (*Plugin) Dispatch

func (p *Plugin) Dispatch(method string, request Request) (result json.RawMessage, herr *Error)

Dispatch вызывает обработчик API плагина. Вызывается обычно реализацией транспорта.

func (*Plugin) HandleAPI

func (p *Plugin) HandleAPI(method string, handler Handler)

HandleAPI регистрирует обработчик API плагина.

func (*Plugin) PluginCoreClient

func (p *Plugin) PluginCoreClient() CoreClient

PluginCoreClient возвращает клиент для вызовов API ядра с правами плагина

func (*Plugin) StaticFiles

func (p *Plugin) StaticFiles() fs.FS

StaticFiles возвращает файловую систему со статическими файлами плагина.

type Request

type Request interface {
	// Context возвращает контекст запроса
	Context() context.Context

	// CoreClient возвращает клиент для вызовов API ядра, привязанный к запросу
	CoreClient() CoreClient

	// Decode разбирает тело запроса и помещает результат в request
	Decode(request any) error

	// UserID возвращает идентификатор пользователя, отправившего запрос
	UserID() string
}

Запрос к API плагина

type Transport

type Transport interface {
	// PluginCoreClient возвращает клиент для вызова API ядра с правами плагина
	PluginCoreClient() CoreClient
}

Source Files

  • plugin.go

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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