mirror of
https://github.com/vbondarevsky/Connector.git
synced 2024-11-24 08:42:15 +02:00
Восстановление неподдерживаемых JSON типов (#64)
Co-authored-by: Vladimir Bondarevskiy <vbondarevsky@gmail.com>
This commit is contained in:
parent
2f7e37a9bf
commit
6eb6d18e13
@ -17,7 +17,7 @@
|
||||
//
|
||||
// URL: https://github.com/vbondarevsky/Connector
|
||||
// e-mail: vbondarevsky@gmail.com
|
||||
// Версия: 2.3.1
|
||||
// Версия: 2.3.2
|
||||
//
|
||||
// Требования: платформа 1С версии 8.3.10 и выше
|
||||
|
||||
@ -312,6 +312,20 @@
|
||||
// подлежащей преобразованию.
|
||||
// ** ИменаСвойствСоЗначениямиДата - Строка, Массив Из Строка - имена свойств JSON,
|
||||
// для которых нужно вызывать восстановление даты из строки.
|
||||
// ** ИмяФункцииВосстановления - Строка - определяет имя функции, которая будет вызывается при чтении
|
||||
// каждого свойства и должна иметь следующие параметры:
|
||||
// ** Свойство - Строка - указывается только при чтении объектов JSON
|
||||
// ** Значение - Произвольный - значение допустимого для сериализации типа
|
||||
// ** ДополнительныеПараметры - Произвольный
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - значение, десериализованное из JSON.
|
||||
// ** МодульФункцииВосстановления - Произвольный - определяет модуль, процедура которого будет использована для
|
||||
// восстановления значения.
|
||||
// ** ДополнительныеПараметрыФункцииВосстановления - Произвольный - определяет дополнительные параметры, которые
|
||||
// будут переданы в функцию восстановления значений.
|
||||
// ** ИменаСвойствДляОбработкиВосстановления - Массив - определяет массив имен свойств JSON, для которых
|
||||
// будет вызвана функция восстановления.
|
||||
// ** МаксимальнаяВложенность - Число - определяет максимальный уровень вложенности объекта JSON.
|
||||
// * ПараметрыЗаписиJSON - ПараметрыЗаписиJSON - используемые при записи объекта JSON.
|
||||
// * Данные - Строка, ДвоичныеДанные - произвольные данные, которые необходимо отправить в запросе.
|
||||
// - Структура, Соответствие - поля формы, которые необходимо отправить в запрос:
|
||||
@ -455,6 +469,20 @@
|
||||
// * ФорматДатыJSON - ФорматДатыJSON - формат, в котором представлена дата в строке, подлежащей преобразованию.
|
||||
// * ИменаСвойствСоЗначениямиДата - Массив, Строка - имена свойств JSON,
|
||||
// для которых нужно вызывать восстановление даты из строки.
|
||||
// * ИмяФункцииВосстановления - Строка - определяет имя функции, которая будет вызывается при чтении
|
||||
// каждого свойства и должна иметь следующие параметры:
|
||||
// ** Свойство - Строка - указывается только при чтении объектов JSON
|
||||
// ** Значение - Произвольный - значение допустимого для сериализации типа
|
||||
// ** ДополнительныеПараметры - Произвольный
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - значение, десериализованное из JSON.
|
||||
// * МодульФункцииВосстановления - Произвольный - определяет модуль, процедура которого будет использована для
|
||||
// восстановления значения.
|
||||
// * ДополнительныеПараметрыФункцииВосстановления - Произвольный - определяет дополнительные параметры, которые
|
||||
// будут переданы в функцию восстановления значений.
|
||||
// * ИменаСвойствДляОбработкиВосстановления - Массив - определяет массив имен свойств JSON, для которых
|
||||
// будет вызвана функция восстановления.
|
||||
// * МаксимальнаяВложенность - Число - определяет максимальный уровень вложенности объекта JSON.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие - ответ сервера в виде десериализованного значения JSON.
|
||||
@ -749,10 +777,24 @@
|
||||
// Кодировка - Строка - кодировка текста JSON. Значение по умолчанию - utf-8.
|
||||
// ПараметрыПреобразования - Структура - параметры преобразования JSON:
|
||||
// * ПрочитатьВСоответствие - Булево - если Истина, чтение объекта JSON будет выполнено в Соответствие,
|
||||
// иначе в Структура.
|
||||
// иначе в Структура.
|
||||
// * ИменаСвойствСоЗначениямиДата - Массив, Строка, ФиксированныйМассив - имена свойств JSON,
|
||||
// для которых нужно вызывать восстановление даты из строки.
|
||||
// * ФорматДатыJSON - ФорматДатыJSON - определяет формат десериализации дат JSON-объектов.
|
||||
// * ИмяФункцииВосстановления - Строка - определяет имя функции, которая будет вызывается при чтении
|
||||
// каждого свойства и должна иметь следующие параметры:
|
||||
// ** Свойство - Строка - указывается только при чтении объектов JSON
|
||||
// ** Значение - Произвольный - значение допустимого для сериализации типа
|
||||
// ** ДополнительныеПараметры - Произвольный
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - значение, десериализованное из JSON.
|
||||
// * МодульФункцииВосстановления - Произвольный - определяет модуль, процедура которого будет использована для
|
||||
// восстановления значения.
|
||||
// * ДополнительныеПараметрыФункцииВосстановления - Произвольный - определяет дополнительные параметры, которые
|
||||
// будут переданы в функцию восстановления значений.
|
||||
// * ИменаСвойствДляОбработкиВосстановления - Массив - определяет массив имен свойств JSON, для которых
|
||||
// будет вызвана функция восстановления.
|
||||
// * МаксимальнаяВложенность - Число - определяет максимальный уровень вложенности объекта JSON.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - значение, десериализованное из JSON.
|
||||
@ -773,7 +815,12 @@
|
||||
ЧтениеJSON,
|
||||
ПараметрыПреобразованияJSON.ПрочитатьВСоответствие,
|
||||
ПараметрыПреобразованияJSON.ИменаСвойствСоЗначениямиДата,
|
||||
ПараметрыПреобразованияJSON.ФорматДатыJSON);
|
||||
ПараметрыПреобразованияJSON.ФорматДатыJSON,
|
||||
ПараметрыПреобразованияJSON.ИмяФункцииВосстановления,
|
||||
ПараметрыПреобразованияJSON.МодульФункцииВосстановления,
|
||||
ПараметрыПреобразованияJSON.ДополнительныеПараметрыФункцииВосстановления,
|
||||
ПараметрыПреобразованияJSON.ИменаСвойствДляОбработкиВосстановления,
|
||||
ПараметрыПреобразованияJSON.МаксимальнаяВложенность);
|
||||
ЧтениеJSON.Закрыть();
|
||||
|
||||
Возврат Объект;
|
||||
@ -2300,6 +2347,31 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Восстанавливает значение типа, десериализация которого не поддерживается.
|
||||
//
|
||||
// Параметры:
|
||||
// Свойство - Строка - имя свойства, значение которого нужно восстановить.
|
||||
// Значение - Строка - значение, которое нужно восстановить.
|
||||
// ТипыСвойств - Соответствие - типы свойств, которые нужно восстановить.
|
||||
// * Ключ - Строка - имя свойства. Равно значению параметра Свойство.
|
||||
// * Значение - Тип - исходный тип значения.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - восстановленное значение.
|
||||
//
|
||||
Функция ВосстановлениеJson(Свойство, Значение, ТипыСвойств) Экспорт
|
||||
|
||||
ТипСвойства = ТипыСвойств.Получить(Свойство);
|
||||
Если ТипСвойства = Тип("УникальныйИдентификатор") Тогда
|
||||
Возврат Новый УникальныйИдентификатор(Значение);
|
||||
ИначеЕсли ТипСвойства = Тип("ДвоичныеДанные") Тогда
|
||||
Возврат ПолучитьДвоичныеДанныеИзBase64Строки(Значение);
|
||||
Иначе
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область АутентификацияAWS4
|
||||
@ -2710,6 +2782,11 @@
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("ИмяФункцииПреобразования", Неопределено);
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("МодульФункцииПреобразования", Неопределено);
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("ДополнительныеПараметрыФункцииПреобразования", Неопределено);
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("ИмяФункцииВосстановления", Неопределено);
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("МодульФункцииВосстановления", Неопределено);
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("ДополнительныеПараметрыФункцииВосстановления", Неопределено);
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("ИменаСвойствДляОбработкиВосстановления", Неопределено);
|
||||
ПараметрыПреобразованияПоУмолчанию.Вставить("МаксимальнаяВложенность", 500);
|
||||
|
||||
Возврат ПараметрыПреобразованияПоУмолчанию;
|
||||
|
||||
|
@ -96,6 +96,7 @@
|
||||
Тесты.Добавить("Тест_КорректноеИсключениеВМетодеКакJson");
|
||||
Тесты.Добавить("Тест_ПроверкаПреобразованияВJsonНеСериализуемыхЗначений");
|
||||
Тесты.Добавить("Тест_ПроверкаПреобразованияВариантаЗаписиДатыJSON");
|
||||
Тесты.Добавить("Тест_ПроверкаВосстановленияНеподдерживаемыхТиповЗначений");
|
||||
|
||||
Возврат Тесты;
|
||||
|
||||
@ -616,6 +617,36 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Тест_ПроверкаВосстановленияНеподдерживаемыхТиповЗначений() Экспорт
|
||||
|
||||
УникальныйИдентификатор = Новый УникальныйИдентификатор("be4ee795-7f5e-4d1a-be43-a6d6902f5cfd");
|
||||
ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки("test", "utf-8", Ложь);
|
||||
|
||||
Json = Новый Структура;
|
||||
Json.Вставить("УникальныйИдентификатор", Строка(УникальныйИдентификатор));
|
||||
Json.Вставить("ДвоичныеДанные", ПолучитьBase64СтрокуИзДвоичныхДанных(ДвоичныеДанные));
|
||||
Json.Вставить("ДругиеДанные", 1);
|
||||
|
||||
ПараметрыJSON = Новый Структура;
|
||||
ПараметрыJSON.Вставить("МодульФункцииВосстановления", КоннекторHTTP);
|
||||
ПараметрыJSON.Вставить("ИмяФункцииВосстановления", "ВосстановлениеJson");
|
||||
ТипыСвойств = Новый Соответствие;
|
||||
ТипыСвойств.Вставить("УникальныйИдентификатор", Тип("УникальныйИдентификатор"));
|
||||
ТипыСвойств.Вставить("ДвоичныеДанные", Тип("ДвоичныеДанные"));
|
||||
ПараметрыJSON.Вставить("ДополнительныеПараметрыФункцииВосстановления", ТипыСвойств);
|
||||
ПараметрыJSON.Вставить("ИменаСвойствДляОбработкиВосстановления", СтрРазделить("УникальныйИдентификатор,ДвоичныеДанные", ","));
|
||||
|
||||
Результат = КоннекторHTTP.PostJson(
|
||||
"https://httpbin.org/post",
|
||||
Json,
|
||||
Новый Структура("ПараметрыПреобразованияJSON", ПараметрыJSON));
|
||||
|
||||
УтверждениеВерно(Результат["json"]["УникальныйИдентификатор"], УникальныйИдентификатор);
|
||||
УтверждениеВерно(Результат["json"]["ДвоичныеДанные"], ДвоичныеДанные);
|
||||
УтверждениеВерно(Результат["json"]["ДругиеДанные"], 1);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Тест_PostИРедирект() Экспорт
|
||||
|
||||
Ответ = КоннекторHTTP.Get("https://httpbin.org/redirect-to?url=https%3A%2F%2Fya.ru&status_code=301");
|
||||
|
Loading…
Reference in New Issue
Block a user