1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-06-21 00:29:52 +02:00
This commit is contained in:
Anton
2024-07-27 15:57:08 +03:00
23 changed files with 1013 additions and 881 deletions

Binary file not shown.

View File

@ -0,0 +1,66 @@
 {
"result": {
"1": {
"id": 1,
"active": true,
"name": "Антон Титовец",
"first_name": "Антон",
"last_name": "Титовец",
"work_position": null,
"color": "#df532d",
"avatar": "https://cdn-ru.bitrix24.by/b28528874/resize_cache/30/ff58db95aecdfa09ae61b51b5fd8f63f/main/d7e/d7e99cf556e4ab676463dae2c00ddfbb/a7e0af6899300e3c684caeca5c334d81.jpg",
"gender": "M",
"birthday": "",
"extranet": false,
"network": false,
"bot": false,
"connector": false,
"external_auth_id": "socservices",
"status": "online",
"idle": false,
"last_activity_date": "2024-07-26T16:40:14+00:00",
"mobile_last_date": false,
"absent": false,
"departments": [
1
],
"phones": false
},
"10": {
"id": 10,
"active": true,
"name": "Techno Pizza",
"first_name": "Techno",
"last_name": "Pizza",
"work_position": null,
"color": "#ab7761",
"avatar": "",
"gender": "M",
"birthday": "",
"extranet": false,
"network": false,
"bot": false,
"connector": false,
"external_auth_id": "socservices",
"status": "online",
"idle": false,
"last_activity_date": "2024-07-13T18:36:23+00:00",
"mobile_last_date": false,
"absent": false,
"departments": [
1
],
"phones": false
}
},
"time": {
"start": 1722083795.95109,
"finish": 1722083795.98854,
"duration": 0.0374538898468018,
"processing": 0.0117349624633789,
"date_start": "2024-07-27T12:36:35+00:00",
"date_finish": "2024-07-27T12:36:35+00:00",
"operating_reset_at": 1722084395,
"operating": 0
}
}

View File

@ -0,0 +1,40 @@
 {
"result": {
"10": {
"id": 10,
"active": true,
"name": "Techno Pizza",
"first_name": "Techno",
"last_name": "Pizza",
"work_position": null,
"color": "#ab7761",
"avatar": "",
"gender": "M",
"birthday": "",
"extranet": false,
"network": false,
"bot": false,
"connector": false,
"external_auth_id": "socservices",
"status": "online",
"idle": false,
"last_activity_date": "2024-07-13T18:36:23+00:00",
"mobile_last_date": false,
"absent": false,
"departments": [
1
],
"phones": false
}
},
"time": {
"start": 1722083796.56495,
"finish": 1722083796.59641,
"duration": 0.031451940536499,
"processing": 0.00229191780090332,
"date_start": "2024-07-27T12:36:36+00:00",
"date_finish": "2024-07-27T12:36:36+00:00",
"operating_reset_at": 1722084396,
"operating": 0
}
}

View File

@ -0,0 +1,13 @@
 {
"result": true,
"time": {
"start": 1722083794.79077,
"finish": 1722083794.83071,
"duration": 0.0399410724639893,
"processing": 0.00931882858276367,
"date_start": "2024-07-27T12:36:34+00:00",
"date_finish": "2024-07-27T12:36:34+00:00",
"operating_reset_at": 1722084394,
"operating": 0
}
}

View File

@ -0,0 +1,13 @@
 {
"result": true,
"time": {
"start": 1722083795.3692,
"finish": 1722083795.39818,
"duration": 0.0289750099182129,
"processing": 0.00522208213806152,
"date_start": "2024-07-27T12:36:35+00:00",
"date_finish": "2024-07-27T12:36:35+00:00",
"operating_reset_at": 1722084395,
"operating": 0
}
}

File diff suppressed because it is too large Load Diff

View File

@ -493,7 +493,7 @@ Function DeletePosts(Val Token, Val Base, Val Table, Val Records) Export
RecordString = ""; RecordString = "";
For Each Record In Records Do For Each Record In Records Do
RecordString = RecordString RecordString = RecordString
+ ?(ValueIsFilled(RecordString), "&", "?") + ?(ValueIsFilled(RecordString), "&", "?")
+ "records[]=" + "records[]="
+ OPI_Tools.NumberToString(Record); + OPI_Tools.NumberToString(Record);

View File

@ -69,7 +69,7 @@ EndFunction
// Map Of KeyAndValue - serialized JSON response from Dropbox // Map Of KeyAndValue - serialized JSON response from Dropbox
Function GetToken(Val AppKey, Val AppSecret, Val Code) Export Function GetToken(Val AppKey, Val AppSecret, Val Code) Export
URL = "https://api.dropbox.com/oauth2/token"; URL = "https://api.dropbox.com/oauth2/token";
DataType = "application/x-www-form-urlencoded; charset=utf-8"; DataType = "application/x-www-form-urlencoded; charset=utf-8";
Parameters = New Structure; Parameters = New Structure;

View File

@ -292,7 +292,7 @@ Function EditListCalendar(Val Token
OPI_TypeConversion.GetBoolean(Hidden); OPI_TypeConversion.GetBoolean(Hidden);
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token); Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat =true"; URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat=true";
Parameters = New Map; Parameters = New Map;
Parameters.Insert("hidden" , Hidden); Parameters.Insert("hidden" , Hidden);
@ -491,12 +491,12 @@ Function ConvertDate(Val Date)
Return Undefined; Return Undefined;
EndIf; EndIf;
If Date = BegOfDay(Date) Then If Date = BegOfDay(Date) Then
DateFormat = "DF=yyyy-MM-dd"; DateFormat = "DF=yyyy-MM-dd";
Field = "date"; Field = "date";
Else Else
DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ"; DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ";
Field = "dateTime"; Field = "dateTime";
EndIf; EndIf;
Date = Format(Date, DateFormat); Date = Format(Date, DateFormat);

View File

@ -337,7 +337,7 @@ Function CreateComment(Val Token, Val Identifier, Val Comment) Export
OPI_TypeConversion.GetLine(Comment); OPI_TypeConversion.GetLine(Comment);
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token); Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields =*"; URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields=*";
Parameters = New Structure; Parameters = New Structure;
Parameters.Insert("content", Comment); Parameters.Insert("content", Comment);
@ -708,7 +708,7 @@ Function CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, C
Return Response; Return Response;
EndIf; EndIf;
UploadedData = StrReplace(UploadedData, "bytes =", ""); UploadedData = StrReplace(UploadedData, "bytes=", "");
ArrayOfInformation = StrSplit(UploadedData, "-", False); ArrayOfInformation = StrSplit(UploadedData, "-", False);
PartsRequired = 2; PartsRequired = 2;

View File

@ -320,11 +320,11 @@ Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Shee
First = True; First = True;
For Each Cell In CellsArray Do For Each Cell In CellsArray Do
Delimiter = ?(First, "?", "&"); Delimiter = ?(First, "?", "&");
URL = URL + Delimiter + "ranges =" + Cell; URL = URL + Delimiter + "ranges=" + Cell;
First = False; First = False;
EndDo; EndDo;
Else Else
URL = URL + "?ranges ='" + Sheet + "'"; URL = URL + "?ranges ='" + Sheet + "'";
EndIf; EndIf;
Response = OPI_Tools.Get(URL, , Headers); Response = OPI_Tools.Get(URL, , Headers);

View File

@ -207,7 +207,7 @@ Function ProcessTMAData(Val DataString, Val Token) Export
For Each DataString In TValue Do For Each DataString In TValue Do
If DataString.Key <> "hash" Then If DataString.Key <> "hash" Then
DCS = DCS + DataString.Key + " =" + DataString.Value + Chars.LF; DCS = DCS + DataString.Key + "=" + DataString.Value + Chars.LF;
ReturnMapping.Insert(DataString.Key, DataString.Value); ReturnMapping.Insert(DataString.Key, DataString.Value);
Else Else
Hash = DataString.Value; Hash = DataString.Value;

View File

@ -611,7 +611,7 @@ Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType
SignatureString = SignatureString SignatureString = SignatureString
+ TableRow.Key + TableRow.Key
+ " =" + " ="
+ TableRow.Value + TableRow.Value
+ "&"; + "&";
@ -635,16 +635,16 @@ Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType
Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding); Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding);
Delimiter = ""","; Delimiter = """,";
AuthorizationHeader = AuthorizationHeader AuthorizationHeader = AuthorizationHeader
+ "OAuth " + "OAuth "
+ "oauth_consumer_key =""" + Parameters[OCK] + Delimiter + "oauth_consumer_key =""" + Parameters[OCK] + Delimiter
+ "oauth_token =""" + Parameters[OTK] + Delimiter + "oauth_token =""" + Parameters[OTK] + Delimiter
+ "oauth_signature_method=""" + HashingMethod + Delimiter + "oauth_signature_method=""" + HashingMethod + Delimiter
+ "oauth_timestamp =""" + CurrentUNIXDate + Delimiter + "oauth_timestamp =""" + CurrentUNIXDate + Delimiter
+ "oauth_nonce =""" + CurrentUNIXDate + Delimiter + "oauth_nonce =""" + CurrentUNIXDate + Delimiter
+ "oauth_version =""" + APIVersion + Delimiter + "oauth_version =""" + APIVersion + Delimiter
+ "oauth_signature =""" + Signature; + "oauth_signature =""" + Signature;
HeaderMapping = New Map; HeaderMapping = New Map;
HeaderMapping.Insert("authorization", AuthorizationHeader); HeaderMapping.Insert("authorization", AuthorizationHeader);

View File

@ -241,7 +241,7 @@ Function RequestParametersToString(Val Parameters) Export
ParameterString = ParameterString ParameterString = ParameterString
+ Parameter.Key + Parameter.Key
+ " =" + "="
+ ParameterValue + ParameterValue
+ "&"; + "&";
EndDo; EndDo;
@ -555,7 +555,7 @@ Function ExecuteRequestWithBody(Val URL
Parameters = New Structure; Parameters = New Structure;
EndIf; EndIf;
DataType = ?(JSON, "application/json; charset =utf-8", "application/x-www-form-urlencoded; charset =utf-8"); DataType = ?(JSON, "application/json; charset=utf-8", "application/x-www-form-urlencoded; charset=utf-8");
URLStructure = SplitURL(URL); URLStructure = SplitURL(URL);
Server = URLStructure["Server"]; Server = URLStructure["Server"];
Address = URLStructure["Address"]; Address = URLStructure["Address"];
@ -675,7 +675,7 @@ Function ExecuteMultipartRequest(Val URL
Error = 400; Error = 400;
Boundary = StrReplace(String(New UUID), "-", ""); Boundary = StrReplace(String(New UUID), "-", "");
LineSeparator = Chars.CR + Chars.LF; LineSeparator = Chars.CR + Chars.LF;
DataType = "multipart/form-data; boundary =" + Boundary; DataType = "multipart/form-data; boundary=" + Boundary;
URLStructure = SplitURL(URL); URLStructure = SplitURL(URL);
Server = URLStructure["Server"]; Server = URLStructure["Server"];
Address = URLStructure["Address"]; Address = URLStructure["Address"];
@ -739,7 +739,7 @@ Function ExecuteMultipartRelatedRequest(Val URL
Error = 400; Error = 400;
Boundary = StrReplace(String(New UUID), "-", ""); Boundary = StrReplace(String(New UUID), "-", "");
LineSeparator = Chars.CR + Chars.LF; LineSeparator = Chars.CR + Chars.LF;
DataType = "multipart/related; boundary =" + Boundary; DataType = "multipart/related; boundary=" + Boundary;
URLStructure = SplitURL(URL); URLStructure = SplitURL(URL);
Server = URLStructure["Server"]; Server = URLStructure["Server"];
Address = URLStructure["Address"]; Address = URLStructure["Address"];

View File

@ -493,7 +493,7 @@ Function DeletePosts(Val Token, Val Base, Val Table, Val Records) Export
RecordString = ""; RecordString = "";
For Each Record In Records Do For Each Record In Records Do
RecordString = RecordString RecordString = RecordString
+ ?(ValueIsFilled(RecordString), "&", "?") + ?(ValueIsFilled(RecordString), "&", "?")
+ "records[]=" + "records[]="
+ OPI_Tools.NumberToString(Record); + OPI_Tools.NumberToString(Record);

View File

@ -69,7 +69,7 @@ EndFunction
// Map Of KeyAndValue - serialized JSON response from Dropbox // Map Of KeyAndValue - serialized JSON response from Dropbox
Function GetToken(Val AppKey, Val AppSecret, Val Code) Export Function GetToken(Val AppKey, Val AppSecret, Val Code) Export
URL = "https://api.dropbox.com/oauth2/token"; URL = "https://api.dropbox.com/oauth2/token";
DataType = "application/x-www-form-urlencoded; charset=utf-8"; DataType = "application/x-www-form-urlencoded; charset=utf-8";
Parameters = New Structure; Parameters = New Structure;

View File

@ -292,7 +292,7 @@ Function EditListCalendar(Val Token
OPI_TypeConversion.GetBoolean(Hidden); OPI_TypeConversion.GetBoolean(Hidden);
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token); Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat =true"; URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat=true";
Parameters = New Map; Parameters = New Map;
Parameters.Insert("hidden" , Hidden); Parameters.Insert("hidden" , Hidden);
@ -491,12 +491,12 @@ Function ConvertDate(Val Date)
Return Undefined; Return Undefined;
EndIf; EndIf;
If Date = BegOfDay(Date) Then If Date = BegOfDay(Date) Then
DateFormat = "DF=yyyy-MM-dd"; DateFormat = "DF=yyyy-MM-dd";
Field = "date"; Field = "date";
Else Else
DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ"; DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ";
Field = "dateTime"; Field = "dateTime";
EndIf; EndIf;
Date = Format(Date, DateFormat); Date = Format(Date, DateFormat);

View File

@ -337,7 +337,7 @@ Function CreateComment(Val Token, Val Identifier, Val Comment) Export
OPI_TypeConversion.GetLine(Comment); OPI_TypeConversion.GetLine(Comment);
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token); Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields =*"; URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields=*";
Parameters = New Structure; Parameters = New Structure;
Parameters.Insert("content", Comment); Parameters.Insert("content", Comment);
@ -708,7 +708,7 @@ Function CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, C
Return Response; Return Response;
EndIf; EndIf;
UploadedData = StrReplace(UploadedData, "bytes =", ""); UploadedData = StrReplace(UploadedData, "bytes=", "");
ArrayOfInformation = StrSplit(UploadedData, "-", False); ArrayOfInformation = StrSplit(UploadedData, "-", False);
PartsRequired = 2; PartsRequired = 2;

View File

@ -320,11 +320,11 @@ Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Shee
First = True; First = True;
For Each Cell In CellsArray Do For Each Cell In CellsArray Do
Delimiter = ?(First, "?", "&"); Delimiter = ?(First, "?", "&");
URL = URL + Delimiter + "ranges =" + Cell; URL = URL + Delimiter + "ranges=" + Cell;
First = False; First = False;
EndDo; EndDo;
Else Else
URL = URL + "?ranges ='" + Sheet + "'"; URL = URL + "?ranges ='" + Sheet + "'";
EndIf; EndIf;
Response = OPI_Tools.Get(URL, , Headers); Response = OPI_Tools.Get(URL, , Headers);

View File

@ -207,7 +207,7 @@ Function ProcessTMAData(Val DataString, Val Token) Export
For Each DataString In TValue Do For Each DataString In TValue Do
If DataString.Key <> "hash" Then If DataString.Key <> "hash" Then
DCS = DCS + DataString.Key + " =" + DataString.Value + Chars.LF; DCS = DCS + DataString.Key + "=" + DataString.Value + Chars.LF;
ReturnMapping.Insert(DataString.Key, DataString.Value); ReturnMapping.Insert(DataString.Key, DataString.Value);
Else Else
Hash = DataString.Value; Hash = DataString.Value;

View File

@ -241,7 +241,7 @@ Function RequestParametersToString(Val Parameters) Export
ParameterString = ParameterString ParameterString = ParameterString
+ Parameter.Key + Parameter.Key
+ " =" + "="
+ ParameterValue + ParameterValue
+ "&"; + "&";
EndDo; EndDo;
@ -555,7 +555,7 @@ Function ExecuteRequestWithBody(Val URL
Parameters = New Structure; Parameters = New Structure;
EndIf; EndIf;
DataType = ?(JSON, "application/json; charset =utf-8", "application/x-www-form-urlencoded; charset =utf-8"); DataType = ?(JSON, "application/json; charset=utf-8", "application/x-www-form-urlencoded; charset=utf-8");
URLStructure = SplitURL(URL); URLStructure = SplitURL(URL);
Server = URLStructure["Server"]; Server = URLStructure["Server"];
Address = URLStructure["Address"]; Address = URLStructure["Address"];
@ -675,7 +675,7 @@ Function ExecuteMultipartRequest(Val URL
Error = 400; Error = 400;
Boundary = StrReplace(String(New UUID), "-", ""); Boundary = StrReplace(String(New UUID), "-", "");
LineSeparator = Chars.CR + Chars.LF; LineSeparator = Chars.CR + Chars.LF;
DataType = "multipart/form-data; boundary =" + Boundary; DataType = "multipart/form-data; boundary=" + Boundary;
URLStructure = SplitURL(URL); URLStructure = SplitURL(URL);
Server = URLStructure["Server"]; Server = URLStructure["Server"];
Address = URLStructure["Address"]; Address = URLStructure["Address"];
@ -739,7 +739,7 @@ Function ExecuteMultipartRelatedRequest(Val URL
Error = 400; Error = 400;
Boundary = StrReplace(String(New UUID), "-", ""); Boundary = StrReplace(String(New UUID), "-", "");
LineSeparator = Chars.CR + Chars.LF; LineSeparator = Chars.CR + Chars.LF;
DataType = "multipart/related; boundary =" + Boundary; DataType = "multipart/related; boundary=" + Boundary;
URLStructure = SplitURL(URL); URLStructure = SplitURL(URL);
Server = URLStructure["Server"]; Server = URLStructure["Server"];
Address = URLStructure["Address"]; Address = URLStructure["Address"];

View File

@ -611,7 +611,7 @@ Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType
SignatureString = SignatureString SignatureString = SignatureString
+ TableRow.Key + TableRow.Key
+ " =" + " ="
+ TableRow.Value + TableRow.Value
+ "&"; + "&";
@ -635,16 +635,16 @@ Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType
Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding); Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding);
Delimiter = ""","; Delimiter = """,";
AuthorizationHeader = AuthorizationHeader AuthorizationHeader = AuthorizationHeader
+ "OAuth " + "OAuth "
+ "oauth_consumer_key =""" + Parameters[OCK] + Delimiter + "oauth_consumer_key =""" + Parameters[OCK] + Delimiter
+ "oauth_token =""" + Parameters[OTK] + Delimiter + "oauth_token =""" + Parameters[OTK] + Delimiter
+ "oauth_signature_method=""" + HashingMethod + Delimiter + "oauth_signature_method=""" + HashingMethod + Delimiter
+ "oauth_timestamp =""" + CurrentUNIXDate + Delimiter + "oauth_timestamp =""" + CurrentUNIXDate + Delimiter
+ "oauth_nonce =""" + CurrentUNIXDate + Delimiter + "oauth_nonce =""" + CurrentUNIXDate + Delimiter
+ "oauth_version =""" + APIVersion + Delimiter + "oauth_version =""" + APIVersion + Delimiter
+ "oauth_signature =""" + Signature; + "oauth_signature =""" + Signature;
HeaderMapping = New Map; HeaderMapping = New Map;
HeaderMapping.Insert("authorization", AuthorizationHeader); HeaderMapping.Insert("authorization", AuthorizationHeader);

View File

@ -1,21 +1,21 @@
<package-def> <package-def>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/> <module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/> <module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/> <module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/> <module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
</package-def> </package-def>