mirror of
https://github.com/alei1180/curlone.git
synced 2026-06-21 01:30:38 +02:00
refactor: Изменение подхода описания передаваемого файла
This commit is contained in:
@@ -4,12 +4,7 @@
|
||||
Перем ИмяПользователя Экспорт; // Строка
|
||||
Перем ПарольПользователя Экспорт; // Строка
|
||||
Перем ОтправляемыеТекстовыеДанные Экспорт; // Массив из Строка
|
||||
Перем Файлы Экспорт; // Массив из Структура:
|
||||
// - ИмяФайла - Строка
|
||||
// - ПрочитатьСодержимое - Булево
|
||||
// - КодироватьСодержимое - Булево
|
||||
// - УдалятьПереводыСтрок - Булево
|
||||
// - Ключ - Строка
|
||||
Перем Файлы Экспорт; // Массив из см. ПередаваемыйФайл
|
||||
Перем ПередаватьОтправляемыеДанныеВСтрокуЗапроса Экспорт; // Булево
|
||||
Перем ИмяФайлаСертификатаКлиента Экспорт; // Строка
|
||||
Перем ПарольСертификатаКлиента Экспорт; // Строка
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
Перем ИмяФайла Экспорт; // Строка
|
||||
Перем Назначение Экспорт; // см. НазначенияФайлов
|
||||
Перем ПрочитатьСодержимое Экспорт; // Булево
|
||||
Перем КодироватьСодержимое Экспорт; // Булево
|
||||
Перем УдалятьПереносыСтрок Экспорт; // Булево
|
||||
Перем Ключ Экспорт; // Строка
|
||||
|
||||
Процедура ПриСозданииОбъекта(пИмяФайла = "", пНазначение = Неопределено)
|
||||
|
||||
ИмяФайла = пИмяФайла;
|
||||
Назначение = пНазначение;
|
||||
ПрочитатьСодержимое = Ложь;
|
||||
КодироватьСодержимое = Ложь;
|
||||
УдалятьПереносыСтрок = Ложь;
|
||||
Ключ = "";
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -0,0 +1,5 @@
|
||||
Перем ТелоЗапроса Экспорт;
|
||||
Перем СтрокаЗапроса Экспорт;
|
||||
|
||||
ТелоЗапроса = "ТелоЗапроса";
|
||||
СтрокаЗапроса = "СтрокаЗапроса";
|
||||
@@ -9,7 +9,9 @@
|
||||
Перем ИмяПараметраHTTPЗапрос;
|
||||
Перем ИмяПараметраHTTPОтвет;
|
||||
|
||||
Перем ИменаПеременныхОтправляемыхТекстовыхДанныхИзФайла;
|
||||
Перем ПрочитанныеФайлы; // Массив из Структура
|
||||
// - ПередаваемыйФайл
|
||||
// - ИмяПеременной
|
||||
Перем ИспользуетсяЗащищенноеСоединение; // Булево
|
||||
|
||||
Процедура ПриСозданииОбъекта()
|
||||
@@ -20,7 +22,7 @@
|
||||
ИмяПараметраHTTPЗапрос = "HTTPЗапрос";
|
||||
ИмяПараметраHTTPОтвет = "HTTPОтвет";
|
||||
|
||||
ИменаПеременныхОтправляемыхТекстовыхДанныхИзФайла = Новый Массив;
|
||||
ПрочитанныеФайлы = Новый Массив;
|
||||
ИспользуетсяЗащищенноеСоединение = Ложь;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -38,7 +40,7 @@
|
||||
ВывестиЗаголовки();
|
||||
ВывестиЗащищенноеСоединение(СтруктураURL);
|
||||
ВывестиHTTPСоединение(СтруктураURL);
|
||||
ВывестиИнициализациюОтправляемыхТекстовыхДанныхИзФайла();
|
||||
ВывестиЧтениеФайлов();
|
||||
ВывестиHTTPЗапрос(СтруктураURL);
|
||||
ВывестиУстановкуТелаЗапросаТекстовымиДанными();
|
||||
ВывестиУстановкуТелаЗапросаДвоичнымиДанными();
|
||||
@@ -148,19 +150,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВывестиИнициализациюОтправляемыхТекстовыхДанныхИзФайла()
|
||||
Процедура ВывестиЧтениеФайлов()
|
||||
|
||||
ИменаПеременныхОтправляемыхТекстовыхДанныхИзФайла.Очистить();
|
||||
ПрочитанныеФайлы.Очистить();
|
||||
|
||||
НомерФайла = 1;
|
||||
Для Каждого ОписаниеФайла Из ОписаниеЗапроса.Файлы Цикл
|
||||
Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
|
||||
|
||||
Если Не (ОписаниеФайла.ПрочитатьСодержимое
|
||||
Если Не (ПередаваемыйФайл.ПрочитатьСодержимое
|
||||
Или ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПараметра = "ТекстовыеДанныеИзФайла_" + Формат(НомерФайла, "ЧГ=");
|
||||
ИмяПеременной = "ТекстовыеДанныеИзФайла_" + Формат(НомерФайла, "ЧГ=");
|
||||
|
||||
ВывестиПустуюСтроку();
|
||||
|
||||
@@ -168,29 +170,30 @@
|
||||
|ТекстовыйДокумент.Прочитать(%2);
|
||||
|%1 = ТекстовыйДокумент.ПолучитьТекст();";
|
||||
|
||||
Если ОписаниеФайла.УдалятьПереводыСтрок Тогда
|
||||
Если ПередаваемыйФайл.УдалятьПереносыСтрок Тогда
|
||||
Шаблон = Шаблон + "
|
||||
|%1 = СтрЗаменить(%1, Символы.ПС, """");
|
||||
|%1 = СтрЗаменить(%1, Символы.ВК, """");";
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеФайла.КодироватьСодержимое Тогда
|
||||
Если ПередаваемыйФайл.КодироватьСодержимое Тогда
|
||||
Шаблон = Шаблон + "
|
||||
|%1 = КодироватьСтроку(%1, СпособКодированияСтроки.URLВКодировкеURL);";
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеФайла.Ключ) Тогда
|
||||
Если ЗначениеЗаполнено(ПередаваемыйФайл.Ключ) Тогда
|
||||
Шаблон = Шаблон + "
|
||||
|%1 = """ + ОписаниеФайла.Ключ + "="" + %1;";
|
||||
|%1 = """ + ПередаваемыйФайл.Ключ + "="" + %1;";
|
||||
КонецЕсли;
|
||||
|
||||
Текст = СтрШаблон(Шаблон,
|
||||
ИмяПараметра,
|
||||
ОбернутьКавычками(ОписаниеФайла.ИмяФайла));
|
||||
ИмяПеременной,
|
||||
ОбернутьКавычками(ПередаваемыйФайл.ИмяФайла));
|
||||
|
||||
ВывестиСтроку(Текст);
|
||||
|
||||
ИменаПеременныхОтправляемыхТекстовыхДанныхИзФайла.Добавить(ИмяПараметра);
|
||||
ПрочитанныйФайл = Новый Структура("ПередаваемыйФайл, ИмяПеременной", ПередаваемыйФайл, ИмяПеременной);
|
||||
ПрочитанныеФайлы.Добавить(ПрочитанныйФайл);
|
||||
|
||||
НомерФайла = НомерФайла + 1;
|
||||
КонецЦикла;
|
||||
@@ -201,7 +204,7 @@
|
||||
|
||||
ПараметрыФункции = Новый Массив;
|
||||
|
||||
АдресРесурсаКод = ПолучитьКодДляВыводаАдресаРесурса(СтруктураURL);
|
||||
АдресРесурсаКод = ПолучитьКодСборкиАдресаРесурса(СтруктураURL);
|
||||
Если СтрЧислоСтрок(АдресРесурсаКод) > 1 Тогда
|
||||
ВывестиПустуюСтроку();
|
||||
ВывестиСтроку(СтрШаблон("АдресРесурса = %1;", АдресРесурсаКод));
|
||||
@@ -219,13 +222,18 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьКодДляВыводаАдресаРесурса(СтруктураURL)
|
||||
Функция ПолучитьКодСборкиАдресаРесурса(СтруктураURL)
|
||||
|
||||
Кавычка = """";
|
||||
КонкатенацияСПереносомСтрокиИАмперсандом = "
|
||||
| + ""&"" + ";
|
||||
КонкатенацияСПереносомСтроки = "
|
||||
| + ";
|
||||
|
||||
КавычкаЗакрыта = Ложь;
|
||||
Код = Кавычка + СтруктураURL.Путь;
|
||||
|
||||
СтрокаЗапроса = СобратьИсходнуюСтрокуЗапроса(СтруктураURL);
|
||||
|
||||
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса Тогда
|
||||
ОтправляемаяСтрока = СтрСоединить(ОписаниеЗапроса.ОтправляемыеТекстовыеДанные, "&");
|
||||
|
||||
@@ -236,23 +244,29 @@
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СтрокаЗапроса) Тогда
|
||||
Код = Код + "?" + СтрокаЗапроса;
|
||||
КодПрочитанныхФайлов = "";
|
||||
Для Каждого ПрочитанныйФайл Из ПрочитанныеФайлы Цикл
|
||||
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса
|
||||
Или ПрочитанныйФайл.ПередаваемыйФайл.Назначение = НазначенияФайлов.СтрокаЗапроса Тогда
|
||||
КодПрочитанныхФайлов = КодПрочитанныхФайлов
|
||||
+ ?(КодПрочитанныхФайлов = "", "", КонкатенацияСПереносомСтрокиИАмперсандом)
|
||||
+ ПрочитанныйФайл.ИмяПеременной;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ЗначениеЗаполнено(СтрокаЗапроса)
|
||||
Или ЗначениеЗаполнено(КодПрочитанныхФайлов) Тогда
|
||||
Код = Код + "?";
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеЗапроса.ПередаватьОтправляемыеДанныеВСтрокуЗапроса
|
||||
И ИменаПеременныхОтправляемыхТекстовыхДанныхИзФайла.Количество() Тогда
|
||||
Код = Код + СтрокаЗапроса;
|
||||
|
||||
Разделитель = "
|
||||
| + ""&"" + ";
|
||||
|
||||
Если Не ЗначениеЗаполнено(СтрокаЗапроса) Тогда
|
||||
Код = Код + "?";
|
||||
Иначе
|
||||
Код = Код + Кавычка + Разделитель;
|
||||
КонецЕсли;
|
||||
|
||||
Код = Код + СтрСоединить(ИменаПеременныхОтправляемыхТекстовыхДанныхИзФайла, Разделитель);
|
||||
Если ЗначениеЗаполнено(КодПрочитанныхФайлов) Тогда
|
||||
Код = Код + Кавычка
|
||||
+ ?(ЗначениеЗаполнено(СтрокаЗапроса),
|
||||
КонкатенацияСПереносомСтрокиИАмперсандом,
|
||||
КонкатенацияСПереносомСтроки)
|
||||
+ КодПрочитанныхФайлов;
|
||||
КавычкаЗакрыта = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -287,7 +301,11 @@
|
||||
ЭлементыТелаЗапросаДляВывода.Добавить(ОбернутьКавычками(ОтправляемаяСтрока));
|
||||
КонецЕсли;
|
||||
|
||||
ОбщегоНазначения.ДополнитьМассив(ЭлементыТелаЗапросаДляВывода, ИменаПеременныхОтправляемыхТекстовыхДанныхИзФайла);
|
||||
Для Каждого ПрочитанныйФайл Из ПрочитанныеФайлы Цикл
|
||||
Если ПрочитанныйФайл.ПередаваемыйФайл.Назначение = НазначенияФайлов.ТелоЗапроса Тогда
|
||||
ЭлементыТелаЗапросаДляВывода.Добавить(ПрочитанныйФайл.ИмяПеременной);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КоличествоЭлементов = ЭлементыТелаЗапросаДляВывода.Количество();
|
||||
Если КоличествоЭлементов = 1 Тогда
|
||||
@@ -313,16 +331,17 @@
|
||||
КонецЕсли;
|
||||
|
||||
ЭтоПервыйФайл = Истина;
|
||||
Для Каждого ОписаниеФайла Из ОписаниеЗапроса.Файлы Цикл
|
||||
Для Каждого ПередаваемыйФайл Из ОписаниеЗапроса.Файлы Цикл
|
||||
|
||||
Если ОписаниеФайла.ПрочитатьСодержимое Тогда
|
||||
Если ПередаваемыйФайл.ПрочитатьСодержимое
|
||||
Или Не ПередаваемыйФайл.Назначение = НазначенияФайлов.ТелоЗапроса Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ВывестиСтроку(СтрШаблон("%1%2.УстановитьИмяФайлаТела(%3);",
|
||||
?(ЭтоПервыйФайл, "", "// "),
|
||||
ИмяПараметраHTTPЗапрос,
|
||||
ОбернутьКавычками(ОписаниеФайла.ИмяФайла)));
|
||||
ОбернутьКавычками(ПередаваемыйФайл.ИмяФайла)));
|
||||
|
||||
ЭтоПервыйФайл = Ложь;
|
||||
|
||||
|
||||
@@ -185,12 +185,11 @@
|
||||
Если Лев(Данные, 1) = "@" Тогда
|
||||
ИмяФайла = Сред(Данные, 2);
|
||||
|
||||
ПередаваемыеДанные = ОписаниеПередаваемогоФайла();
|
||||
ПередаваемыеДанные.ИмяФайла = ИмяФайла;
|
||||
ПередаваемыеДанные.ПрочитатьСодержимое = Истина;
|
||||
ПередаваемыеДанные.УдалятьПереводыСтрок = Истина;
|
||||
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияФайлов.ТелоЗапроса);
|
||||
ПередаваемыйФайл.ПрочитатьСодержимое = Истина;
|
||||
ПередаваемыйФайл.УдалятьПереносыСтрок = Истина;
|
||||
|
||||
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыеДанные);
|
||||
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
|
||||
Иначе
|
||||
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(Данные);
|
||||
КонецЕсли;
|
||||
@@ -217,10 +216,8 @@
|
||||
ИмяФайла = Сред(ИмяФайла, 2);
|
||||
КонецЕсли;
|
||||
|
||||
ПередаваемыеДанные = ОписаниеПередаваемогоФайла();
|
||||
ПередаваемыеДанные.ИмяФайла = ИмяФайла;
|
||||
|
||||
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыеДанные);
|
||||
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияФайлов.ТелоЗапроса);
|
||||
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -245,13 +242,12 @@
|
||||
Ключ = Сред(Данные, 1, ПозицияСобачки - 1);
|
||||
ИмяФайла = СокрЛП(Сред(Данные, ПозицияСобачки + 1));
|
||||
|
||||
ПередаваемыеДанные = ОписаниеПередаваемогоФайла();
|
||||
ПередаваемыеДанные.Ключ = Ключ;
|
||||
ПередаваемыеДанные.ИмяФайла = ИмяФайла;
|
||||
ПередаваемыеДанные.ПрочитатьСодержимое = Истина;
|
||||
ПередаваемыеДанные.КодироватьСодержимое = Истина;
|
||||
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияФайлов.ТелоЗапроса);
|
||||
ПередаваемыйФайл.Ключ = Ключ;
|
||||
ПередаваемыйФайл.ПрочитатьСодержимое = Истина;
|
||||
ПередаваемыйФайл.КодироватьСодержимое = Истина;
|
||||
|
||||
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыеДанные);
|
||||
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
|
||||
Иначе
|
||||
ПередаваемыеДанные = КодироватьСтроку(Данные, СпособКодированияСтроки.URLВКодировкеURL);
|
||||
ОписаниеЗапроса.ОтправляемыеТекстовыеДанные.Добавить(ПередаваемыеДанные);
|
||||
@@ -266,10 +262,8 @@
|
||||
|
||||
Для Каждого ИмяФайла Из МассивДанных Цикл
|
||||
|
||||
ОписаниеФайла = ОписаниеПередаваемогоФайла();
|
||||
ОписаниеФайла.ИмяФайла = ИмяФайла;
|
||||
|
||||
ОписаниеЗапроса.Файлы.Добавить(ОписаниеФайла);
|
||||
ПередаваемыйФайл = Новый ПередаваемыйФайл(ИмяФайла, НазначенияФайлов.ТелоЗапроса);
|
||||
ОписаниеЗапроса.Файлы.Добавить(ПередаваемыйФайл);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -332,14 +326,4 @@
|
||||
Возврат ЕстьОпции(Команда, "d,data,data-raw,data-binary,data-urlencode,data-ascii");
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеПередаваемогоФайла()
|
||||
ОписаниеФайла = Новый Структура();
|
||||
ОписаниеФайла.Вставить("ИмяФайла", """");
|
||||
ОписаниеФайла.Вставить("ПрочитатьСодержимое", Ложь);
|
||||
ОписаниеФайла.Вставить("КодироватьСодержимое", Ложь);
|
||||
ОписаниеФайла.Вставить("УдалятьПереводыСтрок", Ложь);
|
||||
ОписаниеФайла.Вставить("Ключ", "");
|
||||
Возврат ОписаниеФайла;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
Reference in New Issue
Block a user