1. Добавлен метод получения содержимого страницы

2. Добавлен параметр "ОбновитьПриИзмененииСодержимого" в методы "ОбновитьСтраницу" и "СоздатьСтраницуИлиОбновить"
This commit is contained in:
Maxmov Valery
2017-04-17 11:58:09 +03:00
parent 1c14e25b41
commit 6ff437968f
2 changed files with 73 additions and 14 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
Описание.Имя("confluence") Описание.Имя("confluence")
.Версия("1.0.1") .Версия("1.0.2")
.ЗависитОт("json") .ЗависитОт("json")
.ВерсияСреды("1.0.14") .ВерсияСреды("1.0.14")
.ВключитьФайл("readme.md") .ВключитьФайл("readme.md")
+72 -13
View File
@@ -104,6 +104,7 @@
Если РезультатЗапроса.КодСостояния = 200 Тогда Если РезультатЗапроса.КодСостояния = 200 Тогда
ПарсерJSON = Новый ПарсерJSON; ПарсерJSON = Новый ПарсерJSON;
Ответ = ПарсерJSON.ПрочитатьJSON(РезультатЗапроса.Ответ); Ответ = ПарсерJSON.ПрочитатьJSON(РезультатЗапроса.Ответ);
Результат = Ответ.Получить("version"); Результат = Ответ.Получить("version");
Если Результат <> Неопределено Тогда Если Результат <> Неопределено Тогда
@@ -125,6 +126,47 @@
КонецФункции // ВерсияСтраницыПоИдентификатору() КонецФункции // ВерсияСтраницыПоИдентификатору()
// СодержимоеСтраницыПоИдентификатору
// По идентификатору страницы получает ее содержимое
//
// Параметры:
// ПараметрыПодключения - Структура - Параметры подключения полученные методом ОписаниеПодключения
// Идентификатор - Строка - Идентификатор страницы
//
// Возвращаемое значение:
// Строка - Тело страницы
//
Функция СодержимоеСтраницыПоИдентификатору(ПараметрыПодключения, Идентификатор) Экспорт
Тело = "";
URL = ПолучитьURLОперации(,, Идентификатор) + "&expand=body.storage";
РезультатЗапроса = ВыполнитьHTTPЗапрос(ПараметрыПодключения, "GET", URL);
Если РезультатЗапроса.КодСостояния = 200 Тогда
ПарсерJSON = Новый ПарсерJSON;
Регексп = Новый РегулярноеВыражение("""body"":{""storage"":{""value"":""([\w\W]*?)"",""representation"":""storage");
Регексп.Многострочный = ИСТИНА;
Ответ = Регексп.НайтиСовпадения(РезультатЗапроса.Ответ);
Если Ответ.Количество() Тогда
Тело = Ответ[0].Группы[1].Значение;
КонецЕсли;
Иначе
ВызватьИсключение "Ошибка получения версии страницы:" + Идентификатор +
"Запрос: " + URL + "
|КодСостояния: " + РезультатЗапроса.КодСостояния + "
|Ответ: " + РезультатЗапроса.Ответ;
КонецЕсли;
Возврат Тело;
КонецФункции // СодержимоеСтраницыПоИдентификатору()
// ПодчиненныеСтраницыПоИдентификатору // ПодчиненныеСтраницыПоИдентификатору
// Возвращает таблицу с подчиненными страницами // Возвращает таблицу с подчиненными страницами
// //
@@ -241,17 +283,18 @@
// Выполняет обновление существующей страницы // Выполняет обновление существующей страницы
// //
// Параметры: // Параметры:
// ПараметрыПодключения - Структура - Параметры подключения полученные методом ОписаниеПодключения // ПараметрыПодключения - Структура - Параметры подключения полученные методом ОписаниеПодключения
// КодПространства - Строка - Код пространства confluence // КодПространства - Строка - Код пространства confluence
// ИмяСтраницы - Строка - Наименование страницы (заголовок) // ИмяСтраницы - Строка - Наименование страницы (заголовок)
// Идентификатор - Строка - идентификатор страницы. Если идентификатор указан, // Идентификатор - Строка - идентификатор страницы. Если идентификатор указан,
// то при обновлении страницы наименование будет установлено из параметра ИмяСтраницы // то при обновлении страницы наименование будет установлено из параметра ИмяСтраницы
// Содержимое - Строка - Содержимое (тело) страницы. Текст должен обработан, т.е. экранированы спец символы для помещения в JSON // Содержимое - Строка - Содержимое (тело) страницы. Текст должен обработан, т.е. экранированы спец символы для помещения в JSON
// ОбновитьПриИзмененииСодержимого - Булево - обновлять страницу, только если содержимое изменилось, иначе всегда обновлять
// //
// Возвращаемое значение: // Возвращаемое значение:
// Строка - Идентификатор обновленной страницы // Строка - Идентификатор обновленной страницы
// //
Функция ОбновитьСтраницу(ПараметрыПодключения, КодПространства, ИмяСтраницы = "", Знач Идентификатор = "", Содержимое = "") Экспорт Функция ОбновитьСтраницу(ПараметрыПодключения, КодПространства, ИмяСтраницы = "", Знач Идентификатор = "", Содержимое = "", ОбновитьПриИзмененииСодержимого = ЛОЖЬ) Экспорт
Если ПустаяСтрока(ИмяСтраницы) И ПустаяСтрока(Идентификатор) Тогда Если ПустаяСтрока(ИмяСтраницы) И ПустаяСтрока(Идентификатор) Тогда
@@ -273,6 +316,21 @@
КонецЕсли; КонецЕсли;
Если ОбновитьПриИзмененииСодержимого Тогда
ТекущееСодержимое = СодержимоеСтраницыПоИдентификатору(ПараметрыПодключения, Идентификатор);
Регексп = Новый РегулярноеВыражение("id=\\""([a-z0-9-]{36})\\""\ ac\:name"); // идентификаторы плагинов меняются
Регексп.Многострочный = ИСТИНА;
ТекущееСодержимое = Регексп.Заменить(ТекущееСодержимое, "NONE");
ВрСодержимое = Регексп.Заменить(Содержимое, "NONE");
Если СтрСравнить(СокрЛП(ТекущееСодержимое), СокрЛП(ВрСодержимое)) = 0 Тогда
Возврат Идентификатор;
КонецЕсли;
КонецЕсли;
URL = ПолучитьURLОперации(,, Идентификатор); URL = ПолучитьURLОперации(,, Идентификатор);
Версия = ВерсияСтраницыПоИдентификатору(ПараметрыПодключения, Идентификатор); Версия = ВерсияСтраницыПоИдентификатору(ПараметрыПодключения, Идентификатор);
Версия = Формат(Число(Версия) + 1, "ЧГ="); Версия = Формат(Число(Версия) + 1, "ЧГ=");
@@ -316,22 +374,23 @@
// Создает страницу, если же страница существует, то обновляет // Создает страницу, если же страница существует, то обновляет
// //
// Параметры: // Параметры:
// ПараметрыПодключения - Структура - Параметры подключения полученные методом ОписаниеПодключения // ПараметрыПодключения - Структура - Параметры подключения полученные методом ОписаниеПодключения
// КодПространства - Строка - Код пространства confluence // КодПространства - Строка - Код пространства confluence
// ИмяСтраницы - Строка - Наименование страницы (заголовок) // ИмяСтраницы - Строка - Наименование страницы (заголовок)
// Содержимое - Строка - Содержимое (тело) страницы. Текст должен обработан, т.е. экранированы спец символы для помещения в JSON // Содержимое - Строка - Содержимое (тело) страницы. Текст должен обработан, т.е. экранированы спец символы для помещения в JSON
// ИдентификаторРодителя - Строка - идентификатор родительской страницы // ИдентификаторРодителя - Строка - идентификатор родительской страницы
// ОбновитьПриИзмененииСодержимого - Булево - обновлять страницу, только если содержимое изменилось, иначе всегда обновлять
// //
// Возвращаемое значение: // Возвращаемое значение:
// Строка - Идентификатор созданной / обновленной страницы // Строка - Идентификатор созданной / обновленной страницы
// //
Функция СоздатьСтраницуИлиОбновить(ПараметрыПодключения, КодПространства, ИмяСтраницы, Содержимое, ИдентификаторРодителя = "")Экспорт Функция СоздатьСтраницуИлиОбновить(ПараметрыПодключения, КодПространства, ИмяСтраницы, Содержимое, ИдентификаторРодителя = "", ОбновитьПриИзмененииСодержимого = ЛОЖЬ)Экспорт
Идентификатор = НайтиСтраницуПоИмени(ПараметрыПодключения, КодПространства, ИмяСтраницы); Идентификатор = НайтиСтраницуПоИмени(ПараметрыПодключения, КодПространства, ИмяСтраницы);
Если Не ПустаяСтрока(Идентификатор) Тогда Если Не ПустаяСтрока(Идентификатор) Тогда
Идентификатор = ОбновитьСтраницу(ПараметрыПодключения, КодПространства, ИмяСтраницы, Идентификатор, Содержимое); Идентификатор = ОбновитьСтраницу(ПараметрыПодключения, КодПространства, ИмяСтраницы, Идентификатор, Содержимое, ОбновитьПриИзмененииСодержимого);
Иначе Иначе