mirror of
https://github.com/alei1180/curlone.git
synced 2025-11-24 22:53:34 +02:00
feat: Поддержка опции получения списка файлов дериктории FTP --list-only
This commit is contained in:
@@ -590,6 +590,8 @@
|
||||
ВывестиВызовПолученияФайлаFTP(ОписаниеРесурса, СтруктураURL);
|
||||
ИначеЕсли ОписаниеРесурса.Метод = "STOR" Тогда
|
||||
ВывестиВызовОтправкиФайлаFTP(ОписаниеРесурса, СтруктураURL);
|
||||
ИначеЕсли ОписаниеРесурса.Метод = "NLST" Тогда
|
||||
ВывестиПолучениеСпискаФайловВДиректорииFTP(СтруктураURL);
|
||||
Иначе
|
||||
Если ЗначениеЗаполнено(ОписаниеРесурса.Метод) Тогда
|
||||
ТекстОшибки = СтрШаблон("FTP метод '%1' не поддерживается", ОписаниеРесурса.Метод);
|
||||
@@ -639,6 +641,18 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВывестиПолучениеСпискаФайловВДиректорииFTP(СтруктураURL)
|
||||
|
||||
ПараметрыФункции = Новый Массив;
|
||||
ПараметрыФункции.Добавить(ОбернутьКавычками(СтруктураURL.Путь));
|
||||
ПараметрыФункции.Добавить(ОбернутьКавычками("*"));
|
||||
|
||||
ВывестиСтроку(СтрШаблон("Файлы = %1.НайтиФайлы(%2);",
|
||||
ИмяПараметраСоединение,
|
||||
ПараметрыФункцииВСтроку(ПараметрыФункции)));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СобратьИсходнуюСтрокуЗапроса(СтруктураURL)
|
||||
|
||||
СтрокаЗапроса = "";
|
||||
|
||||
@@ -194,6 +194,8 @@
|
||||
ИначеЕсли ОбщегоНазначения.ЭтоFTP(СтруктураURL.Схема) Тогда
|
||||
Если Файлы.Количество() Тогда
|
||||
Метод = "STOR"; // Залить файл
|
||||
ИначеЕсли ПоследнееЗначениеОпции(Команда, "list-only") = Истина Тогда
|
||||
Метод = "NLST"; // Список имен файлов в директории
|
||||
Иначе
|
||||
Метод = "RETR"; // Скачать файл
|
||||
КонецЕсли;
|
||||
@@ -787,6 +789,7 @@
|
||||
Приложение.Опция("oauth2-bearer", "", "Bearer-token").ТМассивСтрок();
|
||||
Приложение.Опция("ftp-pasv", , "Использование пассивного режима ftp-соединения").ТМассивБулево();
|
||||
Приложение.Опция("P ftp-port", "", "Использование активного режима ftp-соединения").ТМассивСтрок();
|
||||
Приложение.Опция("l list-only").ТМассивБулево();
|
||||
КонецЕсли;
|
||||
|
||||
Если ВключатьНеподдерживаемые Тогда
|
||||
@@ -879,7 +882,6 @@
|
||||
Приложение.Опция("krb").ТМассивСтрок();
|
||||
Приложение.Опция("libcurl").ТМассивСтрок();
|
||||
Приложение.Опция("limit-rate").ТМассивСтрок();
|
||||
Приложение.Опция("l list-only").ТМассивБулево();
|
||||
Приложение.Опция("local-port").ТМассивСтрок();
|
||||
Приложение.Опция("L location").ТМассивБулево();
|
||||
Приложение.Опция("location-trusted").ТМассивБулево();
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьОтправкуПоFTPСУказаниемЦелевогоИмени");
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьОтправкуПоFTPВКореньБезУказанияЦелевогоИмени");
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьОтправкуПоFTPВКаталогБезУказанияЦелевогоИмени");
|
||||
СписокТестов.Добавить("ТестДолжен_ПроверитьПолучениеСпискаФайловВДиректорииFTP");
|
||||
|
||||
Возврат СписокТестов;
|
||||
|
||||
@@ -1527,3 +1528,18 @@
|
||||
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьПолучениеСпискаФайловВДиректорииFTP() Экспорт
|
||||
|
||||
КонсольнаяКоманда = "curl ftp://ftp.example.com/dir --list-only";
|
||||
|
||||
ПрограммныйКод = "Соединение = Новый FTPСоединение(""ftp.example.com"", 21, , , , Истина);
|
||||
|
|
||||
|Файлы = Соединение.НайтиФайлы(""/dir"", ""*"");";
|
||||
|
||||
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
|
||||
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Новый ГенераторПрограммногоКода1С());
|
||||
|
||||
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
|
||||
|
||||
КонецПроцедуры
|
||||
Reference in New Issue
Block a user