mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-02-05 13:25:25 +02:00
S3: Завершение раздела Buckets
This commit is contained in:
parent
d43c81d3bb
commit
22e765439f
File diff suppressed because it is too large
Load Diff
@ -220,7 +220,7 @@
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Получить шифрование бакета
|
||||
// Получает установленную ранее конфигурацию шифрования бакета
|
||||
//
|
||||
@ -242,7 +242,8 @@
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?encryption";
|
||||
|
||||
URL = URL + "?encryption";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
@ -252,6 +253,208 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить шифрование бакета
|
||||
// Удаляет конфигурацию шифрования бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [DeleteBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УдалитьШифрованиеБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
|
||||
URL = URL + "?encryption";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Установить теги бакета
|
||||
// Устанавливает набор тегов для бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Установка нового набора удаляет все существующие теги бакета
|
||||
// Метод в документации AWS: [PutBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УстановитьТегиБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Теги
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
Теги = СформироватьСтруктуруТегов(Теги);
|
||||
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
|
||||
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?tagging";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить теги бакета
|
||||
// Получает набор тегов бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [GetBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция ПолучитьТегиБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?tagging";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить теги бакета
|
||||
// Удаляет набор тегов бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [DeleteBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УдалитьТегиБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?tagging";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Установить настройки версионирования бакета
|
||||
// Устанавливает настройки версионирования объектов бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [PutBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Статус - Булево - Включение и отключение версионирования, если необходимо - status
|
||||
// УдалениеMFA - Булево - Включение и отключение удаления MFA, если необходимо - mfad
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Статус = Неопределено
|
||||
, Знач УдалениеMFA = Неопределено
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
Теги = СформироватьСтруктуруНастроекВерсионирования(Статус, УдалениеMFA);
|
||||
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
|
||||
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?versioning";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки версионирования бакета
|
||||
// Получает значения настроек версионирования объектов в бакете
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [GetBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?versioning";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить список бакетов
|
||||
// Получает список бакетов. Возможно использование отборов, если они поддерживаются сервисом
|
||||
//
|
||||
@ -651,6 +854,82 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
||||
|
||||
Если Каталог Тогда
|
||||
URL = URL + Имя;
|
||||
Иначе
|
||||
|
||||
Если СтрНайти(URL, "://") Тогда
|
||||
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
|
||||
Иначе
|
||||
URL = Имя + "." + URL;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
|
||||
URL = URL + "/";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат URL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьСтруктуруТегов(Знач Теги)
|
||||
|
||||
ТекстОшибки = "Некорректный формат тегов. Ожидается коллекция ключ-значение";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Теги, ТекстОшибки);
|
||||
|
||||
МассивТегов = Новый Массив;
|
||||
|
||||
Для Каждого Тег Из Теги Цикл
|
||||
|
||||
СтруктураТега = Новый Структура;
|
||||
СтруктураТега.Вставить("Key" , Строка(Тег.Ключ));
|
||||
СтруктураТега.Вставить("Value", Строка(Тег.Значение));
|
||||
|
||||
МассивТегов.Добавить(Новый Структура("Tag", СтруктураТега));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ФинальнаяСтруктура = Новый Структура;
|
||||
НаборТегов = Новый Структура;
|
||||
|
||||
НаборТегов.Вставить("TagSet", МассивТегов);
|
||||
ФинальнаяСтруктура.Вставить("Tagging", НаборТегов);
|
||||
|
||||
Возврат ФинальнаяСтруктура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьСтруктуруНастроекВерсионирования(Знач Статус, Знач УдалениеMFA)
|
||||
|
||||
СтруктураНастроек = Новый Структура;
|
||||
|
||||
Если ЗначениеЗаполнено(Статус) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Статус);
|
||||
СтруктураНастроек.Вставить("Status", ?(Статус, "Enabled", "Suspended"));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(УдалениеMFA) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(УдалениеMFA);
|
||||
СтруктураНастроек.Вставить("MfaDelete", ?(УдалениеMFA, "Enabled", "Disabled"));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФинальнаяСтруктура = Новый Структура("VersioningConfiguration", СтруктураНастроек);
|
||||
|
||||
Возврат ФинальнаяСтруктура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
|
||||
|
||||
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
|
||||
@ -710,31 +989,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
||||
|
||||
Если Каталог Тогда
|
||||
URL = URL + Имя;
|
||||
Иначе
|
||||
|
||||
Если СтрНайти(URL, "://") Тогда
|
||||
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
|
||||
Иначе
|
||||
URL = Имя + "." + URL;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
|
||||
URL = URL + "/";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат URL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -2113,8 +2113,14 @@
|
||||
S3_СоздатьБакет(ПараметрыТеста);
|
||||
S3_ПолучитьСписокБакетов(ПараметрыТеста);
|
||||
S3_ПроверитьДоступностьБакета(ПараметрыТеста);
|
||||
S3_УстановитьТегиБакета(ПараметрыТеста);
|
||||
S3_ПолучитьТегиБакета(ПараметрыТеста);
|
||||
S3_УдалитьТегиБакета(ПараметрыТеста);
|
||||
S3_УстановитьШифрованиеБакета(ПараметрыТеста);
|
||||
S3_ПолучитьШифрованиеБакета(ПараметрыТеста);
|
||||
S3_УдалитьШифрованиеБакета(ПараметрыТеста);
|
||||
S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста);
|
||||
S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыТеста);
|
||||
S3_УдалитьБакет(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -14739,6 +14745,26 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УдалитьШифрованиеБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "opi-newbucket2";
|
||||
|
||||
Результат = OPI_S3.УдалитьШифрованиеБакета(Имя, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьШифрованиеБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УстановитьШифрованиеБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
@ -14768,6 +14794,177 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_ПолучитьТегиБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УстановитьТегиБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
СтруктураТегов = Новый Структура;
|
||||
|
||||
СтруктураТегов.Вставить("MyTag1", "SomeValue");
|
||||
СтруктураТегов.Вставить("MyTag2", "AnotherOne");
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УдалитьТегиБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (получение)", "S3");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
СтруктураТегов = Новый Структура;
|
||||
|
||||
УдалениеMFA = Ложь;
|
||||
Статус = Истина;
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус, , Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -2038,9 +2038,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@ -726,6 +726,47 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьXML(Значение, ПространствоИмен = "", ЗаписьXML = Неопределено) Экспорт
|
||||
|
||||
ЭтоВход = НачалоФормированияXML(Значение, ЗаписьXML);
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("Соответствие") Тогда
|
||||
|
||||
Для Каждого ЗначениеКоллекции Из Значение Цикл
|
||||
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента(ЗначениеКоллекции.Ключ, ПространствоИмен);
|
||||
|
||||
Если ЗначениеЗаполнено(ПространствоИмен) Тогда
|
||||
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", ПространствоИмен);
|
||||
КонецЕсли;
|
||||
|
||||
ПолучитьXML(ЗначениеКоллекции.Значение, "", ЗаписьXML);
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли ТипЗначения = Тип("Массив") Тогда
|
||||
|
||||
Для Каждого ЭлементМассива Из Значение Цикл
|
||||
ПолучитьXML(ЭлементМассива, "", ЗаписьXML);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ЗаписьXML.ЗаписатьТекст(Значение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоВход Тогда
|
||||
Возврат ЗаписьXML.Закрыть();
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗначениеВМассив(Значение) Экспорт
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||
@ -1323,6 +1364,27 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НачалоФормированияXML(Значение, ЗаписьXML)
|
||||
|
||||
ЭтоВход = Ложь;
|
||||
|
||||
Если ЗаписьXML = Неопределено Тогда
|
||||
|
||||
ТекстОшибки = "Ошибка получения коллекции для формирования XML";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки);
|
||||
|
||||
ЗаписьXML = Новый ЗаписьXML;
|
||||
ЗаписьXML.УстановитьСтроку();
|
||||
ЗаписьXML.ЗаписатьОбъявлениеXML();
|
||||
|
||||
ЭтоВход = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЭтоВход;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область GZip
|
||||
|
||||
// Описание структур см. здесь https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_S3.os
|
||||
// OneScript: ./OInt/core/Modules/OPI_S3.os
|
||||
// Lib: S3
|
||||
// CLI: s3
|
||||
|
||||
@ -220,7 +220,7 @@
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
// Получить шифрование бакета
|
||||
// Получает установленную ранее конфигурацию шифрования бакета
|
||||
//
|
||||
@ -242,7 +242,8 @@
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?encryption";
|
||||
|
||||
URL = URL + "?encryption";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
@ -252,6 +253,208 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить шифрование бакета
|
||||
// Удаляет конфигурацию шифрования бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [DeleteBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УдалитьШифрованиеБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
|
||||
URL = URL + "?encryption";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Установить теги бакета
|
||||
// Устанавливает набор тегов для бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Установка нового набора удаляет все существующие теги бакета
|
||||
// Метод в документации AWS: [PutBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УстановитьТегиБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Теги
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
Теги = СформироватьСтруктуруТегов(Теги);
|
||||
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
|
||||
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?tagging";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить теги бакета
|
||||
// Получает набор тегов бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [GetBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция ПолучитьТегиБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?tagging";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить теги бакета
|
||||
// Удаляет набор тегов бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [DeleteBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УдалитьТегиБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?tagging";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Установить настройки версионирования бакета
|
||||
// Устанавливает настройки версионирования объектов бакета
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [PutBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Статус - Булево - Включение и отключение версионирования, если необходимо - status
|
||||
// УдалениеMFA - Булево - Включение и отключение удаления MFA, если необходимо - mfad
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Статус = Неопределено
|
||||
, Знач УдалениеMFA = Неопределено
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
Теги = СформироватьСтруктуруНастроекВерсионирования(Статус, УдалениеMFA);
|
||||
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
|
||||
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?versioning";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки версионирования бакета
|
||||
// Получает значения настроек версионирования объектов в бакете
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации AWS: [GetBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование бакета - name
|
||||
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
|
||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование
|
||||
, Знач ОсновныеДанные
|
||||
, Знач Каталог = Истина
|
||||
, Знач Заголовки = Неопределено) Экспорт
|
||||
|
||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||
URL = СформироватьURLБакета(URL, Наименование, Каталог);
|
||||
URL = URL + "?versioning";
|
||||
|
||||
ОсновныеДанные.Вставить("URL", URL);
|
||||
|
||||
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить список бакетов
|
||||
// Получает список бакетов. Возможно использование отборов, если они поддерживаются сервисом
|
||||
//
|
||||
@ -651,6 +854,82 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
||||
|
||||
Если Каталог Тогда
|
||||
URL = URL + Имя;
|
||||
Иначе
|
||||
|
||||
Если СтрНайти(URL, "://") Тогда
|
||||
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
|
||||
Иначе
|
||||
URL = Имя + "." + URL;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
|
||||
URL = URL + "/";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат URL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьСтруктуруТегов(Знач Теги)
|
||||
|
||||
ТекстОшибки = "Некорректный формат тегов. Ожидается коллекция ключ-значение";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Теги, ТекстОшибки);
|
||||
|
||||
МассивТегов = Новый Массив;
|
||||
|
||||
Для Каждого Тег Из Теги Цикл
|
||||
|
||||
СтруктураТега = Новый Структура;
|
||||
СтруктураТега.Вставить("Key" , Строка(Тег.Ключ));
|
||||
СтруктураТега.Вставить("Value", Строка(Тег.Значение));
|
||||
|
||||
МассивТегов.Добавить(Новый Структура("Tag", СтруктураТега));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ФинальнаяСтруктура = Новый Структура;
|
||||
НаборТегов = Новый Структура;
|
||||
|
||||
НаборТегов.Вставить("TagSet", МассивТегов);
|
||||
ФинальнаяСтруктура.Вставить("Tagging", НаборТегов);
|
||||
|
||||
Возврат ФинальнаяСтруктура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьСтруктуруНастроекВерсионирования(Знач Статус, Знач УдалениеMFA)
|
||||
|
||||
СтруктураНастроек = Новый Структура;
|
||||
|
||||
Если ЗначениеЗаполнено(Статус) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Статус);
|
||||
СтруктураНастроек.Вставить("Status", ?(Статус, "Enabled", "Suspended"));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(УдалениеMFA) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(УдалениеMFA);
|
||||
СтруктураНастроек.Вставить("MfaDelete", ?(УдалениеMFA, "Enabled", "Disabled"));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФинальнаяСтруктура = Новый Структура("VersioningConfiguration", СтруктураНастроек);
|
||||
|
||||
Возврат ФинальнаяСтруктура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
|
||||
|
||||
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
|
||||
@ -710,31 +989,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
||||
|
||||
Если Каталог Тогда
|
||||
URL = URL + Имя;
|
||||
Иначе
|
||||
|
||||
Если СтрНайти(URL, "://") Тогда
|
||||
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
|
||||
|
||||
@ -726,6 +726,47 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьXML(Значение, ПространствоИмен = "", ЗаписьXML = Неопределено) Экспорт
|
||||
|
||||
ЭтоВход = НачалоФормированияXML(Значение, ЗаписьXML);
|
||||
|
||||
ТипЗначения = ТипЗнч(Значение);
|
||||
|
||||
Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("Соответствие") Тогда
|
||||
|
||||
Для Каждого ЗначениеКоллекции Из Значение Цикл
|
||||
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента(ЗначениеКоллекции.Ключ, ПространствоИмен);
|
||||
|
||||
Если ЗначениеЗаполнено(ПространствоИмен) Тогда
|
||||
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", ПространствоИмен);
|
||||
КонецЕсли;
|
||||
|
||||
ПолучитьXML(ЗначениеКоллекции.Значение, "", ЗаписьXML);
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли ТипЗначения = Тип("Массив") Тогда
|
||||
|
||||
Для Каждого ЭлементМассива Из Значение Цикл
|
||||
ПолучитьXML(ЭлементМассива, "", ЗаписьXML);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ЗаписьXML.ЗаписатьТекст(Значение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоВход Тогда
|
||||
Возврат ЗаписьXML.Закрыть();
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗначениеВМассив(Значение) Экспорт
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||
@ -1323,6 +1364,27 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НачалоФормированияXML(Значение, ЗаписьXML)
|
||||
|
||||
ЭтоВход = Ложь;
|
||||
|
||||
Если ЗаписьXML = Неопределено Тогда
|
||||
|
||||
ТекстОшибки = "Ошибка получения коллекции для формирования XML";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки);
|
||||
|
||||
ЗаписьXML = Новый ЗаписьXML;
|
||||
ЗаписьXML.УстановитьСтроку();
|
||||
ЗаписьXML.ЗаписатьОбъявлениеXML();
|
||||
|
||||
ЭтоВход = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЭтоВход;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область GZip
|
||||
|
||||
// Описание структур см. здесь https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
|
||||
|
@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@ -2113,8 +2113,14 @@
|
||||
S3_СоздатьБакет(ПараметрыТеста);
|
||||
S3_ПолучитьСписокБакетов(ПараметрыТеста);
|
||||
S3_ПроверитьДоступностьБакета(ПараметрыТеста);
|
||||
S3_УстановитьТегиБакета(ПараметрыТеста);
|
||||
S3_ПолучитьТегиБакета(ПараметрыТеста);
|
||||
S3_УдалитьТегиБакета(ПараметрыТеста);
|
||||
S3_УстановитьШифрованиеБакета(ПараметрыТеста);
|
||||
S3_ПолучитьШифрованиеБакета(ПараметрыТеста);
|
||||
S3_УдалитьШифрованиеБакета(ПараметрыТеста);
|
||||
S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста);
|
||||
S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыТеста);
|
||||
S3_УдалитьБакет(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -14739,6 +14745,26 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УдалитьШифрованиеБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
Имя = "opi-newbucket2";
|
||||
|
||||
Результат = OPI_S3.УдалитьШифрованиеБакета(Имя, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьШифрованиеБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УстановитьШифрованиеБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
@ -14768,6 +14794,177 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_ПолучитьТегиБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УстановитьТегиБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
СтруктураТегов = Новый Структура;
|
||||
|
||||
СтруктураТегов.Вставить("MyTag1", "SomeValue");
|
||||
СтруктураТегов.Вставить("MyTag2", "AnotherOne");
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УдалитьТегиБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (получение)", "S3");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные, Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["S3_URL"];
|
||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||
Region = "BTC";
|
||||
|
||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||
СтруктураТегов = Новый Структура;
|
||||
|
||||
УдалениеMFA = Ложь;
|
||||
Статус = Истина;
|
||||
|
||||
// Directory bucket
|
||||
|
||||
Наименование = "opi-dirbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета (DB)", "S3"); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||
|
||||
// General purpose bucket
|
||||
|
||||
Наименование = "opi-gpbucket3";
|
||||
|
||||
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус, , Ложь);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета", "S3");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user