1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-24 19:49:22 +02:00

Начало нового HTTP клиента

This commit is contained in:
Anton Titovets
2025-04-16 00:30:08 +03:00
parent f69973fa48
commit b70741eaf9
5 changed files with 1734 additions and 9 deletions

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
// MIT License
@@ -49,7 +49,26 @@
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьПараметрыURL(Параметры)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.ОбработатьЗапрос("GET");
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет();
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
КонецЕсли;
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
Функция Head(Знач URL
@@ -57,7 +76,26 @@
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "HEAD", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьПараметрыURL(Параметры)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.ОбработатьЗапрос("HEAD");
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет();
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
КонецЕсли;
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
Функция Delete(Знач URL
@@ -65,7 +103,26 @@
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьПараметрыURL(Параметры)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.ОбработатьЗапрос("DELETE");
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет();
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
КонецЕсли;
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
#КонецОбласти
@@ -79,7 +136,30 @@
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета);
Если JSON Тогда
HttpКлиент.УстановитьJsonТело(Параметры);
Иначе
HttpКлиент.УстановитьFormТело(Параметры);
КонецЕсли;
HttpКлиент.ОбработатьЗапрос("POST");
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет();
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
КонецЕсли;
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
@@ -90,8 +170,30 @@
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета);
Если JSON Тогда
HttpКлиент.УстановитьJsonТело(Параметры);
Иначе
HttpКлиент.УстановитьFormТело(Параметры);
КонецЕсли;
HttpКлиент.ОбработатьЗапрос("PATCH");
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет();
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
КонецЕсли;
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
Функция Put(Знач URL
@@ -101,8 +203,30 @@
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета);
Если JSON Тогда
HttpКлиент.УстановитьJsonТело(Параметры);
Иначе
HttpКлиент.УстановитьFormТело(Параметры);
КонецЕсли;
HttpКлиент.ОбработатьЗапрос("PUT");
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет();
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
КонецЕсли;
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
Функция PostBinary(Знач URL
@@ -122,8 +246,30 @@
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "DELETE", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета);
Если JSON Тогда
HttpКлиент.УстановитьJsonТело(Параметры);
Иначе
HttpКлиент.УстановитьFormТело(Параметры);
КонецЕсли;
HttpКлиент.ОбработатьЗапрос("DELETE");
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет();
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
КонецЕсли;
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
#КонецОбласти
@@ -137,7 +283,36 @@
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросМультипарт(URL, "POST", Параметры, Файлы, ТипКонтента, ДопЗаголовки, ФайлОтвета);
HttpКлиент = Обработки.OPI_HTTPКлиент.Создать()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.НачатьЗаписьТелаMultipart();
Для Каждого Файл Из Файлы Цикл
СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента);
ИмяПоля = СтруктураИнформации["ИмяПоля"];
ИмяФайла = СтруктураИнформации["ИмяФайла"];
HttpКлиент.ДобавитьФайлMultipart(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента);
КонецЦикла;
Для Каждого Параметр Из Параметры Цикл
HttpКлиент.ДобавитьПолеMultipart(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
HttpКлиент.ОбработатьЗапрос("POST");
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию();
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции

View File

@@ -81,4 +81,5 @@
<commonModules>CommonModule.OPI_ПреобразованиеТипов</commonModules>
<commonModules>CommonModule.OPI_Тесты</commonModules>
<commonModules>CommonModule.OPI_ТестыCLI</commonModules>
<dataProcessors>DataProcessor.OPI_HTTPКлиент</dataProcessors>
</mdclass:Configuration>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d28e1c58-e694-490d-9b8a-cf3d8418a465">
<producedTypes>
<objectType typeId="f8380b17-fc17-434c-af09-1e256a999b26" valueTypeId="1903aff0-3cae-41d2-9206-534e13cff1a3"/>
<managerType typeId="31cebf42-d435-40a7-b175-9a487c66b259" valueTypeId="0ade2c3a-405c-4423-8b00-3bd7a2f95c2a"/>
</producedTypes>
<name>OPI_HTTPКлиент</name>
<synonym>
<key>ru</key>
<value>HTTP клиент (ОПИ)</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
</mdclass:DataProcessor>

File diff suppressed because it is too large Load Diff