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

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot) 2024-11-21 17:19:25 +03:00
parent 8fc25440a2
commit 97059b1124
26 changed files with 6297 additions and 5875 deletions

View File

@ -0,0 +1,6 @@
{
"URL": "storage-155.s3hoster.by",
"AccessKey": "BRN5RKJE67...",
"SecretKey": "NNhv+i9PrytpT8Tu0C1N...",
"Entity": "https://api.athenaeum.digital/test_data/picture.jpg"
}

View File

@ -0,0 +1,12 @@
 URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "pictureSmall.jpg";
Bucket = "opi-gpbucket3";
Entity = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Path or Binary Data
Result = OPI_S3.UploadFullObject(Name, Bucket, Entity, BasicData);

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 `LoadObject` method is intended for the main scenario of files uploading
This is a service method. A `PutObject` method is intended for the main scenario of files uploading
:::
<br/>

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 `LoadObject` method is intended for the main scenario of files uploading
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
:::
<br/>

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 `LoadObject` method is intended for the main scenario of files uploading
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
Parameters with Binary data type can also accept file paths on disk and URLs
:::
@ -36,7 +36,18 @@ 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";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "pictureSmall.jpg";
Bucket = "opi-gpbucket3";
Entity = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Path or Binary Data
Result = OPI_S3.UploadFullObject(Name, Bucket, Entity, BasicData);
```

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 `LoadObject` method is intended for the main scenario of files uploading
This is a service method. A `PutObject` method is intended for the main scenario of files uploading
Parameters with Binary data type can also accept file paths on disk and URLs
:::

View File

@ -0,0 +1,6 @@
{
"URL": "storage-155.s3hoster.by",
"AccessKey": "BRN5RKJE67...",
"SecretKey": "NNhv+i9PrytpT8Tu0C1N...",
"Содержимое": "https://api.athenaeum.digital/test_data/picture.jpg"
}

View File

@ -0,0 +1,12 @@
 URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "pictureSmall.jpg";
Бакет = "opi-gpbucket3";
Содержимое = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Путь или Двоичные данные
Результат = OPI_S3.ЗагрузитьОбъектЦеликом(Наименование, Бакет, Содержимое, ОсновныеДанные);

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/>

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/>Использование данного метода для больших файлов может приводить к сбоям
Параметры с типом данных Двоичные данные могут принимать также пути к файлам на диске и URL
:::
@ -36,7 +36,18 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
URL = "storage-155.s3hoster.by";
AccessKey = "BRN5RKJE67...";
SecretKey = "NNhv+i9PrytpT8Tu0C1N...";
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Наименование = "pictureSmall.jpg";
Бакет = "opi-gpbucket3";
Содержимое = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Путь или Двоичные данные
Результат = OPI_S3.ЗагрузитьОбъектЦеликом(Наименование, Бакет, Содержимое, ОсновныеДанные);
```

File diff suppressed because it is too large Load Diff

View File

@ -590,7 +590,8 @@ EndFunction
//
// Note
// Method at AWS documentation: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
// This is a service method. A `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading^
// Using this method for large files may cause errors
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -622,7 +623,8 @@ EndFunction
//
// Note
// Method at AWS documentation: [CreateMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
// This is a service method. A `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main 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:
// Name - String - Name of the object in the bucket - name
@ -654,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 `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -698,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 `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -1186,13 +1188,8 @@ EndFunction
Function CreateCanonicalRequest(Val Request, Val Connection, Val Method)
RequestBody = Request.ПолучитьТелоКакДвоичныеДанные();
If Not ValueIsFilled(RequestBody) Then
RequestBody = ПолучитьДвоичныеДанныеИзСтроки("");
EndIf;
HashSum = OPI_Cryptography.Hash(RequestBody, HashFunction.SHA256);
RequestBody = OPI_Tools.GetRequestBody(Request);
HashSum = OPI_Cryptography.Hash(RequestBody, HashFunction.SHA256);
Request.Headers.Insert("x-amz-content-sha256", Lower(ПолучитьHexСтрокуИзДвоичныхДанных(HashSum)));
RequestTemplate = "";

View File

@ -2149,6 +2149,7 @@ Procedure AWS_ObjectsManagment() Export
S3_CreateBucket(TestParameters);
S3_PutObject(TestParameters);
S3_UploadFullObject(TestParameters);
S3_InitPartsUpload(TestParameters);
S3_UploadObjectPart(TestParameters);
S3_FinishPartsUpload(TestParameters);
@ -15074,6 +15075,30 @@ Procedure S3_PutObject(FunctionParameters)
EndProcedure
Procedure S3_UploadFullObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "pictureSmall.jpg";
Bucket = "opi-gpbucket3";
Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data
Result = OPI_S3.UploadFullObject(Name, Bucket, Entity, BasicData);
// END
OPI_TestDataRetrieval.WriteLog(Result, "UploadFullObject", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
Procedure S3_DeleteObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];

View File

@ -2141,9 +2141,12 @@ Procedure CLI_AWS_ObjectsManagment() Export
OPI_TestDataRetrieval.ParameterToCollection("S3_SecretKey", TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("S3_URL" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters);
CLI_S3_CreateBucket(TestParameters);
CLI_S3_PutObject(TestParameters);
CLI_S3_UploadFullObject(TestParameters);
CLI_S3_InitPartsUpload(TestParameters);
CLI_S3_HeadObject(TestParameters);
CLI_S3_CopyObject(TestParameters);
CLI_S3_PutObjectTagging(TestParameters);
@ -17254,6 +17257,42 @@ Procedure CLI_S3_PutObject(FunctionParameters)
EndProcedure
Procedure CLI_S3_UploadFullObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("access", AccessKey);
Options.Insert("secret", SecretKey);
Options.Insert("region", Region);
BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options);
Name = "pictureSmall.jpg";
Bucket = "opi-gpbucket3";
Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket", Bucket);
Options.Insert("data" , Entity);
Options.Insert("basic" , BasicData);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options);
// END
OPI_TestDataRetrieval.WriteLog(Result, "UploadFullObject", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
Procedure CLI_S3_DeleteObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];
@ -17572,6 +17611,98 @@ Procedure CLI_S3_GetObject(FunctionParameters)
EndProcedure
Procedure CLI_S3_InitPartsUpload(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("access", AccessKey);
Options.Insert("secret", SecretKey);
Options.Insert("region", Region);
BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options);
Name = "fileChunked.mp3";
Bucket = "opi-gpbucket3";
Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data
Entity = OPI_Tools.Get(Entity);
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket", Bucket);
Options.Insert("basic" , BasicData);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options);
OPI_TestDataRetrieval.WriteLog(Result, "InitPartsUpload", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"];
TotalSize = Entity.Size();
ChunkSize = 5242880;
BytesRead = 0;
PartNumber = 1;
DataReader = New DataReader(Entity);
SourceStream = DataReader.SourceStream();
TagsArray = New Array;
WHile BytesRead < TotalSize Do
CurrentReading = DataReader.Read(ChunkSize);
CurrentData = CurrentReading.GetBinaryData();
TFN = GetTempFileName();
CurrentData.Write(TFN);
If CurrentData.Size() = 0 Then
Break;
EndIf;
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket" , Bucket);
Options.Insert("basic" , BasicData);
Options.Insert("upload" , UploadID);
Options.Insert("part" , PartNumber);
Options.Insert("content", TFN);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "UploadObjectPart", Options);
OPI_TestDataRetrieval.WriteLog(Result, "UploadObjectPart", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
BytesRead = SourceStream.CurrentPosition();
TagsArray.Add(Result["headers"]["Etag"]);
DeleteFiles(TFN);
Break;
PartNumber = PartNumber + 1;
EndDo;
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket", Bucket);
Options.Insert("basic" , BasicData);
Options.Insert("upload", UploadID);
Options.Insert("tags" , TagsArray);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options);
OPI_TestDataRetrieval.WriteLog(Result, "FinishPartsUpload", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
#EndRegion
#EndRegion

View File

@ -788,6 +788,35 @@ Function CopyCollection(Val Collection) Export
EndFunction
Function GetRequestBody(Val Request) Export
BFN = Request.GetBodyFileName();
Body = Undefined;
If ValueIsFilled(BFN) Then
BodyFile = New File(BFN);
If Not BodyFile.Exist() Then
Raise "A non-existent file is set for the request body";
Else
Body = New BinaryData(BFN);
EndIf;
Else
Body = Request.ПолучитьТелоКакДвоичныеДанные();
EndIf;
If Body = Undefined Then
Body = ПолучитьДвоичныеДанныеИзСтроки("");
EndIf;
Return Body;
EndFunction
Procedure ValueToArray(Value) Export
If TypeOf(Value) = Type("Array") Then

View File

@ -590,7 +590,8 @@ EndFunction
//
// Note
// Method at AWS documentation: [PutObject](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
// This is a service method. A `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading^
// Using this method for large files may cause errors
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -622,7 +623,8 @@ EndFunction
//
// Note
// Method at AWS documentation: [CreateMultipartUpload](@docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
// This is a service method. A `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main 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:
// Name - String - Name of the object in the bucket - name
@ -654,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 `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -698,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 `LoadObject` method is intended for the main scenario of files uploading
// This is a service method. A `PutObject` method is intended for the main scenario of files uploading
//
// Parameters:
// Name - String - Name of the object in the bucket - name
@ -1186,13 +1188,8 @@ EndFunction
Function CreateCanonicalRequest(Val Request, Val Connection, Val Method)
RequestBody = Request.GetBodyAsBinaryData();
If Not ValueIsFilled(RequestBody) Then
RequestBody = GetBinaryDataFromString("");
EndIf;
HashSum = OPI_Cryptography.Hash(RequestBody, HashFunction.SHA256);
RequestBody = OPI_Tools.GetRequestBody(Request);
HashSum = OPI_Cryptography.Hash(RequestBody, HashFunction.SHA256);
Request.Headers.Insert("x-amz-content-sha256", Lower(GetHexStringFromBinaryData(HashSum)));
RequestTemplate = "";

View File

@ -2149,6 +2149,7 @@ Procedure AWS_ObjectsManagment() Export
S3_CreateBucket(TestParameters);
S3_PutObject(TestParameters);
S3_UploadFullObject(TestParameters);
S3_InitPartsUpload(TestParameters);
S3_UploadObjectPart(TestParameters);
S3_FinishPartsUpload(TestParameters);
@ -15074,6 +15075,30 @@ Procedure S3_PutObject(FunctionParameters)
EndProcedure
Procedure S3_UploadFullObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
BasicData = OPI_S3.GetBasicDataStructure(URL, AccessKey, SecretKey, Region);
Name = "pictureSmall.jpg";
Bucket = "opi-gpbucket3";
Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data
Result = OPI_S3.UploadFullObject(Name, Bucket, Entity, BasicData);
// END
OPI_TestDataRetrieval.WriteLog(Result, "UploadFullObject", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
Procedure S3_DeleteObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];

View File

@ -2141,9 +2141,12 @@ Procedure CLI_AWS_ObjectsManagment() Export
OPI_TestDataRetrieval.ParameterToCollection("S3_SecretKey", TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("S3_URL" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters);
CLI_S3_CreateBucket(TestParameters);
CLI_S3_PutObject(TestParameters);
CLI_S3_UploadFullObject(TestParameters);
CLI_S3_InitPartsUpload(TestParameters);
CLI_S3_HeadObject(TestParameters);
CLI_S3_CopyObject(TestParameters);
CLI_S3_PutObjectTagging(TestParameters);
@ -17254,6 +17257,42 @@ Procedure CLI_S3_PutObject(FunctionParameters)
EndProcedure
Procedure CLI_S3_UploadFullObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("access", AccessKey);
Options.Insert("secret", SecretKey);
Options.Insert("region", Region);
BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options);
Name = "pictureSmall.jpg";
Bucket = "opi-gpbucket3";
Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket", Bucket);
Options.Insert("data" , Entity);
Options.Insert("basic" , BasicData);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options);
// END
OPI_TestDataRetrieval.WriteLog(Result, "UploadFullObject", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
Procedure CLI_S3_DeleteObject(FunctionParameters)
URL = FunctionParameters["S3_URL"];
@ -17572,6 +17611,98 @@ Procedure CLI_S3_GetObject(FunctionParameters)
EndProcedure
Procedure CLI_S3_InitPartsUpload(FunctionParameters)
URL = FunctionParameters["S3_URL"];
AccessKey = FunctionParameters["S3_AccessKey"];
SecretKey = FunctionParameters["S3_SecretKey"];
Region = "BTC";
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("access", AccessKey);
Options.Insert("secret", SecretKey);
Options.Insert("region", Region);
BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options);
Name = "fileChunked.mp3";
Bucket = "opi-gpbucket3";
Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data
Entity = OPI_Tools.Get(Entity);
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket", Bucket);
Options.Insert("basic" , BasicData);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options);
OPI_TestDataRetrieval.WriteLog(Result, "InitPartsUpload", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"];
TotalSize = Entity.Size();
ChunkSize = 5242880;
BytesRead = 0;
PartNumber = 1;
DataReader = New DataReader(Entity);
SourceStream = DataReader.SourceStream();
TagsArray = New Array;
WHile BytesRead < TotalSize Do
CurrentReading = DataReader.Read(ChunkSize);
CurrentData = CurrentReading.GetBinaryData();
TFN = GetTempFileName();
CurrentData.Write(TFN);
If CurrentData.Size() = 0 Then
Break;
EndIf;
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket" , Bucket);
Options.Insert("basic" , BasicData);
Options.Insert("upload" , UploadID);
Options.Insert("part" , PartNumber);
Options.Insert("content", TFN);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "UploadObjectPart", Options);
OPI_TestDataRetrieval.WriteLog(Result, "UploadObjectPart", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
BytesRead = SourceStream.CurrentPosition();
TagsArray.Add(Result["headers"]["Etag"]);
DeleteFiles(TFN);
Break;
PartNumber = PartNumber + 1;
EndDo;
Options = New Structure;
Options.Insert("name" , Name);
Options.Insert("bucket", Bucket);
Options.Insert("basic" , BasicData);
Options.Insert("upload", UploadID);
Options.Insert("tags" , TagsArray);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options);
OPI_TestDataRetrieval.WriteLog(Result, "FinishPartsUpload", "S3");
OPI_TestDataRetrieval.Check_S3Success(Result);
OPI_S3.DeleteObject(Name, Bucket, BasicData);
EndProcedure
#EndRegion
#EndRegion

View File

@ -788,6 +788,35 @@ Function CopyCollection(Val Collection) Export
EndFunction
Function GetRequestBody(Val Request) Export
BFN = Request.GetBodyFileName();
Body = Undefined;
If ValueIsFilled(BFN) Then
BodyFile = New File(BFN);
If Not BodyFile.Exists() Then
Raise "A non-existent file is set for the request body";
Else
Body = New BinaryData(BFN);
EndIf;
Else
Body = Request.GetBodyAsBinaryData();
EndIf;
If Body = Undefined Then
Body = GetBinaryDataFromString("");
EndIf;
Return Body;
EndFunction
Procedure ValueToArray(Value) Export
If TypeOf(Value) = Type("Array") Then

View File

@ -15090,13 +15090,13 @@
Результат = OPI_S3.ЗагрузитьОбъектЦеликом(Наименование, Бакет, Содержимое, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
КонецПроцедуры
Процедура S3_УдалитьОбъект(ПараметрыФункции)

View File

@ -17284,13 +17284,13 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
КонецПроцедуры
Процедура CLI_S3_УдалитьОбъект(ПараметрыФункции)
@ -17639,8 +17639,8 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"];
ОбщийРазмер = Содержимое.Размер();
@ -17656,7 +17656,7 @@
ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка);
ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные();
ИВФ = ПолучитьИмяВременногоФайла();
ТекущиеДанные.Записать(ИВФ);
@ -17664,37 +17664,37 @@
Прервать;
КонецЕсли;
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket" , Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload" , IDЗагрузки);
Опции.Вставить("part" , НомерЧасти);
Опции.Вставить("content", ИВФ);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьЧастьОбъекта", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3");
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket" , Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload" , IDЗагрузки);
Опции.Вставить("part" , НомерЧасти);
Опции.Вставить("content", ИВФ);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьЧастьОбъекта", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
МассивТегов.Добавить(Результат["headers"]["Etag"]);
УдалитьФайлы(ИВФ);
УдалитьФайлы(ИВФ);
Прервать;
НомерЧасти = НомерЧасти + 1;
КонецЦикла;
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket", Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload", IDЗагрузки);
Опции.Вставить("tags" , МассивТегов);
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket", Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload", IDЗагрузки);
Опции.Вставить("tags" , МассивТегов);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗавершитьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);

View File

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

View File

@ -790,31 +790,31 @@
Функция ПолучитьТелоЗапроса(Знач Запрос) Экспорт
ИФТ = Запрос.ПолучитьИмяФайлаТела();
Тело = Неопределено;
Если ЗначениеЗаполнено(ИФТ) Тогда
ФайлТела = Новый Файл(ИФТ);
Если Не ФайлТела.Существует() Тогда
ВызватьИсключение "Для тела запроса установлен несуществующий файл";
Иначе
Тело = Новый ДвоичныеДанные(ИФТ);
КонецЕсли;
Иначе
Тело = Запрос.ПолучитьТелоКакДвоичныеДанные();
КонецЕсли;
Если Тело = Неопределено Тогда
Тело = ПолучитьДвоичныеДанныеИзСтроки("");
КонецЕсли;
Возврат Тело;
ИФТ = Запрос.ПолучитьИмяФайлаТела();
Тело = Неопределено;
Если ЗначениеЗаполнено(ИФТ) Тогда
ФайлТела = Новый Файл(ИФТ);
Если Не ФайлТела.Существует() Тогда
ВызватьИсключение "Для тела запроса установлен несуществующий файл";
Иначе
Тело = Новый ДвоичныеДанные(ИФТ);
КонецЕсли;
Иначе
Тело = Запрос.ПолучитьТелоКакДвоичныеДанные();
КонецЕсли;
Если Тело = Неопределено Тогда
Тело = ПолучитьДвоичныеДанныеИзСтроки("");
КонецЕсли;
Возврат Тело;
КонецФункции
Процедура ЗначениеВМассив(Значение) Экспорт

View File

@ -790,31 +790,31 @@
Функция ПолучитьТелоЗапроса(Знач Запрос) Экспорт
ИФТ = Запрос.ПолучитьИмяФайлаТела();
Тело = Неопределено;
Если ЗначениеЗаполнено(ИФТ) Тогда
ФайлТела = Новый Файл(ИФТ);
Если Не ФайлТела.Существует() Тогда
ВызватьИсключение "Для тела запроса установлен несуществующий файл";
Иначе
Тело = Новый ДвоичныеДанные(ИФТ);
КонецЕсли;
Иначе
Тело = Запрос.ПолучитьТелоКакДвоичныеДанные();
КонецЕсли;
Если Тело = Неопределено Тогда
Тело = ПолучитьДвоичныеДанныеИзСтроки("");
КонецЕсли;
Возврат Тело;
ИФТ = Запрос.ПолучитьИмяФайлаТела();
Тело = Неопределено;
Если ЗначениеЗаполнено(ИФТ) Тогда
ФайлТела = Новый Файл(ИФТ);
Если Не ФайлТела.Существует() Тогда
ВызватьИсключение "Для тела запроса установлен несуществующий файл";
Иначе
Тело = Новый ДвоичныеДанные(ИФТ);
КонецЕсли;
Иначе
Тело = Запрос.ПолучитьТелоКакДвоичныеДанные();
КонецЕсли;
Если Тело = Неопределено Тогда
Тело = ПолучитьДвоичныеДанныеИзСтроки("");
КонецЕсли;
Возврат Тело;
КонецФункции
Процедура ЗначениеВМассив(Значение) Экспорт

View File

@ -15090,13 +15090,13 @@
Результат = OPI_S3.ЗагрузитьОбъектЦеликом(Наименование, Бакет, Содержимое, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
КонецПроцедуры
Процедура S3_УдалитьОбъект(ПараметрыФункции)

View File

@ -17284,13 +17284,13 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьОбъектЦеликом", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные);
КонецПроцедуры
Процедура CLI_S3_УдалитьОбъект(ПараметрыФункции)
@ -17639,8 +17639,8 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИнициализироватьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"];
ОбщийРазмер = Содержимое.Размер();
@ -17656,7 +17656,7 @@
ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка);
ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные();
ИВФ = ПолучитьИмяВременногоФайла();
ТекущиеДанные.Записать(ИВФ);
@ -17664,37 +17664,37 @@
Прервать;
КонецЕсли;
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket" , Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload" , IDЗагрузки);
Опции.Вставить("part" , НомерЧасти);
Опции.Вставить("content", ИВФ);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьЧастьОбъекта", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3");
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket" , Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload" , IDЗагрузки);
Опции.Вставить("part" , НомерЧасти);
Опции.Вставить("content", ИВФ);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьЧастьОбъекта", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьЧастьОбъекта", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
МассивТегов.Добавить(Результат["headers"]["Etag"]);
УдалитьФайлы(ИВФ);
УдалитьФайлы(ИВФ);
Прервать;
НомерЧасти = НомерЧасти + 1;
КонецЦикла;
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket", Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload", IDЗагрузки);
Опции.Вставить("tags" , МассивТегов);
Опции = Новый Структура;
Опции.Вставить("name" , Наименование);
Опции.Вставить("bucket", Бакет);
Опции.Вставить("basic" , ОсновныеДанные);
Опции.Вставить("upload", IDЗагрузки);
Опции.Вставить("tags" , МассивТегов);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗавершитьЗагрузкуЧастями", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);