mirror of
https://github.com/bia-technologies/os-confluence.git
synced 2026-06-18 20:02:33 +02:00
#ONECICD-211
Ошибка сравнения версий для обновления
This commit is contained in:
+49
-33
@@ -74,7 +74,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка поиска страницы: " + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка поиска страницы: " + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL, "GET");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка получения версии страницы:" + Идентификатор + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка получения версии страницы:" + Идентификатор + ТекстОшибки(РезультатЗапроса, URL, "GET");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -138,18 +138,13 @@
|
||||
|
||||
Если УспешныйЗапрос(РезультатЗапроса) Тогда
|
||||
|
||||
Регексп = Новый РегулярноеВыражение("""body"":{""storage"":{""value"":""([\w\W]*?)"",""representation"":""storage");
|
||||
Регексп.Многострочный = ИСТИНА;
|
||||
Ответ = Регексп.НайтиСовпадения(РезультатЗапроса.Ответ);
|
||||
Если Ответ.Количество() Тогда
|
||||
|
||||
Тело = Ответ[0].Группы[1].Значение;
|
||||
|
||||
КонецЕсли;
|
||||
Данные = ЗначениеИзJSON(РезультатЗапроса.Ответ);
|
||||
|
||||
Возврат Данные.body.storage.value;
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка получения версии страницы:" + Идентификатор + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка получения версии страницы:" + Идентификатор + ТекстОшибки(РезультатЗапроса, URL, "GET");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -199,7 +194,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка получения подчиненных страниц: " + Идентификатор + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка получения подчиненных страниц: " + Идентификатор + ТекстОшибки(РезультатЗапроса, URL, "GET");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -255,7 +250,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка создания страницы:" + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка создания страницы:" + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL, "POST");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -343,7 +338,7 @@
|
||||
|
||||
Если НЕ УспешныйЗапрос(РезультатЗапроса) Тогда
|
||||
|
||||
ВызватьИсключение "Ошибка обновления страницы:" + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка обновления страницы:" + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL, "PUT");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -391,7 +386,7 @@
|
||||
// КодПространства - Строка - Код пространства confluence
|
||||
// ИмяСтраницы - Строка - Наименование страницы (заголовок)
|
||||
// Идентификатор - Строка - Идентификатор страницы
|
||||
// УдалятьПодчиненные - Булево - признак необходимости удаления подчиненых страниц.
|
||||
// УдалятьПодчиненные - Булево - признак необходимости удаления подчиненных страниц.
|
||||
// Если данный параметр = ЛОЖЬ и есть подчиненные страницы, то удаление не будет выполнено
|
||||
// и будет вызвано исключение
|
||||
//
|
||||
@@ -427,9 +422,9 @@
|
||||
|
||||
URL = ПолучитьURLОперации(,, Идентификатор);
|
||||
РезультатЗапроса = ВыполнитьHTTPЗапрос(ПараметрыПодключения, "DELETE", URL);
|
||||
Если НЕ (РезультатЗапроса.КодСостояния = 200 И РезультатЗапроса.КодСостояния = 204) Тогда
|
||||
Если НЕ (УспешныйЗапрос(РезультатЗапроса) ИЛИ РезультатЗапроса.КодСостояния = 204) Тогда
|
||||
|
||||
ВызватьИсключение "Ошибка обновления страницы:" + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка удаления страницы:" + КодПространства + "." + ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL, "DELETE");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -459,7 +454,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка прикрепления метки:" + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка прикрепления метки:" + ТекстОшибки(РезультатЗапроса, URL, "POST");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -485,7 +480,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка преобразования markdown → html" + ТекстОшибки(РезультатЗапроса, URLОперации);
|
||||
ВызватьИсключение "Ошибка преобразования markdown → html" + ТекстОшибки(РезультатЗапроса, URLОперации, "POST");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -525,7 +520,7 @@
|
||||
ВызватьИсключение СтрШаблон("Ошибка создания страницы: %1.%2%3",
|
||||
АдресСтраницы.КодПространства,
|
||||
АдресСтраницы.ИмяСтраницы,
|
||||
ТекстОшибки(РезультатЗапроса, URL));
|
||||
ТекстОшибки(РезультатЗапроса, URL, HTTPМетод));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -557,14 +552,15 @@
|
||||
|
||||
Если ОбновитьПриИзмененииСодержимого Тогда
|
||||
|
||||
ТекущееСодержимое = СодержимоеСтраницыПоИдентификатору(ПараметрыПодключения, АдресСтраницы.Идентификатор);
|
||||
Регексп = Новый РегулярноеВыражение("id=\\""([a-z0-9-]{36})\\""\ ac\:name"); // идентификаторы плагинов меняются
|
||||
СодержимоеConfluence = СодержимоеСтраницыПоИдентификатору(ПараметрыПодключения, АдресСтраницы.Идентификатор);
|
||||
Регексп = Новый РегулярноеВыражение("ac\:macro-id=""[a-z0-9-]{36}"""); // идентификаторы плагинов меняются
|
||||
Регексп.Многострочный = Истина;
|
||||
ТекущееСодержимое = Регексп.Заменить(ТекущееСодержимое, "NONE");
|
||||
СодержимоеConfluence = Регексп.Заменить(СодержимоеConfluence, "NONE");
|
||||
ВрСодержимое = Регексп.Заменить(Содержимое, "NONE");
|
||||
Если СтрСравнить(СокрЛП(ТекущееСодержимое), СокрЛП(ВрСодержимое)) = 0 Тогда
|
||||
|
||||
Если СтрСравнить(СокрЛП(СодержимоеConfluence), СокрЛП(ВрСодержимое)) = 0 Тогда
|
||||
|
||||
Возврат АдресСтраницы.Идентификатор;
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -584,7 +580,7 @@
|
||||
|
||||
Если НЕ УспешныйЗапрос(РезультатЗапроса) Тогда
|
||||
|
||||
ВызватьИсключение "Ошибка обновления страницы:" + АдресСтраницы.КодПространства + "." + АдресСтраницы.ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL);
|
||||
ВызватьИсключение "Ошибка обновления страницы:" + АдресСтраницы.КодПространства + "." + АдресСтраницы.ИмяСтраницы + ТекстОшибки(РезультатЗапроса, URL, HTTPМетод);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -633,11 +629,13 @@
|
||||
Если Формат = "markdown" Тогда
|
||||
|
||||
Значение = ПреобразоватьMarkdownToConfluence(ПараметрыПодключения, Значение);
|
||||
ТелоСтраницы = Новый Структура("editor", Новый Структура("value, representation", Значение, "editor"));
|
||||
Хранение = Новый Структура("value, representation", Значение, "editor");
|
||||
ТелоСтраницы = Новый Структура("editor", Хранение);
|
||||
|
||||
Иначе
|
||||
|
||||
ТелоСтраницы = Новый Структура("storage", Новый Структура("value, representation", Значение, "storage"));
|
||||
Хранение = Новый Структура("value, representation", Значение, "storage");
|
||||
ТелоСтраницы = Новый Структура("storage", Хранение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@@ -651,6 +649,7 @@
|
||||
|
||||
Функция СоздатьИлиОбновить(ПараметрыПодключения, АдресСтраницы, Содержимое, ОбновитьПриИзмененииСодержимого) Экспорт
|
||||
|
||||
Результат = Новый Структура("Успешно, Действие");
|
||||
Если ПустаяСтрока(АдресСтраницы.Идентификатор) Тогда
|
||||
|
||||
АдресСтраницы.Идентификатор = НайтиСтраницуПоИмени(ПараметрыПодключения, АдресСтраницы.КодПространства, АдресСтраницы.ИмяСтраницы);
|
||||
@@ -659,19 +658,26 @@
|
||||
|
||||
Если Не ПустаяСтрока(АдресСтраницы.Идентификатор) Тогда
|
||||
|
||||
Идентификатор = Обновить(
|
||||
РезультатОбновления = Обновить(
|
||||
ПараметрыПодключения,
|
||||
АдресСтраницы,
|
||||
Содержимое,
|
||||
ОбновитьПриИзмененииСодержимого);
|
||||
|
||||
Если РезультатОбновления <> Неопределено Тогда
|
||||
Результат.Действие = "Обновление";
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
АдресСтраницы.Идентификатор = Создать(ПараметрыПодключения, АдресСтраницы, Содержимое);
|
||||
Результат.Действие = "Создание";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат АдресСтраницы.Идентификатор;
|
||||
Результат.Успешно = Истина;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -771,12 +777,22 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстОшибки(РезультатЗапроса, URL)
|
||||
Функция ЗначениеИзJSON(СтрокаJSON)
|
||||
Чтение = Новый ЧтениеJSON();
|
||||
Чтение.УстановитьСтроку(СтрокаJSON);
|
||||
Данные = ПрочитатьJSON(Чтение);
|
||||
Чтение.Закрыть();
|
||||
|
||||
Возврат Данные;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстОшибки(РезультатЗапроса, URL, HTTМетод)
|
||||
|
||||
Возврат СтрШаблон(
|
||||
"
|
||||
|Запрос: %1
|
||||
|Запрос: [%4] %1
|
||||
|КодСостояния: %2
|
||||
|Ответ: %3", URL, РезультатЗапроса.КодСостояния, РезультатЗапроса.Ответ);
|
||||
|Ответ: %3", URL, РезультатЗапроса.КодСостояния, РезультатЗапроса.Ответ, HTTМетод);
|
||||
|
||||
КонецФункции
|
||||
Reference in New Issue
Block a user