mirror of
https://github.com/alei1180/curlone.git
synced 2026-06-21 01:30:38 +02:00
feat: Конвертация параметров запроса из URL в коллекцию (#252)
This commit is contained in:
@@ -268,9 +268,9 @@
|
||||
|
||||
НазначениеДанных = НазначенияПередаваемыхДанных.ТелоЗапроса;
|
||||
|
||||
Если ВозможнаПередачаДанныхЧерезСоответствие(НазначениеДанных) Тогда
|
||||
Если ВозможноПередатьОтправляемыеДанныеЧерезСоответствие(НазначениеДанных) Тогда
|
||||
|
||||
ДобавитьДанныеЗапросаЧерезСоответствие(НазначениеДанных, ИмяПараметраДанныеЗапроса, ДанныеЗапросаСборка);
|
||||
ДобавитьТелоЗапросаЧерезСоответствие(ИмяПараметраДанныеЗапроса, ДанныеЗапросаСборка);
|
||||
|
||||
ИначеЕсли ОписаниеЗапроса.ОтправлятьКакMultipartFormData Тогда
|
||||
|
||||
@@ -287,30 +287,40 @@
|
||||
|
||||
Процедура ДобавитьПараметрыЗапроса()
|
||||
|
||||
НазначениеДанных = НазначенияПередаваемыхДанных.СтрокаЗапроса;
|
||||
|
||||
Если Не Состояние.ПереданаСтрокаЗапроса
|
||||
Или Не ВозможнаПередачаДанныхЧерезСоответствие(НазначениеДанных) Тогда
|
||||
Если Не (ЕстьПараметрыЗапроса() И ВозможноПередатьПараметрыЗапросаЧерезСоответствие()) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьДанныеЗапросаЧерезСоответствие(НазначениеДанных, ИмяПараметраПараметрыЗапроса);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьДанныеЗапросаЧерезСоответствие(Назначение, ИмяПараметра, РезультатСборка = "")
|
||||
|
||||
КонструкторДанных = Новый КонструкторПрограммногоКода(ОписаниеЗапроса.ИменаПеременных);
|
||||
|
||||
ДобавитьДанныеЗапросаИзТекстовыхДанныхЧерезСоответствие(КонструкторДанных, Назначение, ИмяПараметра);
|
||||
ДобавитьДанныеЗапросаИзПрочитанныхФайловЧерезСоответствие(КонструкторДанных, Назначение, ИмяПараметра);
|
||||
|
||||
Если Не КонструкторДанных.Пустой() Тогда
|
||||
ПараметрыЗапроса = Новый Соответствие();
|
||||
Назначение = НазначенияПередаваемыхДанных.СтрокаЗапроса;
|
||||
|
||||
ПолучитьПараметрыЗапросаИзURL(ПараметрыЗапроса);
|
||||
ПолучитьПараметрыИзТекстовыхДанных(Назначение, ПараметрыЗапроса);
|
||||
ПолучитьПараметрыИзПрочитанныхФайлов(Назначение, ПараметрыЗапроса);
|
||||
|
||||
Если ПараметрыЗапроса.Количество() > 0 Тогда
|
||||
|
||||
Конструктор
|
||||
.ДобавитьПустуюСтроку()
|
||||
.ДобавитьСтроку("%1 = Новый Соответствие();", ИмяПараметра)
|
||||
.ДобавитьСтроку(КонструкторДанных.ПолучитьРезультат());
|
||||
.ДобавитьСоответствие(ПараметрыЗапроса, ИмяПараметраПараметрыЗапроса);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьТелоЗапросаЧерезСоответствие(ИмяПараметра, РезультатСборка)
|
||||
|
||||
Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса;
|
||||
ДанныеТела = Новый Соответствие();
|
||||
|
||||
ПолучитьПараметрыИзТекстовыхДанных(Назначение, ДанныеТела);
|
||||
ПолучитьПараметрыИзПрочитанныхФайлов(Назначение, ДанныеТела);
|
||||
|
||||
Если ДанныеТела.Количество() > 0 Тогда
|
||||
|
||||
Конструктор
|
||||
.ДобавитьПустуюСтроку()
|
||||
.ДобавитьСоответствие(ДанныеТела, ИмяПараметра);
|
||||
|
||||
РезультатСборка = ИмяПараметра;
|
||||
|
||||
@@ -318,7 +328,22 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьДанныеЗапросаИзТекстовыхДанныхЧерезСоответствие(КонструкторДанных, Назначение, ИмяПараметра)
|
||||
Процедура ПолучитьПараметрыЗапросаИзURL(ИсходящиеПараметры)
|
||||
|
||||
Если ОписаниеЗапроса.АдресаРесурсов.Количество() > 1 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеРесурса = ОписаниеЗапроса.АдресаРесурсов[0];
|
||||
СтруктураURL = Новый РазборURL(ОписаниеРесурса.URL);
|
||||
|
||||
Для Каждого Параметр Из СтруктураURL.ПараметрыЗапроса Цикл
|
||||
ОбщийНаборИнструментов.ВставитьВСловарьСписков(ИсходящиеПараметры, Параметр.Ключ, Параметр.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьПараметрыИзТекстовыхДанных(Назначение, ИсходящиеПараметры)
|
||||
|
||||
Для Каждого ПередаваемыйТекст Из ОписаниеЗапроса.ОтправляемыеТекстовыеДанные Цикл
|
||||
|
||||
@@ -334,93 +359,25 @@
|
||||
Значение = "";
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыМетода = Новый Массив();
|
||||
ПараметрыМетода.Добавить(Конструктор.ПараметрВСтроку(Ключ));
|
||||
ПараметрыМетода.Добавить(Конструктор.НеобязательныйПараметрВСтроку(Значение));
|
||||
|
||||
КонструкторДанных.ДобавитьСтроку(
|
||||
"%1.Вставить(%2);",
|
||||
ИмяПараметра,
|
||||
Конструктор.ПараметрыФункцииВСтроку(ПараметрыМетода)
|
||||
);
|
||||
ОбщийНаборИнструментов.ВставитьВСловарьСписков(ИсходящиеПараметры, Ключ, Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьДанныеЗапросаИзПрочитанныхФайловЧерезСоответствие(КонструкторДанных, Назначение, ИмяПараметра)
|
||||
Процедура ПолучитьПараметрыИзПрочитанныхФайлов(Назначение, ИсходящиеПараметры)
|
||||
|
||||
ЗначенияПолей = Новый Соответствие();
|
||||
Для Каждого ПрочитанныйФайл Из ПрочитанныеФайлы Цикл
|
||||
|
||||
ПередаваемыйФайл = ПрочитанныйФайл.ПередаваемыйФайл;
|
||||
|
||||
Если Не ПередаваемыйФайл.Назначение = Назначение
|
||||
Или Не ПередаваемыйФайл.ПрочитатьСодержимое Тогда
|
||||
Или Не ПередаваемыйФайл.ПрочитатьСодержимое
|
||||
Или Не ЗначениеЗаполнено(ПередаваемыйФайл.ИмяПоля) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПоля = ПередаваемыйФайл.ИмяПоля;
|
||||
Если ЗначенияПолей[ИмяПоля] = Неопределено Тогда
|
||||
|
||||
ЗначенияПолей.Вставить(ИмяПоля, ПрочитанныйФайл.ИмяПеременной);
|
||||
|
||||
ИначеЕсли ТипЗнч(ЗначенияПолей[ИмяПоля]) = Тип("Массив") Тогда
|
||||
|
||||
ЗначенияПолей[ИмяПоля].Добавить(ПрочитанныйФайл.ИмяПеременной);
|
||||
|
||||
Иначе
|
||||
|
||||
МассивЗначений = Новый Массив();
|
||||
МассивЗначений.Добавить(ЗначенияПолей[ИмяПоля]);
|
||||
МассивЗначений.Добавить(ПрочитанныйФайл.ИмяПеременной);
|
||||
|
||||
ЗначенияПолей.Вставить(ИмяПоля, МассивЗначений);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого Данные Из ЗначенияПолей Цикл
|
||||
|
||||
ИмяПоля = Данные.Ключ;
|
||||
|
||||
Если ТипЗнч(Данные.Значение) = Тип("Массив") Тогда
|
||||
|
||||
МассивПеременныхФайлов = Данные.Значение;
|
||||
|
||||
КонструкторДанных.ДобавитьСтроку(
|
||||
"%1.Вставить(%2, Новый Массив());",
|
||||
ИмяПараметра,
|
||||
КонструкторДанных.ПараметрВСтроку(ИмяПоля)
|
||||
);
|
||||
|
||||
Для Каждого ИмяПеременнойФайла Из МассивПеременныхФайлов Цикл
|
||||
|
||||
КонструкторДанных.ДобавитьСтроку(
|
||||
"%1[%2].{t(Массив.Добавить)}(%3);",
|
||||
ИмяПараметра,
|
||||
КонструкторДанных.ПараметрВСтроку(ИмяПоля),
|
||||
ИмяПеременнойФайла
|
||||
);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ИмяПеременнойФайла = Данные.Значение;
|
||||
|
||||
ПараметрыМетода = Новый Массив();
|
||||
ПараметрыМетода.Добавить(КонструкторДанных.ПараметрВСтроку(ИмяПоля));
|
||||
ПараметрыМетода.Добавить(ИмяПеременнойФайла);
|
||||
|
||||
КонструкторДанных.ДобавитьСтроку(
|
||||
"%1.Вставить(%2);",
|
||||
ИмяПараметра,
|
||||
КонструкторДанных.ПараметрыФункцииВСтроку(ПараметрыМетода)
|
||||
);
|
||||
|
||||
КонецЕсли;
|
||||
ОбщийНаборИнструментов.ВставитьВСловарьСписков(ИсходящиеПараметры, ПередаваемыйФайл.ИмяПоля, ПрочитанныйФайл.ИмяПеременной);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -795,8 +752,7 @@
|
||||
Если ОписаниеРесурса.Метод = "GET" Тогда
|
||||
|
||||
ПараметрПараметрыЗапроса = "";
|
||||
Если Состояние.ПереданаСтрокаЗапроса
|
||||
И ВозможнаПередачаДанныхЧерезСоответствие(НазначенияПередаваемыхДанных.СтрокаЗапроса) Тогда
|
||||
Если ЕстьПараметрыЗапроса() И ВозможноПередатьПараметрыЗапросаЧерезСоответствие() Тогда
|
||||
ПараметрПараметрыЗапроса = ИмяПараметраПараметрыЗапроса;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -837,25 +793,28 @@
|
||||
|
||||
Процедура ДобавитьURL(СтруктураURL)
|
||||
|
||||
URLСборка = "";
|
||||
НазначениеДанных = НазначенияПередаваемыхДанных.СтрокаЗапроса;
|
||||
|
||||
Если Состояние.ПереданаСтрокаЗапроса
|
||||
И ВозможнаПередачаДанныхЧерезСоответствие(НазначениеДанных) Тогда
|
||||
Если ВозможноПередатьПараметрыЗапросаЧерезСоответствие() Тогда
|
||||
|
||||
URLСборка = Новый ГенераторКодаURL(ОписаниеЗапроса, СтруктураURL).Получить();
|
||||
СтруктураURL.ПараметрыЗапроса.Очистить();
|
||||
|
||||
ГенераторКодаURL = Новый ГенераторКодаURL(
|
||||
ОписаниеЗапроса,
|
||||
СтруктураURL
|
||||
);
|
||||
|
||||
Иначе
|
||||
|
||||
URLСборка = Новый ГенераторКодаURL(
|
||||
ГенераторКодаURL = Новый ГенераторКодаURL(
|
||||
ОписаниеЗапроса,
|
||||
СтруктураURL,
|
||||
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные,
|
||||
ПрочитанныеФайлы
|
||||
).Получить();
|
||||
);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
URLСборка = ГенераторКодаURL.Получить();
|
||||
|
||||
Если СтрЧислоСтрок(URLСборка) > 1 Тогда
|
||||
|
||||
Конструктор
|
||||
@@ -989,8 +948,8 @@
|
||||
|
||||
Процедура ДобавитьПараметрыЗапросаВДополнительныеПараметры(КонструкторДопПараметров, ОписаниеРесурса)
|
||||
|
||||
Если Состояние.ПереданаСтрокаЗапроса
|
||||
И ВозможнаПередачаДанныхЧерезСоответствие(НазначенияПередаваемыхДанных.СтрокаЗапроса)
|
||||
Если ЕстьПараметрыЗапроса()
|
||||
И ВозможноПередатьПараметрыЗапросаЧерезСоответствие()
|
||||
И Не ВозможноПередатьПараметрыЗапросаВПараметрыФункцииВызоваМетода(ОписаниеРесурса.Метод) Тогда
|
||||
|
||||
КонструкторДопПараметров.ДобавитьСтроку(
|
||||
@@ -1095,7 +1054,57 @@
|
||||
Возврат Метод = "GET";
|
||||
КонецФункции
|
||||
|
||||
Функция ВозможнаПередачаДанныхЧерезСоответствие(Назначение)
|
||||
Функция ЕстьПараметрыЗапроса()
|
||||
|
||||
АдресаРесурсов = ОписаниеЗапроса.АдресаРесурсов;
|
||||
ЕстьПараметрыЗапросаВАдресе = ОписаниеЗапроса.АдресаРесурсов.Количество() = 1
|
||||
И СтрНайти(АдресаРесурсов[0].URL, "?");
|
||||
|
||||
Возврат Состояние.ПереданаСтрокаЗапроса Или ЕстьПараметрыЗапросаВАдресе;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВозможноПередатьПараметрыЗапросаЧерезСоответствие()
|
||||
|
||||
Возврат ВозможноПередатьПараметрыЗапросаИзОтправляемыхДанныхЧерезСоответствие()
|
||||
И ВозможноПередатьПараметрыЗапросаИзURLЧерезСоответствие();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВозможноПередатьПараметрыЗапросаИзURLЧерезСоответствие()
|
||||
|
||||
АдресаРесурсов = ОписаниеЗапроса.АдресаРесурсов;
|
||||
|
||||
Если АдресаРесурсов.Количество() <> 1 Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеЗапроса.ИменаПеременных.Количество() = 0 Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
ПрефиксХешаПеременной = ОбщийНаборИнструментов.ПрефиксХешаПеременной();
|
||||
СтруктураURL = Новый РазборURL(АдресаРесурсов[0].URL);
|
||||
|
||||
Для Каждого ПараметрЗапроса Из СтруктураURL.ПараметрыЗапроса Цикл
|
||||
Если Не ЗначениеЗаполнено(ПараметрЗапроса.Значение)
|
||||
И СтрНайти(ПараметрЗапроса.Ключ, ПрефиксХешаПеременной) > 0 Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВозможноПередатьПараметрыЗапросаИзОтправляемыхДанныхЧерезСоответствие()
|
||||
|
||||
Возврат Не Состояние.ПереданаСтрокаЗапроса
|
||||
Или ВозможноПередатьОтправляемыеДанныеЧерезСоответствие(НазначенияПередаваемыхДанных.СтрокаЗапроса);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВозможноПередатьОтправляемыеДанныеЧерезСоответствие(Назначение)
|
||||
|
||||
ЭтоДанныеMultipart = ОписаниеЗапроса.ОтправлятьКакMultipartFormData
|
||||
И Назначение = НазначенияПередаваемыхДанных.ТелоЗапроса;
|
||||
|
||||
@@ -164,9 +164,14 @@
|
||||
|
||||
Тип = ТипЗнч(Значение);
|
||||
Если Тип = Тип("Строка") Тогда
|
||||
|
||||
Если Не СтрНачинаетсяС(Значение, "{t(Переменная.") Тогда
|
||||
Результат = ЭкранироватьКавычки(Значение);
|
||||
Результат = СтрШаблон("""%1""", Результат);
|
||||
Иначе
|
||||
Результат = Значение;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ЭкранироватьКавычки(Значение);
|
||||
Результат = СтрШаблон("""%1""", Результат);
|
||||
Результат = ОбработатьПараметрыВСтроке(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
@@ -273,7 +278,7 @@
|
||||
|
||||
МассивПараметров = Новый Массив();
|
||||
МассивПараметров.Добавить(ПараметрВСтроку(КлючИЗначение.Ключ));
|
||||
МассивПараметров.Добавить(ПараметрВСтроку(КлючИЗначение.Значение));
|
||||
МассивПараметров.Добавить(НеобязательныйПараметрВСтроку(КлючИЗначение.Значение));
|
||||
|
||||
ДобавитьСтроку(
|
||||
"%1.{t(Соответствие.Вставить)}(%2);",
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
|
||||
Процедура ДобавитьПеременную(Знач Значение)
|
||||
|
||||
ШаблонВТексте = "$ENV_%1";
|
||||
ШаблонВТексте = ОбщийНаборИнструментов.ПрефиксХешаПеременной() + "%1";
|
||||
|
||||
Имя = Сред(Значение, 2);
|
||||
Имя = СтрЗаменить(Имя, "{", "");
|
||||
|
||||
@@ -260,4 +260,42 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает префикс хеша переменной.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
Функция ПрефиксХешаПеременной() Экспорт
|
||||
Возврат "$ENV_";
|
||||
КонецФункции
|
||||
|
||||
// Добавляет значение в соответствие, поддерживая множественные значения для одного ключа.
|
||||
//
|
||||
// Параметры:
|
||||
// Соответствие - Соответствие - Соответствие, в которое добавляется значение
|
||||
// Ключ - Произвольный - Ключ для добавления/обновления
|
||||
// Значение - Произвольный - Значение для добавления
|
||||
Процедура ВставитьВСловарьСписков(Соответствие, Ключ, Значение) Экспорт
|
||||
|
||||
ТекущееЗначение = Соответствие[Ключ];
|
||||
|
||||
Если ТипЗнч(ТекущееЗначение) = Тип("Массив") Тогда
|
||||
|
||||
ТекущееЗначение.Добавить(Значение);
|
||||
|
||||
ИначеЕсли Не ТекущееЗначение = Неопределено Тогда
|
||||
|
||||
Значения = Новый Массив();
|
||||
Значения.Добавить(ТекущееЗначение);
|
||||
Значения.Добавить(Значение);
|
||||
|
||||
Соответствие[Ключ] = Значения;
|
||||
|
||||
Иначе
|
||||
|
||||
Соответствие[Ключ] = Значение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -66,47 +66,79 @@
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl http://example.com?param=value",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param=value"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"", ""value"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param1=value1¶m2=value2'",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param1=value1¶m2=value2"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param1"", ""value1"");
|
||||
|ПараметрыЗапроса.Вставить(""param2"", ""value2"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param1=value1¶m2=value2¶m3=value3'",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param1=value1¶m2=value2¶m3=value3"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param1"", ""value1"");
|
||||
|ПараметрыЗапроса.Вставить(""param2"", ""value2"");
|
||||
|ПараметрыЗапроса.Вставить(""param3"", ""value3"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param='",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl http://example.com?param",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param=value¶m=value2'",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param=value¶m=value2"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"", Новый Массив());
|
||||
|ПараметрыЗапроса[""param""].Добавить(""value"");
|
||||
|ПараметрыЗапроса[""param""].Добавить(""value2"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param=value%20with%20spaces'",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param=value%20with%20spaces"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"", ""value%20with%20spaces"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param=%3D'",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param=%3D"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"", ""%3D"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param=значение'",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param=значение"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"", ""значение"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
@@ -126,7 +158,10 @@
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
"curl 'http://example.com?param=value#fragment'",
|
||||
"Результат = КоннекторHTTP.Get(""http://example.com?param=value#fragment"");"
|
||||
"ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param"", ""value"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com#fragment"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
@@ -372,19 +407,59 @@
|
||||
&Тест
|
||||
Процедура ТестДолжен_ПроверитьПередачуДанныхЧерезСоответствие() Экспорт
|
||||
|
||||
КонсольнаяКоманда = "curl http://example.com \
|
||||
| --data 'param1=value1' \
|
||||
| --data 'param2=value2¶m3=value3'";
|
||||
ТестовыеДанные = Новый Соответствие();
|
||||
|
||||
ПрограммныйКод = "Данные = Новый Соответствие();
|
||||
|Данные.Вставить(""param1"", ""value1"");
|
||||
|Данные.Вставить(""param2"", ""value2"");
|
||||
|Данные.Вставить(""param3"", ""value3"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные);";
|
||||
ТестовыеДанные.Вставить("curl http://example.com \
|
||||
| --data 'param1=value1' \
|
||||
| --data 'param2=value2¶m3=value3'",
|
||||
"Данные = Новый Соответствие();
|
||||
|Данные.Вставить(""param1"", ""value1"");
|
||||
|Данные.Вставить(""param2"", ""value2"");
|
||||
|Данные.Вставить(""param3"", ""value3"");
|
||||
|
|
||||
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить("curl http://example.com \
|
||||
| --url-query param2=value2 \
|
||||
| --data 'param1=value1' \
|
||||
| --data-urlencode photo@forest.jpeg",
|
||||
"ЧтениеТекста = Новый ЧтениеТекста(""forest.jpeg"");
|
||||
|ТекстовыеДанныеФайла_1 = ЧтениеТекста.Прочитать();
|
||||
|ТекстовыеДанныеФайла_1 = КодироватьСтроку(ТекстовыеДанныеФайла_1, СпособКодированияСтроки.КодировкаURL);
|
||||
|
|
||||
|Данные = Новый Соответствие();
|
||||
|Данные.Вставить(""param1"", ""value1"");
|
||||
|Данные.Вставить(""photo"", ТекстовыеДанныеФайла_1);
|
||||
|
|
||||
|ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param2"", ""value2"");
|
||||
|
|
||||
|ДополнительныеПараметры = Новый Структура();
|
||||
|ДополнительныеПараметры.Вставить(""ПараметрыЗапроса"", ПараметрыЗапроса);
|
||||
|
|
||||
|Результат = КоннекторHTTP.Post(""http://example.com"", Данные, ДополнительныеПараметры);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить("curl http://example.com \
|
||||
| --get \
|
||||
| --data 'param1=value1' \
|
||||
| --data-urlencode photo@forest.jpeg",
|
||||
"ЧтениеТекста = Новый ЧтениеТекста(""forest.jpeg"");
|
||||
|ТекстовыеДанныеФайла_1 = ЧтениеТекста.Прочитать();
|
||||
|ТекстовыеДанныеФайла_1 = КодироватьСтроку(ТекстовыеДанныеФайла_1, СпособКодированияСтроки.КодировкаURL);
|
||||
|
|
||||
|ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""param1"", ""value1"");
|
||||
|ПараметрыЗапроса.Вставить(""photo"", ТекстовыеДанныеФайла_1);
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
Для Каждого Строка Из ТестовыеДанные Цикл
|
||||
ВалидаторКонвертацииКоманды.Проверить(Строка.Ключ, Строка.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
ВалидаторКонвертацииКоманды.Проверить(КонсольнаяКоманда, ПрограммныйКод);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&Тест
|
||||
@@ -1668,7 +1743,10 @@
|
||||
"QUERY1 = """";
|
||||
|QUERY2 = """";
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com?search="" + QUERY1 + QUERY2);"
|
||||
|ПараметрыЗапроса = Новый Соответствие();
|
||||
|ПараметрыЗапроса.Вставить(""search"", QUERY1 + QUERY2);
|
||||
|
|
||||
|Результат = КоннекторHTTP.Get(""http://example.com"", ПараметрыЗапроса);"
|
||||
);
|
||||
|
||||
ТестовыеДанные.Вставить(
|
||||
|
||||
@@ -396,6 +396,7 @@
|
||||
|myapp4 -a '$VAR'
|
||||
|myapp5 -a ""Text$VAR text""";
|
||||
|
||||
ПрефиксХешаПеременной = ОбщийНаборИнструментов.ПрефиксХешаПеременной();
|
||||
ХешСтрока = ОбщийНаборИнструментов.ХешСтрокаИмениПеременной("VAR");
|
||||
|
||||
Эталон = Новый Массив;
|
||||
@@ -403,12 +404,12 @@
|
||||
Команда = Новый Массив;
|
||||
Команда.Добавить("myapp1");
|
||||
Команда.Добавить("-a");
|
||||
Команда.Добавить("$ENV_" + ХешСтрока);
|
||||
Команда.Добавить(ПрефиксХешаПеременной + ХешСтрока);
|
||||
Эталон.Добавить(Команда);
|
||||
|
||||
Команда = Новый Массив;
|
||||
Команда.Добавить("myapp2");
|
||||
Команда.Добавить("$ENV_" + ХешСтрока);
|
||||
Команда.Добавить(ПрефиксХешаПеременной + ХешСтрока);
|
||||
Эталон.Добавить(Команда);
|
||||
|
||||
Команда = Новый Массив;
|
||||
@@ -425,7 +426,7 @@
|
||||
Команда = Новый Массив;
|
||||
Команда.Добавить("myapp5");
|
||||
Команда.Добавить("-a");
|
||||
Команда.Добавить("Text$ENV_" + ХешСтрока + " text");
|
||||
Команда.Добавить("Text" + ПрефиксХешаПеременной + ХешСтрока + " text");
|
||||
Эталон.Добавить(Команда);
|
||||
|
||||
Парсер = Новый ПарсерКонсольнойКоманды();
|
||||
|
||||
Reference in New Issue
Block a user