1
0
mirror of https://github.com/alei1180/curlone.git synced 2025-11-24 22:53:34 +02:00

fix: Переменные bash/shell

This commit is contained in:
Dmitry Ivanov
2025-07-09 23:50:12 +03:00
parent 8cdbea9dc9
commit 8f73cd779b
10 changed files with 349 additions and 49 deletions

View File

@@ -525,7 +525,10 @@
СтруктураURL = Новый ПарсерURL(ОписаниеРесурса.URL);
Если ПередаваемыйФайл.ДобавлятьИмяФайлаКURL Тогда
СтруктураURL.Путь = ОбщийНаборИнструментов.ДополнитьИменемФайлаПутьURL(ПередаваемыйФайл.ПолноеИмяФайла, СтруктураURL.Путь);
СтруктураURL.Путь = ОбщийНаборИнструментов.ДополнитьИменемФайлаПутьURL(
ПередаваемыйФайл.ПолноеИмяФайла,
СтруктураURL.Путь
);
КонецЕсли;
ДобавитьHTTPЗапрос(СтруктураURL);
@@ -646,14 +649,14 @@
Если Не ПустаяСтрока(Каталог) Тогда
КодСозданияКаталога = "// {t(Создание каталога по необходимости)}
|Каталог = Новый Файл(""%1"");
|Каталог = Новый Файл(%1);
|Если Не Каталог.Существует() Тогда
| СоздатьКаталог(Каталог.ПолноеИмя);
|КонецЕсли;";
Конструктор
.ДобавитьПустуюСтроку()
.ДобавитьСтроку(КодСозданияКаталога, Каталог);
.ДобавитьСтроку(КодСозданияКаталога, Конструктор.ПараметрВСтроку(Каталог));
КонецЕсли;
@@ -756,7 +759,11 @@
ContentDisposition = ОбщийНаборИнструментов.НайтиВСоответствииПоКлючуБезУчетаРегистра(
ПередаваемыйТекст.Заголовки,
"Content-Disposition");
ContentDisposition = ?(ContentDisposition = Неопределено, "form-data", ContentDisposition);
ContentDisposition = СтрШаблон(
"Content-Disposition: %1; name=""""%2""""",
?(ContentDisposition = Неопределено, "form-data", ContentDisposition),
ПередаваемыйТекст.ИмяПоля
);
КонструкторЗаписиДанных
.ДобавитьКомментарий(
@@ -768,15 +775,15 @@
ИмяПараметраРазделитель
)
.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: %1; name=""%2"""" + РазделительСтрок);",
ContentDisposition,
Конструктор.ПараметрВСтроку(ПередаваемыйТекст.ИмяПоля)
"ЗаписьДанных.ЗаписатьСтроку(""%1"" + РазделительСтрок);",
ContentDisposition
);
Если ЗначениеЗаполнено(ПередаваемыйТекст.ТипMIME) Тогда
ContentType = СтрШаблон("Content-Type: %1", ПередаваемыйТекст.ТипMIME);
КонструкторЗаписиДанных.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(""Content-Type: %1"" + РазделительСтрок);",
ПередаваемыйТекст.ТипMIME
"ЗаписьДанных.ЗаписатьСтроку(%1 + РазделительСтрок);",
Конструктор.ПараметрВСтроку(ContentType)
);
КонецЕсли;
@@ -814,7 +821,11 @@
ContentDisposition = ОбщийНаборИнструментов.НайтиВСоответствииПоКлючуБезУчетаРегистра(
ПередаваемыйФайл.Заголовки,
"Content-Disposition");
ContentDisposition = ?(ContentDisposition = Неопределено, "form-data", ContentDisposition);
ContentDisposition = СтрШаблон(
"Content-Disposition: %1; name=""""%2""""",
?(ContentDisposition = Неопределено, "form-data", ContentDisposition),
ПередаваемыйФайл.ИмяПоля
);
КонструкторЗаписиДанных
.ДобавитьКомментарий(
@@ -825,15 +836,15 @@
ИмяПараметраРазделитель
)
.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: %1; name=""""%2"""""" + РазделительСтрок);",
ContentDisposition,
ПередаваемыйФайл.ИмяПоля
"ЗаписьДанных.ЗаписатьСтроку(""%1"" + РазделительСтрок);",
ContentDisposition
);
Если ЗначениеЗаполнено(ПередаваемыйФайл.ТипMIME) Тогда
Если ЗначениеЗаполнено(ПередаваемыйФайл.ТипMIME) Тогда
ContentType = СтрШаблон("Content-Type: %1", ПередаваемыйФайл.ТипMIME);
КонструкторЗаписиДанных.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(""Content-Type: %1"" + РазделительСтрок);",
ПередаваемыйФайл.ТипMIME
"ЗаписьДанных.ЗаписатьСтроку(%1 + РазделительСтрок);",
Конструктор.ПараметрВСтроку(ContentType)
);
КонецЕсли;
@@ -870,7 +881,16 @@
ContentDisposition = ОбщийНаборИнструментов.НайтиВСоответствииПоКлючуБезУчетаРегистра(
ПередаваемыйФайл.Заголовки,
"Content-Disposition");
ContentDisposition = ?(ContentDisposition = Неопределено, "form-data", ContentDisposition);
ContentDisposition = СтрШаблон(
"Content-Disposition: %1; name=""""%2""""; filename=""""%3""""",
?(ContentDisposition = Неопределено, "form-data", ContentDisposition),
ПередаваемыйФайл.ИмяПоля,
ПередаваемыйФайл.ИмяФайла
);
ContentType = СтрШаблон(
"Content-Type: %1",
?(ЗначениеЗаполнено(ПередаваемыйФайл.ТипMIME), ПередаваемыйФайл.ТипMIME, "application/octet-stream")
);
КонструкторЗаписиДанных
.ДобавитьКомментарий(
@@ -882,14 +902,12 @@
ИмяПараметраРазделитель
)
.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: %1; name=""""%2""""; filename=""""%3"""""" + РазделительСтрок);",
ContentDisposition,
ПередаваемыйФайл.ИмяПоля,
ПередаваемыйФайл.ИмяФайла
"ЗаписьДанных.ЗаписатьСтроку(""%1"" + РазделительСтрок);",
ContentDisposition
)
.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(""Content-Type: %1"" + РазделительСтрок);",
?(ЗначениеЗаполнено(ПередаваемыйФайл.ТипMIME), ПередаваемыйФайл.ТипMIME, "application/octet-stream")
"ЗаписьДанных.ЗаписатьСтроку(%1 + РазделительСтрок);",
Конструктор.ПараметрВСтроку(ContentType)
);
ДобавитьЗаголовкиВЗаписьДанныхMultipart(КонструкторЗаписиДанных, ПередаваемыйФайл.Заголовки);
@@ -899,8 +917,8 @@
"ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);"
)
.ДобавитьСтроку(
"ЗаписьДанных.Записать(Новый ДвоичныеДанные(""%1""));",
ПередаваемыйФайл.ПолноеИмяФайла
"ЗаписьДанных.Записать(Новый ДвоичныеДанные(%1));",
Конструктор.ПараметрВСтроку(ПередаваемыйФайл.ПолноеИмяФайла)
)
.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);"
@@ -922,10 +940,10 @@
Продолжить;
КонецЕсли;
ЗаголовокТекст = СтрШаблон("%1: %2", Заголовок.Ключ, Заголовок.Значение);
КонструкторЗаписиДанных.ДобавитьСтроку(
"ЗаписьДанных.ЗаписатьСтроку(""%1: %2"" + РазделительСтрок);",
Заголовок.Ключ,
Заголовок.Значение
"ЗаписьДанных.ЗаписатьСтроку(%1 + РазделительСтрок);",
Конструктор.ПараметрВСтроку(ЗаголовокТекст)
);
КонецЦикла;

View File

@@ -302,7 +302,7 @@
КонецЕсли;
ДлинаСтроки = СтрДлина(РабочаяСтрока);
ПредыдущийИндекс = 0;
ПредыдущаяПозиция = 0;
ПеременнаяВНачале = Ложь;
ПеременнаяВКонце = Ложь;
@@ -315,7 +315,7 @@
ВНачале = Совпадение.Индекс = 0;
ВКонце = Совпадение.Индекс + Совпадение.Длина = ДлинаСтроки;
СледомЗаПредыдущми = Совпадение.Индекс = ПредыдущийИндекс И Не ВНачале;
СледомЗаПредыдущми = Совпадение.Индекс = ПредыдущаяПозиция И Не ВНачале;
ПеременнаяВНачале = ПеременнаяВНачале Или ВНачале;
ПеременнаяВКонце = ПеременнаяВКонце Или ВКонце;
@@ -325,25 +325,25 @@
Если Не СледомЗаПредыдущми И Совпадение.Индекс > 0 Тогда
ДобавочныйИндекс = ?(Совпадение.Индекс = 0, 0, 1);
Результат.Добавить(Сред(РабочаяСтрока, ПредыдущийИндекс + ДобавочныйИндекс, Совпадение.Индекс - ПредыдущийИндекс));
Результат.Добавить(Сред(РабочаяСтрока, ПредыдущаяПозиция + ДобавочныйИндекс, Совпадение.Индекс - ПредыдущаяПозиция));
КонецЕсли;
Если Не ВНачале Тогда
Результат.Добавить(?(СледомЗаПредыдущми, "", """") + " + ");
Результат.Добавить(?(СледомЗаПредыдущми, "", Кавычка) + " + ");
КонецЕсли;
Результат.Добавить(Имя);
Если Не ВКонце Тогда
Результат.Добавить(" + """);
Результат.Добавить(" + " + Кавычка);
КонецЕсли;
ПредыдущийИндекс = Совпадение.Индекс + Совпадение.Длина;
ПредыдущаяПозиция = Совпадение.Индекс + Совпадение.Длина;
КонецЦикла;
Если ЕстьКавычкаВКонце И Не ПеременнаяВКонце Тогда
Результат.Добавить(Кавычка);
Если ПредыдущаяПозиция < ДлинаСтроки Тогда
Результат.Добавить(Прав(РабочаяСтрока, ДлинаСтроки - ПредыдущаяПозиция) + Кавычка);
КонецЕсли;
Результат = СтрСоединить(Результат);

View File

@@ -152,10 +152,6 @@
КонецФункции
Функция ЭтоПеременная(Имя) Экспорт
Возврат Не ИменаПеременных.Найти(Имя) = Неопределено;
КонецФункции
Функция НовоеОписаниеРесурса()
Описание = Новый Структура();

View File

@@ -82,7 +82,8 @@
Спецификация.Добавить(ТокенРегулярноеВыражение("^\$(?:[a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\})", "Переменная"));
Спецификация.Добавить(ТокенРегулярноеВыражение("^(?:&&|\|\||[;&])", "ОператорСвязыванияКоманд"));
Спецификация.Добавить(ТокенРегулярноеВыражение("^\s", "ПробельныйСимвол"));
Спецификация.Добавить(ТокенРегулярноеВыражение("^[^'"";&$|\\\s]+", "СтрокаБезСлужебныхСимволов")); // Строка до символов '"\;&$| и пробельных символов
Спецификация.Добавить(ТокенРегулярноеВыражение("^[^'"";&\$|\\\s]+", "СтрокаБезСлужебныхСимволов"));
Спецификация.Добавить(ТокенРегулярноеВыражение("^[&\$|]", "СлужебныеСимволы"));
Возврат Спецификация;

View File

@@ -1,3 +1,4 @@
// BSLLS:MissingVariablesDescription-off
// BSLLS:ExportVariables-off
Перем ТелоЗапроса Экспорт;

View File

@@ -1,3 +1,4 @@
// BSLLS:MissingVariablesDescription-off
// BSLLS:ExportVariables-off
Перем HTTP Экспорт;

View File

@@ -1,3 +1,4 @@
// BSLLS:MissingVariablesDescription-off
// BSLLS:ExportVariables-off
Перем Basic Экспорт;

View File

@@ -2243,6 +2243,20 @@
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -d name=$NAME -d age=55",
"NAME = """";
|
|Заголовки = Новый Соответствие();
|Заголовки.Вставить(""Content-Type"", ""application/x-www-form-urlencoded"");
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки);
|HTTPЗапрос.УстановитьТелоИзСтроки(""name="" + NAME + ""&age=55"");
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://$HOST/$PATH?$QUERY#$FRAGMENT",
"HOST = """";
@@ -2256,6 +2270,196 @@
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://example.com/about.html -o file.html --output-dir $PATH --create-dirs",
"PATH = """";
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/about.html"");
|
|// Создание каталога по необходимости
|Каталог = Новый Файл(PATH);
|Если Не Каталог.Существует() Тогда
| СоздатьКаталог(Каталог.ПолноеИмя);
|КонецЕсли;
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос, PATH + ""/file.html"");"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F $NAME=$VAL",
"NAME = """";
|VAL = """";
|
|РазделительMultipart = СтрЗаменить(Новый УникальныйИдентификатор, ""-"", """");
|
|Заголовки = Новый Соответствие();
|Заголовки.Вставить(""Content-Type"", ""multipart/form-data; boundary="" + РазделительMultipart);
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки);
|Поток = HTTPЗапрос.ПолучитьТелоКакПоток();
|
|РазделительСтрок = Символы.ВК + Символы.ПС;
|ЗаписьДанных = Новый ЗаписьДанных(Поток, , , """", """");
|// Начало NAME
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name="""""" + NAME + """""""" + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(VAL + РазделительСтрок);
|// Конец NAME
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок);
|ЗаписьДанных.Закрыть();
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://example.com/ -F $NAME=@$FILE",
"NAME = """";
|FILE = """";
|
|РазделительMultipart = СтрЗаменить(Новый УникальныйИдентификатор, ""-"", """");
|
|Заголовки = Новый Соответствие();
|Заголовки.Вставить(""Content-Type"", ""multipart/form-data; boundary="" + РазделительMultipart);
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки);
|Поток = HTTPЗапрос.ПолучитьТелоКакПоток();
|
|РазделительСтрок = Символы.ВК + Символы.ПС;
|ЗаписьДанных = Новый ЗаписьДанных(Поток, , , """", """");
|// Начало NAME
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name="""""" + NAME + """"""; filename="""""" + FILE + """""""" + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Type: application/octet-stream"" + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|ЗаписьДанных.Записать(Новый ДвоичныеДанные(FILE));
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|// Конец NAME
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок);
|ЗаписьДанных.Закрыть();
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F $NAME=<$FILE",
"NAME = """";
|FILE = """";
|
|ЧтениеТекста = Новый ЧтениеТекста(FILE);
|ТекстовыеДанныеФайла_1 = ЧтениеТекста.Прочитать();
|
|РазделительMultipart = СтрЗаменить(Новый УникальныйИдентификатор, ""-"", """");
|
|Заголовки = Новый Соответствие();
|Заголовки.Вставить(""Content-Type"", ""multipart/form-data; boundary="" + РазделительMultipart);
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки);
|Поток = HTTPЗапрос.ПолучитьТелоКакПоток();
|
|РазделительСтрок = Символы.ВК + Символы.ПС;
|ЗаписьДанных = Новый ЗаписьДанных(Поток, , , """", """");
|// Начало NAME
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name="""""" + NAME + """""""" + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(ТекстовыеДанныеФайла_1 + РазделительСтрок);
|// Конец NAME
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок);
|ЗаписьДанных.Закрыть();
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F ""web=@index.html;type=$TYPE""",
"TYPE = """";
|
|РазделительMultipart = СтрЗаменить(Новый УникальныйИдентификатор, ""-"", """");
|
|Заголовки = Новый Соответствие();
|Заголовки.Вставить(""Content-Type"", ""multipart/form-data; boundary="" + РазделительMultipart);
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки);
|Поток = HTTPЗапрос.ПолучитьТелоКакПоток();
|
|РазделительСтрок = Символы.ВК + Символы.ПС;
|ЗаписьДанных = Новый ЗаписьДанных(Поток, , , """", """");
|// Начало web
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name=""""web""""; filename=""""index.html"""""" + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Type: "" + TYPE + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|ЗаписьДанных.Записать(Новый ДвоичныеДанные(""index.html""));
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|// Конец web
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок);
|ЗаписьДанных.Закрыть();
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F ""name=daniel;type=$TYPE""",
"TYPE = """";
|
|РазделительMultipart = СтрЗаменить(Новый УникальныйИдентификатор, ""-"", """");
|
|Заголовки = Новый Соответствие();
|Заголовки.Вставить(""Content-Type"", ""multipart/form-data; boundary="" + РазделительMultipart);
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки);
|Поток = HTTPЗапрос.ПолучитьТелоКакПоток();
|
|РазделительСтрок = Символы.ВК + Символы.ПС;
|ЗаписьДанных = Новый ЗаписьДанных(Поток, , , """", """");
|// Начало name
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name=""""name"""""" + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Type: "" + TYPE + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""daniel"" + РазделительСтрок);
|// Конец name
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок);
|ЗаписьДанных.Закрыть();
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F ""submit=OK;headers=\""X-submit-type: $SUBMIT_TYPE\""""",
"SUBMIT_TYPE = """";
|
|РазделительMultipart = СтрЗаменить(Новый УникальныйИдентификатор, ""-"", """");
|
|Заголовки = Новый Соответствие();
|Заголовки.Вставить(""Content-Type"", ""multipart/form-data; boundary="" + РазделительMultipart);
|
|Соединение = Новый HTTPСоединение(""example.com"", 80);
|HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки);
|Поток = HTTPЗапрос.ПолучитьТелоКакПоток();
|
|РазделительСтрок = Символы.ВК + Символы.ПС;
|ЗаписьДанных = Новый ЗаписьДанных(Поток, , , """", """");
|// Начало submit
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""Content-Disposition: form-data; name=""""submit"""""" + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""X-submit-type: "" + SUBMIT_TYPE + РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(РазделительСтрок);
|ЗаписьДанных.ЗаписатьСтроку(""OK"" + РазделительСтрок);
|// Конец submit
|ЗаписьДанных.ЗаписатьСтроку(""--"" + РазделительMultipart + ""--"" + РазделительСтрок);
|ЗаписьДанных.Закрыть();
|
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""POST"", HTTPЗапрос);"
);
Для Каждого Строка Из ТестовыеДанные Цикл
ПроверитьКонвертациюБезОшибок(Строка.Ключ, Строка.Значение);
КонецЦикла;

View File

@@ -1531,6 +1531,17 @@
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -d name=$NAME -d age=55",
"NAME = """";
|
|Данные = Новый Соответствие();
|Данные.Вставить(""name"", NAME);
|Данные.Вставить(""age"", ""55"");
|
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные);"
);
ТестовыеДанные.Вставить(
"curl http://$HOST/$PATH?$QUERY#$FRAGMENT",
"HOST = """";
@@ -1541,6 +1552,67 @@
|Результат = КоннекторHTTP.Get(""http://"" + HOST + ""/"" + PATH + ""?"" + QUERY + ""#"" + FRAGMENT);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F $NAME=$VAL",
"NAME = """";
|VAL = """";
|
|Данные = Новый Соответствие();
|Данные.Вставить(NAME, VAL);
|
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные);"
);
ТестовыеДанные.Вставить(
"curl http://example.com/ -F $NAME=@$FILE",
"NAME = """";
|FILE = """";
|
|Файлы = Новый Массив();
|Файл = Новый Структура();
|Файл.Вставить(""Имя"", NAME);
|Файл.Вставить(""ИмяФайла"", FILE);
|Файл.Вставить(""Данные"", Новый ДвоичныеДанные(FILE));
|Файлы.Добавить(Файл);
|
|ДополнительныеПараметры = Новый Структура();
|ДополнительныеПараметры.Вставить(""Файлы"", Файлы);
|
|Результат = КоннекторHTTP.Post(""http://example.com"", , ДополнительныеПараметры);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F $NAME=<$FILE",
"NAME = """";
|FILE = """";
|
|ЧтениеТекста = Новый ЧтениеТекста(FILE);
|ТекстовыеДанныеФайла_1 = ЧтениеТекста.Прочитать();
|
|Данные = Новый Соответствие();
|Данные.Вставить(NAME, ТекстовыеДанныеФайла_1);
|
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные);"
);
ТестовыеДанные.Вставить(
"curl http://example.com -F ""web=@index.html;type=$TYPE""",
"TYPE = """";
|
|Файлы = Новый Массив();
|Файл = Новый Структура();
|Файл.Вставить(""Имя"", ""web"");
|Файл.Вставить(""ИмяФайла"", ""index.html"");
|Файл.Вставить(""Данные"", Новый ДвоичныеДанные(""index.html""));
|Файл.Вставить(""Тип"", TYPE);
|Файлы.Добавить(Файл);
|
|ДополнительныеПараметры = Новый Структура();
|ДополнительныеПараметры.Вставить(""Файлы"", Файлы);
|
|Результат = КоннекторHTTP.Post(""http://example.com"", , ДополнительныеПараметры);"
);
Для Каждого Строка Из ТестовыеДанные Цикл
ПроверитьКонвертациюБезОшибок(Строка.Ключ, Строка.Значение);
КонецЦикла;

View File

@@ -390,32 +390,38 @@
&Тест
Процедура ТестДолжен_РаспарситьПеременные() Экспорт
КоманднаяСтрока = "myapp -a $VAR
|myapp ""$VAR""
|myapp -a '$VAR'
|myapp -a ""Text$VAR text""";
КоманднаяСтрока = "myapp1 -a $VAR
|myapp2 ""$VAR""
|myapp3 ""\$VAR""
|myapp4 -a '$VAR'
|myapp5 -a ""Text$VAR text""";
Эталон = Новый Массив;
Команда = Новый Массив;
Команда.Добавить("myapp");
Команда.Добавить("myapp1");
Команда.Добавить("-a");
Команда.Добавить("$ENV_VAR");
Эталон.Добавить(Команда);
Команда = Новый Массив;
Команда.Добавить("myapp");
Команда.Добавить("myapp2");
Команда.Добавить("$ENV_VAR");
Эталон.Добавить(Команда);
Команда = Новый Массив;
Команда.Добавить("myapp");
Команда.Добавить("myapp3");
Команда.Добавить("$VAR");
Эталон.Добавить(Команда);
Команда = Новый Массив;
Команда.Добавить("myapp4");
Команда.Добавить("-a");
Команда.Добавить("$VAR");
Эталон.Добавить(Команда);
Команда = Новый Массив;
Команда.Добавить("myapp");
Команда.Добавить("myapp5");
Команда.Добавить("-a");
Команда.Добавить("Text$ENV_VAR text");
Эталон.Добавить(Команда);