Skip to content

Commit

Permalink
Релиз 1.1.2 (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
vbondarevsky authored Jul 18, 2019
1 parent 634ef40 commit 059907c
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 17 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Описание.Имя("1connector")
.Версия("1.1.1")
.Версия("1.1.2")
.Автор("Vladimir Bondarevskiy")
.АдресАвтора("vbondarevsky@gmail.com")
.Описание("Коннектор: удобный HTTP-клиент для OScript")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,10 +256,14 @@
Значения.Добавить(Параметр.Значение);
КонецЕсли;

Для Каждого Значение Из Значения Цикл
ЗначениеПараметра = КодироватьСтроку(Значение, СпособКодированияСтроки.URLВКодировкеURL);
ЧастиПараметрыЗапроса.Добавить(СтрШаблон("%1=%2", Параметр.Ключ, ЗначениеПараметра));
КонецЦикла;
Если Параметр.Значение = Неопределено Тогда
ЧастиПараметрыЗапроса.Добавить(Параметр.Ключ);
Иначе
Для Каждого Значение Из Значения Цикл
ЗначениеПараметра = КодироватьСтроку(Значение, СпособКодированияСтроки.URLВКодировкеURL);
ЧастиПараметрыЗапроса.Добавить(СтрШаблон("%1=%2", Параметр.Ключ, ЗначениеПараметра));
КонецЦикла;
КонецЕсли;
КонецЦикла;

Возврат СтрСоединить(ЧастиПараметрыЗапроса, "&");
Expand Down Expand Up @@ -412,10 +416,16 @@
ContentType = ЗакодироватьФайлы(HTTPЗапрос, Файлы, Данные);
ИначеЕсли ЗначениеЗаполнено(Данные) Тогда
ContentType = "application/x-www-form-urlencoded";
HTTPЗапрос.УстановитьТелоИзСтроки(
КодироватьПараметрыЗапроса(Данные),
КодировкаТекста.UTF8,
ИспользованиеByteOrderMark.НеИспользовать);
Если ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Данные);
Иначе
Если ТипЗнч(Данные) = Тип("Строка") Тогда
Тело = Данные;
Иначе
Тело = КодироватьПараметрыЗапроса(Данные);
КонецЕсли;
HTTPЗапрос.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
КонецЕсли;
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Json) Тогда
ContentType = "application/json";
Expand Down Expand Up @@ -973,17 +983,20 @@
Запрос = РаскодироватьСтроку(Запрос, СпособКодированияСтроки.URLВКодировкеURL);
Для Каждого СтрокаКлючРавноПараметр Из СтрРазделить(Запрос, "&", Ложь) Цикл
КлючПараметр = СтрРазделить(СтрокаКлючРавноПараметр, "=");
Если ПараметрыЗапроса.Получить(КлючПараметр[0]) <> Неопределено Тогда
Если ТипЗнч(КлючПараметр[1]) = Тип("Массив") Тогда
ПараметрыЗапроса[КлючПараметр[0]].Добавить(КлючПараметр[1]);
Ключ = КлючПараметр[0];
Значение = ?(КлючПараметр.Количество() = 1, Неопределено, КлючПараметр[1]);

Если ПараметрыЗапроса.Получить(Ключ) <> Неопределено Тогда
Если ТипЗнч(Значение) = Тип("Массив") Тогда
ПараметрыЗапроса[Ключ].Добавить(Значение);
Иначе
Значения = Новый Массив;
Значения.Добавить(ПараметрыЗапроса[КлючПараметр[0]]);
Значения.Добавить(КлючПараметр[1]);
ПараметрыЗапроса[КлючПараметр[0]] = Значения;
Значения.Добавить(ПараметрыЗапроса[Ключ]);
Значения.Добавить(Значение);
ПараметрыЗапроса[Ключ] = Значения;
КонецЕсли;
Иначе
ПараметрыЗапроса.Вставить(КлючПараметр[0], КлючПараметр[1]);
ПараметрыЗапроса.Вставить(Ключ, Значение);
КонецЕсли;
КонецЦикла;

Expand Down
34 changes: 33 additions & 1 deletion tests/connector-test.os
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@
МассивТестов.Добавить("ТестДолжен_ПроверитьЧтоРаботаетУстановкаCookies");
МассивТестов.Добавить("ТестДолжен_ПроверитьЧтоРаботаетОтправкаCookies");
МассивТестов.Добавить("ТестДолжен_ПроверитьЧтоРаботаетОтправкаФайла");

МассивТестов.Добавить("ТестДолжен_ПроверитьЧтоРаботаетОтправкаXMLСтрокой");
МассивТестов.Добавить("ТестДолжен_ПроверитьПараметрыЗапросаТолькоКлюч");

Возврат МассивТестов;

КонецФункции
Expand Down Expand Up @@ -350,4 +352,34 @@

Ожидаем.Что(Результат["files"]["f1"]).Равно("Привет Мир!");

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

Процедура ТестДолжен_ПроверитьЧтоРаботаетОтправкаXMLСтрокой() Экспорт

XML =
"<?xml version=""1.0"" encoding=""utf-8""?>
|<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
| <soap:Body>
| <GetCursOnDate xmlns=""http://web.cbr.ru/"">
| <On_date>2019-07-05</On_date>
| </GetCursOnDate>
| </soap:Body>
|</soap:Envelope>";

Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8");
Заголовки.Вставить("SOAPAction", "http://web.cbr.ru/GetCursOnDate");

ДополнительныеПараметры = Новый Структура("Заголовки", Заголовки);
Ответ = КоннекторHTTP.Post("https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx", XML, , ДополнительныеПараметры);
Ожидаем.Что(Ответ.Заголовки.Получить("Content-Type"), "text/xml; charset=utf-8");
Ожидаем.Что(Ответ.КодСостояния).Равно(200);

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

Процедура ТестДолжен_ПроверитьПараметрыЗапросаТолькоКлюч() Экспорт

Результат = КоннекторHTTP.Get("https://httpbin.org/get?key").Json();
Ожидаем.Что(Результат["args"]["key"]).Равно("");

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

0 comments on commit 059907c

Please sign in to comment.