1
0
mirror of https://github.com/alei1180/curlone.git synced 2025-11-28 23:19:49 +02:00

fix: Определение метода запроса для каждого URL

This commit is contained in:
Dmitry Ivanov
2025-01-10 02:16:52 +03:00
parent 17042f1917
commit c33c207e81
5 changed files with 122 additions and 76 deletions

View File

@@ -272,7 +272,7 @@
Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
Если Не (ПередаваемыйФайл.ПрочитатьСодержимое Если Не (ПередаваемыйФайл.ПрочитатьСодержимое
Или ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса) Тогда Или ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса) Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -347,8 +347,7 @@
СтрокаЗапроса = СобратьИсходнуюСтрокуЗапроса(СтруктураURL); СтрокаЗапроса = СобратьИсходнуюСтрокуЗапроса(СтруктураURL);
Для Каждого ПередаваемыйТекст Из ОписаниеЗапроса.ОтправляемыеТекстовыеДанные Цикл Для Каждого ПередаваемыйТекст Из ОписаниеЗапроса.ОтправляемыеТекстовыеДанные Цикл
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса Если ПередаваемыйТекст.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса Тогда
ИЛИ ПередаваемыйТекст.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса Тогда
СтрокаЗапроса = СтрокаЗапроса СтрокаЗапроса = СтрокаЗапроса
+ ?(ЗначениеЗаполнено(СтрокаЗапроса), РазделительПараметровЗапроса, "") + ?(ЗначениеЗаполнено(СтрокаЗапроса), РазделительПараметровЗапроса, "")
+ ПередаваемыйТекст.Значение; + ПередаваемыйТекст.Значение;
@@ -357,8 +356,7 @@
КодПрочитанныхФайлов = ""; КодПрочитанныхФайлов = "";
Для Каждого ПрочитанныйФайл Из ПрочитанныеФайлы Цикл Для Каждого ПрочитанныйФайл Из ПрочитанныеФайлы Цикл
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса Если ПрочитанныйФайл.ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса Тогда
Или ПрочитанныйФайл.ПередаваемыйФайл.Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса Тогда
КодПрочитанныхФайлов = КодПрочитанныхФайлов КодПрочитанныхФайлов = КодПрочитанныхФайлов
+ ?(КодПрочитанныхФайлов = "", "", КонкатенацияСПереносомСтрокиИАмперсандом) + ?(КодПрочитанныхФайлов = "", "", КонкатенацияСПереносомСтрокиИАмперсандом)
+ ПрочитанныйФайл.ИмяПеременной; + ПрочитанныйФайл.ИмяПеременной;
@@ -401,10 +399,6 @@
Процедура ВывестиИнициализациюТекстовогоТелаЗапроса() Процедура ВывестиИнициализациюТекстовогоТелаЗапроса()
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса Тогда
Возврат;
КонецЕсли;
ЭлементыТелаЗапросаДляВывода = Новый Массив; ЭлементыТелаЗапросаДляВывода = Новый Массив;
КонкатенацияСПереносомСтрокиИРазделителя = " КонкатенацияСПереносомСтрокиИРазделителя = "
| + ""%1"" + "; | + ""%1"" + ";
@@ -467,10 +461,6 @@
Процедура ВывестиУстановкуТелаЗапросаИзФайлаИВызоваМетодаДляКаждого(ОписаниеРесурса) Процедура ВывестиУстановкуТелаЗапросаИзФайлаИВызоваМетодаДляКаждого(ОписаниеРесурса)
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса Тогда
Возврат;
КонецЕсли;
ДлинаИмениФайлаВКомментарии = 100; ДлинаИмениФайлаВКомментарии = 100;
ВсеФайлы = Новый Массив(); ВсеФайлы = Новый Массив();
@@ -524,10 +514,6 @@
Процедура ВывестиУстановкуТелаЗапросаИзФайла(ОписаниеРесурса) Процедура ВывестиУстановкуТелаЗапросаИзФайла(ОписаниеРесурса)
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса Тогда
Возврат;
КонецЕсли;
Файлы = Новый Массив(); Файлы = Новый Массив();
ОбщегоНазначения.ДополнитьМассив(Файлы, ОписаниеЗапроса.Файлы); ОбщегоНазначения.ДополнитьМассив(Файлы, ОписаниеЗапроса.Файлы);
ОбщегоНазначения.ДополнитьМассив(Файлы, ОписаниеРесурса.Файлы); ОбщегоНазначения.ДополнитьМассив(Файлы, ОписаниеРесурса.Файлы);
@@ -555,7 +541,7 @@
Процедура ВывестиВызовHTTPМетода(ОписаниеРесурса) Процедура ВывестиВызовHTTPМетода(ОписаниеРесурса)
ПараметрыФункции = Новый Массив; ПараметрыФункции = Новый Массив;
ПараметрыФункции.Добавить(ОбернутьКавычками(ОписаниеЗапроса.Метод)); ПараметрыФункции.Добавить(ОбернутьКавычками(ОписаниеРесурса.Метод));
ПараметрыФункции.Добавить(ИмяПараметраHTTPЗапрос); ПараметрыФункции.Добавить(ИмяПараметраHTTPЗапрос);
ПараметрыФункции.Добавить(ОбернутьКавычками(ОписаниеРесурса.ИмяВыходногоФайла, Истина)); ПараметрыФункции.Добавить(ОбернутьКавычками(ОписаниеРесурса.ИмяВыходногоФайла, Истина));

View File

@@ -120,7 +120,6 @@
ПрочитатьПользователя(Команда); ПрочитатьПользователя(Команда);
ПрочитатьДанныеДляОтправки(Команда); ПрочитатьДанныеДляОтправки(Команда);
ПрочитатьМетодЗапроса(Команда); ПрочитатьМетодЗапроса(Команда);
ПрочитатьПризнакПередачиОтправляемыхДанныхВСтрокуЗапроса(Команда);
ПрочитатьСертификатКлиента(Команда); ПрочитатьСертификатКлиента(Команда);
ПрочитатьИспользованиеСертификатыУЦИзХранилищаОС(Команда); ПрочитатьИспользованиеСертификатыУЦИзХранилищаОС(Команда);
ПрочитатьИмяФайлаСертификатовУЦ(Команда); ПрочитатьИмяФайлаСертификатовУЦ(Команда);
@@ -138,36 +137,44 @@
Процедура ПрочитатьМетодЗапроса(Команда) Процедура ПрочитатьМетодЗапроса(Команда)
Метод = ВРег(ЗначениеОпции(Команда, "X"));
Если ЗначениеЗаполнено(Метод) Тогда
ОписаниеЗапроса.Метод = Метод;
Возврат;
КонецЕсли;
ЕстьДанныеPOST = (ЕстьОпцииГруппыData(Команда) ИЛИ ЕстьОпции(команда, "json")); ЕстьДанныеPOST = (ЕстьОпцииГруппыData(Команда) ИЛИ ЕстьОпции(команда, "json"));
ЕстьМетодGET = ЗначениеОпции(Команда, "get") = Истина; ЕстьМетодGET = ЗначениеОпции(Команда, "get") = Истина;
ЕстьМетодPOST = ЗначениеОпции(Команда, "get") = Ложь И ЕстьДанныеPOST; ЕстьМетодPOST = ЗначениеОпции(Команда, "get") = Ложь И ЕстьДанныеPOST;
ЕстьМетодPUT = ЕстьОпции(Команда, "T,upload-file");
ЕстьМетодHEAD = ЗначениеОпции(Команда, "head") = Истина; ЕстьМетодHEAD = ЗначениеОпции(Команда, "head") = Истина;
Файлы = ЗначениеОпции(Команда, "upload-file");
КоличествоФайлов = Файлы.Количество();
НомерРесурса = 0;
Для Каждого ОписаниеРесурса Из ОписаниеЗапроса.АдресаРесурсов Цикл
НомерРесурса = НомерРесурса + 1;
Метод = ВРег(ЗначениеОпции(Команда, "X"));
Если ЗначениеЗаполнено(Метод) Тогда
ОписаниеРесурса.Метод = Метод;
Продолжить;
КонецЕсли;
ЕстьМетодPUT = НомерРесурса <= КоличествоФайлов;
ОшибочныеМетоды = "";
Если ЕстьМетодPUT Тогда Если ЕстьМетодPUT Тогда
Если ЕстьМетодGET И ЕстьДанныеPOST Тогда Если ЕстьМетодGET И ЕстьДанныеPOST Тогда
ТекстОшибки = "PUT и GET"; ОшибочныеМетоды = "PUT и GET";
ИначеЕсли ЕстьМетодPOST Тогда ИначеЕсли ЕстьМетодPOST Тогда
ТекстОшибки = "PUT и POST"; ОшибочныеМетоды = "PUT и POST";
ИначеЕсли ЕстьМетодHEAD Тогда ИначеЕсли ЕстьМетодHEAD Тогда
ТекстОшибки = "PUT и HEAD"; ОшибочныеМетоды = "PUT и HEAD";
КонецЕсли; КонецЕсли;
ИначеЕсли ЕстьМетодPOST Тогда ИначеЕсли ЕстьМетодPOST Тогда
Если ЕстьМетодHEAD Тогда Если ЕстьМетодHEAD Тогда
ТекстОшибки = "POST и HEAD"; ОшибочныеМетоды = "POST и HEAD";
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если Не ПустаяСтрока(ТекстОшибки) Тогда Если Не ПустаяСтрока(ОшибочныеМетоды) Тогда
ТекстОшибки = "Запрещено одновременное использование нескольких HTTP методов: " + ТекстОшибки; ТекстОшибки = СтрШаблон("Запрещено одновременное использование нескольких HTTP методов %1 для URL %2",
ОшибочныеМетоды, ОписаниеРесурса.URL);
ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяОшибка(ТекстОшибки, Истина)); ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяОшибка(ТекстОшибки, Истина));
Возврат; Возврат;
КонецЕсли; КонецЕсли;
@@ -182,7 +189,9 @@
Метод = "GET"; Метод = "GET";
КонецЕсли; КонецЕсли;
ОписаниеЗапроса.Метод = Метод; ОписаниеРесурса.Метод = Метод;
КонецЦикла;
КонецПроцедуры КонецПроцедуры
@@ -391,19 +400,20 @@
Процедура ПрочитатьData(Команда) Процедура ПрочитатьData(Команда)
МассивДанных = ЗначениеОпции(Команда, "d"); // -d, --data МассивДанных = ЗначениеОпции(Команда, "d"); // -d, --data
Назначение = НазначениеПередаваемыхДанныхPOST(Команда);
Для Каждого Данные Из МассивДанных Цикл Для Каждого Данные Из МассивДанных Цикл
Если Лев(Данные, 1) = "@" Тогда Если Лев(Данные, 1) = "@" Тогда
ИмяФайла = Сред(Данные, 2); ИмяФайла = Сред(Данные, 2);
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, Назначение);
ПередаваемыйФайл.ПрочитатьСодержимое = Истина; ПередаваемыйФайл.ПрочитатьСодержимое = Истина;
ПередаваемыйФайл.УдалятьПереносыСтрок = Истина; ПередаваемыйФайл.УдалятьПереносыСтрок = Истина;
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл); ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
Иначе Иначе
ПередаваемыйТекст = Новый ПередаваемыйТекст(Данные, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйТекст = Новый ПередаваемыйТекст(Данные, Назначение);
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст); ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);
КонецЕсли; КонецЕсли;
@@ -414,9 +424,10 @@
Процедура ПрочитатьDataRaw(Команда) Процедура ПрочитатьDataRaw(Команда)
МассивДанных = ЗначениеОпции(Команда, "data-raw"); МассивДанных = ЗначениеОпции(Команда, "data-raw");
Назначение = НазначениеПередаваемыхДанныхPOST(Команда);
Для Каждого Данные Из МассивДанных Цикл Для Каждого Данные Из МассивДанных Цикл
ПередаваемыйТекст = Новый ПередаваемыйТекст(Данные, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйТекст = Новый ПередаваемыйТекст(Данные, Назначение);
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст); ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);
КонецЦикла; КонецЦикла;
@@ -425,12 +436,14 @@
Процедура ПрочитатьDataBinary(Команда) Процедура ПрочитатьDataBinary(Команда)
МассивДанных = ЗначениеОпции(Команда, "data-binary"); МассивДанных = ЗначениеОпции(Команда, "data-binary");
Назначение = НазначениеПередаваемыхДанныхPOST(Команда);
Для Каждого ИмяФайла Из МассивДанных Цикл Для Каждого ИмяФайла Из МассивДанных Цикл
Если Лев(ИмяФайла, 1) = "@" Тогда Если Лев(ИмяФайла, 1) = "@" Тогда
ИмяФайла = Сред(ИмяФайла, 2); ИмяФайла = Сред(ИмяФайла, 2);
КонецЕсли; КонецЕсли;
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, Назначение);
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл); ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
КонецЦикла; КонецЦикла;
@@ -439,6 +452,8 @@
Процедура ПрочитатьDataUrlencode(Команда) Процедура ПрочитатьDataUrlencode(Команда)
МассивДанных = ЗначениеОпции(Команда, "data-urlencode"); МассивДанных = ЗначениеОпции(Команда, "data-urlencode");
Назначение = НазначениеПередаваемыхДанныхPOST(Команда);
Для Каждого Данные Из МассивДанных Цикл Для Каждого Данные Из МассивДанных Цикл
ПозицияРавенства = СтрНайти(Данные, "="); ПозицияРавенства = СтрНайти(Данные, "=");
ПозицияСобачки = СтрНайти(Данные, "@"); ПозицияСобачки = СтрНайти(Данные, "@");
@@ -451,13 +466,13 @@
Значение = СтрШаблон("%1=%2", Ключ, Значение); Значение = СтрШаблон("%1=%2", Ключ, Значение);
КонецЕсли; КонецЕсли;
ПередаваемыйТекст = Новый ПередаваемыйТекст(Значение, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйТекст = Новый ПередаваемыйТекст(Значение, Назначение);
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст); ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);
ИначеЕсли ПозицияСобачки > 0 Тогда ИначеЕсли ПозицияСобачки > 0 Тогда
Ключ = Сред(Данные, 1, ПозицияСобачки - 1); Ключ = Сред(Данные, 1, ПозицияСобачки - 1);
ИмяФайла = СокрЛП(Сред(Данные, ПозицияСобачки + 1)); ИмяФайла = СокрЛП(Сред(Данные, ПозицияСобачки + 1));
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, Назначение);
ПередаваемыйФайл.Ключ = Ключ; ПередаваемыйФайл.Ключ = Ключ;
ПередаваемыйФайл.ПрочитатьСодержимое = Истина; ПередаваемыйФайл.ПрочитатьСодержимое = Истина;
ПередаваемыйФайл.КодироватьСодержимое = Истина; ПередаваемыйФайл.КодироватьСодержимое = Истина;
@@ -465,7 +480,7 @@
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл); ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
Иначе Иначе
Значение = КодироватьСтроку(Данные, СпособКодированияСтроки.URLВКодировкеURL); Значение = КодироватьСтроку(Данные, СпособКодированияСтроки.URLВКодировкеURL);
ПередаваемыйТекст = Новый ПередаваемыйТекст(Значение, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйТекст = Новый ПередаваемыйТекст(Значение, Назначение);
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст); ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
@@ -518,19 +533,20 @@
Процедура ПрочитатьОпициюJson(Команда) Процедура ПрочитатьОпициюJson(Команда)
МассивДанных = ЗначениеОпции(Команда, "json"); МассивДанных = ЗначениеОпции(Команда, "json");
Назначение = НазначениеПередаваемыхДанныхPOST(Команда);
Для Каждого Данные Из МассивДанных Цикл Для Каждого Данные Из МассивДанных Цикл
Если Лев(Данные, 1) = "@" Тогда Если Лев(Данные, 1) = "@" Тогда
ИмяФайла = Сред(Данные, 2); ИмяФайла = Сред(Данные, 2);
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, Назначение);
ПередаваемыйФайл.ПрочитатьСодержимое = Истина; ПередаваемыйФайл.ПрочитатьСодержимое = Истина;
ПередаваемыйФайл.РазделительТелаЗапроса = ""; ПередаваемыйФайл.РазделительТелаЗапроса = "";
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл); ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
Иначе Иначе
ПередаваемыйТекст = Новый ПередаваемыйТекст(Данные, НазначенияПередаваемыхДанных.ТелоЗапроса); ПередаваемыйТекст = Новый ПередаваемыйТекст(Данные, Назначение);
ПередаваемыйТекст.РазделительТелаЗапроса = ""; ПередаваемыйТекст.РазделительТелаЗапроса = "";
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст); ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);
КонецЕсли; КонецЕсли;
@@ -539,12 +555,6 @@
КонецПроцедуры КонецПроцедуры
Процедура ПрочитатьПризнакПередачиОтправляемыхДанныхВСтрокуЗапроса(Команда)
ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса = ЗначениеОпции(Команда, "get");
КонецПроцедуры
Процедура ПрочитатьСертификатКлиента(Команда) Процедура ПрочитатьСертификатКлиента(Команда)
СертификатКлиента = ПоследнееЗначениеОпции(Команда, "E"); СертификатКлиента = ПоследнееЗначениеОпции(Команда, "E");
@@ -720,6 +730,14 @@
КонецПроцедуры КонецПроцедуры
Функция НазначениеПередаваемыхДанныхPOST(Команда)
Если ЗначениеОпции(Команда, "get") = Истина Тогда
Возврат НазначенияПередаваемыхДанных.СтрокаЗапроса;
Иначе
Возврат НазначенияПередаваемыхДанных.ТелоЗапроса;
КонецЕсли;
КонецФункции
Функция СоздатьКонсольноеПриложение(ВключатьПоддерживаемые = Истина, ВключатьНеподдерживаемые = Истина) Функция СоздатьКонсольноеПриложение(ВключатьПоддерживаемые = Истина, ВключатьНеподдерживаемые = Истина)
Приложение = Новый КонсольноеПриложение("curl", "", ЭтотОбъект); Приложение = Новый КонсольноеПриложение("curl", "", ЭтотОбъект);

View File

@@ -1,13 +1,13 @@
Перем АдресаРесурсов Экспорт; // Массив из Структура Перем АдресаРесурсов Экспорт; // Массив из Структура
// - URL - Строка - Адрес ресурса // - URL - Строка - Адрес ресурса
// - Метод - Строка - Метод
// - ИмяВыходногоФайла - Строка - Имя выходного файла // - ИмяВыходногоФайла - Строка - Имя выходного файла
// - Файлы - Массив из см. ПередаваемыйФайл - Файлы
Перем Заголовки Экспорт; // Соответствие из КлючИЗначение Перем Заголовки Экспорт; // Соответствие из КлючИЗначение
Перем Метод Экспорт; // Строка
Перем ИмяПользователя Экспорт; // Строка Перем ИмяПользователя Экспорт; // Строка
Перем ПарольПользователя Экспорт; // Строка Перем ПарольПользователя Экспорт; // Строка
Перем ОтправляемыеТекстовыеДанные Экспорт; // Массив из ПередаваемыйТекст Перем ОтправляемыеТекстовыеДанные Экспорт; // Массив из ПередаваемыйТекст
Перем Файлы Экспорт; // Массив из см. ПередаваемыйФайл Перем Файлы Экспорт; // Массив из см. ПередаваемыйФайл
Перем ПередаватьОтправляемыеДанныеВСтрокуЗапроса Экспорт; // Булево
Перем ИмяФайлаСертификатаКлиента Экспорт; // Строка Перем ИмяФайлаСертификатаКлиента Экспорт; // Строка
Перем ПарольСертификатаКлиента Экспорт; // Строка Перем ПарольСертификатаКлиента Экспорт; // Строка
Перем ИспользоватьСертификатыУЦИзХранилищаОС Экспорт; // Булево Перем ИспользоватьСертификатыУЦИзХранилищаОС Экспорт; // Булево
@@ -30,12 +30,10 @@
Процедура ПриСозданииОбъекта() Процедура ПриСозданииОбъекта()
АдресаРесурсов = Новый Массив; АдресаРесурсов = Новый Массив;
Заголовки = Новый Соответствие(); Заголовки = Новый Соответствие();
Метод = "GET";
ИмяПользователя = ""; ИмяПользователя = "";
ПарольПользователя = ""; ПарольПользователя = "";
ОтправляемыеТекстовыеДанные = Новый Массив; ОтправляемыеТекстовыеДанные = Новый Массив;
Файлы = Новый Массив; Файлы = Новый Массив;
ПередаватьОтправляемыеДанныеВСтрокуЗапроса = Ложь;
ИмяФайлаСертификатаКлиента = ""; ИмяФайлаСертификатаКлиента = "";
ПарольСертификатаКлиента = ""; ПарольСертификатаКлиента = "";
ИспользоватьСертификатыУЦИзХранилищаОС = Ложь; ИспользоватьСертификатыУЦИзХранилищаОС = Ложь;
@@ -62,6 +60,7 @@
Функция НовоеОписаниеРесурса() Функция НовоеОписаниеРесурса()
Описание = Новый Структура(); Описание = Новый Структура();
Описание.Вставить("URL", ""); Описание.Вставить("URL", "");
Описание.Вставить("Метод", "");
Описание.Вставить("ИмяВыходногоФайла", ""); Описание.Вставить("ИмяВыходногоФайла", "");
Описание.Вставить("Файлы", Новый Массив()); Описание.Вставить("Файлы", Новый Массив());
Возврат Описание; Возврат Описание;

View File

@@ -20,6 +20,8 @@
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуФайла"); СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуФайла");
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуНесколькихФайловПоОдномуURL"); СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуНесколькихФайловПоОдномуURL");
СписокТестов.Добавить("ТестДолжен_ПроверитьИгнорированиеПередаваемыхФайловПриПревышенииКоличестваURL"); СписокТестов.Добавить("ТестДолжен_ПроверитьИгнорированиеПередаваемыхФайловПриПревышенииКоличестваURL");
СписокТестов.Добавить("ТестДолжен_ПроверитьИгнорированиеОпцииGetПриПередачиФайла");
СписокТестов.Добавить("ТестДолжен_ПроверитьИспользованиеМетодаPUTиGETДляРазныхURL");
СписокТестов.Добавить("ТестДолжен_ПроверитьНеизменностьПереданногоЗаголовкаContentType"); СписокТестов.Добавить("ТестДолжен_ПроверитьНеизменностьПереданногоЗаголовкаContentType");
СписокТестов.Добавить("ТестДолжен_ПроверитьМножественноеИспользованиеUrl"); СписокТестов.Добавить("ТестДолжен_ПроверитьМножественноеИспользованиеUrl");
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуОтправляемыхДанныхВСтрокуЗапроса"); СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуОтправляемыхДанныхВСтрокуЗапроса");
@@ -339,6 +341,47 @@
КонецПроцедуры КонецПроцедуры
Процедура ТестДолжен_ПроверитьИгнорированиеОпцииGetПриПередачиФайла() Экспорт
КонсольнаяКоманда = "curl --upload-file path/to/file --get http://example.com";
ПрограммныйКод = "Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"");
|HTTPЗапрос.УстановитьИмяФайлаТела(""path/to/file"");
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""PUT"", HTTPЗапрос);";
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Новый ГенераторПрограммногоКода1С());
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьИспользованиеМетодаPUTиGETДляРазныхURL() Экспорт
КонсольнаяКоманда = "curl --upload-file path/to/file http://example1.com http://example2.com";
ПрограммныйКод = "// Запрос 1. http://example1.com
|Соединение = Новый HTTPСоединение(""example1.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"");
|HTTPЗапрос.УстановитьИмяФайлаТела(""path/to/file"");
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""PUT"", HTTPЗапрос);
|
|// Запрос 2. http://example2.com
|Соединение = Новый HTTPСоединение(""example2.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"");
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);";
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Новый ГенераторПрограммногоКода1С());
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьНеизменностьПереданногоЗаголовкаContentType() Экспорт Процедура ТестДолжен_ПроверитьНеизменностьПереданногоЗаголовкаContentType() Экспорт
КонсольнаяКоманда = "curl http://example.com \ КонсольнаяКоманда = "curl http://example.com \

View File

@@ -167,7 +167,7 @@
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда,, Ошибки); Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда,, Ошибки);
Ожидаем.Что(Ошибки, "Команда не валидна: " + КонсольнаяКоманда).Заполнено(); Ожидаем.Что(Ошибки, "Команда не валидна: " + КонсольнаяКоманда).Заполнено();
Ожидаем.Что(Ошибки[0].Текст).Содержит("Запрещено одновременное использование нескольких HTTP методов:"); Ожидаем.Что(Ошибки[0].Текст).Содержит("Запрещено одновременное использование нескольких HTTP методов");
Ожидаем.Что(Ошибки[0].Критичная).ЭтоИстина(); Ожидаем.Что(Ошибки[0].Критичная).ЭтоИстина();
КонецЦикла; КонецЦикла;