Skip to content

Commit 5a8563b

Browse files
authored
Merge pull request #38 from oscript-library/develop
1.4.0
2 parents 748a809 + d45d8d7 commit 5a8563b

File tree

3 files changed

+86
-44
lines changed

3 files changed

+86
-44
lines changed

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Описание.Имя("ovm")
2-
.Версия("1.3.0")
2+
.Версия("1.4.0")
33
.Автор("Nikita Gryzlov")
44
.АдресАвтора("nixel2007@gmail.com")
55
.Описание("OneScript Version Manager")

src/core/Классы/ВерсииOneScript.os

Lines changed: 84 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -216,59 +216,23 @@
216216
//
217217
Функция ПолучитьСписокДоступныхКУстановкеВерсий() Экспорт
218218

219-
ДоступныеВерсии = Новый ТаблицаЗначений;
220-
ДоступныеВерсии.Колонки.Добавить("Алиас");
221-
ДоступныеВерсии.Колонки.Добавить("Путь");
222-
223-
АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт();
224-
225219
Таймаут = 10;
226220
Соединение = Новый HTTPСоединение(
227-
АдресСайтаОСкрипт,
221+
ПараметрыOVM.АдресСайтаОСкрипт(),
228222
,
229223
,
230224
,
231225
,
232226
Таймаут
233227
);
234-
Запрос = Новый HTTPЗапрос("downloads");
235-
236-
Ответ = Соединение.Получить(Запрос);
237-
HTTP_OK = 200;
238-
Если Ответ.КодСостояния <> HTTP_OK Тогда
239-
ВызватьИсключение Ответ.КодСостояния;
240-
КонецЕсли;
241-
242-
ТелоСтраницы = Ответ.ПолучитьТелоКакСтроку();
243-
244-
РегулярноеВыражение = Новый РегулярноеВыражение(
245-
"<a href=""(\/downloads\/[^""]+)"">(" + ПараметрыOVM.МаскаНомераВерсии() + ")<");
246-
ИндексГруппыАдрес = 1;
247-
ИндексГруппыВерсия = 2;
248-
249-
Совпадения = РегулярноеВыражение.НайтиСовпадения(ТелоСтраницы);
250-
Для Каждого СовпадениеРегулярногоВыражения Из Совпадения Цикл
251-
ГруппаАдрес = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыАдрес];
252-
ГруппаВерсия = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыВерсия];
253-
254-
// TODO: Убрать после решения https://github.com/EvilBeaver/OneScript/issues/667
255-
Если ГруппаВерсия.Значение = "1.0.9" Тогда
256-
Продолжить;
257-
КонецЕсли;
258-
259-
ДоступнаяВерсия = ДоступныеВерсии.Добавить();
260-
ДоступнаяВерсия.Алиас = ГруппаВерсия.Значение;
261-
ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение;
262-
КонецЦикла;
263228

264-
Итератор = ДопустимыеАлиасы().Ключи().Итератор();
265-
266-
Пока Итератор.ЕстьСледующий() Цикл
267-
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь");
268-
КонецЦикла;
229+
ДоступныеВерсии = ТаблицаДоступныхВерсий();
269230

231+
Если Не ПолучитьВерсииПоAPI(Соединение, ДоступныеВерсии) Тогда
232+
ПолучитьВерсииРазборомHTML(Соединение, ДоступныеВерсии);
233+
КонецЕсли;
234+
270235
Возврат ДоступныеВерсии;
271-
272236
КонецФункции
273237

274238
// <Описание функции>
@@ -356,6 +320,82 @@
356320

357321
КонецФункции
358322

323+
Функция ТаблицаДоступныхВерсий()
324+
ДоступныеВерсии = Новый ТаблицаЗначений;
325+
ДоступныеВерсии.Колонки.Добавить("Алиас");
326+
ДоступныеВерсии.Колонки.Добавить("Путь");
327+
328+
Возврат ДоступныеВерсии;
329+
КонецФункции
330+
331+
Функция ПолучитьВерсииПоAPI(Знач Соединение, Знач ДоступныеВерсии)
332+
Запрос = Новый HTTPЗапрос("api/archive");
333+
Ответ = Соединение.Получить(Запрос);
334+
HTTP_OK = 200;
335+
Если Ответ.КодСостояния <> HTTP_OK Тогда
336+
Возврат Ложь;
337+
КонецЕсли;
338+
339+
ЧтениеJSON = Новый ЧтениеJSON();
340+
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
341+
342+
АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт();
343+
МассивВерсий = ПрочитатьJSON(ЧтениеJSON, Ложь);
344+
Для Каждого ОписаниеВерсии Из МассивВерсий Цикл
345+
ДоступнаяВерсия = ДоступныеВерсии.Добавить();
346+
ДоступнаяВерсия.Алиас = ОписаниеВерсии.presentation;
347+
ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ОписаниеВерсии.link;
348+
КонецЦикла;
349+
350+
Итератор = ДопустимыеАлиасы().Ключи().Итератор();
351+
352+
Пока Итератор.ЕстьСледующий() Цикл
353+
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь");
354+
КонецЦикла;
355+
356+
Возврат Истина;
357+
КонецФункции
358+
359+
Процедура ПолучитьВерсииРазборомHTML(Знач Соединение, Знач ДоступныеВерсии)
360+
Запрос = Новый HTTPЗапрос("downloads");
361+
362+
Ответ = Соединение.Получить(Запрос);
363+
HTTP_OK = 200;
364+
Если Ответ.КодСостояния <> HTTP_OK Тогда
365+
ВызватьИсключение Ответ.КодСостояния;
366+
КонецЕсли;
367+
368+
ТелоСтраницы = Ответ.ПолучитьТелоКакСтроку();
369+
370+
РегулярноеВыражение = Новый РегулярноеВыражение(
371+
"<a href=""(\/downloads\/[^""]+)"">(" + ПараметрыOVM.МаскаНомераВерсии() + ")<");
372+
ИндексГруппыАдрес = 1;
373+
ИндексГруппыВерсия = 2;
374+
375+
АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт();
376+
Совпадения = РегулярноеВыражение.НайтиСовпадения(ТелоСтраницы);
377+
Для Каждого СовпадениеРегулярногоВыражения Из Совпадения Цикл
378+
ГруппаАдрес = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыАдрес];
379+
ГруппаВерсия = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыВерсия];
380+
381+
// TODO: Убрать после решения https://github.com/EvilBeaver/OneScript/issues/667
382+
Если ГруппаВерсия.Значение = "1.0.9" Тогда
383+
Продолжить;
384+
КонецЕсли;
385+
386+
ДоступнаяВерсия = ДоступныеВерсии.Добавить();
387+
ДоступнаяВерсия.Алиас = ГруппаВерсия.Значение;
388+
ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение;
389+
КонецЦикла;
390+
391+
Итератор = ДопустимыеАлиасы().Ключи().Итератор();
392+
393+
Пока Итератор.ЕстьСледующий() Цикл
394+
ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь");
395+
КонецЦикла;
396+
397+
КонецПроцедуры
398+
359399
Процедура ОбеспечитьСтрокуВерсииПоАлиасу(ТаблицаВерсий, Алиас, ИмяРеквизитаПуть = "ПутьСервер")
360400

361401
СтрокаВерсии = ТаблицаВерсий.Найти(Алиас, "Алиас");
@@ -365,6 +405,8 @@
365405
СтрокаВерсии.Алиас = Алиас;
366406
КонецЕсли;
367407

408+
// TODO После запуска нового фронта тут надо будет добавлять токен версии, т.к.
409+
// в новом фронте у мета-версий есть своя страничка с документацией.
368410
СтрокаВерсии[ИмяРеквизитаПуть] = ПараметрыOVM.ПолныйАдресККаталогуДистрибутивов();
369411

370412
КонецПроцедуры

src/core/Классы/ПараметрыПриложения.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
КонецФункции
1313

1414
Функция ВерсияПриложения() Экспорт
15-
Возврат "1.3.0";
15+
Возврат "1.4.0";
1616
КонецФункции

0 commit comments

Comments
 (0)