-
Notifications
You must be signed in to change notification settings - Fork 9
Обращение к API бэкенда в команде ls -r #37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -216,59 +216,23 @@ | |
// | ||
Функция ПолучитьСписокДоступныхКУстановкеВерсий() Экспорт | ||
|
||
ДоступныеВерсии = Новый ТаблицаЗначений; | ||
ДоступныеВерсии.Колонки.Добавить("Алиас"); | ||
ДоступныеВерсии.Колонки.Добавить("Путь"); | ||
|
||
АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); | ||
|
||
Таймаут = 10; | ||
Соединение = Новый HTTPСоединение( | ||
АдресСайтаОСкрипт, | ||
ПараметрыOVM.АдресСайтаОСкрипт(), | ||
, | ||
, | ||
, | ||
, | ||
Таймаут | ||
); | ||
Запрос = Новый HTTPЗапрос("downloads"); | ||
|
||
Ответ = Соединение.Получить(Запрос); | ||
HTTP_OK = 200; | ||
Если Ответ.КодСостояния <> HTTP_OK Тогда | ||
ВызватьИсключение Ответ.КодСостояния; | ||
КонецЕсли; | ||
|
||
ТелоСтраницы = Ответ.ПолучитьТелоКакСтроку(); | ||
|
||
РегулярноеВыражение = Новый РегулярноеВыражение( | ||
"<a href=""(\/downloads\/[^""]+)"">(" + ПараметрыOVM.МаскаНомераВерсии() + ")<"); | ||
ИндексГруппыАдрес = 1; | ||
ИндексГруппыВерсия = 2; | ||
|
||
Совпадения = РегулярноеВыражение.НайтиСовпадения(ТелоСтраницы); | ||
Для Каждого СовпадениеРегулярногоВыражения Из Совпадения Цикл | ||
ГруппаАдрес = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыАдрес]; | ||
ГруппаВерсия = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыВерсия]; | ||
|
||
// TODO: Убрать после решения https://github.com/EvilBeaver/OneScript/issues/667 | ||
Если ГруппаВерсия.Значение = "1.0.9" Тогда | ||
Продолжить; | ||
КонецЕсли; | ||
|
||
ДоступнаяВерсия = ДоступныеВерсии.Добавить(); | ||
ДоступнаяВерсия.Алиас = ГруппаВерсия.Значение; | ||
ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение; | ||
КонецЦикла; | ||
|
||
Итератор = ДопустимыеАлиасы().Ключи().Итератор(); | ||
|
||
Пока Итератор.ЕстьСледующий() Цикл | ||
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь"); | ||
КонецЦикла; | ||
ДоступныеВерсии = ТаблицаДоступныхВерсий(); | ||
|
||
Если Не ПолучитьВерсииПоAPI(Соединение, ДоступныеВерсии) Тогда | ||
ПолучитьВерсииРазборомHTML(Соединение, ДоступныеВерсии); | ||
КонецЕсли; | ||
|
||
Возврат ДоступныеВерсии; | ||
|
||
КонецФункции | ||
|
||
// <Описание функции> | ||
|
@@ -356,6 +320,82 @@ | |
|
||
КонецФункции | ||
|
||
Функция ТаблицаДоступныхВерсий() | ||
ДоступныеВерсии = Новый ТаблицаЗначений; | ||
ДоступныеВерсии.Колонки.Добавить("Алиас"); | ||
ДоступныеВерсии.Колонки.Добавить("Путь"); | ||
|
||
Возврат ДоступныеВерсии; | ||
КонецФункции | ||
|
||
Функция ПолучитьВерсииПоAPI(Знач Соединение, Знач ДоступныеВерсии) | ||
Запрос = Новый HTTPЗапрос("api/archive"); | ||
Ответ = Соединение.Получить(Запрос); | ||
HTTP_OK = 200; | ||
Если Ответ.КодСостояния <> HTTP_OK Тогда | ||
Возврат Ложь; | ||
КонецЕсли; | ||
|
||
ЧтениеJSON = Новый ЧтениеJSON(); | ||
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); | ||
|
||
АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); | ||
МассивВерсий = ПрочитатьJSON(ЧтениеJSON, Ложь); | ||
Для Каждого ОписаниеВерсии Из МассивВерсий Цикл | ||
ДоступнаяВерсия = ДоступныеВерсии.Добавить(); | ||
ДоступнаяВерсия.Алиас = ОписаниеВерсии.presentation; | ||
ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ОписаниеВерсии.link; | ||
КонецЦикла; | ||
|
||
Итератор = ДопустимыеАлиасы().Ключи().Итератор(); | ||
|
||
Пока Итератор.ЕстьСледующий() Цикл | ||
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь"); | ||
КонецЦикла; | ||
|
||
Возврат Истина; | ||
КонецФункции | ||
|
||
Процедура ПолучитьВерсииРазборомHTML(Знач Соединение, Знач ДоступныеВерсии) | ||
Запрос = Новый HTTPЗапрос("downloads"); | ||
|
||
Ответ = Соединение.Получить(Запрос); | ||
HTTP_OK = 200; | ||
Если Ответ.КодСостояния <> HTTP_OK Тогда | ||
ВызватьИсключение Ответ.КодСостояния; | ||
КонецЕсли; | ||
|
||
ТелоСтраницы = Ответ.ПолучитьТелоКакСтроку(); | ||
|
||
РегулярноеВыражение = Новый РегулярноеВыражение( | ||
"<a href=""(\/downloads\/[^""]+)"">(" + ПараметрыOVM.МаскаНомераВерсии() + ")<"); | ||
ИндексГруппыАдрес = 1; | ||
ИндексГруппыВерсия = 2; | ||
|
||
АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); | ||
Совпадения = РегулярноеВыражение.НайтиСовпадения(ТелоСтраницы); | ||
Для Каждого СовпадениеРегулярногоВыражения Из Совпадения Цикл | ||
ГруппаАдрес = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыАдрес]; | ||
ГруппаВерсия = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыВерсия]; | ||
|
||
// TODO: Убрать после решения https://github.com/EvilBeaver/OneScript/issues/667 | ||
Если ГруппаВерсия.Значение = "1.0.9" Тогда | ||
Продолжить; | ||
КонецЕсли; | ||
|
||
ДоступнаяВерсия = ДоступныеВерсии.Добавить(); | ||
ДоступнаяВерсия.Алиас = ГруппаВерсия.Значение; | ||
ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение; | ||
КонецЦикла; | ||
|
||
Итератор = ДопустимыеАлиасы().Ключи().Итератор(); | ||
|
||
Пока Итератор.ЕстьСледующий() Цикл | ||
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь"); | ||
КонецЦикла; | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ОбеспечитьСтрокуВерсииПоАлиасу(ТаблицаВерсий, Алиас, ИмяРеквизитаПуть = "ПутьСервер") | ||
|
||
СтрокаВерсии = ТаблицаВерсий.Найти(Алиас, "Алиас"); | ||
|
@@ -365,6 +405,8 @@ | |
СтрокаВерсии.Алиас = Алиас; | ||
КонецЕсли; | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Не совсем понятно, что надо добавлять. И можно ли на это заложиться уже сейчас, чтобы не делать две версии овм под новую структуру сайта? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Сейчас в качестве урла для метаверсий в выхлопе команды Но если сейчас это написать в ovm то эти линки приведут на 404 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Что, наверное, не страшно, т.к. по этим линкам все равно вряд ли кто-то ходит... |
||
// TODO После запуска нового фронта тут надо будет добавлять токен версии, т.к. | ||
// в новом фронте у мета-версий есть своя страничка с документацией. | ||
СтрокаВерсии[ИмяРеквизитаПуть] = ПараметрыOVM.ПолныйАдресККаталогуДистрибутивов(); | ||
|
||
КонецПроцедуры | ||
|
Uh oh!
There was an error while loading. Please reload this page.