mirror of
https://github.com/bia-technologies/os-confluence.git
synced 2026-06-18 20:02:33 +02:00
Описание
This commit is contained in:
@@ -32,3 +32,37 @@
|
||||
#### Установка метки странице
|
||||
|
||||
`Confluence.ПрикрепитьМеткуКСтранице(ПараметрыПодключения, ИдентификаторСтраницы, "Моя метка")`
|
||||
|
||||
### Примеры нового API
|
||||
|
||||
```bsl
|
||||
|
||||
// Настройки подключения
|
||||
Подключение = Confluence.ОписаниеПодключения("https://confluence.myserver.ru", "user", "password")
|
||||
|
||||
// Получение идентификатора страницы
|
||||
ИдентификаторРодителя = Confluence.НайтиСтраницуПоИмени(Подключение, "SpaceKey", "Корневая страница");
|
||||
|
||||
// Структура адреса страницы (Пространство, Наименование, Идентификатор, Родитель)
|
||||
АдресСтраницы = Confluence.АдресСтраницы("SpaceKey", "Новая страница", , ИдентификаторРодителя);
|
||||
|
||||
// Создадим новую страницу
|
||||
Confluence.Создать(Подключение, АдресСтраницы, "Содержимое страницы");
|
||||
Сообщить("Идентификатор новой страницы: " + АдресСтраницы.Идентификатор)
|
||||
|
||||
// Обновим содержимое
|
||||
Confluence.Обновить(Подключение, АдресСтраницы, "Новое содержимое страницы", Истина);
|
||||
|
||||
// Адрес второй страницы
|
||||
АдресСтраницы = Confluence.АдресСтраницы("SpaceKey", "Вторая страница", , ИдентификаторРодителя);
|
||||
|
||||
// Обновим если содержимое отличается, либо создадим если отсутствует
|
||||
Confluence.СоздатьИлиОбновить(Подключение, АдресСтраницы, "Содержимое второй страницы");
|
||||
|
||||
// Опубликуем страницу в формате Markdown
|
||||
АдресСтраницы = Confluence.АдресСтраницы("SpaceKey", "Третья страница Markdown", , ИдентификаторРодителя);
|
||||
Содержимое = Новый Структура("Значение, Формат", "# Содержимое третьей страницы", confluence.ФорматыСодержимого.MarkDown);
|
||||
Confluence.СоздатьИлиОбновить(Подключение, АдресСтраницы, Содержимое);
|
||||
|
||||
|
||||
```
|
||||
|
||||
+127
-60
@@ -140,7 +140,7 @@
|
||||
|
||||
Если УспешныйЗапрос(РезультатЗапроса) Тогда
|
||||
|
||||
Данные = ЗначениеИзJSON(РезультатЗапроса.Ответ);
|
||||
Данные = ДесериализоватьJSON(РезультатЗапроса.Ответ);
|
||||
|
||||
Возврат Данные.body.storage.value;
|
||||
|
||||
@@ -464,32 +464,20 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПреобразоватьMarkdownToConfluence(ПараметрыПодключения, СодержимоеMarkdown) Экспорт
|
||||
|
||||
Идентификатор = "";
|
||||
|
||||
URLОперации = "rest/tinymce/1/markdownxhtmlconverter";
|
||||
|
||||
ПараметрыОперации = Новый Структура();
|
||||
ПараметрыОперации.Вставить("wiki", СодержимоеMarkdown);
|
||||
|
||||
Тело = СтрокаJSON(ПараметрыОперации);
|
||||
РезультатЗапроса = ВыполнитьHTTPЗапрос(ПараметрыПодключения, "POST", URLОперации, Тело, "text/html; charset=UTF-8");
|
||||
|
||||
Если УспешныйЗапрос(РезультатЗапроса) Тогда
|
||||
|
||||
Возврат РезультатЗапроса.Ответ;
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Ошибка преобразования markdown → html" + ТекстОшибки(РезультатЗапроса, URLОперации, "POST");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Идентификатор;
|
||||
|
||||
КонецФункции
|
||||
#Область НовоеAPI
|
||||
|
||||
// АдресСтраницы
|
||||
// Описание расположения страницы
|
||||
//
|
||||
// Параметры:
|
||||
// КодПространства - Строка - Код пространства confluence
|
||||
// ИмяСтраницы - Строка - имя страницы, должно быть уникально в пределах пространства
|
||||
// Идентификатор - Строка - Идентификатор страницы confluence, может быть получен только поиском
|
||||
// ИдентификаторРодителя - Строка - Идентификатор родителя страницы confluence, может быть получен только поиском
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание расположения страницы
|
||||
//
|
||||
Функция АдресСтраницы(КодПространства, ИмяСтраницы = "", Идентификатор = "", ИдентификаторРодителя = "") Экспорт
|
||||
|
||||
Адрес = Новый Структура;
|
||||
@@ -503,6 +491,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать
|
||||
// Создает новую страницу в confluence и возвращает идентификатор новой страницы, также установив его в "АдресСтраницы"
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыПодключения - Структура - Описание подключения, см. confluence.ОписаниеПодключения
|
||||
// АдресСтраницы - Структура - Описание расположения страницы, см. confluence.АдресСтраницы
|
||||
// Содержимое - Строка, Структура - Содержимое новой страницы.
|
||||
// либо строка содержимого в формате confluence
|
||||
// либо структура с ключами Значение и Формат (Confluence, Markdown, HTML)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Идентификатор созданной страницы
|
||||
//
|
||||
Функция Создать(ПараметрыПодключения, АдресСтраницы, Содержимое = Неопределено) Экспорт
|
||||
|
||||
HTTPМетод = "POST";
|
||||
@@ -512,7 +513,7 @@
|
||||
|
||||
URL = ПолучитьURLОперации();
|
||||
|
||||
РезультатЗапроса = ВыполнитьHTTPЗапрос(ПараметрыПодключения, HTTPМетод, URL, СтрокаJSON(ПараметрыКоманды));
|
||||
РезультатЗапроса = ВыполнитьHTTPЗапрос(ПараметрыПодключения, HTTPМетод, URL, СериализоватьJSON(ПараметрыКоманды));
|
||||
|
||||
Если УспешныйЗапрос(РезультатЗапроса) Тогда
|
||||
|
||||
@@ -531,6 +532,23 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Обновить
|
||||
// Выполняет обновление существующей страницы
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыПодключения - Структура - Описание подключения, см. confluence.ОписаниеПодключения
|
||||
// АдресСтраницы - Структура - Описание расположения страницы, см. confluence.АдресСтраницы
|
||||
// Содержимое - Строка, Структура - Содержимое новой страницы.
|
||||
// либо строка содержимого в формате confluence
|
||||
// либо структура с ключами Значение и Формат (Confluence, Markdown, HTML)
|
||||
//
|
||||
// ОбновитьПриИзмененииСодержимого - Булево - Выполнять только если содержимое изменено,
|
||||
// Если установлено в Истина, но меняется только родитель или имя страницы - изменения не будут применены
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, Строка - Когда обновление не требуется будет возвращено Неопределено,
|
||||
// в других случаях - идентификатор страницы
|
||||
//
|
||||
Функция Обновить(ПараметрыПодключения, АдресСтраницы, Содержимое = Неопределено, ОбновитьПриИзмененииСодержимого = Ложь) Экспорт
|
||||
|
||||
Если ПустаяСтрока(АдресСтраницы.ИмяСтраницы) И ПустаяСтрока(АдресСтраницы.Идентификатор) Тогда
|
||||
@@ -590,7 +608,7 @@
|
||||
|
||||
ПараметрыКоманды = ПараметрыСозданияОбновления(АдресСтраницы, ОписаниеСодержимого, Версия);
|
||||
|
||||
ТелоЗапроса = СтрокаJSON(ПараметрыКоманды);
|
||||
ТелоЗапроса = СериализоватьJSON(ПараметрыКоманды);
|
||||
|
||||
РезультатЗапроса = ВыполнитьHTTPЗапрос(ПараметрыПодключения, HTTPМетод, URL, ТелоЗапроса);
|
||||
|
||||
@@ -602,7 +620,66 @@
|
||||
|
||||
Возврат АдресСтраницы.Идентификатор;
|
||||
|
||||
КонецФункции // ОбновитьСтраницу()
|
||||
КонецФункции
|
||||
|
||||
// СоздатьИлиОбновить
|
||||
// Создает новую страницу, либо обновление существующую
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыПодключения - Структура - Описание подключения, см. confluence.ОписаниеПодключения
|
||||
// АдресСтраницы - Структура - Описание расположения страницы, см. confluence.АдресСтраницы
|
||||
// Содержимое - Строка, Структура - Содержимое новой страницы.
|
||||
// либо строка содержимого в формате confluence
|
||||
// либо структура с ключами Значение и Формат (Confluence, Markdown, HTML)
|
||||
// ОбновитьПриИзмененииСодержимого - Булево - Выполнять только если содержимое изменено,
|
||||
// Если установлено в Истина, но меняется только родитель или имя страницы - изменения не будут применены
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Ключи:
|
||||
// Успешно - Булево - не было ошибок
|
||||
// Действие - Строка - "Создание", "Обновление", Неопределено
|
||||
//
|
||||
Функция СоздатьИлиОбновить(ПараметрыПодключения, АдресСтраницы, Содержимое, ОбновитьПриИзмененииСодержимого) Экспорт
|
||||
|
||||
Результат = Новый Структура("Успешно, Действие");
|
||||
Если ПустаяСтрока(АдресСтраницы.Идентификатор) Тогда
|
||||
|
||||
АдресСтраницы.Идентификатор = НайтиСтраницуПоИмени(ПараметрыПодключения, АдресСтраницы.КодПространства, АдресСтраницы.ИмяСтраницы);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ПустаяСтрока(АдресСтраницы.Идентификатор) Тогда
|
||||
|
||||
РезультатОбновления = Обновить(
|
||||
ПараметрыПодключения,
|
||||
АдресСтраницы,
|
||||
Содержимое,
|
||||
ОбновитьПриИзмененииСодержимого);
|
||||
|
||||
Если РезультатОбновления <> Неопределено Тогда
|
||||
Результат.Действие = "Обновление";
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
АдресСтраницы.Идентификатор = Создать(ПараметрыПодключения, АдресСтраницы, Содержимое);
|
||||
Результат.Действие = "Создание";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Успешно = Истина;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЙ ФУНКЦИОНАЛ
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область СлужебныеМетоды
|
||||
|
||||
Функция ПараметрыСозданияОбновления(Адрес, ОписаниеСодержимого, Версия = Неопределено)
|
||||
|
||||
@@ -710,44 +787,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьИлиОбновить(ПараметрыПодключения, АдресСтраницы, Содержимое, ОбновитьПриИзмененииСодержимого) Экспорт
|
||||
Функция ПреобразоватьMarkdownToConfluence(ПараметрыПодключения, СодержимоеMarkdown)
|
||||
|
||||
Идентификатор = "";
|
||||
|
||||
Результат = Новый Структура("Успешно, Действие");
|
||||
Если ПустаяСтрока(АдресСтраницы.Идентификатор) Тогда
|
||||
|
||||
АдресСтраницы.Идентификатор = НайтиСтраницуПоИмени(ПараметрыПодключения, АдресСтраницы.КодПространства, АдресСтраницы.ИмяСтраницы);
|
||||
|
||||
КонецЕсли;
|
||||
URLОперации = "rest/tinymce/1/markdownxhtmlconverter";
|
||||
|
||||
ПараметрыОперации = Новый Структура();
|
||||
ПараметрыОперации.Вставить("wiki", СодержимоеMarkdown);
|
||||
|
||||
Если Не ПустаяСтрока(АдресСтраницы.Идентификатор) Тогда
|
||||
Тело = СериализоватьJSON(ПараметрыОперации);
|
||||
РезультатЗапроса = ВыполнитьHTTPЗапрос(ПараметрыПодключения, "POST", URLОперации, Тело, "text/html; charset=UTF-8");
|
||||
|
||||
Если УспешныйЗапрос(РезультатЗапроса) Тогда
|
||||
|
||||
Возврат РезультатЗапроса.Ответ;
|
||||
|
||||
РезультатОбновления = Обновить(
|
||||
ПараметрыПодключения,
|
||||
АдресСтраницы,
|
||||
Содержимое,
|
||||
ОбновитьПриИзмененииСодержимого);
|
||||
|
||||
Если РезультатОбновления <> Неопределено Тогда
|
||||
Результат.Действие = "Обновление";
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
АдресСтраницы.Идентификатор = Создать(ПараметрыПодключения, АдресСтраницы, Содержимое);
|
||||
Результат.Действие = "Создание";
|
||||
|
||||
ВызватьИсключение "Ошибка преобразования markdown → html" + ТекстОшибки(РезультатЗапроса, URLОперации, "POST");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Успешно = Истина;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
Возврат Идентификатор;
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЙ ФУНКЦИОНАЛ
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПолучитьURLОперации(КодПространства = "", ИмяСтраницы = "", Идентификатор = "", Операция = "")
|
||||
|
||||
URLОперации = "rest/api/content/";
|
||||
@@ -828,7 +893,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СтрокаJSON(Значение)
|
||||
Функция СериализоватьJSON(Значение)
|
||||
|
||||
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(Ложь, , Истина, , , , , , Истина);
|
||||
Запись = Новый ЗаписьJSON();
|
||||
@@ -840,7 +905,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеИзJSON(СтрокаJSON)
|
||||
Функция ДесериализоватьJSON(СтрокаJSON)
|
||||
Чтение = Новый ЧтениеJSON();
|
||||
Чтение.УстановитьСтроку(СтрокаJSON);
|
||||
Данные = ПрочитатьJSON(Чтение);
|
||||
@@ -870,6 +935,8 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
ФорматыСодержимого = Новый Структура();
|
||||
ФорматыСодержимого.Вставить("Markdown", "markdown");
|
||||
ФорматыСодержимого.Вставить("Confluence", "confluence");
|
||||
|
||||
Reference in New Issue
Block a user