1
0
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:
Vitaly the Alpaca (bot)
2024-11-14 11:10:08 +03:00
parent e3cb6ccb0e
commit 30fe461abe
36 changed files with 6213 additions and 5627 deletions
+6 -2
View File
@@ -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
View File
@@ -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");
+9 -1
View File
@@ -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);
+9 -1
View File
@@ -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 | &#x2714; | Bucket name | | Name | --name | String | &#x2714; | Bucket name |
| BasicData | --data | Structure of KeyAndValue | &#x2714; | Basic request data. See GetBasicDataStructure | | BasicData | --data | Structure of KeyAndValue | &#x2714; | Basic request data. See GetBasicDataStructure |
| Directory | --dir | Boolean | &#x2716; | True > Directory Bucket, False > General Purpose Bucket |
| Headers | --headers | Map Of KeyAndValue | &#x2716; | Additional request headers, if necessary | | Headers | --headers | Map Of KeyAndValue | &#x2716; | 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 | &#x2714; | Bucket name | | Name | --name | String | &#x2714; | Bucket name |
| BasicData | --data | Structure of KeyAndValue | &#x2714; | Basic request data. See GetBasicDataStructure | | BasicData | --data | Structure of KeyAndValue | &#x2714; | Basic request data. See GetBasicDataStructure |
| Directory | --dir | Boolean | &#x2716; | True > Directory Bucket, False > General Purpose Bucket |
| Headers | --headers | Map Of KeyAndValue | &#x2716; | Additional request headers, if necessary | | Headers | --headers | Map Of KeyAndValue | &#x2716; | 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 | Строка | &#x2714; | Наименование бакета |
| ОсновныеДанные | --data | Структура Из КлючИЗначение | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных |
| Каталог | --dir | Булево | &#x2716; | Истина > Directory Bucket, Ложь > General Purpose Bucket |
| IDАккаунта | --account | Строка | &#x2716; | ID аккаунта для проверки, что бакет принадлежит ему |
| Заголовки | --headers | Соответствие Из КлючИЗначение | &#x2716; | Дополнительные заголовки запроса, если необходимо |
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный 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 | Строка | &#x2714; | Наименование бакета | | Наименование | --name | Строка | &#x2714; | Наименование бакета |
| ОсновныеДанные | --data | Структура Из КлючИЗначение | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных | | ОсновныеДанные | --data | Структура Из КлючИЗначение | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных |
| Каталог | --dir | Булево | &#x2716; | Истина > Directory Bucket, Ложь > General Purpose Bucket |
| Заголовки | --headers | Соответствие Из КлючИЗначение | &#x2716; | Дополнительные заголовки запроса, если необходимо | | Заголовки | --headers | Соответствие Из КлючИЗначение | &#x2716; | Дополнительные заголовки запроса, если необходимо |
@@ -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 | Строка | &#x2714; | Наименование бакета | | Наименование | --name | Строка | &#x2714; | Наименование бакета |
| ОсновныеДанные | --data | Структура Из КлючИЗначение | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных | | ОсновныеДанные | --data | Структура Из КлючИЗначение | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных |
| Каталог | --dir | Булево | &#x2716; | Истина > Directory Bucket, Ложь > General Purpose Bucket |
| Заголовки | --headers | Соответствие Из КлючИЗначение | &#x2716; | Дополнительные заголовки запроса, если необходимо | | Заголовки | --headers | Соответствие Из КлючИЗначение | &#x2716; | Дополнительные заголовки запроса, если необходимо |
@@ -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
View File
File diff suppressed because it is too large Load Diff
+83 -31
View File
@@ -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
+83 -31
View File
@@ -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";
+51 -51
View File
@@ -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 @@
КонецПроцедуры КонецПроцедуры
Процедура ПолучитьКоллекциюКлючИЗначение(Значение, Знач СообщениеОшибки) Экспорт Процедура ПолучитьКоллекциюКлючИЗначение(Значение, Знач СообщениеОшибки) Экспорт
ПолучитьКоллекцию(Значение); ПолучитьКоллекцию(Значение);
Если ТипЗнч(Значение) = Тип("Массив") Тогда Если ТипЗнч(Значение) = Тип("Массив") Тогда
ВызватьИсключение СообщениеОшибки; ВызватьИсключение СообщениеОшибки;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
Процедура ПолучитьМассив(Значение) Экспорт Процедура ПолучитьМассив(Значение) Экспорт
+51 -51
View File
@@ -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";
НоваяСтрока.Описание = "Дополнительные заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)"; НоваяСтрока.Описание = "Дополнительные заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Работа с бакетами"; НоваяСтрока.Область = "Работа с бакетами";