Skip to content

Commit

Permalink
Merge pull request #163 from Stivo182/fix/162-parse-data-option
Browse files Browse the repository at this point in the history
Исправление разбора значения опции --data
  • Loading branch information
Stivo182 authored Jan 23, 2025
2 parents e447855 + 451cfd1 commit 38253b0
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 16 deletions.
28 changes: 16 additions & 12 deletions src/core/Классы/КонвертерКомандыCURL.os
Original file line number Diff line number Diff line change
Expand Up @@ -436,8 +436,6 @@

Для Каждого Данные Из МассивДанных Цикл

ПозицияРавенства = СтрНайти(Данные, "=");

Если Лев(Данные, 1) = "@" Тогда

ИмяФайла = Сред(Данные, 2);
Expand All @@ -448,20 +446,26 @@

ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);

ИначеЕсли ПозицияРавенства > 0 Тогда
Иначе

ИмяПоля = Сред(Данные, 1, ПозицияРавенства - 1);
Значение = Сред(Данные, ПозицияРавенства + 1);
МассивДанныхПолей = СтрРазделить(Данные, "&");

ПередаваемыйТекст = Новый ПередаваемыйТекст(Значение, Назначение);
ПередаваемыйТекст.ИмяПоля = ИмяПоля;
Для Каждого ДанныеПоля Из МассивДанныхПолей Цикл
ПозицияРавенства = СтрНайти(ДанныеПоля, "=");

Если ПозицияРавенства Тогда
ИмяПоля = Сред(ДанныеПоля, 1, ПозицияРавенства - 1);
Значение = Сред(ДанныеПоля, ПозицияРавенства + 1);
Иначе
ИмяПоля = Неопределено;
Значение = ДанныеПоля;
КонецЕсли;

ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);

Иначе
ПередаваемыйТекст = Новый ПередаваемыйТекст(Значение, Назначение);
ПередаваемыйТекст.ИмяПоля = ИмяПоля;

ПередаваемыйТекст = Новый ПередаваемыйТекст(Данные, Назначение);
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыйТекст);
КонецЦикла;

КонецЕсли;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,13 @@
КонецПроцедуры

&Тест
Процедура ТестДолжен_ПроверитьПередачуТекстовыхДанныхИзАргументовИФайлов() Экспорт
Процедура ТестДолжен_ПроверитьПередачуТекстовыхДанныхИФайлов() Экспорт

КонсольнаяКоманда = "curl http://example.com \
| -d param1=value1 \
| --data-ascii 'парам2=значение2' \
| --data 'param3=value3' \
| --data 'param5=value5&param6=value6' \
| --data @path-to-file1 \
| --data @path-to-file2 \
| --data-raw '@at@at@' \
Expand All @@ -116,7 +117,7 @@
|ЧтениеТекста = Новый ЧтениеТекста(""path-to-file3"");
|ТекстовыеДанныеФайла_3 = ЧтениеТекста.Прочитать();
|
|ТелоЗапроса = ""param1=value1&парам2=значение2&param3=value3&@at@at@&param4=value4""
|ТелоЗапроса = ""param1=value1&парам2=значение2&param3=value3&param5=value5&param6=value6&@at@at@&param4=value4""
| + ""&"" + ТекстовыеДанныеФайла_1
| + ""&"" + ТекстовыеДанныеФайла_2
| + ""&"" + ТекстовыеДанныеФайла_3;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,13 @@
КонецПроцедуры

&Тест
Процедура ТестДолжен_ПроверитьПередачуТекстовыхДанныхИзАргументовИФайлов() Экспорт
Процедура ТестДолжен_ПроверитьПередачуТекстовыхДанныхИФайлов() Экспорт

КонсольнаяКоманда = "curl http://example.com \
| -d param1=value1 \
| --data-ascii 'парам2=значение2' \
| --data 'param3=value3' \
| --data 'param5=value5&param6=value6' \
| --data @path-to-file1 \
| --data @path-to-file2 \
| --data-raw '@at@at@' \
Expand All @@ -112,7 +113,7 @@
|ЧтениеТекста = Новый ЧтениеТекста(""path-to-file3"");
|ТекстовыеДанныеФайла_3 = ЧтениеТекста.Прочитать();
|
|Данные = ""param1=value1&парам2=значение2&param3=value3&@at@at@&param4=value4""
|Данные = ""param1=value1&парам2=значение2&param3=value3&param5=value5&param6=value6&@at@at@&param4=value4""
| + ""&"" + ТекстовыеДанныеФайла_1
| + ""&"" + ТекстовыеДанныеФайла_2
| + ""&"" + ТекстовыеДанныеФайла_3;
Expand All @@ -123,6 +124,24 @@

КонецПроцедуры

&Тест
Процедура ТестДолжен_ПроверитьПередачуДанныхЧерезСоответствие() Экспорт

КонсольнаяКоманда = "curl http://example.com \
| --data 'param1=value1' \
| --data 'param2=value2&param3=value3'";

ПрограммныйКод = "Данные = Новый Соответствие();
|Данные.Вставить(""param1"", ""value1"");
|Данные.Вставить(""param2"", ""value2"");
|Данные.Вставить(""param3"", ""value3"");
|
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные);";

ПроверитьКонвертациюБезОшибок(КонсольнаяКоманда, ПрограммныйКод);

КонецПроцедуры

&Тест
Процедура ТестДолжен_ПроверитьИнициализациюТелаЗапросаТолькоОдинРаз() Экспорт

Expand Down

0 comments on commit 38253b0

Please sign in to comment.