You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-11-29 22:27:42 +02:00
S3: Правка авторизации
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -45,9 +45,10 @@
|
||||
|
||||
#Область ОбщиеМетоды
|
||||
|
||||
Функция ПолучитьСтруктуруАвторизации(Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт
|
||||
Функция ПолучитьСтруктуруАвторизации(Знач URL, Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт
|
||||
|
||||
СтруктураАвторизации = Новый Структура;
|
||||
СтруктураАвторизации = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("URL" , URL , "Строка", СтруктураАвторизации);
|
||||
OPI_Инструменты.ДобавитьПоле("AccessKey", AccessKey, "Строка", СтруктураАвторизации);
|
||||
OPI_Инструменты.ДобавитьПоле("SecretKey", SecretKey, "Строка", СтруктураАвторизации);
|
||||
OPI_Инструменты.ДобавитьПоле("Region" , Region , "Строка", СтруктураАвторизации);
|
||||
@@ -57,12 +58,39 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОтправитьЗапросБезТела(Знач URL, Знач Авторизация, Знач Метод) Экспорт
|
||||
|
||||
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
|
||||
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер);
|
||||
|
||||
ЗаголовокАвторизации = СоздатьЗаголовокАвторизации(Авторизация, Запрос, Соединение, Метод);
|
||||
Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации);
|
||||
|
||||
Ответ = OPI_Инструменты.ВыполнитьЗапрос(Запрос, Соединение, Метод);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСБакетами
|
||||
|
||||
Функция СоздатьБакет(Знач Имя, Знач Авторизация) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
|
||||
URL = ПолучитьURLСервиса(Авторизация);
|
||||
URL = URL + Имя;
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела(URL, Авторизация, "PUT");
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -116,7 +144,10 @@
|
||||
|
||||
Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата)
|
||||
|
||||
КлючДанных = OPI_Криптография.HMACSHA256("AWS4" + СекретныйКлюч, Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
|
||||
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
|
||||
ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
|
||||
|
||||
КлючДанных = OPI_Криптография.HMACSHA256(СекретныйКлюч, ДанныеДата);
|
||||
КлючРегиона = OPI_Криптография.HMACSHA256(КлючДанных, Регион);
|
||||
КлючСервиса = OPI_Криптография.HMACSHA256(КлючРегиона, Сервис);
|
||||
|
||||
@@ -264,6 +295,18 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьURLСервиса(Знач Авторизация)
|
||||
|
||||
URL = Авторизация["URL"];
|
||||
|
||||
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
|
||||
URL = URL + "/";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат URL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьЗаголовокАвторизации(Знач AccessKey, Знач Скоуп, Знач Сигнатура, Знач КлючиЗаголовков)
|
||||
|
||||
ШаблонЗаголовка = "Authorization: AWS4-HMAC-SHA256 "
|
||||
|
||||
@@ -2101,6 +2101,21 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область S3
|
||||
|
||||
Процедура AWS_РаботаСБакетами() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста);
|
||||
|
||||
S3_СоздатьБакет(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@@ -14590,6 +14605,30 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область S3
|
||||
|
||||
Процедура S3_СоздатьБакет(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "ru-central1";
|
||||
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "NewBacket1";
|
||||
|
||||
Результат = OPI_S3.СоздатьБакет(Имя, Авторизация);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБакет", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
Разделы.Вставить("Neocities" , 5);
|
||||
Разделы.Вставить("CDEK" , 5);
|
||||
Разделы.Вставить("YandexMetrika" , 5);
|
||||
Разделы.Вставить("S3" , 5);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@@ -97,6 +98,7 @@
|
||||
Разделы.Вставить("Neocities" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("CDEK" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("YandexMetrika" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("S3" , СтандартныеЗависимости);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@@ -123,6 +125,7 @@
|
||||
Неоситиз = "Neocities";
|
||||
Сдэк = "CDEK";
|
||||
Метрика = "YandexMetrika";
|
||||
S3_ = "S3";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@@ -251,6 +254,7 @@
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера", "Работа с заявками курьера" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеМетками" , "Управление метками" , Метрика);
|
||||
НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеСчетчиками" , "Управление счетчиками" , Метрика);
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
|
||||
@@ -571,7 +571,7 @@
|
||||
Для Каждого ЭлементКоллекции Из Коллекция Цикл
|
||||
|
||||
ТекущийКлюч = ЭлементКоллекции.Ключ;
|
||||
Существует = ПолеКоллекцииСуществет(ТекущийКлюч, Коллекция);
|
||||
Существует = ПолеКоллекцииСуществет(Коллекция, ТекущийКлюч);
|
||||
|
||||
Если Не Существует Тогда
|
||||
МассивОтсутствующихПолей.Добавить(ТекущийКлюч);
|
||||
|
||||
@@ -45,9 +45,10 @@
|
||||
|
||||
#Область ОбщиеМетоды
|
||||
|
||||
Функция ПолучитьСтруктуруАвторизации(Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт
|
||||
Функция ПолучитьСтруктуруАвторизации(Знач URL, Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт
|
||||
|
||||
СтруктураАвторизации = Новый Структура;
|
||||
СтруктураАвторизации = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("URL" , URL , "Строка", СтруктураАвторизации);
|
||||
OPI_Инструменты.ДобавитьПоле("AccessKey", AccessKey, "Строка", СтруктураАвторизации);
|
||||
OPI_Инструменты.ДобавитьПоле("SecretKey", SecretKey, "Строка", СтруктураАвторизации);
|
||||
OPI_Инструменты.ДобавитьПоле("Region" , Region , "Строка", СтруктураАвторизации);
|
||||
@@ -57,12 +58,39 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОтправитьЗапросБезТела(Знач URL, Знач Авторизация, Знач Метод) Экспорт
|
||||
|
||||
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"];
|
||||
|
||||
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес);
|
||||
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер);
|
||||
|
||||
ЗаголовокАвторизации = СоздатьЗаголовокАвторизации(Авторизация, Запрос, Соединение, Метод);
|
||||
Запрос.Заголовки.Вставить("Authorization", ЗаголовокАвторизации);
|
||||
|
||||
Ответ = OPI_Инструменты.ВыполнитьЗапрос(Запрос, Соединение, Метод);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСБакетами
|
||||
|
||||
Функция СоздатьБакет(Знач Имя, Знач Авторизация) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
|
||||
URL = ПолучитьURLСервиса(Авторизация);
|
||||
URL = URL + Имя;
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела(URL, Авторизация, "PUT");
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -116,7 +144,10 @@
|
||||
|
||||
Функция ПолучитьКлючПодписи(Знач СекретныйКлюч, Знач Регион, Знач Сервис, Знач ТекущаяДата)
|
||||
|
||||
КлючДанных = OPI_Криптография.HMACSHA256("AWS4" + СекретныйКлюч, Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
|
||||
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
|
||||
ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
|
||||
|
||||
КлючДанных = OPI_Криптография.HMACSHA256(СекретныйКлюч, ДанныеДата);
|
||||
КлючРегиона = OPI_Криптография.HMACSHA256(КлючДанных, Регион);
|
||||
КлючСервиса = OPI_Криптография.HMACSHA256(КлючРегиона, Сервис);
|
||||
|
||||
@@ -264,6 +295,18 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьURLСервиса(Знач Авторизация)
|
||||
|
||||
URL = Авторизация["URL"];
|
||||
|
||||
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
|
||||
URL = URL + "/";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат URL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьЗаголовокАвторизации(Знач AccessKey, Знач Скоуп, Знач Сигнатура, Знач КлючиЗаголовков)
|
||||
|
||||
ШаблонЗаголовка = "Authorization: AWS4-HMAC-SHA256 "
|
||||
|
||||
@@ -571,7 +571,7 @@
|
||||
Для Каждого ЭлементКоллекции Из Коллекция Цикл
|
||||
|
||||
ТекущийКлюч = ЭлементКоллекции.Ключ;
|
||||
Существует = ПолеКоллекцииСуществет(ТекущийКлюч, Коллекция);
|
||||
Существует = ПолеКоллекцииСуществет(Коллекция, ТекущийКлюч);
|
||||
|
||||
Если Не Существует Тогда
|
||||
МассивОтсутствующихПолей.Добавить(ТекущийКлюч);
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
Разделы.Вставить("Neocities" , 5);
|
||||
Разделы.Вставить("CDEK" , 5);
|
||||
Разделы.Вставить("YandexMetrika" , 5);
|
||||
Разделы.Вставить("S3" , 5);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@@ -97,6 +98,7 @@
|
||||
Разделы.Вставить("Neocities" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("CDEK" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("YandexMetrika" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("S3" , СтандартныеЗависимости);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@@ -123,6 +125,7 @@
|
||||
Неоситиз = "Neocities";
|
||||
Сдэк = "CDEK";
|
||||
Метрика = "YandexMetrika";
|
||||
S3_ = "S3";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@@ -251,6 +254,7 @@
|
||||
НовыйТест(ТаблицаТестов, "СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера", "Работа с заявками курьера" , Сдэк);
|
||||
НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеМетками" , "Управление метками" , Метрика);
|
||||
НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеСчетчиками" , "Управление счетчиками" , Метрика);
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
|
||||
@@ -2101,6 +2101,21 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область S3
|
||||
|
||||
Процедура AWS_РаботаСБакетами() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста);
|
||||
|
||||
S3_СоздатьБакет(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@@ -14590,6 +14605,30 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область S3
|
||||
|
||||
Процедура S3_СоздатьБакет(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "ru-central1";
|
||||
|
||||
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "NewBacket1";
|
||||
|
||||
Результат = OPI_S3.СоздатьБакет(Имя, Авторизация);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБакет", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Reference in New Issue
Block a user