Skip to content

Commit

Permalink
Преобразование OPI -> OInt (workflow)
Browse files Browse the repository at this point in the history
  • Loading branch information
VitalyTheAlpaca committed Jul 2, 2024
1 parent 7fd0e0e commit 4fe5904
Show file tree
Hide file tree
Showing 11 changed files with 3,824 additions and 3,500 deletions.
6,908 changes: 3,454 additions & 3,454 deletions service/dictionaries/en.json

Large diffs are not rendered by default.

53 changes: 53 additions & 0 deletions src/en/OInt/core/Modules/OPI_Bitrix24.os
Original file line number Diff line number Diff line change
Expand Up @@ -1217,6 +1217,59 @@ Function RenameFolder(Val URL, Val FolderID, Val Name, Val Token = "") Export

EndFunction

// Upload file to the folder
// Upload local file to the folder
//
// Parameters:
// URL - String - URL of webhook or a Bitrix24 domain, when token used - url
// Name - String - File name with extension - title
// File - String, BinaryData - File for upload - file
// FolderID - String - Folder identifier - folderid
// Token - String - Access token, when not-webhook method used - token
//
// Returns:
// Map Of KeyAndValue - serialized JSON of answer from Bitrix24 API
Function UploadFileToFolder(Val URL
, Val Name
, Val File
, Val FolderID
, Val Token = "") Export


OPI_TypeConversion.GetLine(Name);
OPI_TypeConversion.GetBinaryData(File);

Parameters = NormalizeAuth(URL, Token, "disk.folder.uploadFile");
OPI_Tools.AddField("id", FolderID, "String", Parameters);

Response = OPI_Tools.Get(URL, Parameters);
Result = Response["result"];

If ValueIsFilled(Result) Then

FieldName = Result["field"];
UploadURL = Result["uploadUrl"];

If ValueIsFilled(FieldName) And ValueIsFilled(UploadURL) Then

FieldName = TrimAll(FieldName);
UploadURL = TrimAll(UploadURL);
FileName = FieldName + "|" + Name;

FileMapping = New Map;
FileMapping.Insert(FileName, File);

Response = OPI_Tools.PostMultipart(UploadURL, , FileMapping);

EndIf;

EndIf;


Return Response;

EndFunction

// Get fields structure for folder items filter
// Returns filter structure for child folder items
//
Expand Down
44 changes: 41 additions & 3 deletions src/en/OInt/tests/Modules/internal/OPI_Tests.os
Original file line number Diff line number Diff line change
Expand Up @@ -2934,13 +2934,14 @@ Procedure B24_WorkingWithDrive() Export
Bitrix24_GetFolderExternalLink(TestParameters);
Bitrix24_CreateSubfolder(TestParameters);
Bitrix24_CopyFolder(TestParameters);
Bitrxi24_UploadFileToFolder(TestParameters);
Bitrix24_GetFolderFilterStructure(TestParameters);
Bitrix24_GetFolderItems(TestParameters);
Bitrix24_MoveFolder(TestParameters);
Bitrxi24_MarkFolderAsDeleted(TestParameters);
Bitrix24_RestoreFolder(TestParameters);
Bitrix24_DeleteFolder(TestParameters);

EndProcedure

#EndRegion
Expand Down Expand Up @@ -3296,7 +3297,7 @@ Procedure Check_VKCampaign(Val Result)
Result = Result["response"][0];

OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("Map");
OPI_TestDataRetrieval.ExpectsThat(Result["error_code"]).ИмеетТип("Number").Равно(602);
OPI_TestDataRetrieval.ExpectsThat(Result["error_code"]).ИмеетТип("Number").Равно(603);
OPI_TestDataRetrieval.ExpectsThat(Result["id"]).ИмеетТип("Number").Заполнено();

EndProcedure
Expand Down Expand Up @@ -4809,7 +4810,7 @@ Procedure VK_CreateAdCampaign(FunctionParameters)

OPI_TestDataRetrieval.WriteLog(Result, "CreateAdvertisingCampaign", "VK");

Check_VKCampaign(Result);
Check_Map(Result);

CampaignID = Result["response"][0]["id"];
OPI_TestDataRetrieval.WriteParameter("VK_AdsCampaignID", CampaignID);
Expand Down Expand Up @@ -7245,6 +7246,43 @@ Procedure Bitrix24_RenameFolder(FunctionParameters)

EndProcedure

Procedure Bitrxi24_UploadFileToFolder(FunctionParameters)

Filename2 = "Picture2.jpg";
Name = "Picture1.jpg";

Image2 = FunctionParameters["Picture"]; // Local path, URL or Binary Data
Image = FunctionParameters["Picture2"]; // Local path, URL or Binary Data

DestinationID = FunctionParameters["Bitrix24_FolderID"];

URL = FunctionParameters["Bitrix24_URL"];

Result = OPI_Bitrix24.UploadFileToFolder(URL, Filename2, Image2, DestinationID);

OPI_TestDataRetrieval.WriteLog(Result, "UploadFileToFolder (wh)", "Bitrix24");

Check_BitrixFile(Result); // SKIP

FileID = Result["result"]["ID"]; // SKIP
OPI_Bitrix24.DeleteFile(URL, FileID); // SKIP

URL = FunctionParameters["Bitrix24_Domain"];
Token = FunctionParameters["Bitrix24_Token"];

Result = OPI_Bitrix24.UploadFileToFolder(URL, Name, Image, DestinationID, Token);

// END

OPI_TestDataRetrieval.WriteLog(Result, "UploadFileToFolder", "Bitrix24");

Check_BitrixFile(Result);

FileID = Result["result"]["ID"];
Result = OPI_Bitrix24.DeleteFile(URL, FileID, Token);

EndProcedure

#EndRegion

#Region YandexDisk
Expand Down
46 changes: 33 additions & 13 deletions src/en/OInt/tools/Modules/internal/Modules/OPI_Tools.os
Original file line number Diff line number Diff line change
Expand Up @@ -817,6 +817,33 @@ Function ConvertParameterToString(Val Value)

EndFunction

Function SplitFileKey(Val FileData, Val ContentType)

DotReplacement = "___";
FileName = StrReplace(FileData, DotReplacement, ".");
NameParts = StrSplit(FileName, "|", False);

If NameParts.Count() = 2 Then
FieldName = NameParts[0];
FileName = NameParts[1];
Else

If ContentType = "image/jpeg" Then
FieldName = "photo";
Else
FieldName = Left(FileName, StrFind(FileName, ".") - 1);
FieldName = ?(ValueIsFilled(FieldName), FieldName, StrReplace(FileData,
DotReplacement, "."));
EndIf;

EndIf;

ReturnStructure = New Structure("FieldName,FileName", FieldName, FileName);

Return ReturnStructure;

EndFunction

Procedure SetRequestBody(Request, Val Parameters, Val JSON)

Collection = TypeOf(Parameters) = Type("Structure")
Expand Down Expand Up @@ -883,26 +910,19 @@ Procedure WriteMultipartFiles(TextRecord, Val Boundary, Val ContentType, Val Fil

ContentType = TrimAll(ContentType);
LineSeparator = Chars.CR + Chars.LF;
DotReplacement = "___";


For Each File In Files Do

FilePath = StrReplace(File.Key, DotReplacement, ".");
DataStructure = SplitFileKey(File.Key, ContentType);

If ContentType = "image/jpeg" Then
SendingFileName = "photo";
Else
SendingFileName = StrReplace(File.Key, DotReplacement, ".");
SendingFileName = Left(SendingFileName, StrFind(SendingFileName, ".") - 1);
SendingFileName = ?(ValueIsFilled(SendingFileName), SendingFileName, StrReplace(File.Key,
DotReplacement, "."));
EndIf;
FieldName = DataStructure["FieldName"];
FileName = DataStructure["FileName"];

TextRecord.WriteLine("--" + boundary + LineSeparator);
TextRecord.WriteLine("Content-Disposition: form-data; name="""
+ SendingFileName
+ FieldName
+ """; filename="""
+ FilePath
+ FileName
+ """");
TextRecord.WriteLine(LineSeparator);

Expand Down
53 changes: 53 additions & 0 deletions src/en/OPI/src/CommonModules/OPI_Bitrix24/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -1217,6 +1217,59 @@ Function RenameFolder(Val URL, Val FolderID, Val Name, Val Token = "") Export

EndFunction

// Upload file to the folder
// Upload local file to the folder
//
// Parameters:
// URL - String - URL of webhook or a Bitrix24 domain, when token used - url
// Name - String - File name with extension - title
// File - String, BinaryData - File for upload - file
// FolderID - String - Folder identifier - folderid
// Token - String - Access token, when not-webhook method used - token
//
// Returns:
// Map Of KeyAndValue - serialized JSON of answer from Bitrix24 API
Function UploadFileToFolder(Val URL
, Val Name
, Val File
, Val FolderID
, Val Token = "") Export


OPI_TypeConversion.GetLine(Name);
OPI_TypeConversion.GetBinaryData(File);

Parameters = NormalizeAuth(URL, Token, "disk.folder.uploadFile");
OPI_Tools.AddField("id", FolderID, "String", Parameters);

Response = OPI_Tools.Get(URL, Parameters);
Result = Response["result"];

If ValueIsFilled(Result) Then

FieldName = Result["field"];
UploadURL = Result["uploadUrl"];

If ValueIsFilled(FieldName) And ValueIsFilled(UploadURL) Then

FieldName = TrimAll(FieldName);
UploadURL = TrimAll(UploadURL);
FileName = FieldName + "|" + Name;

FileMapping = New Map;
FileMapping.Insert(FileName, File);

Response = OPI_Tools.PostMultipart(UploadURL, , FileMapping);

EndIf;

EndIf;


Return Response;

EndFunction

// Get fields structure for folder items filter
// Returns filter structure for child folder items
//
Expand Down
44 changes: 41 additions & 3 deletions src/en/OPI/src/CommonModules/OPI_Tests/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -2934,13 +2934,14 @@ Procedure B24_WorkingWithDrive() Export
Bitrix24_GetFolderExternalLink(TestParameters);
Bitrix24_CreateSubfolder(TestParameters);
Bitrix24_CopyFolder(TestParameters);
Bitrxi24_UploadFileToFolder(TestParameters);
Bitrix24_GetFolderFilterStructure(TestParameters);
Bitrix24_GetFolderItems(TestParameters);
Bitrix24_MoveFolder(TestParameters);
Bitrxi24_MarkFolderAsDeleted(TestParameters);
Bitrix24_RestoreFolder(TestParameters);
Bitrix24_DeleteFolder(TestParameters);

EndProcedure

#EndRegion
Expand Down Expand Up @@ -3296,7 +3297,7 @@ Procedure Check_VKCampaign(Val Result)
Result = Result["response"][0];

OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("Map");
OPI_TestDataRetrieval.ExpectsThat(Result["error_code"]).ИмеетТип("Number").Равно(602);
OPI_TestDataRetrieval.ExpectsThat(Result["error_code"]).ИмеетТип("Number").Равно(603);
OPI_TestDataRetrieval.ExpectsThat(Result["id"]).ИмеетТип("Number").Заполнено();

EndProcedure
Expand Down Expand Up @@ -4809,7 +4810,7 @@ Procedure VK_CreateAdCampaign(FunctionParameters)

// !OInt OPI_TestDataRetrieval.WriteLog(Result, "CreateAdvertisingCampaign", "VK");

Check_VKCampaign(Result);
Check_Map(Result);

CampaignID = Result["response"][0]["id"];
OPI_TestDataRetrieval.WriteParameter("VK_AdsCampaignID", CampaignID);
Expand Down Expand Up @@ -7245,6 +7246,43 @@ Procedure Bitrix24_RenameFolder(FunctionParameters)

EndProcedure

Procedure Bitrxi24_UploadFileToFolder(FunctionParameters)

Filename2 = "Picture2.jpg";
Name = "Picture1.jpg";

Image2 = FunctionParameters["Picture"]; // Local path, URL or Binary Data
Image = FunctionParameters["Picture2"]; // Local path, URL or Binary Data

DestinationID = FunctionParameters["Bitrix24_FolderID"];

URL = FunctionParameters["Bitrix24_URL"];

Result = OPI_Bitrix24.UploadFileToFolder(URL, Filename2, Image2, DestinationID);

// !OInt OPI_TestDataRetrieval.WriteLog(Result, "UploadFileInDirectory (хуto)", "Bitrix24");

Check_BitrixFile(Result); // SKIP

FileID = Result["result"]["ID"]; // SKIP
OPI_Bitrix24.DeleteFile(URL, FileID); // SKIP

URL = FunctionParameters["Bitrix24_Domain"];
Token = FunctionParameters["Bitrix24_Token"];

Result = OPI_Bitrix24.UploadFileToFolder(URL, Name, Image, DestinationID, Token);

// END

// !OInt OPI_TestDataRetrieval.WriteLog(Result, "UploadFileInDirectory", "Bitrix24");

Check_BitrixFile(Result);

FileID = Result["result"]["ID"];
Result = OPI_Bitrix24.DeleteFile(URL, FileID, Token);

EndProcedure

#EndRegion

#Region YandexDisk
Expand Down
Loading

0 comments on commit 4fe5904

Please sign in to comment.