mirror of
https://github.com/alei1180/curlone.git
synced 2026-06-21 01:30:38 +02:00
feat: Поддержка опции --output-dir #31
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#Использовать "../internal"
|
||||
|
||||
Перем ОписаниеЗапроса;
|
||||
Перем КаталогСохраненияФайлов;
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
@@ -35,6 +36,7 @@
|
||||
Приложение.Опция("cacert", "", "Файл сертификатов удостоверяющих центров").ТМассивСтрок();
|
||||
Приложение.Опция("url-query", "", "Параметры строки запроса URL").ТМассивСтрок();
|
||||
Приложение.Опция("o output", "", "Имя выходного файла").ТМассивСтрок();
|
||||
Приложение.Опция("output-dir", "", "Каталог сохранения файлов").ТМассивСтрок();
|
||||
|
||||
УстановитьСтрокуИспользованияКоманды(Приложение);
|
||||
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
|
||||
@@ -69,6 +71,7 @@
|
||||
|
||||
Процедура ВыполнитьКоманду(Команда) Экспорт
|
||||
|
||||
ПрочитатьКаталогСохраненияФайлов(Команда);
|
||||
ПрочитатьАдресаРесурсов(Команда);
|
||||
ПрочитатьЗаголовки(Команда);
|
||||
ПрочитатьПользователя(Команда);
|
||||
@@ -119,6 +122,10 @@
|
||||
ИмяВыходногоФайла = ИменаВыходныхФайлов[Индекс - 1];
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(КаталогСохраненияФайлов) Тогда
|
||||
ИмяВыходногоФайла = КаталогСохраненияФайлов + "/" + ИмяВыходногоФайла;
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеЗапроса.ДобавитьАдресРесурса(URL, ИмяВыходногоФайла);
|
||||
КонецЦикла;
|
||||
|
||||
@@ -379,6 +386,14 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПрочитатьКаталогСохраненияФайлов(Команда)
|
||||
КаталогСохраненияФайлов = "";
|
||||
Каталог = ПоследнееЗначениеОпции(Команда, "output-dir");
|
||||
Если Не Каталог = Неопределено Тогда
|
||||
КаталогСохраненияФайлов = Каталог;
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЕстьОпции(Команда, Опции)
|
||||
Для Каждого Опция Из СтрРазделить(Опции, ",") Цикл
|
||||
Если ЗначениеЗаполнено(Команда.ЗначениеОпции(Опция)) Тогда
|
||||
@@ -412,4 +427,11 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПоследнееЗначениеОпции(Команда, ИмяОпции)
|
||||
МассивЗначений = Команда.ЗначениеОпции(ИмяОпции);
|
||||
Если ТипЗнч(МассивЗначений) = Тип("Массив") И МассивЗначений.Количество() Тогда
|
||||
Возврат МассивЗначений[МассивЗначений.ВГраница()];
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -33,6 +33,7 @@
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуПараметровЗапросаТолькоИзФайла");
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуВыходногоФайла");
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуНесколькихВыходныхФайлов");
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьКаталогСохраненияФайлов");
|
||||
|
||||
Возврат СписокТестов;
|
||||
|
||||
@@ -650,4 +651,20 @@
|
||||
|
||||
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
|
||||
|
||||
КонецПроцедуры
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьКаталогСохраненияФайлов() Экспорт
|
||||
|
||||
КонсольнаяКоманда = "curl http://example.com -o file.html --output-dir '/some/path'";
|
||||
|
||||
ПрограммныйКод = "Соединение = Новый HTTPСоединение(""example.com"", 80);
|
||||
|
|
||||
|HTTPЗапрос = Новый HTTPЗапрос(""/"");
|
||||
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос, ""/some/path/file.html"");";
|
||||
|
||||
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
|
||||
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Новый ГенераторПрограммногоКода1С());
|
||||
|
||||
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Reference in New Issue
Block a user