Перейти к основному содержимому

Структура

В этом руководстве описан процесс создания собственного модуля для GML. Модули позволяют расширять функциональность лаунчера и серверной части, добавляя новые возможности и интеграции.

Структура модуля

Каждый модуль GML имеет стандартную структуру каталогов:

module-name/
├── frontend/ # Файлы для фронтенд-части (пока не задействована)
├── backend/ # DLL-файлы и зависимости для бэкенд-части
└── product.json # Метаданные модуля

Папка frontend

Папка frontend предназначена для хранения файлов, связанных с пользовательским интерфейсом модуля. В текущей версии GML эта папка пока не задействована, но в будущих версиях будет использоваться для хранения компонентов пользовательского интерфейса.

Папка backend

Папка backend содержит все необходимые DLL-файлы для работы модуля на стороне сервера. Здесь должны находиться:

  • Основная DLL модуля (например, Gml.Web.Api.OAuth2.dll)
  • Все зависимости, необходимые для работы модуля
  • Дополнительные файлы конфигурации (если требуются)

Пример содержимого папки backend:

backend/
├── Gml.Web.Api.OAuth2.dll # Основная DLL модуля
├── Dependency1.dll # Зависимость 1
└── Dependency2.dll # Зависимость 2

Файл product.json

Файл product.json содержит метаданные модуля, которые используются системой GML для идентификации, отображения и управления модулем. Этот файл должен находиться в корневой директории модуля.

Пример содержимого файла product.json:

{
"Id": "01976509-b6b1-7a93-885f-d6c55a7fb914",
"Name": "Oauth",
"Description": "Внедрите интеграцию Oauth в свой проект",
"ProjectLink": "https://gml.recloud.tech",
"ImageUrl": "https://recloud.tech/product-voice.png",
"IsFree": true,
"Price": 0.0,
"Categories": [
{
"Id": "2b4a589e-125d-4e75-90a1-2d091ebc4144",
"Name": "Авторизация"
}
]
}

Описание полей product.json

ПолеТипОписание
Idstring (UUID)Уникальный идентификатор модуля в формате UUID
NamestringНазвание модуля, отображаемое в интерфейсе
DescriptionstringКраткое описание функциональности модуля
ProjectLinkstring (URL)Ссылка на страницу проекта или документацию
ImageUrlstring (URL)Ссылка на изображение/иконку модуля
IsFreebooleanФлаг, указывающий, является ли модуль бесплатным
PricenumberЦена модуля (если IsFree = false)
CategoriesarrayМассив категорий, к которым относится модуль

Каждая категория в массиве Categories содержит следующие поля:

  • Id: Уникальный идентификатор категории
  • Name: Название категории

Создание собственного модуля

Для создания собственного модуля выполните следующие шаги:

  1. Создайте структуру каталогов модуля (frontend, backend, product.json)
  2. Разработайте необходимую функциональность в виде DLL-библиотеки
  3. Поместите DLL-библиотеку и все зависимости в папку backend
  4. Создайте файл product.json с метаданными вашего модуля
  5. Протестируйте модуль в локальной среде
  6. Упакуйте модуль для распространения

Рекомендации по разработке

  • Используйте уникальный UUID для идентификатора модуля
  • Предоставьте понятное и информативное описание модуля
  • Укажите корректные категории для облегчения поиска модуля
  • Обеспечьте совместимость с текущей версией GML
  • Документируйте API и функциональность вашего модуля

Примеры модулей

Вы можете ознакомиться с примерами существующих модулей:

Дополнительные ресурсы