Skip to content

Commit

Permalink
Merge pull request #147 from Stivo182/feature/connector-http
Browse files Browse the repository at this point in the history
 Поддержка опций -L, --location, --no-location, --retry, --retry-max-time для коннектора
  • Loading branch information
Stivo182 authored Jan 19, 2025
2 parents 177c98d + aea8ecc commit 4e88a02
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,12 @@
|json
|A
|user-agent
|oauth2-bearer";
|oauth2-bearer
|L
|location
|no-location
|retry
|retry-max-time";

Возврат СтрРазделить(ПоддерживаемыеОпции, Символы.ПС, Ложь);

Expand Down Expand Up @@ -516,6 +521,8 @@
ДобавитьПроксиВДополнительныеПараметры(КонструкторДопПараметров);
ДобавитьСертификатыВДополнительныеПараметры(КонструкторДопПараметров);
ДобавитьТаймаутВДополнительныеПараметры(КонструкторДопПараметров);
ДобавитьРазрешениеПеренаправленийВДополнительныеПараметры(КонструкторДопПараметров);
ДобавитьПовторныеПопыткиВДополнительныеПараметры(КонструкторДопПараметров);
ДобавитьПараметрыЗапросаВДополнительныеПараметры(КонструкторДопПараметров, ОписаниеРесурса);
ДобавитьДанныеВДополнительныеПараметры(КонструкторДопПараметров, ОписаниеРесурса, ДанныеЗапроса);

Expand Down Expand Up @@ -632,6 +639,31 @@

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

Процедура ДобавитьРазрешениеПеренаправленийВДополнительныеПараметры(КонструкторДопПараметров)

Если ОписаниеЗапроса.ЗапретитьПеренаправление Тогда
КонструкторДопПараметров.ДобавитьСтроку("%1.Вставить(""РазрешитьПеренаправление"", Ложь);",
ИмяПараметраДополнительныеПараметры);
КонецЕсли;

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

Процедура ДобавитьПовторныеПопыткиВДополнительныеПараметры(КонструкторДопПараметров)

Если ОписаниеЗапроса.МаксимальноеКоличествоПовторов > 0 Тогда
КонструкторДопПараметров.ДобавитьСтроку("%1.Вставить(""МаксимальноеКоличествоПовторов"", %2);",
ИмяПараметраДополнительныеПараметры,
Конструктор.ПараметрВСтроку(ОписаниеЗапроса.МаксимальноеКоличествоПовторов));
КонецЕсли;

Если ОписаниеЗапроса.МаксимальноеВремяПовторов > 0 Тогда
КонструкторДопПараметров.ДобавитьСтроку("%1.Вставить(""МаксимальноеВремяПовторов"", %2);",
ИмяПараметраДополнительныеПараметры,
Конструктор.ПараметрВСтроку(ОписаниеЗапроса.МаксимальноеВремяПовторов));
КонецЕсли;

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

Функция ВозможноПередатьДанныеЗапросаВПараметрыФункцииВызоваМетода(Метод)
Возврат Метод = "POST" Или Метод = "PUT" Или Метод = "PATCH" Или Метод = "DELETE";
КонецФункции
Expand Down
35 changes: 30 additions & 5 deletions src/core/Классы/КонвертерКомандыCURL.os
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,9 @@
ПрочитатьТаймаут(Команда);
ПрочитатьТаймаутСоединения(Команда);
ПрочитатьРежимСоединенияFTP(Команда);

ПрочитатьИспользованиеПеренаправлений(Команда);
ПрочитатьПовторныеПопытки(Команда);

ДополнитьОшибкиНеподдерживаемыеОпции(Команда);

КонецПроцедуры
Expand Down Expand Up @@ -752,6 +754,28 @@

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

Процедура ПрочитатьИспользованиеПеренаправлений(Команда)

ОписаниеЗапроса.РазрешитьПеренаправление = ПоследнееЗначениеОпции(Команда, "location") = Истина;
ОписаниеЗапроса.ЗапретитьПеренаправление = ПоследнееЗначениеОпции(Команда, "no-location") = Истина;

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

Процедура ПрочитатьПовторныеПопытки(Команда)

МаксимальноеКоличествоПовторов = ПоследнееЗначениеОпции(Команда, "retry");
МаксимальноеВремяПовторов = ПоследнееЗначениеОпции(Команда, "retry-max-time");

Если Не МаксимальноеКоличествоПовторов = Неопределено Тогда
ОписаниеЗапроса.МаксимальноеКоличествоПовторов = МаксимальноеКоличествоПовторов;
КонецЕсли;

Если Не МаксимальноеВремяПовторов = Неопределено Тогда
ОписаниеЗапроса.МаксимальноеВремяПовторов = МаксимальноеВремяПовторов;
КонецЕсли;

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

Функция НазначениеПередаваемыхДанных(Команда)
Если ЗначениеОпции(Команда, "get") = Истина Тогда
Возврат НазначенияПередаваемыхДанных.СтрокаЗапроса;
Expand Down Expand Up @@ -804,6 +828,10 @@
ДобавитьПоддерживаемуюОпциюВКонсольноеПриложение("ftp-pasv", , "Использование пассивного режима ftp-соединения").ТМассивБулево();
ДобавитьПоддерживаемуюОпциюВКонсольноеПриложение("P ftp-port", "", "Использование активного режима ftp-соединения").ТМассивСтрок();
ДобавитьПоддерживаемуюОпциюВКонсольноеПриложение("l list-only").ТМассивБулево();
ДобавитьПоддерживаемуюОпциюВКонсольноеПриложение("L location", "", "Разрешает перенаправления").ТМассивБулево();
ДобавитьПоддерживаемуюОпциюВКонсольноеПриложение("no-location", "", "Запрещает перенаправления").ТМассивБулево();
ДобавитьПоддерживаемуюОпциюВКонсольноеПриложение("retry", 0, "Количество повторных попыток").ТМассивЧисел();
ДобавитьПоддерживаемуюОпциюВКонсольноеПриложение("retry-max-time", 0, "Максимальное время повторов").ТМассивЧисел();

// Неподдерживаемые
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("abstract-unix-socket").ТМассивСтрок();
Expand Down Expand Up @@ -896,7 +924,6 @@
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("libcurl").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("limit-rate").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("local-port").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("L location").ТМассивБулево();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("location-trusted").ТМассивБулево();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("login-options").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("mail-auth").ТМассивСтрок();
Expand Down Expand Up @@ -974,11 +1001,9 @@
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("remove-on-error").ТМассивБулево();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("request-target").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("resolve").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("retry").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("retry-all-errors").ТМассивБулево();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("retry-connrefused").ТМассивБулево();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("retry-delay").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("retry-max-time").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("sasl-authzid").ТМассивСтрок();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("sasl-ir").ТМассивБулево();
ДобавитьНеподдерживаемуюОпциюВКонсольноеПриложение("service-name").ТМассивСтрок();
Expand Down Expand Up @@ -1227,7 +1252,7 @@
Результат = Результат
+ ?(НомерКоманды > 1, Символы.ПС + Символы.ПС, "")
+ СтрШаблон(
"//////////////////////////////////////////////
"//////////////////////////////////////////////
|// Команда #%1.", НомерКоманды);

КонецПроцедуры
Expand Down
8 changes: 8 additions & 0 deletions src/internal/Классы/ОписаниеЗапроса.os
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
Перем ТипАутентификацииПрокси Экспорт; // см. ТипыАутентификацииПрокси
Перем FTPПассивныйРежимСоединения Экспорт; // Булево
Перем FTPАдресОбратногоСоединения Экспорт; // Строка
Перем РазрешитьПеренаправление Экспорт; // Булево
Перем ЗапретитьПеренаправление Экспорт; // Булево
Перем МаксимальноеКоличествоПовторов Экспорт; // Число
Перем МаксимальноеВремяПовторов Экспорт; // Число

// Максимальное время ожидания на выполнение запроса
Перем Таймаут Экспорт; // Число
Expand Down Expand Up @@ -92,6 +96,10 @@
ТаймаутСоединения = 0;
FTPПассивныйРежимСоединения = Ложь;
FTPАдресОбратногоСоединения = "";
РазрешитьПеренаправление = Ложь;
ЗапретитьПеренаправление = Ложь;
МаксимальноеКоличествоПовторов = 0;
МаксимальноеВремяПовторов = 0;
КонецПроцедуры

Функция ЕстьДанныеПоНазначению(Назначение) Экспорт
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -531,15 +531,15 @@
|curl http://example1.com --head
|curl http://example2.com -X HEAD";

ПрограммныйКод = "//////////////////////////////////////////////
ПрограммныйКод = "//////////////////////////////////////////////
|// Команда #1.
|
|Соединение = Новый HTTPСоединение(""example1.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"");
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""HEAD"", HTTPЗапрос);
|
|//////////////////////////////////////////////
|//////////////////////////////////////////////
|// Команда #2.
|
|Соединение = Новый HTTPСоединение(""example2.com"", 80);
Expand All @@ -558,15 +558,15 @@

КонсольнаяКоманда = "curl http://example1.com & curl http://example2.com";

ПрограммныйКод = "//////////////////////////////////////////////
ПрограммныйКод = "//////////////////////////////////////////////
|// Команда #1.
|
|Соединение = Новый HTTPСоединение(""example1.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"");
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);
|
|//////////////////////////////////////////////
|//////////////////////////////////////////////
|// Команда #2.
|
|Соединение = Новый HTTPСоединение(""example2.com"", 80);
Expand Down Expand Up @@ -1299,7 +1299,7 @@
|curl http://example2.com -d 'key=value'
|curl http://example3.com";

ПрограммныйКод = "//////////////////////////////////////////////
ПрограммныйКод = "//////////////////////////////////////////////
|// Команда #1.
|
|Заголовки = Новый Соответствие();
Expand All @@ -1310,7 +1310,7 @@
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);
|
|//////////////////////////////////////////////
|//////////////////////////////////////////////
|// Команда #2.
|
|Заголовки = Новый Соответствие();
Expand All @@ -1322,7 +1322,7 @@
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);
|
|//////////////////////////////////////////////
|//////////////////////////////////////////////
|// Команда #3.
|
|Соединение = Новый HTTPСоединение(""example3.com"", 80);
Expand Down
Loading

0 comments on commit 4e88a02

Please sign in to comment.