1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-02-05 13:25:25 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot) 2024-11-22 09:37:00 +03:00
parent 16ccc28e99
commit e15be829a9
48 changed files with 6316 additions and 5941 deletions

View File

@ -1691,6 +1691,10 @@ def test_s3(){
powershell encoding: 'UTF-8', script:'./oint.exe s3 FinishPartsUpload --name "test" --bucket "test" --basic "test" --upload "test" --tags "test" --headers "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 AbortMultipartUpload --name "test" --bucket "test" --basic "test" --upload "test" --headers "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 HeadObject --name "test" --bucket "test" --basic "test" --ver "test" --headers "test" --debug --test '
}

View File

@ -1691,6 +1691,10 @@ def test_s3(){
powershell encoding: 'UTF-8', script:'./oint.exe s3 ЗавершитьЗагрузкуЧастями --name "test" --bucket "test" --basic "test" --upload "test" --tags "test" --headers "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 ОтменитьЗагрузкуЧастями --name "test" --bucket "test" --basic "test" --upload "test" --headers "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe s3 ПолучитьОписаниеОбъекта --name "test" --bucket "test" --basic "test" --ver "test" --headers "test" --debug --test '
}

View File

@ -0,0 +1,5 @@
{
"URL": "storage-155.s3hoster.by",
"AccessKey": "BRN5RKJE67...",
"SecretKey": "NNhv+i9PrytpT8Tu0C1N..."
}

View File

@ -0,0 +1,14 @@
 URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "fileChunked.mp3";
Bucket = "opi-gpbucket3";
Start = OPI_S3.InitPartsUpload(Name, Bucket, BasicData);
UploadID = Start["response"]["InitiateMultipartUploadResult"]["UploadId"];
Result = OPI_S3.AbortMultipartUpload(Name, Bucket, BasicData, UploadID);

View File

@ -1,4 +1,4 @@
 URL = "storage-155.s3hoster.by";
 URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
@ -32,12 +32,8 @@
Break;
EndIf;
Result = OPI_S3.UploadObjectPart(Name
, Bucket
, BasicData
, UploadID
, PartNumber
, CurrentData);
Result = OPI_S3.UploadObjectPart(Name, Bucket, BasicData, UploadID, PartNumber,
CurrentData);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -0,0 +1,56 @@
---
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Abort multipart upload
Aborts the multipart uploading of the object
`Function AbortMultipartUpload(Val Name, Val Bucket, Val BasicData, Val UploadID, Val Headers = Undefined) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Name | --name | String | ✔ | Name of the object in the bucket |
| Bucket | --bucket | String | ✔ | Name of the bucket to put the object |
| BasicData | --basic | Structure of KeyAndValue | ✔ | Basic request data. See GetBasicDataStructure |
| UploadID | --upload | String | ✔ | Upload ID. See InitPartsUpload |
| Headers | --headers | Map Of KeyAndValue | ✖ | Additional request headers, if necessary |
Returns: Structure of KeyAndValue - serialized JSON response from storage
<br/>
:::tip
Method at AWS documentation: [AbortMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
This is a service method. A `PutObject` method is intended for the common scenario of files uploading<br/>
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "fileChunked.mp3";
Bucket = "opi-gpbucket3";
Start = OPI_S3.InitPartsUpload(Name, Bucket, BasicData);
UploadID = Start["response"]["InitiateMultipartUploadResult"]["UploadId"];
Result = OPI_S3.AbortMultipartUpload(Name, Bucket, BasicData, UploadID);
```

View File

@ -1,5 +1,5 @@
---
sidebar_position: 9
sidebar_position: 10
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 12
sidebar_position: 13
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 8
sidebar_position: 9
---
import Tabs from '@theme/Tabs';

View File

@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
:::tip
Method at AWS documentation: [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
This is a service method. A `PutObject` method is intended for the main scenario of files uploading
This is a service method. A `PutObject` method is intended for the common scenario of files uploading
:::
<br/>

View File

@ -1,5 +1,5 @@
---
sidebar_position: 11
sidebar_position: 12
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 7
sidebar_position: 8
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 6
sidebar_position: 7
---
import Tabs from '@theme/Tabs';

View File

@ -27,7 +27,7 @@ import TabItem from '@theme/TabItem';
:::tip
Method at AWS documentation: [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
This is a service method. A `PutObject` method is intended for the main scenario of files uploading<br/>Using multipart upload for files &lt; 5 MB or when the size of a single chunk is &lt; 5 MB will result in an error
This is a service method. A `PutObject` method is intended for the common scenario of files uploading<br/>Using multipart upload for files &lt; 5 MB or when the size of a single chunk is &lt; 5 MB will result in an error
:::
<br/>

View File

@ -1,5 +1,5 @@
---
sidebar_position: 14
sidebar_position: 15
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 13
sidebar_position: 14
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 10
sidebar_position: 11
---
import Tabs from '@theme/Tabs';

View File

@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
:::tip
Method at AWS documentation: [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
This is a service method. A `PutObject` method is intended for the main scenario of files uploading<br/>Using this method for large files may cause errors
This is a service method. A `PutObject` method is intended for the common scenario of files uploading<br/>Using this method for large files may cause errors
Parameters with Binary data type can also accept file paths on disk and URLs
:::

View File

@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
:::tip
Method at AWS documentation: [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
This is a service method. A `PutObject` method is intended for the main scenario of files uploading
This is a service method. A `PutObject` method is intended for the common scenario of files uploading
Parameters with Binary data type can also accept file paths on disk and URLs
:::
@ -38,7 +38,7 @@ Parameters with Binary data type can also accept file paths on disk and URLs
```bsl title="1C:Enterprise/OneScript code example"
URL = "storage-155.s3hoster.by";
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
@ -72,12 +72,8 @@ Parameters with Binary data type can also accept file paths on disk and URLs
Break;
EndIf;
Result = OPI_S3.UploadObjectPart(Name
, Bucket
, BasicData
, UploadID
, PartNumber
, CurrentData);
Result = OPI_S3.UploadObjectPart(Name, Bucket, BasicData, UploadID, PartNumber,
CurrentData);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -0,0 +1,5 @@
{
"URL": "storage-155.s3hoster.by",
"AccessKey": "BRN5RKJE67...",
"SecretKey": "NNhv+i9PrytpT8Tu0C1N..."
}

View File

@ -1,7 +1,7 @@
 URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
@ -32,12 +32,8 @@
Прервать;
КонецЕсли;
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование
, Бакет
, ОсновныеДанные
, IDЗагрузки
, НомерЧасти
, ТекущиеДанные);
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, НомерЧасти,
ТекущиеДанные);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -0,0 +1,14 @@
 URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "fileChunked.mp3";
Бакет = "opi-gpbucket3";
Начало = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"];
Результат = OPI_S3.ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки);

View File

@ -0,0 +1,56 @@
---
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Отменить загрузку частями
Отменяет загрузку объекта по частям
`Функция ОтменитьЗагрузкуЧастями(Знач Наименование, Знач Бакет, Знач ОсновныеДанные, Знач IDЗагрузки, Знач Заголовки = Неопределено) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Наименование | --name | Строка | &#x2714; | Наименование объекта в бакете |
| Бакет | --bucket | Строка | &#x2714; | Имя бакета для загрузки объекта |
| ОсновныеДанные | --basic | Структура Из КлючИЗначение | &#x2714; | Основные данные запроса. См. ПолучитьСтруктуруДанных |
| IDЗагрузки | --upload | Строка | &#x2714; | ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями |
| Заголовки | --headers | Соответствие Из КлючИЗначение | &#x2716; | Дополнительные заголовки запроса, если необходимо |
Возвращаемое значение: Структура Из КлючИЗначение - сериализованный JSON ответа от хранилища
<br/>
:::tip
Метод в документации AWS: [AbortMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`<br/>
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "fileChunked.mp3";
Бакет = "opi-gpbucket3";
Начало = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"];
Результат = OPI_S3.ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки);
```

View File

@ -1,5 +1,5 @@
---
sidebar_position: 9
sidebar_position: 10
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 12
sidebar_position: 13
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 8
sidebar_position: 9
---
import Tabs from '@theme/Tabs';

View File

@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
:::tip
Метод в документации AWS: [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
Это служебный метод. Для основного сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`
Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`
:::
<br/>

View File

@ -1,5 +1,5 @@
---
sidebar_position: 11
sidebar_position: 12
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 7
sidebar_position: 8
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 6
sidebar_position: 7
---
import Tabs from '@theme/Tabs';

View File

@ -27,7 +27,7 @@ import TabItem from '@theme/TabItem';
:::tip
Метод в документации AWS: [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
Это служебный метод. Для основного сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`<br/>Использование загрузки частями для файлов &lt; 5 МБ или при размере одной части &lt; 5 МБ приведет к ошибке
Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`<br/>Использование загрузки частями для файлов &lt; 5 МБ или при размере одной части &lt; 5 МБ приведет к ошибке
:::
<br/>

View File

@ -1,5 +1,5 @@
---
sidebar_position: 14
sidebar_position: 15
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 13
sidebar_position: 14
---
import Tabs from '@theme/Tabs';

View File

@ -1,5 +1,5 @@
---
sidebar_position: 10
sidebar_position: 11
---
import Tabs from '@theme/Tabs';

View File

@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
:::tip
Метод в документации AWS: [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
Это служебный метод. Для основного сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`<br/>Использование данного метода для больших файлов может приводить к сбоям
Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`<br/>Использование данного метода для больших файлов может приводить к сбоям
Параметры с типом данных Двоичные данные могут принимать также пути к файлам на диске и URL
:::

View File

@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
:::tip
Метод в документации AWS: [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
Это служебный метод. Для основного сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`
Это служебный метод. Для простого сценария загрузки файлов предназначен единый метод `ЗагрузитьОбъект`
Параметры с типом данных Двоичные данные могут принимать также пути к файлам на диске и URL
:::
@ -39,9 +39,9 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
@ -72,12 +72,8 @@ import TabItem from '@theme/TabItem';
Прервать;
КонецЕсли;
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование
, Бакет
, ОсновныеДанные
, IDЗагрузки
, НомерЧасти
, ТекущиеДанные);
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, НомерЧасти,
ТекущиеДанные);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File diff suppressed because it is too large Load Diff

View File

@ -590,7 +590,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading^
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading^
// Using this method for large files may cause errors
//
// Parameters:
@ -623,7 +623,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [CreateMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading^
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading^
// Using multipart upload for files < 5 MB or when the size of a single chunk is < 5 MB will result in an error
//
// Parameters:
@ -656,7 +656,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [UploadPart](@docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -700,7 +700,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [CompleteMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -748,6 +748,40 @@ Function FinishPartsUpload(Val Name
EndFunction
// Abort multipart upload
// Aborts the multipart uploading of the object
//
// Note
// Method at AWS documentation: [AbortMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading^
//
// Parameters:
// Name - String - Name of the object in the bucket - name
// Bucket - String - Name of the bucket to put the object - bucket
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - basic
// UploadID - String - Upload ID. See InitPartsUpload - upload
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
//
// Returns:
// Structure of KeyAndValue - serialized JSON response from storage
Function AbortMultipartUpload(Val Name
, Val Bucket
, Val BasicData
, Val UploadID
, Val Headers = Undefined) Export
BasicData_ = OPI_Tools.CopyCollection(BasicData);
FillObjectURL(BasicData_, Name, Bucket);
BasicData_.Insert("URL", BasicData_["URL"] + "?uploadId=" + String(UploadID));
Response = SendRequestWithoutBody("DELETE", BasicData_, , Headers);
Return Response;
EndFunction
// Head object
// Receives information about the properties of the object in the baquette
//
@ -1604,6 +1638,7 @@ Function UploadObjectInParts(Val Name
SourceStream = DataReader.SourceStream();
Response = New Map;
TagsArray = New Array;
Error = False;
WHile BytesRead < TotalSize Do
@ -1650,11 +1685,13 @@ Function UploadObjectInParts(Val Name
Message(OPI_Tools.JSONString(Response));
Message("Failed to upload part of the file! Abort upload wiht ID:" + UploadID + "...");
Raise;
Error = True;
Break;
Else
Message("Chunk upload error " + String(N) + "/3");
Message(ErrorDescription());
Continue;
EndIf;
@ -1665,7 +1702,11 @@ Function UploadObjectInParts(Val Name
EndDo;
Response = FinishPartsUpload(Name, Bucket, BasicData, UploadID, TagsArray);
If Error Then
Response = AbortMultipartUpload(Name, Bucket, BasicData, UploadID);
Else
Response = FinishPartsUpload(Name, Bucket, BasicData, UploadID, TagsArray);
EndIf;
Return Response;

View File

@ -2153,6 +2153,7 @@ Procedure AWS_ObjectsManagement() Export
S3_InitPartsUpload(TestParameters);
S3_UploadObjectPart(TestParameters);
S3_FinishPartsUpload(TestParameters);
S3_AbortMultipartUpload(TestParameters);
S3_HeadObject(TestParameters);
S3_CopyObject(TestParameters);
S3_PutObjectTagging(TestParameters);
@ -15467,7 +15468,7 @@ EndProcedure
Procedure S3_UploadObjectPart(FunctionParameters)
URL = FunctionParameters["S3_URL"];
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
@ -15504,17 +15505,13 @@ Procedure S3_UploadObjectPart(FunctionParameters)
Break;
EndIf;
Result = OPI_S3.UploadObjectPart(Name
, Bucket
, BasicData
, UploadID
, PartNumber
, CurrentData);
Result = OPI_S3.UploadObjectPart(Name, Bucket, BasicData, UploadID, PartNumber,
CurrentData);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OPI_TestDataRetrieval.WriteLog(Result, "UploadObjectPart", "S3"); // SKIP
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
BytesRead = SourceStream.CurrentPosition();
TagsArray.Add(Result["headers"]["Etag"]);
@ -15529,10 +15526,34 @@ Procedure S3_UploadObjectPart(FunctionParameters)
// END
OPI_TestDataRetrieval.WriteLog(Result, "FinishPartsUpload (UOP)", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_TestDataRetrieval.WriteLog(Result, "FinishPartsUpload (UOP)", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
Procedure S3_AbortMultipartUpload(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "fileChunked.mp3";
Bucket = "opi-gpbucket3";
Start = OPI_S3.InitPartsUpload(Name, Bucket, BasicData);
UploadID = Start["response"]["InitiateMultipartUploadResult"]["UploadId"];
Result = OPI_S3.AbortMultipartUpload(Name, Bucket, BasicData, UploadID);
// END
OPI_TestDataRetrieval.WriteLog(Result, "AbortMultipartUpload", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
EndProcedure

View File

@ -590,7 +590,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading^
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading^
// Using this method for large files may cause errors
//
// Parameters:
@ -623,7 +623,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [CreateMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading^
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading^
// Using multipart upload for files < 5 MB or when the size of a single chunk is < 5 MB will result in an error
//
// Parameters:
@ -656,7 +656,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [UploadPart](@docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -700,7 +700,7 @@ EndFunction
//
// Note
// Method at AWS documentation: [CompleteMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -748,6 +748,40 @@ Function FinishPartsUpload(Val Name
EndFunction
// Abort multipart upload
// Aborts the multipart uploading of the object
//
// Note
// Method at AWS documentation: [AbortMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
// This is a service method. A `PutObject` method is intended for the common scenario of files uploading^
//
// Parameters:
// Name - String - Name of the object in the bucket - name
// Bucket - String - Name of the bucket to put the object - bucket
// BasicData - Structure of KeyAndValue - Basic request data. See GetBasicDataStructure - basic
// UploadID - String - Upload ID. See InitPartsUpload - upload
// Headers - Map Of KeyAndValue - Additional request headers, if necessary - headers
//
// Returns:
// Structure of KeyAndValue - serialized JSON response from storage
Function AbortMultipartUpload(Val Name
, Val Bucket
, Val BasicData
, Val UploadID
, Val Headers = Undefined) Export
BasicData_ = OPI_Tools.CopyCollection(BasicData);
FillObjectURL(BasicData_, Name, Bucket);
BasicData_.Insert("URL", BasicData_["URL"] + "?uploadId=" + String(UploadID));
Response = SendRequestWithoutBody("DELETE", BasicData_, , Headers);
Return Response;
EndFunction
// Head object
// Receives information about the properties of the object in the baquette
//
@ -1604,6 +1638,7 @@ Function UploadObjectInParts(Val Name
SourceStream = DataReader.SourceStream();
Response = New Map;
TagsArray = New Array;
Error = False;
WHile BytesRead < TotalSize Do
@ -1650,11 +1685,13 @@ Function UploadObjectInParts(Val Name
// !OInt Message(OPI_Tools.JSONString(Response));
// !OInt Message("Failed to upload part of the file! Aborted upload wiht ID:" + UploadID + "...");
Raise;
Error = True;
Break;
Else
// !OInt Message("Chunk upload error " + String(N) + "/3");
// !OInt Message(ErrorDescription());
Continue;
EndIf;
@ -1665,7 +1702,11 @@ Function UploadObjectInParts(Val Name
EndDo;
Response = FinishPartsUpload(Name, Bucket, BasicData, UploadID, TagsArray);
If Error Then
Response = AbortMultipartUpload(Name, Bucket, BasicData, UploadID);
Else
Response = FinishPartsUpload(Name, Bucket, BasicData, UploadID, TagsArray);
EndIf;
Return Response;

View File

@ -2153,6 +2153,7 @@ Procedure AWS_ObjectsManagement() Export
S3_InitPartsUpload(TestParameters);
S3_UploadObjectPart(TestParameters);
S3_FinishPartsUpload(TestParameters);
S3_AbortMultipartUpload(TestParameters);
S3_HeadObject(TestParameters);
S3_CopyObject(TestParameters);
S3_PutObjectTagging(TestParameters);
@ -15467,7 +15468,7 @@ EndProcedure
Procedure S3_UploadObjectPart(FunctionParameters)
URL = FunctionParameters["S3_URL"];
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
@ -15504,17 +15505,13 @@ Procedure S3_UploadObjectPart(FunctionParameters)
Break;
EndIf;
Result = OPI_S3.UploadObjectPart(Name
, Bucket
, BasicData
, UploadID
, PartNumber
, CurrentData);
Result = OPI_S3.UploadObjectPart(Name, Bucket, BasicData, UploadID, PartNumber,
CurrentData);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OPI_TestDataRetrieval.WriteLog(Result, "UploadObjectPart", "S3"); // SKIP
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
OPI_TestDataRetrieval.Check_S3Success(Result); // SKIP
BytesRead = SourceStream.CurrentPosition();
TagsArray.Add(Result["headers"]["Etag"]);
@ -15529,10 +15526,34 @@ Procedure S3_UploadObjectPart(FunctionParameters)
// END
OPI_TestDataRetrieval.WriteLog(Result, "FinishPartsUpload (UOP)", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_TestDataRetrieval.WriteLog(Result, "FinishPartsUpload (UOP)", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
Procedure S3_AbortMultipartUpload(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "fileChunked.mp3";
Bucket = "opi-gpbucket3";
Start = OPI_S3.InitPartsUpload(Name, Bucket, BasicData);
UploadID = Start["response"]["InitiateMultipartUploadResult"]["UploadId"];
Result = OPI_S3.AbortMultipartUpload(Name, Bucket, BasicData, UploadID);
// END
OPI_TestDataRetrieval.WriteLog(Result, "AbortMultipartUpload", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
EndProcedure

View File

@ -980,6 +980,57 @@
NewLine.Область = "Objects management";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "AbortMultipartUpload";
NewLine.МетодПоиска = "ABORTMULTIPARTUPLOAD";
NewLine.Параметр = "--name";
NewLine.Описание = "Name of the object in the bucket";
NewLine.Область = "Objects management";
NewLine.ОписаниеМетода = "Aborts the multipart uploading of the object";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "AbortMultipartUpload";
NewLine.МетодПоиска = "ABORTMULTIPARTUPLOAD";
NewLine.Параметр = "--bucket";
NewLine.Описание = "Name of the bucket to put the object";
NewLine.Область = "Objects management";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "AbortMultipartUpload";
NewLine.МетодПоиска = "ABORTMULTIPARTUPLOAD";
NewLine.Параметр = "--basic";
NewLine.Описание = "Basic request data. See GetBasicDataStructure";
NewLine.Область = "Objects management";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "AbortMultipartUpload";
NewLine.МетодПоиска = "ABORTMULTIPARTUPLOAD";
NewLine.Параметр = "--upload";
NewLine.Описание = "Upload ID. See InitPartsUpload";
NewLine.Область = "Objects management";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";
NewLine.Метод = "AbortMultipartUpload";
NewLine.МетодПоиска = "ABORTMULTIPARTUPLOAD";
NewLine.Параметр = "--headers";
NewLine.Описание = "Additional request headers, if necessary (optional, def. val. - Empty value)";
NewLine.Область = "Objects management";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "s3";
NewLine.Модуль = "OPI_S3";

View File

@ -1638,6 +1638,7 @@
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
Ответ = Новый Соответствие;
МассивТегов = Новый Массив;
Ошибка = Ложь;
Пока ПрочитаноБайт < ОбщийРазмер Цикл
@ -1684,11 +1685,13 @@
Сообщить(OPI_Инструменты.JSONСтрокой(Ответ));
Сообщить("Не удалось загрузить часть файла! Отмена загрузки ID:" + IDЗагрузки + "...");
ВызватьИсключение;
Ошибка = Истина;
Прервать;
Иначе
Сообщить("Ошибка загрузки участка " + Строка(Н) + "/3");
Сообщить(ОписаниеОшибки());
Продолжить;
КонецЕсли;
@ -1699,7 +1702,11 @@
КонецЦикла;
Ответ = ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
Если Ошибка Тогда
Ответ = ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки);
Иначе
Ответ = ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
КонецЕсли;
Возврат Ответ;

View File

@ -15469,73 +15469,73 @@
Процедура S3_ЗагрузитьЧастьОбъекта(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "fileChunked.mp3";
Бакет = "opi-gpbucket3";
Наименование = "fileChunked.mp3";
Бакет = "opi-gpbucket3";
Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные
Содержимое = OPI_Инструменты.Get(Содержимое);
Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные
Содержимое = OPI_Инструменты.Get(Содержимое);
Результат = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
Результат = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями (ЗЧО)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями (ЗЧО)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"];
ОбщийРазмер = Содержимое.Размер();
РазмерУчастка = 5242880;
ПрочитаноБайт = 0;
НомерЧасти = 1;
IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"];
ОбщийРазмер = Содержимое.Размер();
РазмерУчастка = 5242880;
ПрочитаноБайт = 0;
НомерЧасти = 1;
ЧтениеДанных = Новый ЧтениеДанных(Содержимое);
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
МассивТегов = Новый Массив;
ЧтениеДанных = Новый ЧтениеДанных(Содержимое);
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
МассивТегов = Новый Массив;
Пока ПрочитаноБайт < ОбщийРазмер Цикл
Пока ПрочитаноБайт < ОбщийРазмер Цикл
ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка);
ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные();
ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка);
ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные();
Если ТекущиеДанные.Размер() = 0 Тогда
Прервать;
КонецЕсли;
Если ТекущиеДанные.Размер() = 0 Тогда
Прервать;
КонецЕсли;
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, НомерЧасти,
ТекущиеДанные);
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, НомерЧасти,
ТекущиеДанные);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
МассивТегов.Добавить(Результат["headers"]["Etag"]);
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
МассивТегов.Добавить(Результат["headers"]["Etag"]);
Прервать;
Прервать;
НомерЧасти = НомерЧасти + 1;
НомерЧасти = НомерЧасти + 1;
КонецЦикла;
КонецЦикла;
Результат = OPI_S3.ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
Результат = OPI_S3.ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗавершитьЗагрузкуЧастями (ЗЧО)", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗавершитьЗагрузкуЧастями (ЗЧО)", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
КонецПроцедуры
Процедура S3_ОтменитьЗагрузкуЧастями(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
@ -15547,14 +15547,14 @@
Начало = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"];
Результат = OPI_S3.ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтменитьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
#КонецОбласти

View File

@ -2040,9 +2040,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@ -1451,7 +1451,7 @@
, Знач ОсновныеДанные
, Знач Тело = Неопределено
, Знач ОжидаютсяДвоичные = Ложь
, Знач Заголовки = Неопределено)
, Знач Заголовки = Неопределено)
ОсновныеДанные_ = OPI_Инструменты.КопироватьКоллекцию(ОсновныеДанные);
ПроверитьОсновныеДанные(ОсновныеДанные_);
@ -1684,8 +1684,8 @@
// !OInt Сообщить(OPI_Инструменты.JSONСтрокой(Ответ));
// !OInt Сообщить("Не удалось загрузить часть файла! Отмена загрузки ID:" + IDЗагрузки + "...");
Ошибка = Истина;
Ошибка = Истина;
Прервать;
Иначе
@ -1702,12 +1702,12 @@
КонецЦикла;
Если Ошибка Тогда
Ответ = ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки);
Иначе
Ответ = ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
Если Ошибка Тогда
Ответ = ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки);
Иначе
Ответ = ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
КонецЕсли;
Возврат Ответ;
КонецФункции

View File

@ -15469,73 +15469,73 @@
Процедура S3_ЗагрузитьЧастьОбъекта(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "fileChunked.mp3";
Бакет = "opi-gpbucket3";
Наименование = "fileChunked.mp3";
Бакет = "opi-gpbucket3";
Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные
Содержимое = OPI_Инструменты.Get(Содержимое);
Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные
Содержимое = OPI_Инструменты.Get(Содержимое);
Результат = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
Результат = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями (ЗЧО)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями (ЗЧО)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"];
ОбщийРазмер = Содержимое.Размер();
РазмерУчастка = 5242880;
ПрочитаноБайт = 0;
НомерЧасти = 1;
IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"];
ОбщийРазмер = Содержимое.Размер();
РазмерУчастка = 5242880;
ПрочитаноБайт = 0;
НомерЧасти = 1;
ЧтениеДанных = Новый ЧтениеДанных(Содержимое);
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
МассивТегов = Новый Массив;
ЧтениеДанных = Новый ЧтениеДанных(Содержимое);
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
МассивТегов = Новый Массив;
Пока ПрочитаноБайт < ОбщийРазмер Цикл
Пока ПрочитаноБайт < ОбщийРазмер Цикл
ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка);
ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные();
ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка);
ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные();
Если ТекущиеДанные.Размер() = 0 Тогда
Прервать;
КонецЕсли;
Если ТекущиеДанные.Размер() = 0 Тогда
Прервать;
КонецЕсли;
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, НомерЧасти,
ТекущиеДанные);
Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, НомерЧасти,
ТекущиеДанные);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
МассивТегов.Добавить(Результат["headers"]["Etag"]);
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
МассивТегов.Добавить(Результат["headers"]["Etag"]);
Прервать;
Прервать;
НомерЧасти = НомерЧасти + 1;
НомерЧасти = НомерЧасти + 1;
КонецЦикла;
КонецЦикла;
Результат = OPI_S3.ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
Результат = OPI_S3.ЗавершитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки, МассивТегов);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗавершитьЗагрузкуЧастями (ЗЧО)", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗавершитьЗагрузкуЧастями (ЗЧО)", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
КонецПроцедуры
Процедура S3_ОтменитьЗагрузкуЧастями(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
@ -15547,14 +15547,14 @@
Начало = OPI_S3.ИнициализироватьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные);
IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"];
Результат = OPI_S3.ОтменитьЗагрузкуЧастями(Наименование, Бакет, ОсновныеДанные, IDЗагрузки);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтменитьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
#КонецОбласти

View File

@ -984,6 +984,57 @@
НоваяСтрока.Область = "Работа с объектами";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ОтменитьЗагрузкуЧастями";
НоваяСтрока.МетодПоиска = "ОТМЕНИТЬЗАГРУЗКУЧАСТЯМИ";
НоваяСтрока.Параметр = "--name";
НоваяСтрока.Описание = "Наименование объекта в бакете";
НоваяСтрока.Область = "Работа с объектами";
НоваяСтрока.ОписаниеМетода = "Отменяет загрузку объекта по частям";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ОтменитьЗагрузкуЧастями";
НоваяСтрока.МетодПоиска = "ОТМЕНИТЬЗАГРУЗКУЧАСТЯМИ";
НоваяСтрока.Параметр = "--bucket";
НоваяСтрока.Описание = "Имя бакета для загрузки объекта";
НоваяСтрока.Область = "Работа с объектами";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ОтменитьЗагрузкуЧастями";
НоваяСтрока.МетодПоиска = "ОТМЕНИТЬЗАГРУЗКУЧАСТЯМИ";
НоваяСтрока.Параметр = "--basic";
НоваяСтрока.Описание = "Основные данные запроса. См. ПолучитьСтруктуруДанных";
НоваяСтрока.Область = "Работа с объектами";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ОтменитьЗагрузкуЧастями";
НоваяСтрока.МетодПоиска = "ОТМЕНИТЬЗАГРУЗКУЧАСТЯМИ";
НоваяСтрока.Параметр = "--upload";
НоваяСтрока.Описание = "ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями";
НоваяСтрока.Область = "Работа с объектами";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";
НоваяСтрока.Метод = "ОтменитьЗагрузкуЧастями";
НоваяСтрока.МетодПоиска = "ОТМЕНИТЬЗАГРУЗКУЧАСТЯМИ";
НоваяСтрока.Параметр = "--headers";
НоваяСтрока.Описание = "Дополнительные заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Работа с объектами";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "s3";
НоваяСтрока.Модуль = "OPI_S3";