Веб-сервис для преобразования XML отчётов Московской Биржи в HTML формат.
- Конвертация XML файлов MOEX в HTML
- Автоматическое определение кодировки (Windows-1251, UTF-8)
- Загрузка необходимых XSLT стилей с серверов MOEX
- Удобный интерфейс с drag & drop
- Возможность скачивания и печати результатов
- API для интеграции
# Клонирование репозитория
git clone <repository-url>
cd moex_converter
# Сборка Docker образа
docker build -t moex-converter .
# Запуск контейнера
docker run -p 5050:5050 moex-converterПосле запуска сервис будет доступен по адресу: http://localhost:5050
Главная страница с интерфейсом загрузки файлов.
Загрузка XML файла через веб-интерфейс.
Параметры:
xml_file(multipart/form-data) - XML файл для конвертации
Ответ:
- При успехе: редирект на
/result/<temp_id> - При ошибке: HTML страница с описанием ошибки (400/500)
Просмотр результата конвертации.
Параметры:
temp_id(path) - идентификатор временного файла?print(query, опционально) - автоматический запуск печати
Ответ: HTML страница с результатом конвертации
Скачивание сконвертированного HTML файла.
Параметры:
temp_id(path) - идентификатор временного файлаname(query, опционально) - имя файла для скачивания
Ответ: HTML файл с заголовком Content-Disposition: attachment
Конвертация XML файла в HTML через API.
Параметры:
xml_file(multipart/form-data) - XML файл для конвертации
Ответ (200 OK):
{
"success": true,
"temp_id": "uuid-here",
"download_url": "http://host/download/uuid-here",
"preview_url": "http://host/result/uuid-here",
"xslt_used": "https://ftp.moex.com/pub/Reports/Currency/XSLT/CCX99_RU_23062025.xsl"
}Ошибки:
400- файл не загружен или недопустимый формат500- ошибка при обработке файла
Пример использования:
curl -X POST -F "xml_file=@report.xml" http://localhost:5050/api/convertВалидация XML файла.
Параметры:
xml_file(multipart/form-data) - XML файл для валидации
Ответ (200 OK):
{
"valid": true,
"message": "XML валиден"
}или при ошибке:
{
"valid": false,
"message": "Ошибка синтаксиса XML: ..."
}Пример использования:
curl -X POST -F "xml_file=@report.xml" http://localhost:5050/api/validateОчистка временных файлов (требует аутентификации в продакшене).
Заголовки:
X-Admin-Key(требуется в продакшене) - ключ администратора
Ответ (200 OK):
{
"success": true,
"deleted": 5
}Ошибки:
403- доступ запрещен (в продакшене без правильного ключа)
Пример использования:
curl -X POST -H "X-Admin-Key: your-admin-key" http://localhost:5050/cleanup- Максимальный размер файла: 16 MB
- Поддерживаемые форматы:
.xml - Временные файлы автоматически удаляются через 1 час
- В продакшене требуется установка переменной окружения
SECRET_KEY