mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-27 02:43:54 +02:00
Оптимизация http и фастфикс работы с бакетом S3
This commit is contained in:
parent
01fd68e5a4
commit
c725421b24
File diff suppressed because it is too large
Load Diff
@ -81,7 +81,7 @@
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
|
||||
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес, , ТипДанных);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, КлючПриложения, СекретПриложения);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, Истина, КлючПриложения, СекретПриложения);
|
||||
|
||||
СтрокаПараметров = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||
Данные = Прав(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
||||
|
@ -88,9 +88,10 @@
|
||||
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
ЗаголовокАвторизации = СоздатьЗаголовокАвторизации(ОсновныеДанные, Запрос, Соединение, Метод);
|
||||
Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации);
|
||||
@ -176,11 +177,11 @@
|
||||
|
||||
Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата)
|
||||
|
||||
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
|
||||
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
|
||||
ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
|
||||
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
|
||||
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
|
||||
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
|
||||
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
|
||||
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
|
||||
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
|
||||
|
||||
КлючДанных = OPI_Криптография.HMACSHA256(СекретныйКлюч, ДанныеДата);
|
||||
КлючРегиона = OPI_Криптография.HMACSHA256(КлючДанных, Регион);
|
||||
@ -361,6 +362,8 @@
|
||||
Функция ПолучитьURLСервиса(Знач Авторизация)
|
||||
|
||||
URL = Авторизация["URL"];
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||
|
||||
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
|
||||
URL = URL + "/";
|
||||
@ -387,14 +390,21 @@
|
||||
|
||||
#Область Прочее
|
||||
|
||||
Функция УправлениеБакетом(Знач Имя, Знач Авторизация, Знач Метод)
|
||||
Функция УправлениеБакетом(Знач Имя, Знач ОсновныеДанные, Знач Метод)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОсновныеДанные);
|
||||
|
||||
Если ТипЗнч(ОсновныеДанные) = Тип("Массив") Тогда
|
||||
ВызватьИсключение "Ошибка получения авторизационных данных из структуры";
|
||||
КонецЕсли;
|
||||
|
||||
URL = ПолучитьURLСервиса(Авторизация);
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = URL + Имя;
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела(Метод, Авторизация);
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела(Метод, ОсновныеДанные);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
|
@ -14615,7 +14615,7 @@
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "newbucket2";
|
||||
|
||||
@ -14635,7 +14635,7 @@
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "newbucket2";
|
||||
|
||||
|
@ -391,29 +391,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоOneScript() Экспорт
|
||||
|
||||
Попытка
|
||||
|
||||
Ответ = Ложь;
|
||||
|
||||
// BSLLS:UnusedLocalVariable-off
|
||||
|
||||
//@skip-check module-unused-local-variable
|
||||
Проверка = Новый ЗащищенноеСоединениеOpenSSL();
|
||||
|
||||
// BSLLS:UnusedLocalVariable-on
|
||||
|
||||
Исключение
|
||||
|
||||
Ответ = Истина;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПараметрВКоллекцию(Параметр, Коллекция) Экспорт
|
||||
|
||||
Значение = ПолучитьПараметр(Параметр);
|
||||
@ -2013,9 +1990,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
@ -2199,7 +2176,7 @@
|
||||
|
||||
Процедура ЗаписатьВызовCLI(Знач Библиотека, Знач Метод, Знач Опции)
|
||||
|
||||
Если Не ЭтоOneScript() Тогда
|
||||
Если Не OPI_Инструменты.ЭтоOneScript() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
|
@ -210,14 +210,24 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьСоединение(Знач Сервер, Знач Пользователь = "", Знач Пароль = "") Экспорт
|
||||
Функция СоздатьСоединение(Знач Сервер, Знач Защищенное = Истина, Знач Пользователь = "", Знач Пароль = "") Экспорт
|
||||
|
||||
Попытка
|
||||
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
||||
Возврат Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000, SSL);
|
||||
Исключение
|
||||
Возврат Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000);
|
||||
КонецПопытки;
|
||||
Если Защищенное Тогда
|
||||
|
||||
Если ЭтоOneScript() Тогда
|
||||
Соединение = Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000);
|
||||
Иначе
|
||||
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
||||
Соединение = Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000, SSL);
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
Соединение = Новый HTTPСоединение(Сервер, 80, Пользователь, Пароль, , 3000, SSL);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Соединение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -233,11 +243,12 @@
|
||||
|
||||
URL = Ответ.Заголовки["Location"];
|
||||
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
Запрос.АдресРесурса = Адрес;
|
||||
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета, ПолныйОтвет);
|
||||
@ -369,22 +380,28 @@
|
||||
|
||||
Функция РазбитьURL(Знач URL) Экспорт
|
||||
|
||||
ЗащищенноеСоединение = Не СтрНачинаетсяС(URL, "http://");
|
||||
|
||||
URL = СтрЗаменить(URL, "https://", "");
|
||||
URL = СтрЗаменить(URL, "http://" , "");
|
||||
URL = СтрЗаменить(URL, ":443" , "");
|
||||
|
||||
Адрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1);
|
||||
Сервер = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1);
|
||||
Если СтрНайти(URL, "/") = 0 Тогда
|
||||
Адрес = "";
|
||||
Сервер = URL;
|
||||
Иначе
|
||||
Адрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1);
|
||||
Сервер = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
||||
Исключение
|
||||
Если ЭтоOneScript() И ЗащищенноеСоединение Тогда
|
||||
Сервер = "https://" + Сервер;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураВозврата = Новый Структура;
|
||||
СтруктураВозврата.Вставить("Сервер", Сервер);
|
||||
СтруктураВозврата.Вставить("Адрес" , Адрес);
|
||||
СтруктураВозврата.Вставить("Сервер" , Сервер);
|
||||
СтруктураВозврата.Вставить("Адрес" , Адрес);
|
||||
СтруктураВозврата.Вставить("Защищенное" , ЗащищенноеСоединение);
|
||||
|
||||
Возврат СтруктураВозврата;
|
||||
|
||||
@ -644,6 +661,29 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоOneScript() Экспорт
|
||||
|
||||
Попытка
|
||||
|
||||
Ответ = Ложь;
|
||||
|
||||
// BSLLS:UnusedLocalVariable-off
|
||||
|
||||
//@skip-check module-unused-local-variable
|
||||
Проверка = Новый ЗащищенноеСоединениеOpenSSL();
|
||||
|
||||
// BSLLS:UnusedLocalVariable-on
|
||||
|
||||
Исключение
|
||||
|
||||
Ответ = Истина;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗначениеВМассив(Значение) Экспорт
|
||||
|
||||
Значение_ = Новый Массив;
|
||||
@ -794,9 +834,10 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = СоздатьЗапросСТелом(Адрес, Параметры, ДопЗаголовки, JSON);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета, ПолныйОтвет);
|
||||
|
||||
Возврат Ответ;
|
||||
@ -813,9 +854,10 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки, ТипДанных);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
Если Не Данные.Размер() = 0 Тогда
|
||||
Запрос.УстановитьТелоИзДвоичныхДанных(Данные);
|
||||
@ -837,12 +879,13 @@
|
||||
Параметры = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры);
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры);
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета);
|
||||
|
||||
@ -869,10 +912,12 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
ТелоЗапроса = ПолучитьИмяВременногоФайла();
|
||||
|
||||
Запрос = СоздатьЗапросМультипарт(Адрес, Параметры, Файлы, ДопЗаголовки, ТелоЗапроса, ТипКонтента);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета);
|
||||
|
||||
Запрос = Неопределено;
|
||||
@ -893,10 +938,12 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
ТелоЗапроса = ПолучитьИмяВременногоФайла();
|
||||
|
||||
Запрос = СоздатьЗапросМультипартРелэйтед(Адрес, Файлы, JSON, ДопЗаголовки, ТелоЗапроса);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета);
|
||||
|
||||
|
@ -81,7 +81,7 @@
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
|
||||
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес, , ТипДанных);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, КлючПриложения, СекретПриложения);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, Истина, КлючПриложения, СекретПриложения);
|
||||
|
||||
СтрокаПараметров = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||
Данные = Прав(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_S3.os
|
||||
// OneScript: ./OInt/core/Modules/OPI_S3.os
|
||||
// Lib: S3
|
||||
// CLI: s3
|
||||
|
||||
@ -88,9 +88,10 @@
|
||||
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
ЗаголовокАвторизации = СоздатьЗаголовокАвторизации(ОсновныеДанные, Запрос, Соединение, Метод);
|
||||
Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации);
|
||||
@ -176,11 +177,11 @@
|
||||
|
||||
Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата)
|
||||
|
||||
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
|
||||
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
|
||||
ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
|
||||
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
|
||||
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
|
||||
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
|
||||
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
|
||||
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
|
||||
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
|
||||
|
||||
КлючДанных = OPI_Криптография.HMACSHA256(СекретныйКлюч, ДанныеДата);
|
||||
КлючРегиона = OPI_Криптография.HMACSHA256(КлючДанных, Регион);
|
||||
@ -361,6 +362,8 @@
|
||||
Функция ПолучитьURLСервиса(Знач Авторизация)
|
||||
|
||||
URL = Авторизация["URL"];
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||
|
||||
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
|
||||
URL = URL + "/";
|
||||
@ -387,14 +390,21 @@
|
||||
|
||||
#Область Прочее
|
||||
|
||||
Функция УправлениеБакетом(Знач Имя, Знач Авторизация, Знач Метод)
|
||||
Функция УправлениеБакетом(Знач Имя, Знач ОсновныеДанные, Знач Метод)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОсновныеДанные);
|
||||
|
||||
Если ТипЗнч(ОсновныеДанные) = Тип("Массив") Тогда
|
||||
ВызватьИсключение "Ошибка получения авторизационных данных из структуры";
|
||||
КонецЕсли;
|
||||
|
||||
URL = ПолучитьURLСервиса(Авторизация);
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = URL + Имя;
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела(Метод, Авторизация);
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела(Метод, ОсновныеДанные);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
|
||||
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@ -210,14 +210,24 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьСоединение(Знач Сервер, Знач Пользователь = "", Знач Пароль = "") Экспорт
|
||||
Функция СоздатьСоединение(Знач Сервер, Знач Защищенное = Истина, Знач Пользователь = "", Знач Пароль = "") Экспорт
|
||||
|
||||
Попытка
|
||||
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
||||
Возврат Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000, SSL);
|
||||
Исключение
|
||||
Возврат Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000);
|
||||
КонецПопытки;
|
||||
Если Защищенное Тогда
|
||||
|
||||
Если ЭтоOneScript() Тогда
|
||||
Соединение = Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000);
|
||||
Иначе
|
||||
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
||||
Соединение = Новый HTTPСоединение(Сервер, 443, Пользователь, Пароль, , 3000, SSL);
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
Соединение = Новый HTTPСоединение(Сервер, 80, Пользователь, Пароль, , 3000, SSL);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Соединение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -233,11 +243,12 @@
|
||||
|
||||
URL = Ответ.Заголовки["Location"];
|
||||
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
Запрос.АдресРесурса = Адрес;
|
||||
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета, ПолныйОтвет);
|
||||
@ -369,22 +380,28 @@
|
||||
|
||||
Функция РазбитьURL(Знач URL) Экспорт
|
||||
|
||||
ЗащищенноеСоединение = Не СтрНачинаетсяС(URL, "http://");
|
||||
|
||||
URL = СтрЗаменить(URL, "https://", "");
|
||||
URL = СтрЗаменить(URL, "http://" , "");
|
||||
URL = СтрЗаменить(URL, ":443" , "");
|
||||
|
||||
Адрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1);
|
||||
Сервер = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1);
|
||||
Если СтрНайти(URL, "/") = 0 Тогда
|
||||
Адрес = "";
|
||||
Сервер = URL;
|
||||
Иначе
|
||||
Адрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1);
|
||||
Сервер = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
SSL = Новый ЗащищенноеСоединениеOpenSSL;
|
||||
Исключение
|
||||
Если ЭтоOneScript() И ЗащищенноеСоединение Тогда
|
||||
Сервер = "https://" + Сервер;
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураВозврата = Новый Структура;
|
||||
СтруктураВозврата.Вставить("Сервер", Сервер);
|
||||
СтруктураВозврата.Вставить("Адрес" , Адрес);
|
||||
СтруктураВозврата.Вставить("Сервер" , Сервер);
|
||||
СтруктураВозврата.Вставить("Адрес" , Адрес);
|
||||
СтруктураВозврата.Вставить("Защищенное" , ЗащищенноеСоединение);
|
||||
|
||||
Возврат СтруктураВозврата;
|
||||
|
||||
@ -644,6 +661,29 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоOneScript() Экспорт
|
||||
|
||||
Попытка
|
||||
|
||||
Ответ = Ложь;
|
||||
|
||||
// BSLLS:UnusedLocalVariable-off
|
||||
|
||||
//@skip-check module-unused-local-variable
|
||||
Проверка = Новый ЗащищенноеСоединениеOpenSSL();
|
||||
|
||||
// BSLLS:UnusedLocalVariable-on
|
||||
|
||||
Исключение
|
||||
|
||||
Ответ = Истина;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗначениеВМассив(Значение) Экспорт
|
||||
|
||||
Значение_ = Новый Массив;
|
||||
@ -794,9 +834,10 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = СоздатьЗапросСТелом(Адрес, Параметры, ДопЗаголовки, JSON);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета, ПолныйОтвет);
|
||||
|
||||
Возврат Ответ;
|
||||
@ -813,9 +854,10 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки, ТипДанных);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
Если Не Данные.Размер() = 0 Тогда
|
||||
Запрос.УстановитьТелоИзДвоичныхДанных(Данные);
|
||||
@ -837,12 +879,13 @@
|
||||
Параметры = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры);
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры);
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета);
|
||||
|
||||
@ -869,10 +912,12 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
ТелоЗапроса = ПолучитьИмяВременногоФайла();
|
||||
|
||||
Запрос = СоздатьЗапросМультипарт(Адрес, Параметры, Файлы, ДопЗаголовки, ТелоЗапроса, ТипКонтента);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета);
|
||||
|
||||
Запрос = Неопределено;
|
||||
@ -893,10 +938,12 @@
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
Защищенное = СтруктураURL["Защищенное"];
|
||||
|
||||
ТелоЗапроса = ПолучитьИмяВременногоФайла();
|
||||
|
||||
Запрос = СоздатьЗапросМультипартРелэйтед(Адрес, Файлы, JSON, ДопЗаголовки, ТелоЗапроса);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Соединение = СоздатьСоединение(Сервер, Защищенное);
|
||||
|
||||
Ответ = ВыполнитьЗапрос(Запрос, Соединение, Вид, ФайлОтвета);
|
||||
|
||||
|
@ -391,29 +391,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоOneScript() Экспорт
|
||||
|
||||
Попытка
|
||||
|
||||
Ответ = Ложь;
|
||||
|
||||
// BSLLS:UnusedLocalVariable-off
|
||||
|
||||
//@skip-check module-unused-local-variable
|
||||
Проверка = Новый ЗащищенноеСоединениеOpenSSL();
|
||||
|
||||
// BSLLS:UnusedLocalVariable-on
|
||||
|
||||
Исключение
|
||||
|
||||
Ответ = Истина;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПараметрВКоллекцию(Параметр, Коллекция) Экспорт
|
||||
|
||||
Значение = ПолучитьПараметр(Параметр);
|
||||
@ -2199,7 +2176,7 @@
|
||||
|
||||
Процедура ЗаписатьВызовCLI(Знач Библиотека, Знач Метод, Знач Опции)
|
||||
|
||||
Если Не ЭтоOneScript() Тогда
|
||||
Если Не OPI_Инструменты.ЭтоOneScript() Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
|
@ -14615,7 +14615,7 @@
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "newbucket2";
|
||||
|
||||
@ -14635,7 +14635,7 @@
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "newbucket2";
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user