You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-05-22 10:05:29 +02:00
Main build (Jenkins)
This commit is contained in:
@@ -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: Очистка основного кэша
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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 '
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
@@ -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{
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"URL": "storage-155.s3hoster.by",
|
||||
"AccessKey": "BRN5RKJE67...",
|
||||
"SecretKey": "NNhv+i9PrytpT8Tu0C1N..."
|
||||
}
|
||||
@@ -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 | ✔ | 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.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 | ✔ | URL: domain for common methods or full URL with parameters for methods of direct request sending |
|
||||
| AccessKey | --access | String | ✔ | Access key for authorization |
|
||||
| SecretKey | --secret | String | ✔ | Secret key for authorization |
|
||||
| Region | --region | String | ✔ | Service region |
|
||||
| Service | --service | String | ✖ | 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 | ✔ | HTTP method |
|
||||
| BasicData | --data | String | ✔ | 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 | Строка | ✔ | Наименование бакета |
|
||||
| ОсновныеДанные | --data | Строка | ✔ | Основные данные запроса. См. ПолучитьСтруктуруДанных |
|
||||
|
||||
|
||||
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный 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 | Строка | ✔ | Наименование бакета |
|
||||
| ОсновныеДанные | --data | Строка | ✔ | Основные данные запроса. См. ПолучитьСтруктуруДанных |
|
||||
|
||||
|
||||
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный 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 | Строка | ✔ | URL: домен для обычных методов или полный URL с параметрами для методов прямой отправки запросов |
|
||||
| AccessKey | --access | Строка | ✔ | Access key для авторизации |
|
||||
| SecretKey | --secret | Строка | ✔ | Secret key для авторизации |
|
||||
| Region | --region | Строка | ✔ | Регион сервиса |
|
||||
| Service | --service | Строка | ✖ | Вид сервиса, если отличен от 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 | Строка | ✔ | HTTP метод |
|
||||
| ОсновныеДанные | --data | Строка | ✔ | Основные данные запроса (c полным URL). См. ПолучитьСтруктуруДанных |
|
||||
|
||||
|
||||
Возвращаемое значение: Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"label": "Общие методы",
|
||||
"position": "2"
|
||||
}
|
||||
+5197
-5197
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -81,9 +81,9 @@
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные) Экспорт
|
||||
|
||||
ПроверитьОсновныеДанные(ОсновныеДанные);
|
||||
ПроверитьОсновныеДанные(ОсновныеДанные);
|
||||
|
||||
URL = ОсновныеДанные["URL"];
|
||||
URL = ОсновныеДанные["URL"];
|
||||
|
||||
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
@@ -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);
|
||||
|
||||
@@ -81,9 +81,9 @@
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
|
||||
Функция ОтправитьЗапросБезТела(Знач Метод, Знач ОсновныеДанные) Экспорт
|
||||
|
||||
ПроверитьОсновныеДанные(ОсновныеДанные);
|
||||
ПроверитьОсновныеДанные(ОсновныеДанные);
|
||||
|
||||
URL = ОсновныеДанные["URL"];
|
||||
URL = ОсновныеДанные["URL"];
|
||||
|
||||
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
@@ -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);
|
||||
|
||||
@@ -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";
|
||||
НоваяСтрока.Описание = "Основные данные запроса. См. ПолучитьСтруктуруДанных";
|
||||
НоваяСтрока.Область = "Работа с бакетами";
|
||||
|
||||
Возврат ТаблицаСостава;
|
||||
КонецФункции
|
||||
|
||||
|
||||
Reference in New Issue
Block a user