Merge pull request #41 from Stivo182/main

refactor: Выделение функции
This commit is contained in:
Dmitry Ivanov
2024-11-17 20:44:30 +03:00
committed by GitHub
3 changed files with 36 additions and 33 deletions
@@ -11,7 +11,7 @@
Перем ПрочитанныеФайлы; // Массив из Структура
// - ПередаваемыйФайл
// - ИмяПеременной
// - ИмяПеременной
Перем ИспользуетсяЗащищенноеСоединение; // Булево
Процедура ПриСозданииОбъекта()
@@ -17,34 +17,12 @@
Парсер = Новый ПарсерКонсольнойКоманды();
АргументыКоманд = Парсер.Распарсить(КоманднаяСтрока);
Приложение = Новый КонсольноеПриложение("curl", "", ЭтотОбъект);
Приложение.Аргумент("URL", "", "Адрес ресурса").ТМассивСтрок();
Приложение.Опция("url", "", "URL").ТМассивСтрок();
Приложение.Опция("H header", "", "HTTP заголовок").ТМассивСтрок();
Приложение.Опция("X request", "", "Метод запроса").ТСтрока();
Приложение.Опция("u user", "", "Пользователь и пароль").ТСтрока();
Приложение.Опция("d data data-ascii", "", "Передаваемые данные по HTTP POST").ТМассивСтрок();
Приложение.Опция("data-raw", "", "Передаваемые данные по HTTP POST без интерпретации символа @").ТМассивСтрок();
Приложение.Опция("data-binary", "", "Передаваемые двоичные данные по HTTP POST").ТМассивСтрок();
Приложение.Опция("data-urlencode", "", "Передаваемые данные по HTTP POST с URL кодированием").ТМассивСтрок();
Приложение.Опция("T upload-file", "", "Загружаемый файл").ТМассивСтрок();
Приложение.Опция("G get", Ложь, "Данные из опций -d и--data-... добавляются в URL как строка запроса").Флаговый();
Приложение.Опция("I head", Ложь, "Получение заголовков").Флаговый();
Приложение.Опция("E cert", "", "Сертификат клиента").ТМассивСтрок();
Приложение.Опция("ca-native", Ложь, "Использование сертификатов УЦ из системного хранилища сертификатов операционной системы").Флаговый();
Приложение.Опция("cacert", "", "Файл сертификатов удостоверяющих центров").ТМассивСтрок();
Приложение.Опция("url-query", "", "Параметры строки запроса URL").ТМассивСтрок();
Приложение.Опция("o output", "", "Имя выходного файла").ТМассивСтрок();
Приложение.Опция("output-dir", "", "Каталог сохранения файлов").ТМассивСтрок();
УстановитьСтрокуИспользованияКоманды(Приложение);
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
Если АргументыКоманд.Количество() = 0 Тогда
ВызватьИсключение "Команда должна начинаться с ""curl""";
ВызватьИсключение "Передана пустая команда";
КонецЕсли;
Приложение = СоздатьКонсольноеПриложение();
Результат = "";
Для Каждого АргументыКоманды Из АргументыКоманд Цикл
Если Не (НРег(АргументыКоманды[0]) = "curl") Тогда
@@ -300,12 +278,7 @@
Процедура ПрочитатьСертификатКлиента(Команда)
СертификатКлиента = "";
МассивЗначений = Команда.ЗначениеОпции("E");
Если МассивЗначений.Количество() Тогда
СертификатКлиента = МассивЗначений[МассивЗначений.ВГраница()];
КонецЕсли;
СертификатКлиента = ПоследнееЗначениеОпции(Команда, "E");
Если Не ЗначениеЗаполнено(СертификатКлиента) Тогда
Возврат;
@@ -394,6 +367,36 @@
КонецЕсли;
КонецПроцедуры
Функция СоздатьКонсольноеПриложение()
Приложение = Новый КонсольноеПриложение("curl", "", ЭтотОбъект);
Приложение.Аргумент("URL", "", "Адрес ресурса").ТМассивСтрок();
Приложение.Опция("url", "", "URL").ТМассивСтрок();
Приложение.Опция("H header", "", "HTTP заголовок").ТМассивСтрок();
Приложение.Опция("X request", "", "Метод запроса").ТСтрока();
Приложение.Опция("u user", "", "Пользователь и пароль").ТСтрока();
Приложение.Опция("d data data-ascii", "", "Передаваемые данные по HTTP POST").ТМассивСтрок();
Приложение.Опция("data-raw", "", "Передаваемые данные по HTTP POST без интерпретации символа @").ТМассивСтрок();
Приложение.Опция("data-binary", "", "Передаваемые двоичные данные по HTTP POST").ТМассивСтрок();
Приложение.Опция("data-urlencode", "", "Передаваемые данные по HTTP POST с URL кодированием").ТМассивСтрок();
Приложение.Опция("T upload-file", "", "Загружаемый файл").ТМассивСтрок();
Приложение.Опция("G get", Ложь, "Данные из опций -d и--data-... добавляются в URL как строка запроса").Флаговый();
Приложение.Опция("I head", Ложь, "Получение заголовков").Флаговый();
Приложение.Опция("E cert", "", "Сертификат клиента").ТМассивСтрок();
Приложение.Опция("ca-native", Ложь, "Использование сертификатов УЦ из системного хранилища сертификатов операционной системы").Флаговый();
Приложение.Опция("cacert", "", "Файл сертификатов удостоверяющих центров").ТМассивСтрок();
Приложение.Опция("url-query", "", "Параметры строки запроса URL").ТМассивСтрок();
Приложение.Опция("o output", "", "Имя выходного файла").ТМассивСтрок();
Приложение.Опция("output-dir", "", "Каталог сохранения файлов").ТМассивСтрок();
УстановитьСтрокуИспользованияКоманды(Приложение);
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
Возврат Приложение;
КонецФункции
Функция ЕстьОпции(Команда, Опции)
Для Каждого Опция Из СтрРазделить(Опции, ",") Цикл
Если ЗначениеЗаполнено(Команда.ЗначениеОпции(Опция)) Тогда
@@ -44,6 +44,6 @@
Ожидаем.Что(КонвертерКомандыCURL)
.Метод("Конвертировать", ПараметрыМетода)
.ВыбрасываетИсключение("Команда должна начинаться с ""curl""");
.ВыбрасываетИсключение("Передана пустая команда");
КонецПроцедуры