Skip to content

Commit

Permalink
feat: Конструкторы аутентификации
Browse files Browse the repository at this point in the history
- исправление проблем типизации для перевода

vbondarevsky#101
  • Loading branch information
zeegin committed Nov 19, 2021
1 parent 946afdd commit 71f3ddb
Showing 1 changed file with 110 additions and 22 deletions.
132 changes: 110 additions & 22 deletions src/Connector/src/CommonModules/КоннекторHTTP/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -356,26 +356,26 @@
// Ложь - будет выполнен только один запрос к серверу.
// * Json - Структура, Соответствие - данные, которые необходимо сериализовать в JSON.
// * ПараметрыПреобразованияJSON - Структура - задает параметры преобразования JSON:
// ** ПрочитатьВСоответствие - Булево - Если Истина, чтение объекта JSON будет выполнено в Соответствие.
// * ПрочитатьВСоответствие - Булево - Если Истина, чтение объекта JSON будет выполнено в Соответствие.
// Если Ложь, объекты будут считываться в объект типа Структура.
// ** ФорматДатыJSON - ФорматДатыJSON - формат, в котором представлена дата в строке,
// * ФорматДатыJSON - ФорматДатыJSON - формат, в котором представлена дата в строке,
// подлежащей преобразованию.
// ** ИменаСвойствСоЗначениямиДата - Строка, Массив Из Строка - имена свойств JSON,
// * ИменаСвойствСоЗначениямиДата - Строка, Массив Из Строка - имена свойств JSON,
// для которых нужно вызывать восстановление даты из строки.
// ** ИмяФункцииВосстановления - Строка - определяет имя функции, которая будет вызывается при чтении
// * ИмяФункцииВосстановления - Строка - определяет имя функции, которая будет вызывается при чтении
// каждого свойства и должна иметь следующие параметры:
// ** Свойство - Строка - указывается только при чтении объектов JSON
// ** Значение - Произвольный - значение допустимого для сериализации типа
// ** ДополнительныеПараметры - Произвольный
// Возвращаемое значение:
// Произвольный - значение, десериализованное из JSON.
// ** МодульФункцииВосстановления - Произвольный - определяет модуль, процедура которого будет использована для
// * МодульФункцииВосстановления - Произвольный - определяет модуль, процедура которого будет использована для
// восстановления значения.
// ** ДополнительныеПараметрыФункцииВосстановления - Произвольный - определяет дополнительные параметры, которые
// * ДополнительныеПараметрыФункцииВосстановления - Произвольный - определяет дополнительные параметры, которые
// будут переданы в функцию восстановления значений.
// ** ИменаСвойствДляОбработкиВосстановления - Массив - определяет массив имен свойств JSON, для которых
// * ИменаСвойствДляОбработкиВосстановления - Массив - определяет массив имен свойств JSON, для которых
// будет вызвана функция восстановления.
// ** МаксимальнаяВложенность - Число - определяет максимальный уровень вложенности объекта JSON.
// * МаксимальнаяВложенность - Число - определяет максимальный уровень вложенности объекта JSON.
// * ПараметрыЗаписиJSON - ПараметрыЗаписиJSON - используемые при записи объекта JSON.
// * Данные - Строка, ДвоичныеДанные - произвольные данные, которые необходимо отправить в запросе.
// - Структура, Соответствие - поля формы, которые необходимо отправить в запрос:
Expand Down Expand Up @@ -453,23 +453,89 @@

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

// Конструтор аутентификации ОС
//
// Возвращаемое значение:
// Структура:
// * ИспользоватьАутентификациюОС - Строка - включает использование аутентификации NTLM или Negotiate.
//
Функция НоваяАутентификацияОС() Экспорт

Результат = Новый Структура;
Результат.Вставить("ИспользоватьАутентификациюОС", Истина);

Возврат Результат;

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

// Конструтор аутентификации Basic
//
// Возвращаемое значение:
// Структура:
// * Пользователь - Строка - имя пользователя.
// * Пароль - Строка - пароль пользователя.
//
Функция НоваяАутентификацияBasic() Экспорт

Результат = Новый Структура;
Результат.Вставить("Пользователь", "");
Результат.Вставить("Пароль", "");

Возврат Результат;

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

// Конструтор аутентификации Digest
//
// Возвращаемое значение:
// Структура:
// * Тип - Строка - Код типа аутентифкации. Всегда "Digest".
// * Пользователь - Строка - имя пользователя.
// * Пароль - Строка - пароль пользователя.
//
Функция НоваяАутентификацияDigest() Экспорт

Результат = Новый Структура;
Результат.Вставить("Тип", "Digest");
Результат.Вставить("Пользователь", "");
Результат.Вставить("Пароль", "");

Возврат Результат;

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

// Конструтор аутентификации AWS4-HMAC-SHA256
//
// Возвращаемое значение:
// Структура:
// * Тип - Строка - Код типа аутентифкации. Всегда "AWS4-HMAC-SHA256".
// * ИдентификаторКлючаДоступа - Строка - идентификатор ключа доступа.
// * СекретныйКлюч - Строка - секретный ключ.
// * Сервис - Строка - сервис, к которому выполняется подключение.
// * Регион - Строка - регион, к которому выполняется подключение.
//
Функция НоваяАутентификацияAWS4() Экспорт

Результат = Новый Структура;
Результат.Вставить("Тип", "AWS4-HMAC-SHA256");
Результат.Вставить("ИдентификаторКлючаДоступа", "");
Результат.Вставить("СекретныйКлюч", "");
Результат.Вставить("Сервис", "");
Результат.Вставить("Регион", "");

Возврат Результат;

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

// Создает объект для хранения параметров сессии.
//
// Возвращаемое значение:
// Структура - параметры сессии:
// * Заголовки - Соответствие - HTTP заголовки запроса.
// * Аутентификация - Структура - параметры аутентификации запроса.
// ** ИспользоватьАутентификациюОС - Булево - включает использование аутентификации NTLM или Negotiate.
// Значение по умолчанию: Ложь.
// ** Тип - Строка - тип аутентификации. Для Basic Тип можно не указывать.
// Если Тип = Digest или Basic:
// ** Пользователь - Строка - имя пользователя.
// ** Пароль - Строка - пароль пользователя.
// Если Тип = AWS4-HMAC-SHA256:
// ** ИдентификаторКлючаДоступа - Строка - идентификатор ключа доступа.
// ** СекретныйКлюч - Строка - секретный ключ.
// ** Сервис - Строка - сервис, к которому выполняется подключение.
// ** Регион - Строка - регион, к которому выполняется подключение.
// * Аутентификация - См. НоваяАутентификацияОС
// - См. НоваяАутентификацияBasic
// - См. НоваяАутентификацияDigest
// - См. НоваяАутентификацияAWS4
// * Прокси - ИнтернетПрокси - параметры прокси, которые будут использованы при отправке запроса.
// Значение по умолчанию: Неопределено. При этом если в конфигурации используется БСП,
// то значения прокси будет взято из БСП.
Expand Down Expand Up @@ -729,7 +795,7 @@
// * ПараметрыЗапроса - Соответствие - параметры запроса передаваемые на сервер в URL (часть после ?):
// ** Ключ - Строка - ключ параметра в URL.
// ** Значение - Строка - значение параметра URL;
// - Массив - значения параметра (key=value1&key=value2).
// - Массив - значения параметра (key=value1&key=value2).
// * Фрагмент - Строка - часть URL после #.
//
Функция РазобратьURL(Знач URL) Экспорт
Expand Down Expand Up @@ -1787,6 +1853,15 @@

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

// Параметры:
// ПараметрыСоединения - Структура - Параметры соединения:
// Аутентификация - Произвольный - Аутентификация
// ДополнительныеПараметры - Структура - Дополнительные параметры:
// Сессия - Структура, Неопределено - Сессия:
//
// Возвращаемое значение:
// HTTPСоединение
//
Функция Соединение(ПараметрыСоединения, Аутентификация, ДополнительныеПараметры, Сессия)

Если Не ЗначениеЗаполнено(ПараметрыСоединения.Порт) Тогда
Expand Down Expand Up @@ -2047,6 +2122,10 @@

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

// Параметры:
// Сессия -
// ПодготовленныйЗапрос - См. ПодготовитьЗапрос
//
Функция ПодготовитьЗаголовокDigest(Сессия, ПодготовленныйЗапрос)

ПараметрыDigest = Сессия.СлужебныеДанные.ПараметрыDigest;
Expand Down Expand Up @@ -2129,6 +2208,9 @@

#Область Cookies

// Параметры:
// ПодготовленныйЗапрос - См. ПодготовитьЗапрос
//
Процедура ПодготовитьCookies(ПодготовленныйЗапрос)

ЗаголовокCookie = ПодготовитьЗаголовокCookie(ПодготовленныйЗапрос);
Expand All @@ -2138,6 +2220,9 @@

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

// Параметры:
// ПодготовленныйЗапрос - См. ПодготовитьЗапрос
//
Функция ПодготовитьЗаголовокCookie(ПодготовленныйЗапрос)

СтруктураURL = РазобратьURL(ПодготовленныйЗапрос.URL);
Expand Down Expand Up @@ -2505,6 +2590,9 @@

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

// Параметры:
// ПодготовленныйЗапрос - См. ПодготовитьЗапрос
//
Процедура ПодготовитьАутентификациюAWS4(ПодготовленныйЗапрос)

ЗначениеЗаголовка = ЗначениеЗаголовка("x-amz-date", ПодготовленныйЗапрос.Заголовки);
Expand Down Expand Up @@ -3261,7 +3349,7 @@
Функция ВырезатьТекст(Текст, МаксимальнаяДлинаТекста = 1000)

Если НайтиНедопустимыеСимволыXML(Текст) Тогда
Возврат НСтр("ru ='<Данные>'");
Возврат НСтр("ru = '<Данные>'");
КонецЕсли;

Если СтрДлина(Текст) <= МаксимальнаяДлинаТекста Тогда
Expand Down

0 comments on commit 71f3ddb

Please sign in to comment.