You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-05-22 10:05:29 +02:00
Main build (Jenkins)
This commit is contained in:
+6
-2
@@ -1620,11 +1620,15 @@ def test_s3(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
powershell encoding: 'UTF-8', script:'./oint.exe s3 CreateBucket --name "test" --data "test" --headers "test" --debug --test '
|
powershell encoding: 'UTF-8', script:'./oint.exe s3 CreateBucket --name "test" --data "test" --dir "test" --headers "test" --debug --test '
|
||||||
}
|
}
|
||||||
|
|
||||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
powershell encoding: 'UTF-8', script:'./oint.exe s3 DeleteBucket --name "test" --data "test" --headers "test" --debug --test '
|
powershell encoding: 'UTF-8', script:'./oint.exe s3 DeleteBucket --name "test" --data "test" --dir "test" --headers "test" --debug --test '
|
||||||
|
}
|
||||||
|
|
||||||
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
|
powershell encoding: 'UTF-8', script:'./oint.exe s3 CheckBucketAvailability --name "test" --data "test" --dir "test" --account "test" --headers "test" --debug --test '
|
||||||
}
|
}
|
||||||
|
|
||||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
|
|||||||
+6
-2
@@ -1620,11 +1620,15 @@ def test_s3(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
powershell encoding: 'UTF-8', script:'./oint.exe s3 СоздатьБакет --name "test" --data "test" --headers "test" --debug --test '
|
powershell encoding: 'UTF-8', script:'./oint.exe s3 СоздатьБакет --name "test" --data "test" --dir "test" --headers "test" --debug --test '
|
||||||
}
|
}
|
||||||
|
|
||||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
powershell encoding: 'UTF-8', script:'./oint.exe s3 УдалитьБакет --name "test" --data "test" --headers "test" --debug --test '
|
powershell encoding: 'UTF-8', script:'./oint.exe s3 УдалитьБакет --name "test" --data "test" --dir "test" --headers "test" --debug --test '
|
||||||
|
}
|
||||||
|
|
||||||
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
|
powershell encoding: 'UTF-8', script:'./oint.exe s3 ПроверитьДоступностьБакета --name "test" --data "test" --dir "test" --account "test" --headers "test" --debug --test '
|
||||||
}
|
}
|
||||||
|
|
||||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"URL": "storage-155.s3hoster.by",
|
||||||
|
"AccessKey": "BRN5RKJE67...",
|
||||||
|
"SecretKey": "NNhv+i9PrytpT8Tu0C1N..."
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
URL = "storage-155.s3hoster.by";
|
||||||
|
AccessKey = "BRN5RKJE67...";
|
||||||
|
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
|
||||||
|
Region = "BTC";
|
||||||
|
|
||||||
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True);
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True, "1234");
|
||||||
@@ -5,6 +5,14 @@
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.CreateBucket(Name, BasicData);
|
Result = OPI_S3.CreateBucket(Name, BasicData);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CreateBucket(Name, BasicData, False);
|
||||||
|
|||||||
@@ -5,6 +5,14 @@
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.DeleteBucket(Name, BasicData, False);
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 3
|
||||||
|
---
|
||||||
|
|
||||||
|
import Tabs from '@theme/Tabs';
|
||||||
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
|
# Check bucket availability
|
||||||
|
Checks if the bucket is available for the current account or account by ID
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
`Function CheckBucketAvailability(Val Name, Val BasicData, Val Directory = True, Val AccountID = "", Val Headers = Undefined) Export`
|
||||||
|
|
||||||
|
| Parameter | CLI option | Type | Required | Description |
|
||||||
|
|-|-|-|-|-|
|
||||||
|
| Name | --name | String | ✔ | Bucket name |
|
||||||
|
| BasicData | --data | Structure of KeyAndValue | ✔ | Basic request data. See GetBasicDataStructure |
|
||||||
|
| Directory | --dir | Boolean | ✖ | True > Directory Bucket, False > General Purpose Bucket |
|
||||||
|
| AccountID | --account | String | ✖ | Account ID to verify that hes the bucket owner |
|
||||||
|
| Headers | --headers | Map Of KeyAndValue | ✖ | Additional request headers, if necessary |
|
||||||
|
|
||||||
|
|
||||||
|
Returns: Map Of KeyAndValue - serialized JSON response from storage
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Method at AWS documentation: [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
||||||
|
:::
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
```bsl title="1C:Enterprise/OneScript code example"
|
||||||
|
URL = "storage-155.s3hoster.by";
|
||||||
|
AccessKey = "BRN5RKJE67...";
|
||||||
|
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
|
||||||
|
Region = "BTC";
|
||||||
|
|
||||||
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True);
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True, "1234");
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -10,12 +10,13 @@ import TabItem from '@theme/TabItem';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
`Function CreateBucket(Val Name, Val BasicData, Val Headers = Undefined) Export`
|
`Function CreateBucket(Val Name, Val BasicData, Val Directory = True, Val Headers = Undefined) Export`
|
||||||
|
|
||||||
| Parameter | CLI option | Type | Required | Description |
|
| Parameter | CLI option | Type | Required | Description |
|
||||||
|-|-|-|-|-|
|
|-|-|-|-|-|
|
||||||
| Name | --name | String | ✔ | Bucket name |
|
| Name | --name | String | ✔ | Bucket name |
|
||||||
| BasicData | --data | Structure of KeyAndValue | ✔ | Basic request data. See GetBasicDataStructure |
|
| BasicData | --data | Structure of KeyAndValue | ✔ | Basic request data. See GetBasicDataStructure |
|
||||||
|
| Directory | --dir | Boolean | ✖ | True > Directory Bucket, False > General Purpose Bucket |
|
||||||
| Headers | --headers | Map Of KeyAndValue | ✖ | Additional request headers, if necessary |
|
| Headers | --headers | Map Of KeyAndValue | ✖ | Additional request headers, if necessary |
|
||||||
|
|
||||||
|
|
||||||
@@ -37,9 +38,17 @@ Method at AWS documentation: [CreateBucket](https://docs.aws.amazon.com/AmazonS3
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.CreateBucket(Name, BasicData);
|
Result = OPI_S3.CreateBucket(Name, BasicData);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CreateBucket(Name, BasicData, False);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,13 @@ import TabItem from '@theme/TabItem';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
`Function DeleteBucket(Val Name, Val BasicData, Val Headers = Undefined) Export`
|
`Function DeleteBucket(Val Name, Val BasicData, Val Directory = True, Val Headers = Undefined) Export`
|
||||||
|
|
||||||
| Parameter | CLI option | Type | Required | Description |
|
| Parameter | CLI option | Type | Required | Description |
|
||||||
|-|-|-|-|-|
|
|-|-|-|-|-|
|
||||||
| Name | --name | String | ✔ | Bucket name |
|
| Name | --name | String | ✔ | Bucket name |
|
||||||
| BasicData | --data | Structure of KeyAndValue | ✔ | Basic request data. See GetBasicDataStructure |
|
| BasicData | --data | Structure of KeyAndValue | ✔ | Basic request data. See GetBasicDataStructure |
|
||||||
|
| Directory | --dir | Boolean | ✖ | True > Directory Bucket, False > General Purpose Bucket |
|
||||||
| Headers | --headers | Map Of KeyAndValue | ✖ | Additional request headers, if necessary |
|
| Headers | --headers | Map Of KeyAndValue | ✖ | Additional request headers, if necessary |
|
||||||
|
|
||||||
|
|
||||||
@@ -37,9 +38,17 @@ Method at AWS documentation: [DeleteBucket](https://docs.aws.amazon.com/AmazonS3
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.DeleteBucket(Name, BasicData, False);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
sidebar_position: 3
|
sidebar_position: 4
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from '@theme/Tabs';
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"URL": "storage-155.s3hoster.by",
|
||||||
|
"AccessKey": "BRN5RKJE67...",
|
||||||
|
"SecretKey": "NNhv+i9PrytpT8Tu0C1N..."
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
URL = "storage-155.s3hoster.by";
|
||||||
|
AccessKey = "BRN5RKJE67...";
|
||||||
|
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
|
||||||
|
Region = "BTC";
|
||||||
|
|
||||||
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина);
|
||||||
|
|
||||||
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
|
||||||
@@ -5,6 +5,14 @@
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Имя = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
Результат = OPI_S3.СоздатьБакет(Имя, ОсновныеДанные);
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Наименование = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные, Ложь);
|
||||||
|
|||||||
@@ -5,6 +5,14 @@
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Имя = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Имя = "opi-dirbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Имя = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные, Ложь);
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 3
|
||||||
|
---
|
||||||
|
|
||||||
|
import Tabs from '@theme/Tabs';
|
||||||
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
|
# Проверить доступность бакета
|
||||||
|
Проверяет доступность бакета для текущего аккаунта или аккаунта по ID
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
`Функция ПроверитьДоступностьБакета(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач IDАккаунта = "", Знач Заголовки = Неопределено) Экспорт`
|
||||||
|
|
||||||
|
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||||
|
|-|-|-|-|-|
|
||||||
|
| Наименование | --name | Строка | ✔ | Наименование бакета |
|
||||||
|
| ОсновныеДанные | --data | Структура Из КлючИЗначение | ✔ | Основные данные запроса. См. ПолучитьСтруктуруДанных |
|
||||||
|
| Каталог | --dir | Булево | ✖ | Истина > Directory Bucket, Ложь > General Purpose Bucket |
|
||||||
|
| IDАккаунта | --account | Строка | ✖ | ID аккаунта для проверки, что бакет принадлежит ему |
|
||||||
|
| Заголовки | --headers | Соответствие Из КлючИЗначение | ✖ | Дополнительные заголовки запроса, если необходимо |
|
||||||
|
|
||||||
|
|
||||||
|
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Метод в документации AWS: [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
||||||
|
:::
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||||
|
URL = "storage-155.s3hoster.by";
|
||||||
|
AccessKey = "BRN5RKJE67...";
|
||||||
|
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
|
||||||
|
Region = "BTC";
|
||||||
|
|
||||||
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина);
|
||||||
|
|
||||||
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -10,12 +10,13 @@ import TabItem from '@theme/TabItem';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
`Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Заголовки = Неопределено) Экспорт`
|
`Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт`
|
||||||
|
|
||||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||||
|-|-|-|-|-|
|
|-|-|-|-|-|
|
||||||
| Наименование | --name | Строка | ✔ | Наименование бакета |
|
| Наименование | --name | Строка | ✔ | Наименование бакета |
|
||||||
| ОсновныеДанные | --data | Структура Из КлючИЗначение | ✔ | Основные данные запроса. См. ПолучитьСтруктуруДанных |
|
| ОсновныеДанные | --data | Структура Из КлючИЗначение | ✔ | Основные данные запроса. См. ПолучитьСтруктуруДанных |
|
||||||
|
| Каталог | --dir | Булево | ✖ | Истина > Directory Bucket, Ложь > General Purpose Bucket |
|
||||||
| Заголовки | --headers | Соответствие Из КлючИЗначение | ✖ | Дополнительные заголовки запроса, если необходимо |
|
| Заголовки | --headers | Соответствие Из КлючИЗначение | ✖ | Дополнительные заголовки запроса, если необходимо |
|
||||||
|
|
||||||
|
|
||||||
@@ -37,9 +38,17 @@ import TabItem from '@theme/TabItem';
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Имя = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
Результат = OPI_S3.СоздатьБакет(Имя, ОсновныеДанные);
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Наименование = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные, Ложь);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,13 @@ import TabItem from '@theme/TabItem';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
`Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Заголовки = Неопределено) Экспорт`
|
`Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные, Знач Каталог = Истина, Знач Заголовки = Неопределено) Экспорт`
|
||||||
|
|
||||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||||
|-|-|-|-|-|
|
|-|-|-|-|-|
|
||||||
| Наименование | --name | Строка | ✔ | Наименование бакета |
|
| Наименование | --name | Строка | ✔ | Наименование бакета |
|
||||||
| ОсновныеДанные | --data | Структура Из КлючИЗначение | ✔ | Основные данные запроса. См. ПолучитьСтруктуруДанных |
|
| ОсновныеДанные | --data | Структура Из КлючИЗначение | ✔ | Основные данные запроса. См. ПолучитьСтруктуруДанных |
|
||||||
|
| Каталог | --dir | Булево | ✖ | Истина > Directory Bucket, Ложь > General Purpose Bucket |
|
||||||
| Заголовки | --headers | Соответствие Из КлючИЗначение | ✖ | Дополнительные заголовки запроса, если необходимо |
|
| Заголовки | --headers | Соответствие Из КлючИЗначение | ✖ | Дополнительные заголовки запроса, если необходимо |
|
||||||
|
|
||||||
|
|
||||||
@@ -37,9 +38,17 @@ import TabItem from '@theme/TabItem';
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Имя = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Имя = "opi-dirbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Имя = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные, Ложь);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
sidebar_position: 3
|
sidebar_position: 4
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from '@theme/Tabs';
|
||||||
|
|||||||
+5390
-5390
File diff suppressed because it is too large
Load Diff
@@ -119,13 +119,14 @@ EndFunction
|
|||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Bucket name - name
|
// Name - String - Bucket name - name
|
||||||
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
||||||
|
// Directory - Boolean - True > Directory Bucket, False > General Purpose Bucket - dir
|
||||||
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from storage
|
// Map Of KeyAndValue - serialized JSON response from storage
|
||||||
Function CreateBucket(Val Name, Val BasicData, Val Headers = Undefined) Export
|
Function CreateBucket(Val Name, Val BasicData, Val Directory = True, Val Headers = Undefined) Export
|
||||||
|
|
||||||
Response = BucketManagment(Name, BasicData, "PUT", Headers);
|
Response = BucketManagment(Name, BasicData, Directory, "PUT", Headers);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@@ -139,13 +140,48 @@ EndFunction
|
|||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Bucket name - name
|
// Name - String - Bucket name - name
|
||||||
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
||||||
|
// Directory - Boolean - True > Directory Bucket, False > General Purpose Bucket - dir
|
||||||
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from storage
|
// Map Of KeyAndValue - serialized JSON response from storage
|
||||||
Function DeleteBucket(Val Name, Val BasicData, Val Headers = Undefined) Export
|
Function DeleteBucket(Val Name, Val BasicData, Val Directory = True, Val Headers = Undefined) Export
|
||||||
|
|
||||||
Response = BucketManagment(Name, BasicData, "DELETE", Headers);
|
Response = BucketManagment(Name, BasicData, Directory, "DELETE", Headers);
|
||||||
|
Return Response;
|
||||||
|
|
||||||
|
EndFunction
|
||||||
|
|
||||||
|
// Check bucket availability
|
||||||
|
// Checks if the bucket is available for the current account or account by ID
|
||||||
|
//
|
||||||
|
// Note
|
||||||
|
// Method at AWS documentation: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
||||||
|
//
|
||||||
|
// Parameters:
|
||||||
|
// Name - String - Bucket name - name
|
||||||
|
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
||||||
|
// Directory - Boolean - True > Directory Bucket, False > General Purpose Bucket - dir
|
||||||
|
// AccountID - String - Account ID to verify that hes the bucket owner - account
|
||||||
|
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Map Of KeyAndValue - serialized JSON response from storage
|
||||||
|
Function CheckBucketAvailability(Val Name
|
||||||
|
, Val BasicData
|
||||||
|
, Val Directory = True
|
||||||
|
, Val AccountID = ""
|
||||||
|
, Val Headers = Undefined) Export
|
||||||
|
|
||||||
|
OPI_TypeConversion.GetLine(AccountID);
|
||||||
|
|
||||||
|
If ValueIsFilled(AccountID) Then
|
||||||
|
AccountHeader = New Map();
|
||||||
|
AccountHeader.Insert("x-amz-expected-bucket-owner", AccountID);
|
||||||
|
AddAdditionalHeaders(Headers, AccountHeader);
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
Response = BucketManagment(Name, BasicData, Directory, "HEAD", Headers);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@@ -216,8 +252,7 @@ Function CreateAuthorizationHeader(Val DataStructure, Val Request, Val Connectio
|
|||||||
Signature = OPI_Cryptography.HMACSHA256(SignKey, StringToSign);
|
Signature = OPI_Cryptography.HMACSHA256(SignKey, StringToSign);
|
||||||
Signature = Lower(ПолучитьHexСтрокуИзДвоичныхДанных(Signature));
|
Signature = Lower(ПолучитьHexСтрокуИзДвоичныхДанных(Signature));
|
||||||
|
|
||||||
HeadersKeys = GetHeadersKeysString(Request);
|
HeadersKeys = GetHeadersKeysString(Request);
|
||||||
|
|
||||||
AuthorizationHeader = FormAuthorisationHeader(AccessKey, Scope, Signature, HeadersKeys);
|
AuthorizationHeader = FormAuthorisationHeader(AccessKey, Scope, Signature, HeadersKeys);
|
||||||
|
|
||||||
Return AuthorizationHeader;
|
Return AuthorizationHeader;
|
||||||
@@ -308,7 +343,9 @@ Function CreateSignatureString(Val CanonicalRequest, Val Scope, Val CurrentDate)
|
|||||||
CanonicalRequest = Lower(ПолучитьHexСтрокуИзДвоичныхДанных(CanonicalRequest));
|
CanonicalRequest = Lower(ПолучитьHexСтрокуИзДвоичныхДанных(CanonicalRequest));
|
||||||
|
|
||||||
For N = 1 To 4 Do
|
For N = 1 To 4 Do
|
||||||
|
|
||||||
StringTemplate = StringTemplate + "%" + String(N) + ?(N = 4, "", Chars.LF);
|
StringTemplate = StringTemplate + "%" + String(N) + ?(N = 4, "", Chars.LF);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
|
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
|
||||||
@@ -379,8 +416,9 @@ Function GetHeadersString(Val Request)
|
|||||||
HeadersList.SortByValue();
|
HeadersList.SortByValue();
|
||||||
|
|
||||||
HeadersString = StrConcat(HeadersList.UnloadValues(), Chars.LF);
|
HeadersString = StrConcat(HeadersList.UnloadValues(), Chars.LF);
|
||||||
|
HeadersString = HeadersString + Chars.LF;
|
||||||
|
|
||||||
Return HeadersString + Chars.LF;
|
Return HeadersString;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
@@ -448,12 +486,24 @@ EndFunction
|
|||||||
|
|
||||||
#Region Miscellaneous
|
#Region Miscellaneous
|
||||||
|
|
||||||
Function BucketManagment(Val Name, Val BasicData, Val Method, Val Headers)
|
Function BucketManagment(Val Name, Val BasicData, Val Directory, Val Method, Val Headers)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
OPI_TypeConversion.GetBoolean(Directory);
|
||||||
|
|
||||||
URL = GetServiceURL(BasicData);
|
URL = GetServiceURL(BasicData);
|
||||||
URL = URL + Name;
|
|
||||||
|
If Directory Then
|
||||||
|
URL = URL + Name;
|
||||||
|
Else
|
||||||
|
|
||||||
|
If StrFind(URL, "://") Then
|
||||||
|
URL = StrReplace(URL, "://", "://" + Name + ".");
|
||||||
|
Else
|
||||||
|
URL = Name + "." + URL;
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
EndIf;
|
||||||
|
|
||||||
BasicData.Insert("URL", URL);
|
BasicData.Insert("URL", URL);
|
||||||
|
|
||||||
@@ -494,22 +544,10 @@ Function FormResponse(Val Response, Val ExpectedBinary = False)
|
|||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function SupportedResponse(Val Response)
|
|
||||||
|
|
||||||
Return TypeOf(Response) = Type("String")
|
|
||||||
Or TypeOf(Response) = Type("Structure")
|
|
||||||
Or TypeOf(Response) = Type("Map")
|
|
||||||
Or TypeOf(Response) = Type("Array");
|
|
||||||
|
|
||||||
EndFunction
|
|
||||||
|
|
||||||
Procedure CheckBasicData(BasicData)
|
Procedure CheckBasicData(BasicData)
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(BasicData);
|
ErrorText = "Error of obtaining authorization data from the structure";
|
||||||
|
OPI_TypeConversion.GetKeyValueCollection(BasicData, ErrorText);
|
||||||
If TypeOf(BasicData) = Type("Array") Then
|
|
||||||
Raise "Error of obtaining authorization data from the structure";
|
|
||||||
EndIf;
|
|
||||||
|
|
||||||
RequiredFieldsArray = New Array;
|
RequiredFieldsArray = New Array;
|
||||||
RequiredFieldsArray.Add("AccessKey");
|
RequiredFieldsArray.Add("AccessKey");
|
||||||
@@ -526,22 +564,36 @@ Procedure CheckBasicData(BasicData)
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure AddAdditionalHeaders(Request, Val Headers)
|
Procedure AddAdditionalHeaders(Receiver, Val Headers)
|
||||||
|
|
||||||
If Not ValueIsFilled(Headers) Then
|
If Not ValueIsFilled(Headers) Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(Headers);
|
ReceiverType = TypeOf(Receiver);
|
||||||
|
ErrorText = "Error setting additional headers";
|
||||||
|
OPI_TypeConversion.GetKeyValueCollection(Headers, ErrorText);
|
||||||
|
|
||||||
|
If ReceiverType = Type("HTTPRequest") Then
|
||||||
|
|
||||||
|
For Each Title In Headers Do
|
||||||
|
Receiver.Headers.Insert(Title.Key, Title.Value);
|
||||||
|
EndDo;
|
||||||
|
|
||||||
|
Else
|
||||||
|
|
||||||
|
If Not ValueIsFilled(Receiver) Then
|
||||||
|
Receiver = New Map;
|
||||||
|
Else
|
||||||
|
OPI_TypeConversion.GetKeyValueCollection(Headers, ErrorText);
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
For Each Title In Headers Do
|
||||||
|
Receiver.Insert(Title.Key, Title.Value);
|
||||||
|
EndDo;
|
||||||
|
|
||||||
If TypeOf(Headers) = Type("Array") Then
|
|
||||||
Raise "Error setting additional headers";
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
For Each Title In Headers Do
|
|
||||||
Request.Headers.Insert(Title.Key, Title.Value);
|
|
||||||
EndDo;
|
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|||||||
@@ -2112,6 +2112,7 @@ Procedure AWS_BucketsManagment() Export
|
|||||||
|
|
||||||
S3_CreateBucket(TestParameters);
|
S3_CreateBucket(TestParameters);
|
||||||
S3_GetBucketsList(TestParameters);
|
S3_GetBucketsList(TestParameters);
|
||||||
|
S3_CheckBucketAvailability(TestParameters);
|
||||||
S3_DeleteBucket(TestParameters);
|
S3_DeleteBucket(TestParameters);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
@@ -14618,10 +14619,22 @@ Procedure S3_CreateBucket(FunctionParameters)
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.CreateBucket(Name, BasicData);
|
Result = OPI_S3.CreateBucket(Name, BasicData);
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket (DB)", "S3"); // SKIP
|
||||||
|
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
|
||||||
|
BasicData.Insert("URL", FunctionParameters["S3_URL"]); // SKIP
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CreateBucket(Name, BasicData, False);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket", "S3");
|
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket", "S3");
|
||||||
@@ -14638,10 +14651,21 @@ Procedure S3_DeleteBucket(FunctionParameters)
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "DeleteBucket (DB)", "S3"); // SKIP
|
||||||
|
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.DeleteBucket(Name, BasicData, False);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_TestDataRetrieval.WriteLog(Result, "DeleteBucket", "S3");
|
OPI_TestDataRetrieval.WriteLog(Result, "DeleteBucket", "S3");
|
||||||
@@ -14667,6 +14691,30 @@ Procedure S3_GetBucketsList(FunctionParameters)
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure S3_CheckBucketAvailability(FunctionParameters)
|
||||||
|
|
||||||
|
URL = FunctionParameters["S3_URL"];
|
||||||
|
AccessKey = FunctionParameters["S3_AccessKey"];
|
||||||
|
SecretKey = FunctionParameters["S3_SecretKey"];
|
||||||
|
Region = "BTC";
|
||||||
|
|
||||||
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True);
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "CheckBucketAvailability", "S3"); // SKIP
|
||||||
|
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True, "1234");
|
||||||
|
|
||||||
|
// END
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "CheckBucketAvailability (account)", "S3");
|
||||||
|
OPI_TestDataRetrieval.Check_S3NotFound(Result);
|
||||||
|
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|||||||
@@ -1954,6 +1954,13 @@ Procedure Check_S3Success(Val Result) Export
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure Check_S3NotFound(Val Result) Export
|
||||||
|
|
||||||
|
NotFound = Result["status"] = 404;
|
||||||
|
ExpectsThat(NotFound).Равно(True);
|
||||||
|
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|||||||
@@ -151,6 +151,16 @@ Procedure GetCollection(Value) Export
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure GetKeyValueCollection(Value, Val ErrorText) Export
|
||||||
|
|
||||||
|
GetCollection(Value);
|
||||||
|
|
||||||
|
If TypeOf(Value) = Type("Array") Then
|
||||||
|
Raise ErrorText;
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetArray(Value) Export
|
Procedure GetArray(Value) Export
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Array") Then
|
If TypeOf(Value) = Type("Array") Then
|
||||||
|
|||||||
@@ -119,13 +119,14 @@ EndFunction
|
|||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Bucket name - name
|
// Name - String - Bucket name - name
|
||||||
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
||||||
|
// Directory - Boolean - True > Directory Bucket, False > General Purpose Bucket - dir
|
||||||
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from storage
|
// Map Of KeyAndValue - serialized JSON response from storage
|
||||||
Function CreateBucket(Val Name, Val BasicData, Val Headers = Undefined) Export
|
Function CreateBucket(Val Name, Val BasicData, Val Directory = True, Val Headers = Undefined) Export
|
||||||
|
|
||||||
Response = BucketManagment(Name, BasicData, "PUT", Headers);
|
Response = BucketManagment(Name, BasicData, Directory, "PUT", Headers);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@@ -139,13 +140,48 @@ EndFunction
|
|||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Bucket name - name
|
// Name - String - Bucket name - name
|
||||||
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
||||||
|
// Directory - Boolean - True > Directory Bucket, False > General Purpose Bucket - dir
|
||||||
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from storage
|
// Map Of KeyAndValue - serialized JSON response from storage
|
||||||
Function DeleteBucket(Val Name, Val BasicData, Val Headers = Undefined) Export
|
Function DeleteBucket(Val Name, Val BasicData, Val Directory = True, Val Headers = Undefined) Export
|
||||||
|
|
||||||
Response = BucketManagment(Name, BasicData, "DELETE", Headers);
|
Response = BucketManagment(Name, BasicData, Directory, "DELETE", Headers);
|
||||||
|
Return Response;
|
||||||
|
|
||||||
|
EndFunction
|
||||||
|
|
||||||
|
// Check bucket availability
|
||||||
|
// Checks if the bucket is available for the current account or account by ID
|
||||||
|
//
|
||||||
|
// Note
|
||||||
|
// Method at AWS documentation: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
||||||
|
//
|
||||||
|
// Parameters:
|
||||||
|
// Name - String - Bucket name - name
|
||||||
|
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - data
|
||||||
|
// Directory - Boolean - True > Directory Bucket, False > General Purpose Bucket - dir
|
||||||
|
// AccountID - String - Account ID to verify that hes the bucket owner - account
|
||||||
|
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Map Of KeyAndValue - serialized JSON response from storage
|
||||||
|
Function CheckBucketAvailability(Val Name
|
||||||
|
, Val BasicData
|
||||||
|
, Val Directory = True
|
||||||
|
, Val AccountID = ""
|
||||||
|
, Val Headers = Undefined) Export
|
||||||
|
|
||||||
|
OPI_TypeConversion.GetLine(AccountID);
|
||||||
|
|
||||||
|
If ValueIsFilled(AccountID) Then
|
||||||
|
AccountHeader = New Map();
|
||||||
|
AccountHeader.Insert("x-amz-expected-bucket-owner", AccountID);
|
||||||
|
AddAdditionalHeaders(Headers, AccountHeader);
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
Response = BucketManagment(Name, BasicData, Directory, "HEAD", Headers);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@@ -216,8 +252,7 @@ Function CreateAuthorizationHeader(Val DataStructure, Val Request, Val Connectio
|
|||||||
Signature = OPI_Cryptography.HMACSHA256(SignKey, StringToSign);
|
Signature = OPI_Cryptography.HMACSHA256(SignKey, StringToSign);
|
||||||
Signature = Lower(GetHexStringFromBinaryData(Signature));
|
Signature = Lower(GetHexStringFromBinaryData(Signature));
|
||||||
|
|
||||||
HeadersKeys = GetHeadersKeysString(Request);
|
HeadersKeys = GetHeadersKeysString(Request);
|
||||||
|
|
||||||
AuthorizationHeader = FormAuthorisationHeader(AccessKey, Scope, Signature, HeadersKeys);
|
AuthorizationHeader = FormAuthorisationHeader(AccessKey, Scope, Signature, HeadersKeys);
|
||||||
|
|
||||||
Return AuthorizationHeader;
|
Return AuthorizationHeader;
|
||||||
@@ -308,7 +343,9 @@ Function CreateSignatureString(Val CanonicalRequest, Val Scope, Val CurrentDate)
|
|||||||
CanonicalRequest = Lower(GetHexStringFromBinaryData(CanonicalRequest));
|
CanonicalRequest = Lower(GetHexStringFromBinaryData(CanonicalRequest));
|
||||||
|
|
||||||
For N = 1 To 4 Do
|
For N = 1 To 4 Do
|
||||||
|
|
||||||
StringTemplate = StringTemplate + "%" + String(N) + ?(N = 4, "", Chars.LF);
|
StringTemplate = StringTemplate + "%" + String(N) + ?(N = 4, "", Chars.LF);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
|
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
|
||||||
@@ -379,8 +416,9 @@ Function GetHeadersString(Val Request)
|
|||||||
HeadersList.SortByValue();
|
HeadersList.SortByValue();
|
||||||
|
|
||||||
HeadersString = StrConcat(HeadersList.UnloadValues(), Chars.LF);
|
HeadersString = StrConcat(HeadersList.UnloadValues(), Chars.LF);
|
||||||
|
HeadersString = HeadersString + Chars.LF;
|
||||||
|
|
||||||
Return HeadersString + Chars.LF;
|
Return HeadersString;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
@@ -448,12 +486,24 @@ EndFunction
|
|||||||
|
|
||||||
#Region Miscellaneous
|
#Region Miscellaneous
|
||||||
|
|
||||||
Function BucketManagment(Val Name, Val BasicData, Val Method, Val Headers)
|
Function BucketManagment(Val Name, Val BasicData, Val Directory, Val Method, Val Headers)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
OPI_TypeConversion.GetBoolean(Directory);
|
||||||
|
|
||||||
URL = GetServiceURL(BasicData);
|
URL = GetServiceURL(BasicData);
|
||||||
URL = URL + Name;
|
|
||||||
|
If Directory Then
|
||||||
|
URL = URL + Name;
|
||||||
|
Else
|
||||||
|
|
||||||
|
If StrFind(URL, "://") Then
|
||||||
|
URL = StrReplace(URL, "://", "://" + Name + ".");
|
||||||
|
Else
|
||||||
|
URL = Name + "." + URL;
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
EndIf;
|
||||||
|
|
||||||
BasicData.Insert("URL", URL);
|
BasicData.Insert("URL", URL);
|
||||||
|
|
||||||
@@ -494,22 +544,10 @@ Function FormResponse(Val Response, Val ExpectedBinary = False)
|
|||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function SupportedResponse(Val Response)
|
|
||||||
|
|
||||||
Return TypeOf(Response) = Type("String")
|
|
||||||
Or TypeOf(Response) = Type("Structure")
|
|
||||||
Or TypeOf(Response) = Type("Map")
|
|
||||||
Or TypeOf(Response) = Type("Array");
|
|
||||||
|
|
||||||
EndFunction
|
|
||||||
|
|
||||||
Procedure CheckBasicData(BasicData)
|
Procedure CheckBasicData(BasicData)
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(BasicData);
|
ErrorText = "Error of obtaining authorization data from the structure";
|
||||||
|
OPI_TypeConversion.GetKeyValueCollection(BasicData, ErrorText);
|
||||||
If TypeOf(BasicData) = Type("Array") Then
|
|
||||||
Raise "Error of obtaining authorization data from the structure";
|
|
||||||
EndIf;
|
|
||||||
|
|
||||||
RequiredFieldsArray = New Array;
|
RequiredFieldsArray = New Array;
|
||||||
RequiredFieldsArray.Add("AccessKey");
|
RequiredFieldsArray.Add("AccessKey");
|
||||||
@@ -526,22 +564,36 @@ Procedure CheckBasicData(BasicData)
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure AddAdditionalHeaders(Request, Val Headers)
|
Procedure AddAdditionalHeaders(Receiver, Val Headers)
|
||||||
|
|
||||||
If Not ValueIsFilled(Headers) Then
|
If Not ValueIsFilled(Headers) Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(Headers);
|
ReceiverType = TypeOf(Receiver);
|
||||||
|
ErrorText = "Error setting additional headers";
|
||||||
|
OPI_TypeConversion.GetKeyValueCollection(Headers, ErrorText);
|
||||||
|
|
||||||
|
If ReceiverType = Type("HTTPRequest") Then
|
||||||
|
|
||||||
|
For Each Title In Headers Do
|
||||||
|
Receiver.Headers.Insert(Title.Key, Title.Value);
|
||||||
|
EndDo;
|
||||||
|
|
||||||
|
Else
|
||||||
|
|
||||||
|
If Not ValueIsFilled(Receiver) Then
|
||||||
|
Receiver = New Map;
|
||||||
|
Else
|
||||||
|
OPI_TypeConversion.GetKeyValueCollection(Headers, ErrorText);
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
For Each Title In Headers Do
|
||||||
|
Receiver.Insert(Title.Key, Title.Value);
|
||||||
|
EndDo;
|
||||||
|
|
||||||
If TypeOf(Headers) = Type("Array") Then
|
|
||||||
Raise "Error setting additional headers";
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
For Each Title In Headers Do
|
|
||||||
Request.Headers.Insert(Title.Key, Title.Value);
|
|
||||||
EndDo;
|
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|||||||
@@ -1954,6 +1954,13 @@ Procedure Check_S3Success(Val Result) Export
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure Check_S3NotFound(Val Result) Export
|
||||||
|
|
||||||
|
NotFound = Result["status"] = 404;
|
||||||
|
ExpectsThat(NotFound).Равно(True);
|
||||||
|
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|||||||
@@ -2112,6 +2112,7 @@ Procedure AWS_BucketsManagment() Export
|
|||||||
|
|
||||||
S3_CreateBucket(TestParameters);
|
S3_CreateBucket(TestParameters);
|
||||||
S3_GetBucketsList(TestParameters);
|
S3_GetBucketsList(TestParameters);
|
||||||
|
S3_CheckBucketAvailability(TestParameters);
|
||||||
S3_DeleteBucket(TestParameters);
|
S3_DeleteBucket(TestParameters);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
@@ -14618,10 +14619,22 @@ Procedure S3_CreateBucket(FunctionParameters)
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.CreateBucket(Name, BasicData);
|
Result = OPI_S3.CreateBucket(Name, BasicData);
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket (DB)", "S3"); // SKIP
|
||||||
|
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
|
||||||
|
BasicData.Insert("URL", FunctionParameters["S3_URL"]); // SKIP
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CreateBucket(Name, BasicData, False);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket", "S3");
|
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket", "S3");
|
||||||
@@ -14638,10 +14651,21 @@ Procedure S3_DeleteBucket(FunctionParameters)
|
|||||||
|
|
||||||
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
Name = "opi-newbucket2";
|
// Directory bucket
|
||||||
|
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
Result = OPI_S3.DeleteBucket(Name, BasicData);
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "DeleteBucket (DB)", "S3"); // SKIP
|
||||||
|
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
|
||||||
|
|
||||||
|
// General purpose bucket
|
||||||
|
|
||||||
|
Name = "opi-gpbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.DeleteBucket(Name, BasicData, False);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_TestDataRetrieval.WriteLog(Result, "DeleteBucket", "S3");
|
OPI_TestDataRetrieval.WriteLog(Result, "DeleteBucket", "S3");
|
||||||
@@ -14667,6 +14691,30 @@ Procedure S3_GetBucketsList(FunctionParameters)
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure S3_CheckBucketAvailability(FunctionParameters)
|
||||||
|
|
||||||
|
URL = FunctionParameters["S3_URL"];
|
||||||
|
AccessKey = FunctionParameters["S3_AccessKey"];
|
||||||
|
SecretKey = FunctionParameters["S3_SecretKey"];
|
||||||
|
Region = "BTC";
|
||||||
|
|
||||||
|
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
|
||||||
|
Name = "opi-dirbucket1";
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True);
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "CheckBucketAvailability", "S3"); // SKIP
|
||||||
|
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
|
||||||
|
|
||||||
|
Result = OPI_S3.CheckBucketAvailability(Name, BasicData, True, "1234");
|
||||||
|
|
||||||
|
// END
|
||||||
|
|
||||||
|
OPI_TestDataRetrieval.WriteLog(Result, "CheckBucketAvailability (account)", "S3");
|
||||||
|
OPI_TestDataRetrieval.Check_S3NotFound(Result);
|
||||||
|
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|||||||
@@ -151,6 +151,16 @@ Procedure GetCollection(Value) Export
|
|||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure GetKeyValueCollection(Value, Val ErrorText) Export
|
||||||
|
|
||||||
|
GetCollection(Value);
|
||||||
|
|
||||||
|
If TypeOf(Value) = Type("Array") Then
|
||||||
|
Raise ErrorText;
|
||||||
|
EndIf;
|
||||||
|
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetArray(Value) Export
|
Procedure GetArray(Value) Export
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Array") Then
|
If TypeOf(Value) = Type("Array") Then
|
||||||
|
|||||||
@@ -113,6 +113,16 @@
|
|||||||
NewLine.Область = "Buckets managment";
|
NewLine.Область = "Buckets managment";
|
||||||
|
|
||||||
|
|
||||||
|
NewLine = CompositionTable.Add();
|
||||||
|
NewLine.Библиотека = "s3";
|
||||||
|
NewLine.Модуль = "OPI_S3";
|
||||||
|
NewLine.Метод = "CreateBucket";
|
||||||
|
NewLine.МетодПоиска = "CREATEBUCKET";
|
||||||
|
NewLine.Параметр = "--dir";
|
||||||
|
NewLine.Описание = "True > Directory Bucket, False > General Purpose Bucket (optional, def. val. - Yes)";
|
||||||
|
NewLine.Область = "Buckets managment";
|
||||||
|
|
||||||
|
|
||||||
NewLine = CompositionTable.Add();
|
NewLine = CompositionTable.Add();
|
||||||
NewLine.Библиотека = "s3";
|
NewLine.Библиотека = "s3";
|
||||||
NewLine.Модуль = "OPI_S3";
|
NewLine.Модуль = "OPI_S3";
|
||||||
@@ -149,6 +159,67 @@
|
|||||||
NewLine.Модуль = "OPI_S3";
|
NewLine.Модуль = "OPI_S3";
|
||||||
NewLine.Метод = "DeleteBucket";
|
NewLine.Метод = "DeleteBucket";
|
||||||
NewLine.МетодПоиска = "DELETEBUCKET";
|
NewLine.МетодПоиска = "DELETEBUCKET";
|
||||||
|
NewLine.Параметр = "--dir";
|
||||||
|
NewLine.Описание = "True > Directory Bucket, False > General Purpose Bucket (optional, def. val. - Yes)";
|
||||||
|
NewLine.Область = "Buckets managment";
|
||||||
|
|
||||||
|
|
||||||
|
NewLine = CompositionTable.Add();
|
||||||
|
NewLine.Библиотека = "s3";
|
||||||
|
NewLine.Модуль = "OPI_S3";
|
||||||
|
NewLine.Метод = "DeleteBucket";
|
||||||
|
NewLine.МетодПоиска = "DELETEBUCKET";
|
||||||
|
NewLine.Параметр = "--headers";
|
||||||
|
NewLine.Описание = "Additional request headers, if necessary (optional, def. val. - Empty value)";
|
||||||
|
NewLine.Область = "Buckets managment";
|
||||||
|
|
||||||
|
|
||||||
|
NewLine = CompositionTable.Add();
|
||||||
|
NewLine.Библиотека = "s3";
|
||||||
|
NewLine.Модуль = "OPI_S3";
|
||||||
|
NewLine.Метод = "CheckBucketAvailability";
|
||||||
|
NewLine.МетодПоиска = "CHECKBUCKETAVAILABILITY";
|
||||||
|
NewLine.Параметр = "--name";
|
||||||
|
NewLine.Описание = "Bucket name";
|
||||||
|
NewLine.Область = "Buckets managment";
|
||||||
|
NewLine.ОписаниеМетода = "Checks if the bucket is available for the current account or account by ID";
|
||||||
|
|
||||||
|
|
||||||
|
NewLine = CompositionTable.Add();
|
||||||
|
NewLine.Библиотека = "s3";
|
||||||
|
NewLine.Модуль = "OPI_S3";
|
||||||
|
NewLine.Метод = "CheckBucketAvailability";
|
||||||
|
NewLine.МетодПоиска = "CHECKBUCKETAVAILABILITY";
|
||||||
|
NewLine.Параметр = "--data";
|
||||||
|
NewLine.Описание = "Basic request data. See GetBasicDataStructure";
|
||||||
|
NewLine.Область = "Buckets managment";
|
||||||
|
|
||||||
|
|
||||||
|
NewLine = CompositionTable.Add();
|
||||||
|
NewLine.Библиотека = "s3";
|
||||||
|
NewLine.Модуль = "OPI_S3";
|
||||||
|
NewLine.Метод = "CheckBucketAvailability";
|
||||||
|
NewLine.МетодПоиска = "CHECKBUCKETAVAILABILITY";
|
||||||
|
NewLine.Параметр = "--dir";
|
||||||
|
NewLine.Описание = "True > Directory Bucket, False > General Purpose Bucket (optional, def. val. - Yes)";
|
||||||
|
NewLine.Область = "Buckets managment";
|
||||||
|
|
||||||
|
|
||||||
|
NewLine = CompositionTable.Add();
|
||||||
|
NewLine.Библиотека = "s3";
|
||||||
|
NewLine.Модуль = "OPI_S3";
|
||||||
|
NewLine.Метод = "CheckBucketAvailability";
|
||||||
|
NewLine.МетодПоиска = "CHECKBUCKETAVAILABILITY";
|
||||||
|
NewLine.Параметр = "--account";
|
||||||
|
NewLine.Описание = "Account ID to verify that hes the bucket owner (optional, def. val. - Empty value)";
|
||||||
|
NewLine.Область = "Buckets managment";
|
||||||
|
|
||||||
|
|
||||||
|
NewLine = CompositionTable.Add();
|
||||||
|
NewLine.Библиотека = "s3";
|
||||||
|
NewLine.Модуль = "OPI_S3";
|
||||||
|
NewLine.Метод = "CheckBucketAvailability";
|
||||||
|
NewLine.МетодПоиска = "CHECKBUCKETAVAILABILITY";
|
||||||
NewLine.Параметр = "--headers";
|
NewLine.Параметр = "--headers";
|
||||||
NewLine.Описание = "Additional request headers, if necessary (optional, def. val. - Empty value)";
|
NewLine.Описание = "Additional request headers, if necessary (optional, def. val. - Empty value)";
|
||||||
NewLine.Область = "Buckets managment";
|
NewLine.Область = "Buckets managment";
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
|
|
||||||
// Проверить доступность бакета
|
// Проверить доступность бакета
|
||||||
// Проверяет доступность бакета для текущего аккаунта или аккаунта по ID
|
// Проверяет доступность бакета для текущего аккаунта или аккаунта по ID
|
||||||
//
|
//
|
||||||
// Примечание:
|
// Примечание:
|
||||||
// Метод в документации AWS: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
// Метод в документации AWS: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
||||||
//
|
//
|
||||||
@@ -164,26 +164,26 @@
|
|||||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||||
// IDАккаунта - Строка - ID аккаунта для проверки, что бакет принадлежит ему - account
|
// IDАккаунта - Строка - ID аккаунта для проверки, что бакет принадлежит ему - account
|
||||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||||
Функция ПроверитьДоступностьБакета(Знач Наименование
|
Функция ПроверитьДоступностьБакета(Знач Наименование
|
||||||
, Знач ОсновныеДанные
|
, Знач ОсновныеДанные
|
||||||
, Знач Каталог = Истина
|
, Знач Каталог = Истина
|
||||||
, Знач IDАккаунта = ""
|
, Знач IDАккаунта = ""
|
||||||
, Знач Заголовки = Неопределено) Экспорт
|
, Знач Заголовки = Неопределено) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАккаунта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАккаунта);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(IDАккаунта) Тогда
|
Если ЗначениеЗаполнено(IDАккаунта) Тогда
|
||||||
ЗаголовокАккаунта = Новый Соответствие();
|
ЗаголовокАккаунта = Новый Соответствие();
|
||||||
ЗаголовокАккаунта.Вставить("x-amz-expected-bucket-owner", IDАккаунта);
|
ЗаголовокАккаунта.Вставить("x-amz-expected-bucket-owner", IDАккаунта);
|
||||||
ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокАккаунта);
|
ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокАккаунта);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "HEAD", Заголовки);
|
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "HEAD", Заголовки);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список бакетов
|
// Получить список бакетов
|
||||||
@@ -343,9 +343,9 @@
|
|||||||
КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос));
|
КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос));
|
||||||
|
|
||||||
Для Н = 1 По 4 Цикл
|
Для Н = 1 По 4 Цикл
|
||||||
|
|
||||||
ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = 4, "", Символы.ПС);
|
ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = 4, "", Символы.ПС);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос);
|
СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос);
|
||||||
@@ -492,17 +492,17 @@
|
|||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
||||||
|
|
||||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||||
|
|
||||||
Если Каталог Тогда
|
Если Каталог Тогда
|
||||||
URL = URL + Имя;
|
URL = URL + Имя;
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Если СтрНайти(URL, "://") Тогда
|
Если СтрНайти(URL, "://") Тогда
|
||||||
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
|
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
|
||||||
Иначе
|
Иначе
|
||||||
URL = Имя + "." + URL;
|
URL = Имя + "." + URL;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОсновныеДанные.Вставить("URL", URL);
|
ОсновныеДанные.Вставить("URL", URL);
|
||||||
@@ -545,9 +545,9 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
|
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
|
||||||
|
|
||||||
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
|
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ОсновныеДанные, ТекстОшибки);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ОсновныеДанные, ТекстОшибки);
|
||||||
|
|
||||||
МассивНеобходимыхПолей = Новый Массив;
|
МассивНеобходимыхПолей = Новый Массив;
|
||||||
МассивНеобходимыхПолей.Добавить("AccessKey");
|
МассивНеобходимыхПолей.Добавить("AccessKey");
|
||||||
@@ -570,30 +570,30 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТипПриемника = ТипЗнч(Приемник);
|
ТипПриемника = ТипЗнч(Приемник);
|
||||||
ТекстОшибки = "Ошибка установки дополнительных заголовков";
|
ТекстОшибки = "Ошибка установки дополнительных заголовков";
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
||||||
|
|
||||||
Если ТипПриемника = Тип("HTTPЗапрос") Тогда
|
|
||||||
|
|
||||||
Для Каждого Заголовок Из Заголовки Цикл
|
Если ТипПриемника = Тип("HTTPЗапрос") Тогда
|
||||||
Приемник.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Иначе
|
Для Каждого Заголовок Из Заголовки Цикл
|
||||||
|
Приемник.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
||||||
Если Не ЗначениеЗаполнено(Приемник) Тогда
|
КонецЦикла;
|
||||||
Приемник = Новый Соответствие;
|
|
||||||
Иначе
|
Иначе
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
|
||||||
КонецЕсли;
|
Если Не ЗначениеЗаполнено(Приемник) Тогда
|
||||||
|
Приемник = Новый Соответствие;
|
||||||
Для Каждого Заголовок Из Заголовки Цикл
|
Иначе
|
||||||
Приемник.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
||||||
КонецЦикла;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Каждого Заголовок Из Заголовки Цикл
|
||||||
|
Приемник.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|||||||
@@ -14619,20 +14619,20 @@
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
// Directory bucket
|
// Directory bucket
|
||||||
|
|
||||||
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
Наименование = "opi-dirbucket1";
|
|
||||||
|
|
||||||
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные);
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные);
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБакет (DB)", "S3"); // SKIP
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБакет (DB)", "S3"); // SKIP
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||||
|
|
||||||
// General purpose bucket
|
// General purpose bucket
|
||||||
|
|
||||||
Наименование = "opi-gpbucket1";
|
Наименование = "opi-gpbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные, Ложь);
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные, Ложь);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
@@ -14651,21 +14651,21 @@
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
// Directory bucket
|
// Directory bucket
|
||||||
|
|
||||||
|
Имя = "opi-dirbucket1";
|
||||||
|
|
||||||
Имя = "opi-dirbucket1";
|
|
||||||
|
|
||||||
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет (DB)", "S3"); // SKIP
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет (DB)", "S3"); // SKIP
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||||
|
|
||||||
// General purpose bucket
|
// General purpose bucket
|
||||||
|
|
||||||
Имя = "opi-gpbucket1";
|
Имя = "opi-gpbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные, Ложь);
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные, Ложь);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет", "S3");
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет", "S3");
|
||||||
@@ -14692,27 +14692,27 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура S3_ПроверитьДоступностьБакета(ПараметрыФункции)
|
Процедура S3_ПроверитьДоступностьБакета(ПараметрыФункции)
|
||||||
|
|
||||||
URL = ПараметрыФункции["S3_URL"];
|
URL = ПараметрыФункции["S3_URL"];
|
||||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||||
Region = "BTC";
|
Region = "BTC";
|
||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
Наименование = "opi-dirbucket1";
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина);
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина);
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||||
|
|
||||||
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3");
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3");
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3НеНайдено(Результат);
|
OPI_ПолучениеДанныхТестов.Проверка_S3НеНайдено(Результат);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|||||||
@@ -1997,9 +1997,9 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||||
|
|
||||||
Модуль = Вычислить(Имя);
|
Модуль = Вычислить(Имя);
|
||||||
|
|
||||||
Возврат Модуль;
|
Возврат Модуль;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
|||||||
@@ -152,13 +152,13 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьКоллекциюКлючИЗначение(Значение, Знач СообщениеОшибки) Экспорт
|
Процедура ПолучитьКоллекциюКлючИЗначение(Значение, Знач СообщениеОшибки) Экспорт
|
||||||
|
|
||||||
ПолучитьКоллекцию(Значение);
|
ПолучитьКоллекцию(Значение);
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||||
ВызватьИсключение СообщениеОшибки;
|
ВызватьИсключение СообщениеОшибки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьМассив(Значение) Экспорт
|
Процедура ПолучитьМассив(Значение) Экспорт
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
|
|
||||||
// Проверить доступность бакета
|
// Проверить доступность бакета
|
||||||
// Проверяет доступность бакета для текущего аккаунта или аккаунта по ID
|
// Проверяет доступность бакета для текущего аккаунта или аккаунта по ID
|
||||||
//
|
//
|
||||||
// Примечание:
|
// Примечание:
|
||||||
// Метод в документации AWS: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
// Метод в документации AWS: [HeadBucket](@docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
|
||||||
//
|
//
|
||||||
@@ -164,26 +164,26 @@
|
|||||||
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
|
||||||
// IDАккаунта - Строка - ID аккаунта для проверки, что бакет принадлежит ему - account
|
// IDАккаунта - Строка - ID аккаунта для проверки, что бакет принадлежит ему - account
|
||||||
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||||
Функция ПроверитьДоступностьБакета(Знач Наименование
|
Функция ПроверитьДоступностьБакета(Знач Наименование
|
||||||
, Знач ОсновныеДанные
|
, Знач ОсновныеДанные
|
||||||
, Знач Каталог = Истина
|
, Знач Каталог = Истина
|
||||||
, Знач IDАккаунта = ""
|
, Знач IDАккаунта = ""
|
||||||
, Знач Заголовки = Неопределено) Экспорт
|
, Знач Заголовки = Неопределено) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАккаунта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDАккаунта);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(IDАккаунта) Тогда
|
Если ЗначениеЗаполнено(IDАккаунта) Тогда
|
||||||
ЗаголовокАккаунта = Новый Соответствие();
|
ЗаголовокАккаунта = Новый Соответствие();
|
||||||
ЗаголовокАккаунта.Вставить("x-amz-expected-bucket-owner", IDАккаунта);
|
ЗаголовокАккаунта.Вставить("x-amz-expected-bucket-owner", IDАккаунта);
|
||||||
ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокАккаунта);
|
ДобавитьДополнительныеЗаголовки(Заголовки, ЗаголовокАккаунта);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "HEAD", Заголовки);
|
Ответ = УправлениеБакетом(Наименование, ОсновныеДанные, Каталог, "HEAD", Заголовки);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список бакетов
|
// Получить список бакетов
|
||||||
@@ -343,9 +343,9 @@
|
|||||||
КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос));
|
КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос));
|
||||||
|
|
||||||
Для Н = 1 По 4 Цикл
|
Для Н = 1 По 4 Цикл
|
||||||
|
|
||||||
ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = 4, "", Символы.ПС);
|
ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = 4, "", Символы.ПС);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос);
|
СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос);
|
||||||
@@ -492,17 +492,17 @@
|
|||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
|
||||||
|
|
||||||
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
URL = ПолучитьURLСервиса(ОсновныеДанные);
|
||||||
|
|
||||||
Если Каталог Тогда
|
Если Каталог Тогда
|
||||||
URL = URL + Имя;
|
URL = URL + Имя;
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Если СтрНайти(URL, "://") Тогда
|
Если СтрНайти(URL, "://") Тогда
|
||||||
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
|
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
|
||||||
Иначе
|
Иначе
|
||||||
URL = Имя + "." + URL;
|
URL = Имя + "." + URL;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОсновныеДанные.Вставить("URL", URL);
|
ОсновныеДанные.Вставить("URL", URL);
|
||||||
@@ -545,9 +545,9 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
|
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
|
||||||
|
|
||||||
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
|
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ОсновныеДанные, ТекстОшибки);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ОсновныеДанные, ТекстОшибки);
|
||||||
|
|
||||||
МассивНеобходимыхПолей = Новый Массив;
|
МассивНеобходимыхПолей = Новый Массив;
|
||||||
МассивНеобходимыхПолей.Добавить("AccessKey");
|
МассивНеобходимыхПолей.Добавить("AccessKey");
|
||||||
@@ -570,30 +570,30 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТипПриемника = ТипЗнч(Приемник);
|
ТипПриемника = ТипЗнч(Приемник);
|
||||||
ТекстОшибки = "Ошибка установки дополнительных заголовков";
|
ТекстОшибки = "Ошибка установки дополнительных заголовков";
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
||||||
|
|
||||||
Если ТипПриемника = Тип("HTTPЗапрос") Тогда
|
|
||||||
|
|
||||||
Для Каждого Заголовок Из Заголовки Цикл
|
Если ТипПриемника = Тип("HTTPЗапрос") Тогда
|
||||||
Приемник.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Иначе
|
Для Каждого Заголовок Из Заголовки Цикл
|
||||||
|
Приемник.Заголовки.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
||||||
Если Не ЗначениеЗаполнено(Приемник) Тогда
|
КонецЦикла;
|
||||||
Приемник = Новый Соответствие;
|
|
||||||
Иначе
|
Иначе
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
|
||||||
КонецЕсли;
|
Если Не ЗначениеЗаполнено(Приемник) Тогда
|
||||||
|
Приемник = Новый Соответствие;
|
||||||
Для Каждого Заголовок Из Заголовки Цикл
|
Иначе
|
||||||
Приемник.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
||||||
КонецЦикла;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Каждого Заголовок Из Заголовки Цикл
|
||||||
|
Приемник.Вставить(Заголовок.Ключ, Заголовок.Значение);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|||||||
@@ -152,13 +152,13 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьКоллекциюКлючИЗначение(Значение, Знач СообщениеОшибки) Экспорт
|
Процедура ПолучитьКоллекциюКлючИЗначение(Значение, Знач СообщениеОшибки) Экспорт
|
||||||
|
|
||||||
ПолучитьКоллекцию(Значение);
|
ПолучитьКоллекцию(Значение);
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||||
ВызватьИсключение СообщениеОшибки;
|
ВызватьИсключение СообщениеОшибки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьМассив(Значение) Экспорт
|
Процедура ПолучитьМассив(Значение) Экспорт
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||||
|
|
||||||
// MIT License
|
// MIT License
|
||||||
|
|
||||||
@@ -14619,20 +14619,20 @@
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
// Directory bucket
|
// Directory bucket
|
||||||
|
|
||||||
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
Наименование = "opi-dirbucket1";
|
|
||||||
|
|
||||||
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные);
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные);
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБакет (DB)", "S3"); // SKIP
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБакет (DB)", "S3"); // SKIP
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||||
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
|
||||||
|
|
||||||
// General purpose bucket
|
// General purpose bucket
|
||||||
|
|
||||||
Наименование = "opi-gpbucket1";
|
Наименование = "opi-gpbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные, Ложь);
|
Результат = OPI_S3.СоздатьБакет(Наименование, ОсновныеДанные, Ложь);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
@@ -14651,21 +14651,21 @@
|
|||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
|
|
||||||
// Directory bucket
|
// Directory bucket
|
||||||
|
|
||||||
|
Имя = "opi-dirbucket1";
|
||||||
|
|
||||||
Имя = "opi-dirbucket1";
|
|
||||||
|
|
||||||
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные);
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет (DB)", "S3"); // SKIP
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет (DB)", "S3"); // SKIP
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||||
|
|
||||||
// General purpose bucket
|
// General purpose bucket
|
||||||
|
|
||||||
Имя = "opi-gpbucket1";
|
Имя = "opi-gpbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные, Ложь);
|
Результат = OPI_S3.УдалитьБакет(Имя, ОсновныеДанные, Ложь);
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет", "S3");
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБакет", "S3");
|
||||||
@@ -14692,27 +14692,27 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура S3_ПроверитьДоступностьБакета(ПараметрыФункции)
|
Процедура S3_ПроверитьДоступностьБакета(ПараметрыФункции)
|
||||||
|
|
||||||
URL = ПараметрыФункции["S3_URL"];
|
URL = ПараметрыФункции["S3_URL"];
|
||||||
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
AccessKey = ПараметрыФункции["S3_AccessKey"];
|
||||||
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
SecretKey = ПараметрыФункции["S3_SecretKey"];
|
||||||
Region = "BTC";
|
Region = "BTC";
|
||||||
|
|
||||||
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
|
||||||
Наименование = "opi-dirbucket1";
|
Наименование = "opi-dirbucket1";
|
||||||
|
|
||||||
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина);
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина);
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета", "S3"); // SKIP
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
|
||||||
|
|
||||||
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
|
Результат = OPI_S3.ПроверитьДоступностьБакета(Наименование, ОсновныеДанные, Истина, "1234");
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3");
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПроверитьДоступностьБакета (аккаунт)", "S3");
|
||||||
OPI_ПолучениеДанныхТестов.Проверка_S3НеНайдено(Результат);
|
OPI_ПолучениеДанныхТестов.Проверка_S3НеНайдено(Результат);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|||||||
@@ -113,6 +113,16 @@
|
|||||||
НоваяСтрока.Область = "Работа с бакетами";
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "s3";
|
||||||
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
|
НоваяСтрока.Метод = "СоздатьБакет";
|
||||||
|
НоваяСтрока.МетодПоиска = "СОЗДАТЬБАКЕТ";
|
||||||
|
НоваяСтрока.Параметр = "--dir";
|
||||||
|
НоваяСтрока.Описание = "Истина > Directory Bucket, Ложь > General Purpose Bucket (необяз. по ум. - Да)";
|
||||||
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
НоваяСтрока.Библиотека = "s3";
|
НоваяСтрока.Библиотека = "s3";
|
||||||
НоваяСтрока.Модуль = "OPI_S3";
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
@@ -149,6 +159,67 @@
|
|||||||
НоваяСтрока.Модуль = "OPI_S3";
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
НоваяСтрока.Метод = "УдалитьБакет";
|
НоваяСтрока.Метод = "УдалитьБакет";
|
||||||
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАКЕТ";
|
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАКЕТ";
|
||||||
|
НоваяСтрока.Параметр = "--dir";
|
||||||
|
НоваяСтрока.Описание = "Истина > Directory Bucket, Ложь > General Purpose Bucket (необяз. по ум. - Да)";
|
||||||
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "s3";
|
||||||
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
|
НоваяСтрока.Метод = "УдалитьБакет";
|
||||||
|
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАКЕТ";
|
||||||
|
НоваяСтрока.Параметр = "--headers";
|
||||||
|
НоваяСтрока.Описание = "Дополнительные заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)";
|
||||||
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "s3";
|
||||||
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
|
НоваяСтрока.Метод = "ПроверитьДоступностьБакета";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПРОВЕРИТЬДОСТУПНОСТЬБАКЕТА";
|
||||||
|
НоваяСтрока.Параметр = "--name";
|
||||||
|
НоваяСтрока.Описание = "Наименование бакета";
|
||||||
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
НоваяСтрока.ОписаниеМетода = "Проверяет доступность бакета для текущего аккаунта или аккаунта по ID";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "s3";
|
||||||
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
|
НоваяСтрока.Метод = "ПроверитьДоступностьБакета";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПРОВЕРИТЬДОСТУПНОСТЬБАКЕТА";
|
||||||
|
НоваяСтрока.Параметр = "--data";
|
||||||
|
НоваяСтрока.Описание = "Основные данные запроса. См. ПолучитьСтруктуруДанных";
|
||||||
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "s3";
|
||||||
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
|
НоваяСтрока.Метод = "ПроверитьДоступностьБакета";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПРОВЕРИТЬДОСТУПНОСТЬБАКЕТА";
|
||||||
|
НоваяСтрока.Параметр = "--dir";
|
||||||
|
НоваяСтрока.Описание = "Истина > Directory Bucket, Ложь > General Purpose Bucket (необяз. по ум. - Да)";
|
||||||
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "s3";
|
||||||
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
|
НоваяСтрока.Метод = "ПроверитьДоступностьБакета";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПРОВЕРИТЬДОСТУПНОСТЬБАКЕТА";
|
||||||
|
НоваяСтрока.Параметр = "--account";
|
||||||
|
НоваяСтрока.Описание = "ID аккаунта для проверки, что бакет принадлежит ему (необяз. по ум. - Пустое значение)";
|
||||||
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|
||||||
|
|
||||||
|
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||||
|
НоваяСтрока.Библиотека = "s3";
|
||||||
|
НоваяСтрока.Модуль = "OPI_S3";
|
||||||
|
НоваяСтрока.Метод = "ПроверитьДоступностьБакета";
|
||||||
|
НоваяСтрока.МетодПоиска = "ПРОВЕРИТЬДОСТУПНОСТЬБАКЕТА";
|
||||||
НоваяСтрока.Параметр = "--headers";
|
НоваяСтрока.Параметр = "--headers";
|
||||||
НоваяСтрока.Описание = "Дополнительные заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)";
|
НоваяСтрока.Описание = "Дополнительные заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)";
|
||||||
НоваяСтрока.Область = "Работа с бакетами";
|
НоваяСтрока.Область = "Работа с бакетами";
|
||||||
|
|||||||
Reference in New Issue
Block a user