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-13 09:59:01 +03:00
parent e5dd33cb62
commit a6eb894727
29 changed files with 6106 additions and 5317 deletions
+60 -2
View File
@@ -1255,9 +1255,51 @@ jobs:
key: logs-YandexMetrika
path: ./docs/en/results/YandexMetrika
Testing-S3:
runs-on: ubuntu-latest
needs: [Decode, Build]
steps:
- uses: actions/checkout@v2
- uses: otymko/setup-onescript@v1.4
with:
version: 1.9.1
- name: Получить тестовые данные из кэша
uses: actions/cache/restore@v3
with:
key: test-data
path: ./data.json
- name: Установить asserts и 1testrunner
run: |
opm install asserts
opm install 1testrunner
- name: Установить OInt
run: |
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'https://api.athenaeum.digital/tc/job/Release/lastSuccessfulBuild/artifact/1.15.1/oint_1.15.1_all_en.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
- name: Buckets managment
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os "CLI_AWS_BucketsManagment"
- name: Записать логи
if: ${{ cancelled() }} == false
uses: actions/cache/save@v3
with:
key: logs-S3
path: ./docs/en/results/S3
Encode:
runs-on: ubuntu-latest
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams,Testing-Ozon,Testing-Neocities,Testing-CDEK,Testing-YandexMetrika]
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams,Testing-Ozon,Testing-Neocities,Testing-CDEK,Testing-YandexMetrika,Testing-S3]
if: ${{ always() }}
permissions:
contents: write
@@ -1589,6 +1631,22 @@ jobs:
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-YandexMetrika"
- name: Получить логи S3
uses: actions/cache/restore@v3
with:
key: logs-S3
path: ./docs/en/results/S3
- name: Очистка логов S3
run: |
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-S3"
- name: Записать данные
uses: stefanzweifel/git-auto-commit-action@v5
@@ -1601,7 +1659,7 @@ jobs:
Clear-Cache:
runs-on: ubuntu-latest
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Testing-Ozon, Testing-Neocities, Testing-CDEK, Testing-YandexMetrika, Encode]
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Testing-Ozon, Testing-Neocities, Testing-CDEK, Testing-YandexMetrika, Testing-S3, Encode]
if: ${{ always() }}
steps:
- name: Очистка основного кэша
+11
View File
@@ -637,6 +637,17 @@ pipeline {
}
}
stage('Testing-S3') {
steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/en/OInt/tests/Modules/internal/OPI_TestsCLI.os" "CLI_AWS_BucketsManagment"'
}
}
}
}
post{
always{
+16
View File
@@ -1611,6 +1611,22 @@ def test_ozon(){
def test_s3(){
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 GetBasicDataStructure --url "test" --access "test" --secret "test" --region "test" --service "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 SendRequestWithoutBody --method "test" --data "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 CreateBucket --name "test" --data "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 DeleteBucket --name "test" --data "test" --debug --test '
}
}
+16
View File
@@ -1611,6 +1611,22 @@ def test_ozon(){
def test_s3(){
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 ПолучитьСтруктуруДанных --url "test" --access "test" --secret "test" --region "test" --service "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 ОтправитьЗапросБезТела --method "test" --data "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 СоздатьБакет --name "test" --data "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 УдалитьБакет --name "test" --data "test" --debug --test '
}
}
+11
View File
@@ -637,6 +637,17 @@ pipeline {
}
}
stage('Testing-S3') {
steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/en/OInt/tests/Modules/internal/OPI_Tests.os" "AWS_BucketsManagment"'
}
}
}
}
post{
always{
+5
View File
@@ -0,0 +1,5 @@
{
"URL": "storage-155.s3hoster.by",
"AccessKey": "BRN5RKJE67...",
"SecretKey": "NNhv+i9PrytpT8Tu0C1N..."
}
+10
View File
@@ -0,0 +1,10 @@
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
Authorization = OPI_S3.GetAuthStructure(URL, AccessKey, SecretKey, Region);
Name = "newbucket2";
Result = OPI_S3.CreateBucket(Name, Authorization);
@@ -0,0 +1,44 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Create bucket
Creates a new bucket with the specified name
`Function CreateBucket(Val Name, Val BasicData) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Name | --name | String | ✔ | Bucket name |
| BasicData | --data | String | ✔ | Basic request data. See GetBasicDataStructure |
Returns: Map Of KeyAndValue - serialized JSON response from storage
<br/>
```bsl title="1C:Enterprise/OneScript code example"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
Authorization = OPI_S3.GetAuthStructure(URL, AccessKey, SecretKey, Region);
Name = "newbucket2";
Result = OPI_S3.CreateBucket(Name, Authorization);
```
@@ -0,0 +1,44 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Delete bucket
Deletes the bucket by name
`Function DeleteBucket(Val Name, Val BasicData) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Name | --name | String | &#x2714; | Bucket name |
| BasicData | --data | String | &#x2714; | Basic request data. See GetBasicDataStructure |
Returns: Map Of KeyAndValue - serialized JSON response from storage
<br/>
```bsl title="1C:Enterprise/OneScript code example"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
Authorization = OPI_S3.GetAuthStructure(URL, AccessKey, SecretKey, Region);
Name = "newbucket2";
Result = OPI_S3.DeleteBucket(Name, Authorization);
```
@@ -0,0 +1,4 @@
{
"label": "Buckets managment",
"position": "3"
}
@@ -0,0 +1,38 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get basic data structure
Returns the basic data for request in structured form
`Function GetBasicDataStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val Service = "s3") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| URL | --url | String | &#x2714; | URL: domain for common methods or full URL with parameters for methods of direct request sending |
| AccessKey | --access | String | &#x2714; | Access key for authorization |
| SecretKey | --secret | String | &#x2714; | Secret key for authorization |
| Region | --region | String | &#x2714; | Service region |
| Service | --service | String | &#x2716; | Type of service, if different from s3 |
Returns: Structure of KeyAndValue - Basic request data structure
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```
@@ -0,0 +1,35 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Send request without body
Sends a simple http request without a body
`Function SendRequestWithoutBody(Val Method, Val BasicData) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Method | --method | String | &#x2714; | HTTP method |
| BasicData | --data | String | &#x2714; | Basic request data (with full URL). See GetBasicDataStructure |
Returns: Map Of KeyAndValue - serialized JSON response from storage
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```
@@ -0,0 +1,4 @@
{
"label": "Common methods",
"position": "2"
}
@@ -0,0 +1,44 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Создать бакет
Создает новый бакет с выбранным именем
`Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Наименование | --name | Строка | &#x2714; | Наименование бакета |
| ОсновныеДанные | --data | Строка | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных |
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
Имя = "newbucket2";
Результат = OPI_S3.СоздатьБакет(Имя, Авторизация);
```
@@ -0,0 +1,44 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Удалить бакет
Удаляет бакет с выбранным именем
`Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Наименование | --name | Строка | &#x2714; | Наименование бакета |
| ОсновныеДанные | --data | Строка | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных |
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
Авторизация = OPI_S3.ПолучитьСтруктуруАвторизации(URL, AccessKey, SecretKey, Region);
Имя = "newbucket2";
Результат = OPI_S3.УдалитьБакет(Имя, Авторизация);
```
@@ -0,0 +1,4 @@
{
"label": "Работа с бакетами",
"position": "3"
}
@@ -0,0 +1,38 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить структуру данных
Возвращает основные данные запроса в структурированном виде
`Функция ПолучитьСтруктуруДанных(Знач URL, Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| URL | --url | Строка | &#x2714; | URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов |
| AccessKey | --access | Строка | &#x2714; | Access key для авторизации |
| SecretKey | --secret | Строка | &#x2714; | Secret key для авторизации |
| Region | --region | Строка | &#x2714; | Регион сервиса |
| Service | --service | Строка | &#x2716; | Вид сервиса, если отличен от s3 |
Возвращаемое значение: Структура Из КлючИЗначение - Структура основных данных запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```
@@ -0,0 +1,35 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Отправить запрос без тела
Отправляет простой http запрос без тела
`Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Метод | --method | Строка | &#x2714; | HTTP метод |
| ОсновныеДанные | --data | Строка | &#x2714; | Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных |
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```
@@ -0,0 +1,4 @@
{
"label": "Общие методы",
"position": "2"
}
+5197 -5197
View File
File diff suppressed because it is too large Load Diff
+81 -33
View File
@@ -45,7 +45,19 @@
#Region CommonMethods
Function GetAuthStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val Service = "s3") Export
// Get basic data structure
// Returns the basic data for request in structured form
//
// Parameters:
// URL - String - URL: domain for common methods or full URL with parameters for methods of direct request sending - url
// AccessKey - String - Access key for authorization - access
// SecretKey - String - Secret key for authorization - secret
// Region - String - Service region - region
// Service - String - Type of service, if different from s3 - service
//
// Returns:
// Structure of KeyAndValue - Basic request data structure
Function GetBasicDataStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val Service = "s3") Export
AuthStructure = New Structure;
OPI_Tools.AddField("URL" , URL , "String", AuthStructure);
@@ -58,16 +70,29 @@ Function GetAuthStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val
EndFunction
Function SendRequestWithoutBody(Val URL, Val Authorization, Val Method) Export
// Send request without body
// Sends a simple http request without a body
//
// Parameters:
// Method - String - HTTP method - method
// BasicData - String - Basic request data (with full URL). See GetBasicDataStructure - data
//
// Returns:
// Map Of KeyAndValue - serialized JSON response from storage
Function SendRequestWithoutBody(Val Method, Val BasicData) Export
CheckBasicData(BasicData);
URL = BasicData["URL"];
URLStructure = OPI_Tools.SplitURL(URL);
Server = URLStructure["Server"];
Address = URLStructure["Address"];
Server = URLStructure["Server"];
Address = URLStructure["Address"];
Request = OPI_Tools.CreateRequest(Address);
Connection = OPI_Tools.CreateConnection(Server);
AuthorizationHeader = CreateAuthorizationHeader(Authorization, Request, Connection, Method);
AuthorizationHeader = CreateAuthorizationHeader(BasicData, Request, Connection, Method);
Request.Headers.Insert("Authorization", AuthorizationHeader);
Response = OPI_Tools.ExecuteRequest(Request, Connection, Method, , True);
@@ -81,16 +106,34 @@ EndFunction
#Region BucketsManagment
Function CreateBacket(Val Name, Val Authorization) Export
// Create bucket
// Creates a new bucket with the specified name
//
// Parameters:
// Name - String - Bucket name - name
// BasicData - String - Basic request data. See GetBasicDataStructure - data
//
// Returns:
// Map Of KeyAndValue - serialized JSON response from storage
Function CreateBucket(Val Name, Val BasicData) Export
Response = BucketManagment(Name, Authorization, "PUT");
Response = BucketManagment(Name, BasicData, "PUT");
Return Response;
EndFunction
Function DeleteBucket(Val Name, Val Authorization) Export
// Delete bucket
// Deletes the bucket by name
//
// Parameters:
// Name - String - Bucket name - name
// BasicData - String - Basic request data. See GetBasicDataStructure - data
//
// Returns:
// Map Of KeyAndValue - serialized JSON response from storage
Function DeleteBucket(Val Name, Val BasicData) Export
Response = BucketManagment(Name, Authorization, "DELETE");
Response = BucketManagment(Name, BasicData, "DELETE");
Return Response;
EndFunction
@@ -105,24 +148,6 @@ EndFunction
Function CreateAuthorizationHeader(Val DataStructure, Val Request, Val Connection, Val Method)
OPI_TypeConversion.GetCollection(DataStructure);
If TypeOf(DataStructure) = Type("Array") Then
Raise "Error of obtaining authorization data from the structure";
EndIf;
RequiredFieldsArray = New Array;
RequiredFieldsArray.Add("AccessKey");
RequiredFieldsArray.Add("SecretKey");
RequiredFieldsArray.Add("Region");
RequiredFieldsArray.Add("Service");
MissingFields = OPI_Tools.FindMissingCollectionFields(DataStructure, RequiredFieldsArray);
If MissingFields.Count() > 0 Then
Raise "The required authorization data is missing: " + StrConcat(MissingFields, ", ");
EndIf;
AccessKey = DataStructure["AccessKey"];
SecretKey = DataStructure["SecretKey"];
Region = DataStructure["Region"];
@@ -151,7 +176,7 @@ EndFunction
Function GetSignatureKey(Val SecretKey, Val Region, Val Service, Val CurrentDate)
SecretKey = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + SecretKey);
SecretKey = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + SecretKey);
DateData = ПолучитьДвоичныеДанныеИзСтроки(Format(CurrentDate, "DF=yyyyMMdd;"));
Region = ПолучитьДвоичныеДанныеИзСтроки(Region);
Service = ПолучитьДвоичныеДанныеИзСтроки(Service);
@@ -180,7 +205,7 @@ Function CreateCanonicalRequest(Val Request, Val Connection, Val Method)
RequestTemplate = "";
For N = 1 To 6 Do
For N = 1 To 6 Do
RequestTemplate = RequestTemplate + "%" + String(N) + ?(N = 6, "", Chars.LF);
EndDo;
@@ -230,11 +255,11 @@ Function CreateSignatureString(Val CanonicalRequest, Val Scope, Val CurrentDate)
CanonicalRequest = OPI_Cryptography.Hash(CanonicalRequest, HashFunction.SHA256);
CanonicalRequest = Lower(ПолучитьHexСтрокуИзДвоичныхДанных(CanonicalRequest));
For N = 1 To 4 Do
For N = 1 To 4 Do
StringTemplate = StringTemplate + "%" + String(N) + ?(N = 4, "", Chars.LF);
EndDo;
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
SignatureString = ПолучитьДвоичныеДанныеИзСтроки(SignatureString);
Return SignatureString;
@@ -260,7 +285,7 @@ Function GetParamsString(Val URI)
ParamsStart = StrFind(URI, "?");
If ParamsStart = 0 Then
If ParamsStart = 0 Then
ParameterString = "";
Else
URILength = StrLen(URI);
@@ -369,7 +394,7 @@ Function BucketManagment(Val Name, Val Authorization, Val Method)
URL = GetServiceURL(Authorization);
URL = URL + Name;
Response = SendRequestWithoutBody(URL, Authorization, Method);
Response = SendRequestWithoutBody(Method, Authorization);
Return Response;
@@ -407,6 +432,29 @@ Function SupportedResponse(Val Response)
EndFunction
Procedure CheckBasicData(BasicData)
OPI_TypeConversion.GetCollection(BasicData);
If TypeOf(BasicData) = Type("Array") Then
Raise "Error of obtaining authorization data from the structure";
EndIf;
RequiredFieldsArray = New Array;
RequiredFieldsArray.Add("AccessKey");
RequiredFieldsArray.Add("SecretKey");
RequiredFieldsArray.Add("Region");
RequiredFieldsArray.Add("Service");
RequiredFieldsArray.Add("URL");
MissingFields = OPI_Tools.FindMissingCollectionFields(BasicData, RequiredFieldsArray);
If MissingFields.Count() > 0 Then
Raise "The required authorization data is missing: " + StrConcat(MissingFields, ", ");
EndIf;
EndProcedure
#EndRegion
#EndRegion
@@ -2110,7 +2110,7 @@ Procedure AWS_BucketsManagment() Export
OPI_TestDataRetrieval.ParameterToCollection("S3_SecretKey", TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("S3_URL" , TestParameters);
S3_CreateBacket(TestParameters);
S3_CreateBucket(TestParameters);
S3_DeleteBucket(TestParameters);
EndProcedure
@@ -14608,7 +14608,7 @@ EndProcedure
#Region S3
Procedure S3_CreateBacket(FunctionParameters)
Procedure S3_CreateBucket(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
@@ -14619,11 +14619,11 @@ Procedure S3_CreateBacket(FunctionParameters)
Name = "newbucket2";
Result = OPI_S3.CreateBacket(Name, Authorization);
Result = OPI_S3.CreateBucket(Name, Authorization);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CreateBacket", "S3");
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
EndProcedure
+81 -33
View File
@@ -45,7 +45,19 @@
#Region CommonMethods
Function GetAuthStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val Service = "s3") Export
// Get basic data structure
// Returns the basic data for request in structured form
//
// Parameters:
// URL - String - URL: domain for common methods or full URL with parameters for methods of direct request sending - url
// AccessKey - String - Access key for authorization - access
// SecretKey - String - Secret key for authorization - secret
// Region - String - Service region - region
// Service - String - Type of service, if different from s3 - service
//
// Returns:
// Structure of KeyAndValue - Basic request data structure
Function GetBasicDataStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val Service = "s3") Export
AuthStructure = New Structure;
OPI_Tools.AddField("URL" , URL , "String", AuthStructure);
@@ -58,16 +70,29 @@ Function GetAuthStructure(Val URL, Val AccessKey, Val SecretKey, Val Region, Val
EndFunction
Function SendRequestWithoutBody(Val URL, Val Authorization, Val Method) Export
// Send request without body
// Sends a simple http request without a body
//
// Parameters:
// Method - String - HTTP method - method
// BasicData - String - Basic request data (with full URL). See GetBasicDataStructure - data
//
// Returns:
// Map Of KeyAndValue - serialized JSON response from storage
Function SendRequestWithoutBody(Val Method, Val BasicData) Export
CheckBasicData(BasicData);
URL = BasicData["URL"];
URLStructure = OPI_Tools.SplitURL(URL);
Server = URLStructure["Server"];
Address = URLStructure["Address"];
Server = URLStructure["Server"];
Address = URLStructure["Address"];
Request = OPI_Tools.CreateRequest(Address);
Connection = OPI_Tools.CreateConnection(Server);
AuthorizationHeader = CreateAuthorizationHeader(Authorization, Request, Connection, Method);
AuthorizationHeader = CreateAuthorizationHeader(BasicData, Request, Connection, Method);
Request.Headers.Insert("Authorization", AuthorizationHeader);
Response = OPI_Tools.ExecuteRequest(Request, Connection, Method, , True);
@@ -81,16 +106,34 @@ EndFunction
#Region BucketsManagment
Function CreateBacket(Val Name, Val Authorization) Export
// Create bucket
// Creates a new bucket with the specified name
//
// Parameters:
// Name - String - Bucket name - name
// BasicData - String - Basic request data. See GetBasicDataStructure - data
//
// Returns:
// Map Of KeyAndValue - serialized JSON response from storage
Function CreateBucket(Val Name, Val BasicData) Export
Response = BucketManagment(Name, Authorization, "PUT");
Response = BucketManagment(Name, BasicData, "PUT");
Return Response;
EndFunction
Function DeleteBucket(Val Name, Val Authorization) Export
// Delete bucket
// Deletes the bucket by name
//
// Parameters:
// Name - String - Bucket name - name
// BasicData - String - Basic request data. See GetBasicDataStructure - data
//
// Returns:
// Map Of KeyAndValue - serialized JSON response from storage
Function DeleteBucket(Val Name, Val BasicData) Export
Response = BucketManagment(Name, Authorization, "DELETE");
Response = BucketManagment(Name, BasicData, "DELETE");
Return Response;
EndFunction
@@ -105,24 +148,6 @@ EndFunction
Function CreateAuthorizationHeader(Val DataStructure, Val Request, Val Connection, Val Method)
OPI_TypeConversion.GetCollection(DataStructure);
If TypeOf(DataStructure) = Type("Array") Then
Raise "Error of obtaining authorization data from the structure";
EndIf;
RequiredFieldsArray = New Array;
RequiredFieldsArray.Add("AccessKey");
RequiredFieldsArray.Add("SecretKey");
RequiredFieldsArray.Add("Region");
RequiredFieldsArray.Add("Service");
MissingFields = OPI_Tools.FindMissingCollectionFields(DataStructure, RequiredFieldsArray);
If MissingFields.Count() > 0 Then
Raise "The required authorization data is missing: " + StrConcat(MissingFields, ", ");
EndIf;
AccessKey = DataStructure["AccessKey"];
SecretKey = DataStructure["SecretKey"];
Region = DataStructure["Region"];
@@ -151,7 +176,7 @@ EndFunction
Function GetSignatureKey(Val SecretKey, Val Region, Val Service, Val CurrentDate)
SecretKey = GetBinaryDataFromString("AWS4" + SecretKey);
SecretKey = GetBinaryDataFromString("AWS4" + SecretKey);
DateData = GetBinaryDataFromString(Format(CurrentDate, "DF=yyyyMMdd;"));
Region = GetBinaryDataFromString(Region);
Service = GetBinaryDataFromString(Service);
@@ -180,7 +205,7 @@ Function CreateCanonicalRequest(Val Request, Val Connection, Val Method)
RequestTemplate = "";
For N = 1 To 6 Do
For N = 1 To 6 Do
RequestTemplate = RequestTemplate + "%" + String(N) + ?(N = 6, "", Chars.LF);
EndDo;
@@ -230,11 +255,11 @@ Function CreateSignatureString(Val CanonicalRequest, Val Scope, Val CurrentDate)
CanonicalRequest = OPI_Cryptography.Hash(CanonicalRequest, HashFunction.SHA256);
CanonicalRequest = Lower(GetHexStringFromBinaryData(CanonicalRequest));
For N = 1 To 4 Do
For N = 1 To 4 Do
StringTemplate = StringTemplate + "%" + String(N) + ?(N = 4, "", Chars.LF);
EndDo;
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
SignatureString = StrTemplate(StringTemplate, Algorithm, DateISO, Scope, CanonicalRequest);
SignatureString = GetBinaryDataFromString(SignatureString);
Return SignatureString;
@@ -260,7 +285,7 @@ Function GetParamsString(Val URI)
ParamsStart = StrFind(URI, "?");
If ParamsStart = 0 Then
If ParamsStart = 0 Then
ParameterString = "";
Else
URILength = StrLen(URI);
@@ -369,7 +394,7 @@ Function BucketManagment(Val Name, Val Authorization, Val Method)
URL = GetServiceURL(Authorization);
URL = URL + Name;
Response = SendRequestWithoutBody(URL, Authorization, Method);
Response = SendRequestWithoutBody(Method, Authorization);
Return Response;
@@ -407,6 +432,29 @@ Function SupportedResponse(Val Response)
EndFunction
Procedure CheckBasicData(BasicData)
OPI_TypeConversion.GetCollection(BasicData);
If TypeOf(BasicData) = Type("Array") Then
Raise "Error of obtaining authorization data from the structure";
EndIf;
RequiredFieldsArray = New Array;
RequiredFieldsArray.Add("AccessKey");
RequiredFieldsArray.Add("SecretKey");
RequiredFieldsArray.Add("Region");
RequiredFieldsArray.Add("Service");
RequiredFieldsArray.Add("URL");
MissingFields = OPI_Tools.FindMissingCollectionFields(BasicData, RequiredFieldsArray);
If MissingFields.Count() > 0 Then
Raise "The required authorization data is missing: " + StrConcat(MissingFields, ", ");
EndIf;
EndProcedure
#EndRegion
#EndRegion
@@ -2110,7 +2110,7 @@ Procedure AWS_BucketsManagment() Export
OPI_TestDataRetrieval.ParameterToCollection("S3_SecretKey", TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("S3_URL" , TestParameters);
S3_CreateBacket(TestParameters);
S3_CreateBucket(TestParameters);
S3_DeleteBucket(TestParameters);
EndProcedure
@@ -14608,7 +14608,7 @@ EndProcedure
#Region S3
Procedure S3_CreateBacket(FunctionParameters)
Procedure S3_CreateBucket(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
@@ -14619,11 +14619,11 @@ Procedure S3_CreateBacket(FunctionParameters)
Name = "newbucket2";
Result = OPI_S3.CreateBacket(Name, Authorization);
Result = OPI_S3.CreateBucket(Name, Authorization);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CreateBacket", "S3");
OPI_TestDataRetrieval.WriteLog(Result, "CreateBucket", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
EndProcedure
@@ -9,6 +9,120 @@
CompositionTable.Columns.Add("Описание");
CompositionTable.Columns.Add("ОписаниеМетода");
CompositionTable.Columns.Add("Область");
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "GetBasicDataStructure";
NewLine.МетодПоиска = "GETBASICDATASTRUCTURE";
NewLine.Параметр = "--url";
NewLine.Описание = "URL: domain for common methods or full URL with parameters for methods of direct request sending";
NewLine.Область = "Common methods";
NewLine.ОписаниеМетода = "Returns the basic data for request in structured form";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "GetBasicDataStructure";
NewLine.МетодПоиска = "GETBASICDATASTRUCTURE";
NewLine.Параметр = "--access";
NewLine.Описание = "Access key for authorization";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "GetBasicDataStructure";
NewLine.МетодПоиска = "GETBASICDATASTRUCTURE";
NewLine.Параметр = "--secret";
NewLine.Описание = "Secret key for authorization";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "GetBasicDataStructure";
NewLine.МетодПоиска = "GETBASICDATASTRUCTURE";
NewLine.Параметр = "--region";
NewLine.Описание = "Service region";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "GetBasicDataStructure";
NewLine.МетодПоиска = "GETBASICDATASTRUCTURE";
NewLine.Параметр = "--service";
NewLine.Описание = "Type of service, if different from s3 (optional, def. val. - s3)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "SendRequestWithoutBody";
NewLine.МетодПоиска = "SENDREQUESTWITHOUTBODY";
NewLine.Параметр = "--method";
NewLine.Описание = "HTTP method";
NewLine.Область = "Common methods";
NewLine.ОписаниеМетода = "Sends a simple http request without a body";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "SendRequestWithoutBody";
NewLine.МетодПоиска = "SENDREQUESTWITHOUTBODY";
NewLine.Параметр = "--data";
NewLine.Описание = "Basic request data (with full URL). See GetBasicDataStructure";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "CreateBucket";
NewLine.МетодПоиска = "CREATEBUCKET";
NewLine.Параметр = "--name";
NewLine.Описание = "Bucket name";
NewLine.Область = "Buckets managment";
NewLine.ОписаниеМетода = "Creates a new bucket with the specified name";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "CreateBucket";
NewLine.МетодПоиска = "CREATEBUCKET";
NewLine.Параметр = "--data";
NewLine.Описание = "Basic request data. See GetBasicDataStructure";
NewLine.Область = "Buckets managment";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "DeleteBucket";
NewLine.МетодПоиска = "DELETEBUCKET";
NewLine.Параметр = "--name";
NewLine.Описание = "Bucket name";
NewLine.Область = "Buckets managment";
NewLine.ОписаниеМетода = "Deletes the bucket by name";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "DeleteBucket";
NewLine.МетодПоиска = "DELETEBUCKET";
NewLine.Параметр = "--data";
NewLine.Описание = "Basic request data. See GetBasicDataStructure";
NewLine.Область = "Buckets managment";
Return CompositionTable;
EndFunction
+21 -21
View File
@@ -47,14 +47,14 @@
// Получить структуру данных
// Возвращает основные данные запроса в структурированном виде
//
//
// Параметры:
// URL - Строка - URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов - url
// URL - Строка - URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов - url
// AccessKey - Строка - Access key для авторизации - access
// SecretKey - Строка - Secret key для авторизации - secret
// Region - Строка - Регион сервиса - region
// Service - Строка - Вид сервиса, если отличен от s3 - service
//
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура основных данных запроса
Функция ПолучитьСтруктуруДанных(Знач URL, Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт
@@ -72,19 +72,19 @@
// Отправить запрос без тела
// Отправляет простой http запрос без тела
//
//
// Параметры:
// Метод - Строка - HTTP метод - method
// ОсновныеДанные - Строка - Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных - data
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные) Экспорт
ПроверитьОсновныеДанные(ОсновныеДанные);
URL = ОсновныеДанные["URL"];
ПроверитьОсновныеДанные(ОсновныеДанные);
URL = ОсновныеДанные["URL"];
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
Сервер = СтруктураURL["Сервер"];
Адрес = СтруктураURL["Адрес"];
@@ -108,11 +108,11 @@
// Создать бакет
// Создает новый бакет с выбранным именем
//
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Строка - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные) Экспорт
@@ -124,11 +124,11 @@
// Удалить бакет
// Удаляет бакет с выбранным именем
//
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Строка - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные) Экспорт
@@ -178,9 +178,9 @@
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
КлючДанных = OPI_Криптография.HMACSHA256(СекретныйКлюч, ДанныеДата);
КлючРегиона = OPI_Криптография.HMACSHA256(КлючДанных, Регион);
@@ -205,7 +205,7 @@
ШаблонЗапроса = "";
Для Н = 1 По 6 Цикл
Для Н = 1 По 6 Цикл
ШаблонЗапроса = ШаблонЗапроса + "%" + Строка(Н) + ?(Н = 6, "", Символы.ПС);
КонецЦикла;
@@ -255,12 +255,12 @@
КаноническийЗапрос = OPI_Криптография.Хеш(КаноническийЗапрос, ХешФункция.SHA256);
КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос));
Для Н = 1 По 4 Цикл
Для Н = 1 По 4 Цикл
ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = 4, "", Символы.ПС);
КонецЦикла;
СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос);
СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи);
СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи);
Возврат СтрокаПодписи;
@@ -285,7 +285,7 @@
НачалоПараметров = СтрНайти(URI, "?");
Если НачалоПараметров = 0 Тогда
Если НачалоПараметров = 0 Тогда
СтрокаПараметров = "";
Иначе
ДлинаURI = СтрДлина(URI);
@@ -452,7 +452,7 @@
Если ОтсутствующиеПоля.Количество() > 0 Тогда
ВызватьИсключение "Отсутствуют необходимые данные авторизации: " + СтрСоединить(ОтсутствующиеПоля, ", ");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -2013,9 +2013,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции
+21 -21
View File
@@ -47,14 +47,14 @@
// Получить структуру данных
// Возвращает основные данные запроса в структурированном виде
//
//
// Параметры:
// URL - Строка - URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов - url
// URL - Строка - URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов - url
// AccessKey - Строка - Access key для авторизации - access
// SecretKey - Строка - Secret key для авторизации - secret
// Region - Строка - Регион сервиса - region
// Service - Строка - Вид сервиса, если отличен от s3 - service
//
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура основных данных запроса
Функция ПолучитьСтруктуруДанных(Знач URL, Знач AccessKey, Знач SecretKey, Знач Region, Знач Service = "s3") Экспорт
@@ -72,19 +72,19 @@
// Отправить запрос без тела
// Отправляет простой http запрос без тела
//
//
// Параметры:
// Метод - Строка - HTTP метод - method
// ОсновныеДанные - Строка - Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных - data
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные) Экспорт
ПроверитьОсновныеДанные(ОсновныеДанные);
URL = ОсновныеДанные["URL"];
ПроверитьОсновныеДанные(ОсновныеДанные);
URL = ОсновныеДанные["URL"];
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
Сервер = СтруктураURL["Сервер"];
Адрес = СтруктураURL["Адрес"];
@@ -108,11 +108,11 @@
// Создать бакет
// Создает новый бакет с выбранным именем
//
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Строка - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция СоздатьБакет(Знач Наименование, Знач ОсновныеДанные) Экспорт
@@ -124,11 +124,11 @@
// Удалить бакет
// Удаляет бакет с выбранным именем
//
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Строка - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
//
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьБакет(Знач Наименование, Знач ОсновныеДанные) Экспорт
@@ -178,9 +178,9 @@
СекретныйКлюч = ПолучитьДвоичныеДанныеИзСтроки("AWS4" + СекретныйКлюч);
ДанныеДата = ПолучитьДвоичныеДанныеИзСтроки(Формат(ТекущаяДата, "ДФ=yyyyMMdd;"));
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
Регион = ПолучитьДвоичныеДанныеИзСтроки(Регион);
Сервис = ПолучитьДвоичныеДанныеИзСтроки(Сервис);
AWSЗапрос = ПолучитьДвоичныеДанныеИзСтроки("aws4_request");
КлючДанных = OPI_Криптография.HMACSHA256(СекретныйКлюч, ДанныеДата);
КлючРегиона = OPI_Криптография.HMACSHA256(КлючДанных, Регион);
@@ -205,7 +205,7 @@
ШаблонЗапроса = "";
Для Н = 1 По 6 Цикл
Для Н = 1 По 6 Цикл
ШаблонЗапроса = ШаблонЗапроса + "%" + Строка(Н) + ?(Н = 6, "", Символы.ПС);
КонецЦикла;
@@ -255,12 +255,12 @@
КаноническийЗапрос = OPI_Криптография.Хеш(КаноническийЗапрос, ХешФункция.SHA256);
КаноническийЗапрос = нРег(ПолучитьHexСтрокуИзДвоичныхДанных(КаноническийЗапрос));
Для Н = 1 По 4 Цикл
Для Н = 1 По 4 Цикл
ШаблонСтроки = ШаблонСтроки + "%" + Строка(Н) + ?(Н = 4, "", Символы.ПС);
КонецЦикла;
СтрокаПодписи = СтрШаблон(ШаблонСтроки, Алгоритм, ДатаISO, Скоуп, КаноническийЗапрос);
СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи);
СтрокаПодписи = ПолучитьДвоичныеДанныеИзСтроки(СтрокаПодписи);
Возврат СтрокаПодписи;
@@ -285,7 +285,7 @@
НачалоПараметров = СтрНайти(URI, "?");
Если НачалоПараметров = 0 Тогда
Если НачалоПараметров = 0 Тогда
СтрокаПараметров = "";
Иначе
ДлинаURI = СтрДлина(URI);
@@ -452,7 +452,7 @@
Если ОтсутствующиеПоля.Количество() > 0 Тогда
ВызватьИсключение "Отсутствуют необходимые данные авторизации: " + СтрСоединить(ОтсутствующиеПоля, ", ");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -9,6 +9,120 @@
ТаблицаСостава.Колонки.Добавить("Описание");
ТаблицаСостава.Колонки.Добавить("ОписаниеМетода");
ТаблицаСостава.Колонки.Добавить("Область");
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ПолучитьСтруктуруДанных";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУДАННЫХ";
НоваяСтрока.Параметр = "--url";
НоваяСтрока.Описание = "URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока.ОписаниеМетода = "Возвращает основные данные запроса в структурированном виде";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ПолучитьСтруктуруДанных";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУДАННЫХ";
НоваяСтрока.Параметр = "--access";
НоваяСтрока.Описание = "Access key для авторизации";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ПолучитьСтруктуруДанных";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУДАННЫХ";
НоваяСтрока.Параметр = "--secret";
НоваяСтрока.Описание = "Secret key для авторизации";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ПолучитьСтруктуруДанных";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУДАННЫХ";
НоваяСтрока.Параметр = "--region";
НоваяСтрока.Описание = "Регион сервиса";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ПолучитьСтруктуруДанных";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУДАННЫХ";
НоваяСтрока.Параметр = "--service";
НоваяСтрока.Описание = "Вид сервиса, если отличен от s3 (необяз. по ум. - s3)";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ОтправитьЗапросБезТела";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬЗАПРОСБЕЗТЕЛА";
НоваяСтрока.Параметр = "--method";
НоваяСтрока.Описание = "HTTP метод";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока.ОписаниеМетода = "Отправляет простой http запрос без тела";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ОтправитьЗапросБезТела";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬЗАПРОСБЕЗТЕЛА";
НоваяСтрока.Параметр = "--data";
НоваяСтрока.Описание = "Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных";
НоваяСтрока.Область = "Общие методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "СоздатьБакет";
НоваяСтрока.МетодПоиска = "СОЗДАТЬБАКЕТ";
НоваяСтрока.Параметр = "--name";
НоваяСтрока.Описание = "Наименование бакета";
НоваяСтрока.Область = "Работа с бакетами";
НоваяСтрока.ОписаниеМетода = "Создает новый бакет с выбранным именем";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "СоздатьБакет";
НоваяСтрока.МетодПоиска = "СОЗДАТЬБАКЕТ";
НоваяСтрока.Параметр = "--data";
НоваяСтрока.Описание = "Основные данные запроса. См. ПолучитьСтруктуруДанных";
НоваяСтрока.Область = "Работа с бакетами";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "УдалитьБакет";
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАКЕТ";
НоваяСтрока.Параметр = "--name";
НоваяСтрока.Описание = "Наименование бакета";
НоваяСтрока.Область = "Работа с бакетами";
НоваяСтрока.ОписаниеМетода = "Удаляет бакет с выбранным именем";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "УдалитьБакет";
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАКЕТ";
НоваяСтрока.Параметр = "--data";
НоваяСтрока.Описание = "Основные данные запроса. См. ПолучитьСтруктуруДанных";
НоваяСтрока.Область = "Работа с бакетами";
Возврат ТаблицаСостава;
КонецФункции