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:
@@ -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 + РазделительСтрок);",
|
||||
Конструктор.ПараметрВСтроку(ЗаголовокТекст)
|
||||
);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
ДлинаСтроки = СтрДлина(РабочаяСтрока);
|
||||
ПредыдущийИндекс = 0;
|
||||
ПредыдущаяПозиция = 0;
|
||||
ПеременнаяВНачале = Ложь;
|
||||
ПеременнаяВКонце = Ложь;
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
|
||||
ВНачале = Совпадение.Индекс = 0;
|
||||
ВКонце = Совпадение.Индекс + Совпадение.Длина = ДлинаСтроки;
|
||||
СледомЗаПредыдущми = Совпадение.Индекс = ПредыдущийИндекс И Не ВНачале;
|
||||
СледомЗаПредыдущми = Совпадение.Индекс = ПредыдущаяПозиция И Не ВНачале;
|
||||
ПеременнаяВНачале = ПеременнаяВНачале Или ВНачале;
|
||||
ПеременнаяВКонце = ПеременнаяВКонце Или ВКонце;
|
||||
|
||||
@@ -325,25 +325,25 @@
|
||||
|
||||
Если Не СледомЗаПредыдущми И Совпадение.Индекс > 0 Тогда
|
||||
ДобавочныйИндекс = ?(Совпадение.Индекс = 0, 0, 1);
|
||||
Результат.Добавить(Сред(РабочаяСтрока, ПредыдущийИндекс + ДобавочныйИндекс, Совпадение.Индекс - ПредыдущийИндекс));
|
||||
Результат.Добавить(Сред(РабочаяСтрока, ПредыдущаяПозиция + ДобавочныйИндекс, Совпадение.Индекс - ПредыдущаяПозиция));
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ВНачале Тогда
|
||||
Результат.Добавить(?(СледомЗаПредыдущми, "", """") + " + ");
|
||||
Результат.Добавить(?(СледомЗаПредыдущми, "", Кавычка) + " + ");
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Добавить(Имя);
|
||||
|
||||
Если Не ВКонце Тогда
|
||||
Результат.Добавить(" + """);
|
||||
Результат.Добавить(" + " + Кавычка);
|
||||
КонецЕсли;
|
||||
|
||||
ПредыдущийИндекс = Совпадение.Индекс + Совпадение.Длина;
|
||||
ПредыдущаяПозиция = Совпадение.Индекс + Совпадение.Длина;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ЕстьКавычкаВКонце И Не ПеременнаяВКонце Тогда
|
||||
Результат.Добавить(Кавычка);
|
||||
Если ПредыдущаяПозиция < ДлинаСтроки Тогда
|
||||
Результат.Добавить(Прав(РабочаяСтрока, ДлинаСтроки - ПредыдущаяПозиция) + Кавычка);
|
||||
КонецЕсли;
|
||||
|
||||
Результат = СтрСоединить(Результат);
|
||||
|
||||
@@ -152,10 +152,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПеременная(Имя) Экспорт
|
||||
Возврат Не ИменаПеременных.Найти(Имя) = Неопределено;
|
||||
КонецФункции
|
||||
|
||||
Функция НовоеОписаниеРесурса()
|
||||
|
||||
Описание = Новый Структура();
|
||||
|
||||
@@ -82,7 +82,8 @@
|
||||
Спецификация.Добавить(ТокенРегулярноеВыражение("^\$(?:[a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\})", "Переменная"));
|
||||
Спецификация.Добавить(ТокенРегулярноеВыражение("^(?:&&|\|\||[;&])", "ОператорСвязыванияКоманд"));
|
||||
Спецификация.Добавить(ТокенРегулярноеВыражение("^\s", "ПробельныйСимвол"));
|
||||
Спецификация.Добавить(ТокенРегулярноеВыражение("^[^'"";&$|\\\s]+", "СтрокаБезСлужебныхСимволов")); // Строка до символов '"\;&$| и пробельных символов
|
||||
Спецификация.Добавить(ТокенРегулярноеВыражение("^[^'"";&\$|\\\s]+", "СтрокаБезСлужебныхСимволов"));
|
||||
Спецификация.Добавить(ТокенРегулярноеВыражение("^[&\$|]", "СлужебныеСимволы"));
|
||||
|
||||
Возврат Спецификация;
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// BSLLS:MissingVariablesDescription-off
|
||||
// BSLLS:ExportVariables-off
|
||||
|
||||
Перем ТелоЗапроса Экспорт;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// BSLLS:MissingVariablesDescription-off
|
||||
// BSLLS:ExportVariables-off
|
||||
|
||||
Перем HTTP Экспорт;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// BSLLS:MissingVariablesDescription-off
|
||||
// BSLLS:ExportVariables-off
|
||||
|
||||
Перем Basic Экспорт;
|
||||
|
||||
@@ -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Запрос);"
|
||||
);
|
||||
|
||||
Для Каждого Строка Из ТестовыеДанные Цикл
|
||||
ПроверитьКонвертациюБезОшибок(Строка.Ключ, Строка.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
@@ -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"", , ДополнительныеПараметры);"
|
||||
);
|
||||
|
||||
Для Каждого Строка Из ТестовыеДанные Цикл
|
||||
ПроверитьКонвертациюБезОшибок(Строка.Ключ, Строка.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
@@ -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");
|
||||
Эталон.Добавить(Команда);
|
||||
|
||||
Reference in New Issue
Block a user