1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-05-22 10:05:29 +02:00

S3: Помещение и удаление объекта, заголовки в выводе

This commit is contained in:
Anton
2024-11-15 21:52:07 +03:00
parent 74177d69b1
commit 6c327254e3
35 changed files with 3527 additions and 3240 deletions
+3 -1
View File
@@ -58,13 +58,15 @@ This library uses its own response format to provide data received from the serv
{ {
"status": 200, "status": 200,
"response": {} "response": {},
"headers": {}
} }
``` ```
+ The **status** field contains the HTTP response status code + The **status** field contains the HTTP response status code
+ The **response** field contains the body of the original S3 response, previously converted from XML to JSON + The **response** field contains the body of the original S3 response, previously converted from XML to JSON
+ The **headers** field contains the headers from the original response
The response was modified to JSON to simplify its usage, as the original XML format was more complex to work with The response was modified to JSON to simplify its usage, as the original XML format was more complex to work with
+3 -1
View File
@@ -58,12 +58,14 @@ sidebar_class_name: S3
{ {
"status": 200, "status": 200,
"response": {} "response": {},
"headers": {}
} }
``` ```
+ В поле **status** записывается код состояния HTTP-ответа + В поле **status** записывается код состояния HTTP-ответа
+ В поле **response** помещается тело оригинального ответа S3, предварительно преобразованное из XML в JSON + В поле **response** помещается тело оригинального ответа S3, предварительно преобразованное из XML в JSON
+ В поле **headers** помещаются заголовки из оригинального ответа
Это сделано для упрощения работы с библиотекой, так как формат XML более громоздок и сложен в работе, по сравнению с JSON Это сделано для упрощения работы с библиотекой, так как формат XML более громоздок и сложен в работе, по сравнению с JSON
@@ -1,8 +0,0 @@
{
"status": 200,
"response": {
"VersioningConfiguration": {
"Status": "Enabled"
}
}
}
@@ -1,8 +0,0 @@
{
"status": 200,
"response": {
"VersioningConfiguration": {
"Status": "Enabled"
}
}
}
@@ -1,31 +0,0 @@
{
"status": 200,
"response": {
"ListAllMyBucketsResult": {
"Owner": {
"ID": "02d6176db174dc93cb1b899f7c6078f08654445fe8cf1b6ce98d8855f66bdbf4",
"DisplayName": "minio"
},
"Buckets": {
"Bucket": [
{
"Name": "newbucket2",
"CreationDate": "2024-11-13T18:59:09.139Z"
},
{
"Name": "opi-dirbucket3",
"CreationDate": "2024-11-15T11:13:55.166Z"
},
{
"Name": "opi-gpbucket3",
"CreationDate": "2024-11-15T11:13:57.731Z"
},
{
"Name": "opi-newbucket2",
"CreationDate": "2024-11-14T06:04:12.769Z"
}
]
}
}
}
}
@@ -1,7 +0,0 @@
{
"URL": "storage-155.s3hoster.by",
"AccessKey": "BRN5RKJE67YCVDZRRQVI",
"SecretKey": "***",
"Region": "BTC",
"Service": "s3"
}
@@ -1,19 +0,0 @@
{
"status": 200,
"response": {
"Tagging": {
"TagSet": {
"Tag": [
{
"Key": "MyTag2",
"Value": "AnotherOne"
},
{
"Key": "MyTag1",
"Value": "SomeValue"
}
]
}
}
}
}
@@ -1,19 +0,0 @@
{
"status": 200,
"response": {
"Tagging": {
"TagSet": {
"Tag": [
{
"Key": "MyTag1",
"Value": "SomeValue"
},
{
"Key": "MyTag2",
"Value": "AnotherOne"
}
]
}
}
}
}
@@ -1,4 +0,0 @@
{
"status": 404,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 200,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 200,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 200,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 204,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 204,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 204,
"response": {}
}
@@ -1 +0,0 @@
НЕ JSON: Соответствие
@@ -1,4 +0,0 @@
{
"status": 204,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 204,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 200,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 200,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 200,
"response": {}
}
@@ -1,4 +0,0 @@
{
"status": 200,
"response": {}
}
+3059 -3041
View File
File diff suppressed because it is too large Load Diff
+145 -18
View File
@@ -37,6 +37,7 @@
//@skip-check module-structure-method-in-regions //@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content //@skip-check wrong-string-literal-content
//@skip-check method-too-many-params //@skip-check method-too-many-params
//@skip-check constructor-function-return-section
// Раскомментировать, если выполняется OneScript // Раскомментировать, если выполняется OneScript
#Использовать "../../tools" #Использовать "../../tools"
@@ -79,7 +80,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные, Знач Заголовки = Неопределено) Экспорт Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные, Знач Заголовки = Неопределено) Экспорт
Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, , Заголовки); Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, , Заголовки);
@@ -97,7 +98,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ОтправитьЗапросСТелом(Знач Метод, Знач ОсновныеДанные, Знач Тело, Знач Заголовки = Неопределено) Экспорт Функция ОтправитьЗапросСТелом(Знач Метод, Знач ОсновныеДанные, Знач Тело, Знач Заголовки = Неопределено) Экспорт
Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, Тело, Заголовки); Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, Тело, Заголовки);
@@ -122,7 +123,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "PUT", Заголовки); Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "PUT", Заголовки);
@@ -143,7 +144,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "DELETE", Заголовки); Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "DELETE", Заголовки);
@@ -165,7 +166,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПроверитьДоступностьБакета(Знач Наименование Функция ПроверитьДоступностьБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -199,7 +200,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьШифрованиеБакета(Знач Наименование Функция УстановитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач XMLКонфигурация , Знач XMLКонфигурация
@@ -234,7 +235,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьШифрованиеБакета(Знач Наименование Функция ПолучитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -266,7 +267,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьШифрованиеБакета(Знач Наименование Функция УдалитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -300,7 +301,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьТегиБакета(Знач Наименование Функция УстановитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Теги , Знач Теги
@@ -336,7 +337,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьТегиБакета(Знач Наименование Функция ПолучитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -367,7 +368,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьТегиБакета(Знач Наименование Функция УдалитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -400,7 +401,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Статус = Неопределено , Знач Статус = Неопределено
@@ -437,7 +438,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -469,7 +470,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьСписокБакетов(Знач ОсновныеДанные Функция ПолучитьСписокБакетов(Знач ОсновныеДанные
, Знач Префикс = "" , Знач Префикс = ""
, Знач Регион = "" , Знач Регион = ""
@@ -495,6 +496,130 @@
#КонецОбласти #КонецОбласти
#Область РаботаСОбъектами
// Загрузить объект
// Загружает файл в бакет
//
// Примечание:
// Метод в документации AWS: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
//
// Параметры:
// Наименование - Строка - Наименование объекта в бакете - title
// Бакет - Строка - Имя бакета для загрузки объекта - bucket
// Содержимое - Строка, ДвоичныеДанные - Данные или путь к файлу для загрузки - data
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ЗагрузитьОбъект(Знач Наименование
, Знач Бакет
, Знач Содержимое
, Знач ОсновныеДанные
, Знач Заголовки = Неопределено) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Бакет, Ложь);
URL = URL + Наименование;
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, Содержимое, Заголовки);
Возврат Ответ;
КонецФункции
// Получить описание объекта
// Получает информацию о характеристиках объекта в бакете
//
// Примечание:
// Метаданные объекты содержатся в заголовках
// Метод в документации AWS: [GetObjectAttributes](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
//
// Параметры:
// Наименование - Строка - Наименование объекта в бакете - title
// Бакет - Строка - Имя бакета, в котором находится объект - bucket
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic
// Версия - Строка - Токен для получения конкретной версии объекта - ver
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьОписаниеОбъекта(Знач Наименование
, Знач Бакет
, Знач ОсновныеДанные
, Знач Версия = Неопределено
, Знач Заголовки = Неопределено) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Бакет, Ложь);
URL = URL + Наименование;
Если ЗначениеЗаполнено(Версия) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия);
URL = URL + "?versionId=" + Версия;
КонецЕсли;
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("HEAD", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Удалить объект
// Удаляет объект из бакета
//
// Примечание:
// Метод в документации AWS: [DeleteObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
//
// Параметры:
// Наименование - Строка - Наименование объекта в бакете - title
// Бакет - Строка - Имя бакета для загрузки объекта - bucket
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic
// Версия - Строка - Токен для удаления конкретной версии объекта - ver
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьОбъект(Знач Наименование
, Знач Бакет
, Знач ОсновныеДанные
, Знач Версия = Неопределено
, Знач Заголовки = Неопределено) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Бакет, Ложь);
URL = URL + Наименование;
Если ЗначениеЗаполнено(Версия) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия);
URL = URL + "?versionId=" + Версия;
КонецЕсли;
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("DELETE", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -715,7 +840,7 @@
КонецФункции КонецФункции
Функция ПолучитьURLСервиса(Знач ОсновныеДанные) Функция ПолучитьURLСервиса(ОсновныеДанные)
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОсновныеДанные); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОсновныеДанные);
@@ -823,11 +948,12 @@
Функция ОформитьОтвет(Знач Ответ, Знач ОжидаютсяДвоичные = Ложь) Функция ОформитьОтвет(Знач Ответ, Знач ОжидаютсяДвоичные = Ложь)
Статус = Ответ.КодСостояния; Статус = Ответ.КодСостояния;
Заголовки = Ответ.Заголовки;
Если Не ОжидаютсяДвоичные Или Статус > 299 Тогда Если Не ОжидаютсяДвоичные Или Статус > 299 Тогда
ДанныеОтвета = Новый Соответствие; ДанныеОтвета = Новый Структура;
ДанныеТела = Новый Соответствие; ДанныеТела = Новый Структура;
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку(); ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
ТелоОтвета = СокрЛП(ТелоОтвета); ТелоОтвета = СокрЛП(ТелоОтвета);
@@ -842,9 +968,10 @@
КонецЕсли; КонецЕсли;
ДанныеОтвета = Новый Соответствие; ДанныеОтвета = Новый Структура;
ДанныеОтвета.Вставить("status" , Статус); ДанныеОтвета.Вставить("status" , Статус);
ДанныеОтвета.Вставить("response", ДанныеТела); ДанныеОтвета.Вставить("response", ДанныеТела);
ДанныеОтвета.Вставить("headers" , Заголовки);
Иначе Иначе
ДанныеОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные(); ДанныеОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные();
@@ -2138,6 +2138,22 @@
КонецПроцедуры КонецПроцедуры
Процедура AWS_РаботаСОбъектами() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
S3_СоздатьБакет(ПараметрыТеста);
S3_ЗагрузитьОбъект(ПараметрыТеста);
S3_ПолучитьОписаниеОбъекта(ПараметрыТеста);
S3_УдалитьОбъект(ПараметрыТеста);
S3_УдалитьБакет(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#КонецОбласти #КонецОбласти
@@ -14778,13 +14794,14 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234"); Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
// END // END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3"); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3НеНайдено(Результат); OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры КонецПроцедуры
@@ -14803,7 +14820,6 @@
// END // END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьШифрованиеБакета", "S3"); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьШифрованиеБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
OPI_ПолучениеДанныхТестов.ЗаписатьФайлЛога("", "ПолучитьШифрованиеБакета", "S3", Истина); OPI_ПолучениеДанныхТестов.ЗаписатьФайлЛога("", "ПолучитьШифрованиеБакета", "S3", Истина);
КонецПроцедуры КонецПроцедуры
@@ -15012,6 +15028,70 @@
КонецПроцедуры КонецПроцедуры
Процедура S3_ЗагрузитьОбъект(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "picture.jpg";
Бакет = "opi-gpbucket3";
Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
Результат = 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);
Наименование = "picture.jpg";
Бакет = "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);
Наименование = "picture.jpg";
Бакет = "opi-gpbucket3";
Результат = OPI_S3.ПолучитьОписаниеОбъекта(Наименование, Бакет, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОписаниеОбъекта", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#КонецОбласти #КонецОбласти
@@ -16464,7 +16464,7 @@
Метод = "GET"; Метод = "GET";
Опции = Новый Структура; Опции = Новый Структура;
Опции.Вставить("metod", Метод); Опции.Вставить("method", Метод);
Опции.Вставить("basic", ОсновныеДанные); Опции.Вставить("basic", ОсновныеДанные);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросБезТела", Опции); Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросБезТела", Опции);
@@ -16494,7 +16494,7 @@
Тело = "C:\test_data\document.docx"; Тело = "C:\test_data\document.docx";
Опции = Новый Структура; Опции = Новый Структура;
Опции.Вставить("metod", Метод); Опции.Вставить("method", Метод);
Опции.Вставить("basic", ОсновныеДанные); Опции.Вставить("basic", ОсновныеДанные);
Опции.Вставить("body" , Тело); Опции.Вставить("body" , Тело);
@@ -16682,7 +16682,6 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции); Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШифрованиеБакета", "S3"); OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШифрованиеБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
КонецПроцедуры КонецПроцедуры
@@ -256,6 +256,7 @@
НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеСчетчиками" , "Управление счетчиками" , Метрика); НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеСчетчиками" , "Управление счетчиками" , Метрика);
НовыйТест(ТаблицаТестов, "AWS_ОбщиеМетоды" , "Общие методы" , S3_); НовыйТест(ТаблицаТестов, "AWS_ОбщиеМетоды" , "Общие методы" , S3_);
НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_); НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_);
НовыйТест(ТаблицаТестов, "AWS_РаботаСОбъектами" , "Работа с объектами" , S3_);
Возврат ТаблицаТестов; Возврат ТаблицаТестов;
@@ -2125,7 +2126,7 @@
Для Каждого СекретныйКлюч Из МассивСекретов Цикл Для Каждого СекретныйКлюч Из МассивСекретов Цикл
Если СтрНайти(Имя, СекретныйКлюч) <> 0 Тогда Если СтрНайти(нРег(Имя), СекретныйКлюч) <> 0 Тогда
Значение = "***"; Значение = "***";
КонецЕсли; КонецЕсли;
+144 -17
View File
@@ -37,6 +37,7 @@
//@skip-check module-structure-method-in-regions //@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content //@skip-check wrong-string-literal-content
//@skip-check method-too-many-params //@skip-check method-too-many-params
//@skip-check constructor-function-return-section
// Раскомментировать, если выполняется OneScript // Раскомментировать, если выполняется OneScript
// #Использовать "../../tools" // #Использовать "../../tools"
@@ -79,7 +80,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные, Знач Заголовки = Неопределено) Экспорт Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные, Знач Заголовки = Неопределено) Экспорт
Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, , Заголовки); Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, , Заголовки);
@@ -97,7 +98,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ОтправитьЗапросСТелом(Знач Метод, Знач ОсновныеДанные, Знач Тело, Знач Заголовки = Неопределено) Экспорт Функция ОтправитьЗапросСТелом(Знач Метод, Знач ОсновныеДанные, Знач Тело, Знач Заголовки = Неопределено) Экспорт
Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, Тело, Заголовки); Ответ = ОтправитьЗапрос(Метод, ОсновныеДанные, Тело, Заголовки);
@@ -122,7 +123,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "PUT", Заголовки); Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "PUT", Заголовки);
@@ -143,7 +144,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "DELETE", Заголовки); Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "DELETE", Заголовки);
@@ -165,7 +166,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПроверитьДоступностьБакета(Знач Наименование Функция ПроверитьДоступностьБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -199,7 +200,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьШифрованиеБакета(Знач Наименование Функция УстановитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач XMLКонфигурация , Знач XMLКонфигурация
@@ -234,7 +235,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьШифрованиеБакета(Знач Наименование Функция ПолучитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -266,7 +267,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьШифрованиеБакета(Знач Наименование Функция УдалитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -300,7 +301,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьТегиБакета(Знач Наименование Функция УстановитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Теги , Знач Теги
@@ -336,7 +337,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьТегиБакета(Знач Наименование Функция ПолучитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -367,7 +368,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьТегиБакета(Знач Наименование Функция УдалитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -400,7 +401,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Статус = Неопределено , Знач Статус = Неопределено
@@ -437,7 +438,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные , Знач ОсновныеДанные
, Знач Каталог = Истина , Знач Каталог = Истина
@@ -469,7 +470,7 @@
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers // Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища // Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьСписокБакетов(Знач ОсновныеДанные Функция ПолучитьСписокБакетов(Знач ОсновныеДанные
, Знач Префикс = "" , Знач Префикс = ""
, Знач Регион = "" , Знач Регион = ""
@@ -495,6 +496,130 @@
#КонецОбласти #КонецОбласти
#Область РаботаСОбъектами
// Загрузить объект
// Загружает файл в бакет
//
// Примечание:
// Метод в документации AWS: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
//
// Параметры:
// Наименование - Строка - Наименование объекта в бакете - title
// Бакет - Строка - Имя бакета для загрузки объекта - bucket
// Содержимое - Строка, ДвоичныеДанные - Данные или путь к файлу для загрузки - data
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ЗагрузитьОбъект(Знач Наименование
, Знач Бакет
, Знач Содержимое
, Знач ОсновныеДанные
, Знач Заголовки = Неопределено) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Бакет, Ложь);
URL = URL + Наименование;
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, Содержимое, Заголовки);
Возврат Ответ;
КонецФункции
// Получить описание объекта
// Получает информацию о характеристиках объекта в бакете
//
// Примечание:
// Метаданные объекты содержатся в заголовках
// Метод в документации AWS: [GetObjectAttributes](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
//
// Параметры:
// Наименование - Строка - Наименование объекта в бакете - title
// Бакет - Строка - Имя бакета, в котором находится объект - bucket
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic
// Версия - Строка - Токен для получения конкретной версии объекта - ver
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьОписаниеОбъекта(Знач Наименование
, Знач Бакет
, Знач ОсновныеДанные
, Знач Версия = Неопределено
, Знач Заголовки = Неопределено) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Бакет, Ложь);
URL = URL + Наименование;
Если ЗначениеЗаполнено(Версия) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия);
URL = URL + "?versionId=" + Версия;
КонецЕсли;
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("HEAD", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Удалить объект
// Удаляет объект из бакета
//
// Примечание:
// Метод в документации AWS: [DeleteObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
//
// Параметры:
// Наименование - Строка - Наименование объекта в бакете - title
// Бакет - Строка - Имя бакета для загрузки объекта - bucket
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - basic
// Версия - Строка - Токен для удаления конкретной версии объекта - ver
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьОбъект(Знач Наименование
, Знач Бакет
, Знач ОсновныеДанные
, Знач Версия = Неопределено
, Знач Заголовки = Неопределено) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Бакет, Ложь);
URL = URL + Наименование;
Если ЗначениеЗаполнено(Версия) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Версия);
URL = URL + "?versionId=" + Версия;
КонецЕсли;
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("DELETE", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -823,11 +948,12 @@
Функция ОформитьОтвет(Знач Ответ, Знач ОжидаютсяДвоичные = Ложь) Функция ОформитьОтвет(Знач Ответ, Знач ОжидаютсяДвоичные = Ложь)
Статус = Ответ.КодСостояния; Статус = Ответ.КодСостояния;
Заголовки = Ответ.Заголовки;
Если Не ОжидаютсяДвоичные Или Статус > 299 Тогда Если Не ОжидаютсяДвоичные Или Статус > 299 Тогда
ДанныеОтвета = Новый Соответствие; ДанныеОтвета = Новый Структура;
ДанныеТела = Новый Соответствие; ДанныеТела = Новый Структура;
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку(); ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
ТелоОтвета = СокрЛП(ТелоОтвета); ТелоОтвета = СокрЛП(ТелоОтвета);
@@ -842,9 +968,10 @@
КонецЕсли; КонецЕсли;
ДанныеОтвета = Новый Соответствие; ДанныеОтвета = Новый Структура;
ДанныеОтвета.Вставить("status" , Статус); ДанныеОтвета.Вставить("status" , Статус);
ДанныеОтвета.Вставить("response", ДанныеТела); ДанныеОтвета.Вставить("response", ДанныеТела);
ДанныеОтвета.Вставить("headers" , Заголовки);
Иначе Иначе
ДанныеОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные(); ДанныеОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные();
@@ -256,6 +256,7 @@
НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеСчетчиками" , "Управление счетчиками" , Метрика); НовыйТест(ТаблицаТестов, "ЯМетрика_УправлениеСчетчиками" , "Управление счетчиками" , Метрика);
НовыйТест(ТаблицаТестов, "AWS_ОбщиеМетоды" , "Общие методы" , S3_); НовыйТест(ТаблицаТестов, "AWS_ОбщиеМетоды" , "Общие методы" , S3_);
НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_); НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_);
НовыйТест(ТаблицаТестов, "AWS_РаботаСОбъектами" , "Работа с объектами" , S3_);
Возврат ТаблицаТестов; Возврат ТаблицаТестов;
@@ -2138,6 +2138,22 @@
КонецПроцедуры КонецПроцедуры
Процедура AWS_РаботаСОбъектами() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_AccessKey", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_SecretKey", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("S3_URL" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
S3_СоздатьБакет(ПараметрыТеста);
S3_ЗагрузитьОбъект(ПараметрыТеста);
S3_ПолучитьОписаниеОбъекта(ПараметрыТеста);
S3_УдалитьОбъект(ПараметрыТеста);
S3_УдалитьБакет(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#КонецОбласти #КонецОбласти
@@ -14778,13 +14794,14 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234"); Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
// END // END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3"); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3НеНайдено(Результат); OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры КонецПроцедуры
@@ -14803,7 +14820,6 @@
// END // END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьШифрованиеБакета", "S3"); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьШифрованиеБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
OPI_ПолучениеДанныхТестов.ЗаписатьФайлЛога("", "ПолучитьШифрованиеБакета", "S3", Истина); OPI_ПолучениеДанныхТестов.ЗаписатьФайлЛога("", "ПолучитьШифрованиеБакета", "S3", Истина);
КонецПроцедуры КонецПроцедуры
@@ -15012,6 +15028,70 @@
КонецПроцедуры КонецПроцедуры
Процедура S3_ЗагрузитьОбъект(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "picture.jpg";
Бакет = "opi-gpbucket3";
Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
Результат = 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);
Наименование = "picture.jpg";
Бакет = "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);
Наименование = "picture.jpg";
Бакет = "opi-gpbucket3";
Результат = OPI_S3.ПолучитьОписаниеОбъекта(Наименование, Бакет, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОписаниеОбъекта", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#КонецОбласти #КонецОбласти
@@ -16682,7 +16682,6 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции); Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШифрованиеБакета", "S3"); OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьШифрованиеБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
КонецПроцедуры КонецПроцедуры