1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-29 22:27:42 +02:00

Дополнение словарей

This commit is contained in:
Anton Titovets
2025-06-06 19:42:37 +03:00
parent fedd066776
commit 320f6ec7b3
43 changed files with 42764 additions and 47231 deletions

File diff suppressed because it is too large Load Diff

38
service/project.json vendored
View File

@@ -1,20 +1,20 @@
{
"version": "1.25.0",
"root": "./src/",
"mainLang": "ru",
"packageSrc": "OInt/",
"configurationSrc": "OPI/src/",
"dictionariesSrc": "./service/dictionaries/",
"workflowsSrc": "./.github/workflows/",
"jenkinsSrc": "./ci/",
"locVarsSrc": "./service/localization_vars/",
"paramsExamplesSrc": "./service/params_examples/",
"codeExamplesSrc": "./docs/ru/examples/",
"testValuesSrc": "./docs/ru/data/",
"testsModule": "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os",
"engineLinux": "C:/engine/linux",
"engineWindows": "C:/engine/windows",
"additionalLangs": [
"en"
]
{
"version": "1.25.0",
"root": "./src/",
"mainLang": "ru",
"packageSrc": "OInt/",
"configurationSrc": "OPI/src/",
"dictionariesSrc": "./service/dictionaries/",
"workflowsSrc": "./.github/workflows/",
"jenkinsSrc": "./ci/",
"locVarsSrc": "./service/localization_vars/",
"paramsExamplesSrc": "./service/params_examples/",
"codeExamplesSrc": "./docs/ru/examples/",
"testValuesSrc": "./docs/ru/data/",
"testsModule": "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os",
"engineLinux": "C:/engine/linux",
"engineWindows": "C:/engine/windows",
"additionalLangs": [
"en"
]
}

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Airtable.os
// OneScript: ./OInt/core/Modules/OPI_Airtable.os
// Lib: Airtable
// CLI: airtable
// Keywords: airtable
@@ -695,100 +695,3 @@
КонецПроцедуры
#КонецОбласти
#Region Alternate
Function GetListOfBases(Val Token, Val Indent = "") Export
Return ПолучитьСписокБаз(Token, Indent);
EndFunction
Function GetDatabaseTables(Val Token, Val Base) Export
Return ПолучитьТаблицыБазы(Token, Base);
EndFunction
Function CreateDatabase(Val Token, Val Workspace, Val Name, Val TableCollection) Export
Return СоздатьБазу(Token, Workspace, Name, TableCollection);
EndFunction
Function CreateTable(Val Token, Val Base, Val Name, Val FieldArray, Val Description = "") Export
Return СоздатьТаблицу(Token, Base, Name, FieldArray, Description);
EndFunction
Function ModifyTable(Val Token, Val Base, Val Table, Val Name = "", Val Description = "") Export
Return ИзменитьТаблицу(Token, Base, Table, Name, Description);
EndFunction
Function CreateField(Val Token, Val Base, Val Table, Val FieldStructure) Export
Return СоздатьПоле(Token, Base, Table, FieldStructure);
EndFunction
Function ModifyField(Val Token, Val Base, Val Table, Val Field, Val Name = "", Val Description = "") Export
Return ИзменитьПоле(Token, Base, Table, Field, Name, Description);
EndFunction
Function GetStringField(Val Name) Export
Return ПолучитьПолеСтроковое(Name);
EndFunction
Function GetNumberField(Val Name, Val Precision = 0) Export
Return ПолучитьПолеНомера(Name, Precision);
EndFunction
Function GetAttachmentField(Val Name) Export
Return ПолучитьПолеВложения(Name);
EndFunction
Function GetCheckboxField(Val Name) Export
Return ПолучитьПолеФлажка(Name);
EndFunction
Function GetDateField(Val Name) Export
Return ПолучитьПолеДаты(Name);
EndFunction
Function GetEmailField(Val Name) Export
Return ПолучитьПолеПочты(Name);
EndFunction
Function GetPhoneField(Val Name) Export
Return ПолучитьПолеТелефона(Name);
EndFunction
Function GetLinkField(Val Name) Export
Return ПолучитьПолеСсылки(Name);
EndFunction
Function GetListOfRecords(Val Token, Val Base, Val Table, Val Indent = "") Export
Return ПолучитьСписокЗаписей(Token, Base, Table, Indent);
EndFunction
Function GetRecord(Val Token, Val Base, Val Table, Val Record) Export
Return ПолучитьЗапись(Token, Base, Table, Record);
EndFunction
Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export
Return СоздатьЗаписи(Token, Base, Table, Data);
EndFunction
Function DeleteRecords(Val Token, Val Base, Val Table, Val Records) Export
Return УдалитьЗаписи(Token, Base, Table, Records);
EndFunction
Function GetComments(Val Token, Val Base, Val Table, Val Record, Val Indent = "") Export
Return ПолучитьКомментарии(Token, Base, Table, Record, Indent);
EndFunction
Function CreateComment(Val Token, Val Base, Val Table, Val Record, Val Text) Export
Return СоздатьКомментарий(Token, Base, Table, Record, Text);
EndFunction
Function EditComment(Val Token, Val Base, Val Table, Val Record, Val Comment, Val Text) Export
Return ИзменитьКомментарий(Token, Base, Table, Record, Comment, Text);
EndFunction
Function DeleteComment(Val Token, Val Base, Val Table, Val Record, Val Comment) Export
Return УдалитьКомментарий(Token, Base, Table, Record, Comment);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Bitrix24.os
// OneScript: ./OInt/core/Modules/OPI_Bitrix24.os
// Lib: Bitrix24
// CLI: bitrix24
// Keywords: bitrix24, b24, bitrix
@@ -5236,724 +5236,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function GetAppAuthLink(Val Domain, Val ClientID) Export
Return ПолучитьСсылкуАвторизацииПриложения(Domain, ClientID);
EndFunction
Function GetToken(Val ClientID, Val ClientSecret, Val Code) Export
Return ПолучитьТокен(ClientID, ClientSecret, Code);
EndFunction
Function RefreshToken(Val ClientID, Val ClientSecret, Val Refresh) Export
Return ОбновитьТокен(ClientID, ClientSecret, Refresh);
EndFunction
Function ServerTime(Val URL, Val Token = "") Export
Return СерверноеВремя(URL, Token);
EndFunction
Function CreatePost(Val URL, Val Text, Val Visibility = "UA", Val Files = "", Val Title = "", Val Important = False, Val Token = "") Export
Return СоздатьНовость(URL, Text, Visibility, Files, Title, Important, Token);
EndFunction
Function UpdatePost(Val URL, Val PostID, Val Text, Val Visibility = "UA", Val Files = "", Val Title = "", Val Token = "") Export
Return ИзменитьНовость(URL, PostID, Text, Visibility, Files, Title, Token);
EndFunction
Function DeletePost(Val URL, Val PostID, Val Token = "") Export
Return УдалитьНовость(URL, PostID, Token);
EndFunction
Function GetImportantPostViewers(Val URL, Val PostID, Val Token = "") Export
Return ПолучитьСписокПросмотревшихВажное(URL, PostID, Token);
EndFunction
Function GetPosts(Val URL, Val PostID = "", Val Filter = "UA", Val Token = "") Export
Return ПолучитьНовости(URL, PostID, Filter, Token);
EndFunction
Function AddPostComment(Val URL, Val PostID, Val Text, Val Token = "") Export
Return ДобавитьКомментарийНовости(URL, PostID, Text, Token);
EndFunction
Function AddPostRecipients(Val URL, Val PostID, Val Visibility, Val Token = "") Export
Return ДобавитьПолучателейКНовости(URL, PostID, Visibility, Token);
EndFunction
Function GetTask(Val URL, Val TaskID, Val Token = "") Export
Return ПолучитьЗадачу(URL, TaskID, Token);
EndFunction
Function GetTasksList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "", Val Fields = "") Export
Return ПолучитьСписокЗадач(URL, Filter, Indent, Token, Fields);
EndFunction
Function CreateTask(Val URL, Val FieldsStructure, Val Token = "") Export
Return СоздатьЗадачу(URL, FieldsStructure, Token);
EndFunction
Function UpdateTask(Val URL, Val TaskID, Val FieldsStructure, Val Token = "") Export
Return ИзменитьЗадачу(URL, TaskID, FieldsStructure, Token);
EndFunction
Function DeleteTask(Val URL, Val TaskID, Val Token = "") Export
Return УдалитьЗадачу(URL, TaskID, Token);
EndFunction
Function AttachFileToTopic(Val URL, Val TaskID, Val FileID, Val Token = "") Export
Return ДобавитьФайлВЗадачу(URL, TaskID, FileID, Token);
EndFunction
Function ApproveTask(Val URL, Val TaskID, Val Token = "") Export
Return ПринятьЗадачу(URL, TaskID, Token);
EndFunction
Function DisapproveTask(Val URL, Val TaskID, Val Token = "") Export
Return ОтклонитьЗадачу(URL, TaskID, Token);
EndFunction
Function CompleteTask(Val URL, Val TaskID, Val Token = "") Export
Return ЗавершитьЗадачу(URL, TaskID, Token);
EndFunction
Function RenewTask(Val URL, Val TaskID, Val Token = "") Export
Return ВозобновитьЗадачу(URL, TaskID, Token);
EndFunction
Function DeferTask(Val URL, Val TaskID, Val Token = "") Export
Return ОтложитьЗадачу(URL, TaskID, Token);
EndFunction
Function PauseTask(Val URL, Val TaskID, Val Token = "") Export
Return ПриостановитьЗадачу(URL, TaskID, Token);
EndFunction
Function StartTask(Val URL, Val TaskID, Val Token = "") Export
Return НачатьВыполнениеЗадачи(URL, TaskID, Token);
EndFunction
Function StartWatchingTask(Val URL, Val TaskID, Val Token = "") Export
Return НачатьНаблюдатьЗаЗадачей(URL, TaskID, Token);
EndFunction
Function StopWatchingTask(Val URL, Val TaskID, Val Token = "") Export
Return ПрекратитьНаблюдатьЗаЗадачей(URL, TaskID, Token);
EndFunction
Function DelegateTask(Val URL, Val TaskID, Val UserID, Val Token = "") Export
Return ДелегироватьЗадачу(URL, TaskID, UserID, Token);
EndFunction
Function AddTaskToFavorites(Val URL, Val TaskID, Val Token = "") Export
Return ДобавитьЗадачуВИзбранное(URL, TaskID, Token);
EndFunction
Function RemoveTaskFromFavorites(Val URL, Val TaskID, Val Token = "") Export
Return УбратьЗадачуИзИзбранного(URL, TaskID, Token);
EndFunction
Function GetTaskHistory(Val URL, Val TaskID, Val Token = "") Export
Return ПолучитьИсториюЗадачи(URL, TaskID, Token);
EndFunction
Function CheckTaskAccesses(Val URL, Val TaskID, Val Users = "", Val Token = "") Export
Return ПроверитьДоступКЗадаче(URL, TaskID, Users, Token);
EndFunction
Function MuteTask(Val URL, Val TaskID, Val Token = "") Export
Return ОтключитьЗвукЗадачи(URL, TaskID, Token);
EndFunction
Function UnmuteTask(Val URL, Val TaskID, Val Token = "") Export
Return ВключитьЗвукЗадачи(URL, TaskID, Token);
EndFunction
Function CreateTasksDependencies(Val URL, Val FromID, Val DestinationID, Val LinkType, Val Token = "") Export
Return СоздатьЗависимостьЗадач(URL, FromID, DestinationID, LinkType, Token);
EndFunction
Function DeleteTasksDependencies(Val URL, Val FromID, Val DestinationID, Val LinkType, Val Token = "") Export
Return УдалитьЗависимостьЗадач(URL, FromID, DestinationID, LinkType, Token);
EndFunction
Function GetDailyPlan(Val URL, Val Token = "") Export
Return ПолучитьПланЗадачНаДень(URL, Token);
EndFunction
Function GetTaskFieldsStructure(Val URL, Val Token = "") Export
Return ПолучитьСтруктуруЗадачи(URL, Token);
EndFunction
Function GetTasksFilterStructure(Val Clear = False, Val AsMap = False) Export
Return ПолучитьСтруктуруФильтраЗадач(Clear, AsMap);
EndFunction
Function GetCustomTaskFieldsList(Val URL, Val Token = "") Export
Return ПолучитьСписокПользовательскихПолейЗадачи(URL, Token);
EndFunction
Function AddCustomTaskField(Val URL, Val Type, Val Name, Val ExternalID = "", Val Title = "", Val Signature = "", Val Token = "") Export
Return ДобавитьПользовательскоеПолеЗадачи(URL, Type, Name, ExternalID, Title, Signature, Token);
EndFunction
Function UpdateCustomTaskField(Val URL, Val FieldID, Val ExternalID = "", Val Title = "", Val Signature = "", Val Token = "") Export
Return ИзменитьПользовательскоеПолеЗадачи(URL, FieldID, ExternalID, Title, Signature, Token);
EndFunction
Function GetCustomTaskField(Val URL, Val FieldID, Val Token = "") Export
Return ПолучитьПользовательскоеПолеЗадачи(URL, FieldID, Token);
EndFunction
Function DeleteCustomTaskField(Val URL, Val FieldID, Val Token = "") Export
Return УдалитьПользовательскоеПолеЗадачи(URL, FieldID, Token);
EndFunction
Function AddTasksChecklistElement(Val URL, Val TaskID, Val Text, Val Completed = False, Token = "") Export
Return ДобавитьЭлементЧеклистаЗадачи(URL, TaskID, Text, Completed, Token);
EndFunction
Function UpdateTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Text, Val Token = "") Export
Return ИзменитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Text, Token);
EndFunction
Function DeleteTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export
Return УдалитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token);
EndFunction
Function GetTasksChecklist(Val URL, Val TaskID, Val Token = "") Export
Return ПолучитьЧеклистЗадачи(URL, TaskID, Token);
EndFunction
Function GetTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export
Return ПолучитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token);
EndFunction
Function CompleteTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export
Return ВыполнитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token);
EndFunction
Function RenewTasksChecklistElement(Val URL, Val TaskID, Val ElementID, Val Token = "") Export
Return ВозобновитьЭлементЧеклистаЗадачи(URL, TaskID, ElementID, Token);
EndFunction
Function GetTaskCommentsList(Val URL, Val TaskID, Val Token = "") Export
Return ПолучитьСписокКомментариевЗадачи(URL, TaskID, Token);
EndFunction
Function GetTaskComment(Val URL, Val TaskID, Val CommentID, Val Token = "") Export
Return ПолучитьКомменатрийЗадачи(URL, TaskID, CommentID, Token);
EndFunction
Function AddTaskComment(Val URL, Val TaskID, Val Text, Val Token = "") Export
Return ДобавитьКомментарийЗадачи(URL, TaskID, Text, Token);
EndFunction
Function UpdateTaskComment(Val URL, Val TaskID, Val CommentID, Val Text, Val Token = "") Export
Return ИзменитьКомментарийЗадачи(URL, TaskID, CommentID, Text, Token);
EndFunction
Function DeleteTaskComment(Val URL, Val TaskID, Val CommentID, Val Token = "") Export
Return УдалитьКомментарийЗадачи(URL, TaskID, CommentID, Token);
EndFunction
Function GetResultsList(Val URL, Val TaskID, Val Token = "") Export
Return ПолучитьСписокРезультатов(URL, TaskID, Token);
EndFunction
Function CreateResultFromComment(Val URL, Val CommentID, Val Token = "") Export
Return СоздатьРезультатИзКомментария(URL, CommentID, Token);
EndFunction
Function DeleteResultFromComment(Val URL, Val CommentID, Val Token = "") Export
Return УдалитьРезультатИзКомментария(URL, CommentID, Token);
EndFunction
Function GetCommentStructure(Val Clear = False) Export
Return ПолучитьСтруктуруКомментария(Clear);
EndFunction
Function AddKanbanStage(Val URL, Val Name, Val Color = "FFD800", Val PrevStageID = 0, Val EntityID = 0, Val AsAdmin = False, Val Token = "") Export
Return ДобавитьСтадиюКанбана(URL, Name, Color, PrevStageID, EntityID, AsAdmin, Token);
EndFunction
Function UpdateKanbansStage(Val URL, Val Name, Val StageID, Val Color = "", Val PrevStageID = 0, Val AsAdmin = False, Val Token = "") Export
Return ИзменитьСтадиюКанбана(URL, Name, StageID, Color, PrevStageID, AsAdmin, Token);
EndFunction
Function DeleteKanbanStage(Val URL, Val StageID, Val AsAdmin = False, Val Token = "") Export
Return УдалитьСтадиюКанбана(URL, StageID, AsAdmin, Token);
EndFunction
Function GetKanbanStages(Val URL, Val EntityID = 0, Val AsAdmin = False, Val Token = "") Export
Return ПолучитьСтадииКанбана(URL, EntityID, AsAdmin, Token);
EndFunction
Function MoveTaskToKanbanStage(Val URL, Val TaskID, Val StageID, Val Prev = 0, Val After = 0, Val Token = "") Export
Return ПеренестиЗадачуВСтадиюКанбана(URL, TaskID, StageID, Prev, After, Token);
EndFunction
Function AddTaskTimeAccounting(Val URL, Val TaskID, Val Time, Val UserID = "", Val Text = "", Val SetupDate = "", Val Token = "") Export
Return ДобавитьТрудозатратыЗадачи(URL, TaskID, Time, UserID, Text, SetupDate, Token);
EndFunction
Function DeleteTaskTimeAccounting(Val URL, Val TaskID, Val RecordID, Val Token = "") Export
Return УдалитьТрудозатратыЗадачи(URL, TaskID, RecordID, Token);
EndFunction
Function GetTaskTimeAccountingList(Val URL, Val TaskID, Val Token = "") Export
Return ПолучитьСписокТрудозатратЗадачи(URL, TaskID, Token);
EndFunction
Function GetTaskTimeAccounting(Val URL, Val TaskID, Val RecordID, Val Token = "") Export
Return ПолучитьТрудозатратыЗадачи(URL, TaskID, RecordID, Token);
EndFunction
Function UpdateTaskTimeAccounting(Val URL, Val TaskID, Val RecordID, Val Time, Val Text = "", Val SetupDate = "", Val Token = "") Export
Return ИзменитьТрудозатратыЗадачи(URL, TaskID, RecordID, Time, Text, SetupDate, Token);
EndFunction
Function StartTimekeeping(Val URL, Val UserID = "", Val Time = "", Val Report = "", Val Token = "") Export
Return НачатьУчетВремени(URL, UserID, Time, Report, Token);
EndFunction
Function StopTimekeeping(Val URL, Val UserID = "", Val Time = "", Val Report = "", Val Token = "") Export
Return ЗавершитьУчетВремени(URL, UserID, Time, Report, Token);
EndFunction
Function PauseTimekeeping(Val URL, Val UserID = "", Val Token = "") Export
Return ПриостановитьУчетВремени(URL, UserID, Token);
EndFunction
Function GetTimekeepingStatus(Val URL, Val UserID = "", Val Token = "") Export
Return ПолучитьСтатусУчетаВремени(URL, UserID, Token);
EndFunction
Function GetTimekeepingSettings(Val URL, Val UserID = "", Val Token = "") Export
Return ПолучитьНастройкиУчетаВремени(URL, UserID, Token);
EndFunction
Function GetStoragesList(Val URL, Val Token = "") Export
Return ПолучитьСписокХранилищ(URL, Token);
EndFunction
Function GetAppSotrage(Val URL, Val Token = "") Export
Return ПолучитьХранилищеПриложения(URL, Token);
EndFunction
Function GetStorage(Val URL, Val StorageID, Val Token = "") Export
Return ПолучитьХранилище(URL, StorageID, Token);
EndFunction
Function RenameStorage(Val URL, Val StorageID, Val Name, Val Token = "") Export
Return ПереименоватьХранилище(URL, StorageID, Name, Token);
EndFunction
Function GetStorageObjects(Val URL, Val StorageID, Val Token = "") Export
Return ПолучитьСодержимоеХранилища(URL, StorageID, Token);
EndFunction
Function CreateStorageFolder(Val URL, Val StorageID, Val Name, Val Token = "") Export
Return СоздатьКаталогВХранилище(URL, StorageID, Name, Token);
EndFunction
Function GetFolderInformation(Val URL, Val FolderID, Val Token = "") Export
Return ПолучитьИнформациюОКаталоге(URL, FolderID, Token);
EndFunction
Function CreateSubfolder(Val URL, Val FolderID, Val Name, Val Token = "") Export
Return СоздатьПодкаталог(URL, FolderID, Name, Token);
EndFunction
Function MakeFolderCopy(Val URL, Val FolderID, Val DestinationID, Val Token = "") Export
Return СкопироватьКаталог(URL, FolderID, DestinationID, Token);
EndFunction
Function MoveFolder(Val URL, Val FolderID, Val DestinationID, Val Token = "") Export
Return ПереместитьКаталог(URL, FolderID, DestinationID, Token);
EndFunction
Function DeleteFolder(Val URL, Val FolderID, Val Token = "") Export
Return УдалитьКаталог(URL, FolderID, Token);
EndFunction
Function GetFolderExternalLink(Val URL, Val FolderID, Val Token = "") Export
Return ПолучитьВнешнююСсылкуКаталога(URL, FolderID, Token);
EndFunction
Function GetFolderItems(Val URL, Val FolderID, Val Filter = "", Val Token = "") Export
Return ПолучитьДочерниеЭлементыКаталога(URL, FolderID, Filter, Token);
EndFunction
Function MarkFolderAsDeleted(Val URL, Val FolderID, Val Token = "") Export
Return ПоместитьКаталогВКорзину(URL, FolderID, Token);
EndFunction
Function RestoreFolder(Val URL, Val FolderID, Val Token = "") Export
Return ВосстановитьКаталог(URL, FolderID, Token);
EndFunction
Function RenameFolder(Val URL, Val FolderID, Val Name, Val Token = "") Export
Return ПереименоватьКаталог(URL, FolderID, Name, Token);
EndFunction
Function GetFolderFilterStructure(Val URL, Val Clear = False, Val Token = "") Export
Return ПолучитьСтруктуруФильтраКаталога(URL, Clear, Token);
EndFunction
Function UploadFileToStorage(Val URL, Val Name, Val File, Val StorageID, Val Rights = "", Val Token = "") Export
Return ЗагрузитьФайлВХранилище(URL, Name, File, StorageID, Rights, Token);
EndFunction
Function UploadFileToFolder(Val URL, Val Name, Val File, Val FolderID, Val Token = "") Export
Return ЗагрузитьФайлВКаталог(URL, Name, File, FolderID, Token);
EndFunction
Function GetFileInformation(Val URL, Val FileID, Val Token = "") Export
Return ПолучитьИнформациюОФайле(URL, FileID, Token);
EndFunction
Function DeleteFile(Val URL, Val FileID, Val Token = "") Export
Return УдалитьФайл(URL, FileID, Token);
EndFunction
Function GetFileExternalLink(Val URL, Val FileID, Val Token = "") Export
Return ПолучитьВнешнююСсылкуФайла(URL, FileID, Token);
EndFunction
Function MarkFileAsDeleted(Val URL, Val FileID, Val Token = "") Export
Return ПоместитьФайлВКорзину(URL, FileID, Token);
EndFunction
Function RestoreFile(Val URL, Val FileID, Val Token = "") Export
Return ВосстановитьФайл(URL, FileID, Token);
EndFunction
Function MakeCopyFile(Val URL, Val FileID, Val FolderID, Val Token = "") Export
Return СкопироватьФайл(URL, FileID, FolderID, Token);
EndFunction
Function MoveFileToFolder(Val URL, Val FileID, Val FolderID, Val Token = "") Export
Return ПереместитьФайлВКаталог(URL, FileID, FolderID, Token);
EndFunction
Function RenameFile(Val URL, Val FileID, Val Name, Val Token = "") Export
Return ПереименоватьФайл(URL, FileID, Name, Token);
EndFunction
Function CreateChat(Val URL, Val ChatStructure, Val Token = "") Export
Return СоздатьЧат(URL, ChatStructure, Token);
EndFunction
Function GetChatUsers(Val URL, Val ChatID, Val Token = "") Export
Return ПолучитьСписокПользователейЧата(URL, ChatID, Token);
EndFunction
Function LeaveChat(Val URL, Val ChatID, Val Token = "") Export
Return ПокинутьЧат(URL, ChatID, Token);
EndFunction
Function GetUsers(Val URL, Val UserIDs, Val Token = "") Export
Return ПолучитьПользователей(URL, UserIDs, Token);
EndFunction
Function AddUsersToChat(Val URL, Val ChatID, Val UserIDs, Val HideHistory = False, Val Token = "") Export
Return ДобавитьПользователейВЧат(URL, ChatID, UserIDs, HideHistory, Token);
EndFunction
Function DeleteUserFromChat(Val URL, Val ChatID, Val UserID, Val Token = "") Export
Return ИсключитьПользователяИзЧата(URL, ChatID, UserID, Token);
EndFunction
Function ChangeChatTitle(Val URL, Val ChatID, Val Title, Val Token = "") Export
Return ИзменитьЗаголовокЧата(URL, ChatID, Title, Token);
EndFunction
Function ChangeChatColor(Val URL, Val ChatID, Val Color, Val Token = "") Export
Return ИзменитьЦветЧата(URL, ChatID, Color, Token);
EndFunction
Function ChangeChatPicture(Val URL, Val ChatID, Val Image, Val Token = "") Export
Return ИзменитьКартинкуЧата(URL, ChatID, Image, Token);
EndFunction
Function ChangeChatOwner(Val URL, Val ChatID, Val UserID, Val Token = "") Export
Return СменитьВладельцаЧата(URL, ChatID, UserID, Token);
EndFunction
Function DisableChatNotifications(Val URL, Val ChatID, Val Token = "") Export
Return ОтключитьУведомленияЧата(URL, ChatID, Token);
EndFunction
Function EnableChatNotifications(Val URL, Val ChatID, Val Token = "") Export
Return ВключитьУведомленияЧата(URL, ChatID, Token);
EndFunction
Function GetChatMessagesList(Val URL, Val ChatID, Val LastID = "", Val FirstID = "", Val Token = "") Export
Return ПолучитьСписокСообщенийЧата(URL, ChatID, LastID, FirstID, Token);
EndFunction
Function GetDialog(Val URL, Val ChatID, Val Token = "") Export
Return ПолучитьДиалог(URL, ChatID, Token);
EndFunction
Function GetChatMembersList(Val URL, Val ChatID, Val Token = "") Export
Return ПолучитьСписокПользователейДиалога(URL, ChatID, Token);
EndFunction
Function SendWritingNotification(Val URL, Val ChatID, Val Token = "") Export
Return ОтправитьУведомлениеОВводе(URL, ChatID, Token);
EndFunction
Function GetUserStatus(Val URL, Val Token = "") Export
Return ПолучитьСтатусПользователя(URL, Token);
EndFunction
Function SetUserStatus(Val URL, Val Status, Val Token = "") Export
Return УстановитьСтатусПользователя(URL, Status, Token);
EndFunction
Function ReadAll(Val URL, Val Token = "") Export
Return ПрочитатьВсе(URL, Token);
EndFunction
Function GetChatFilesFolder(Val URL, Val ChatID, Val Token = "") Export
Return ПолучитьКаталогФайловЧата(URL, ChatID, Token);
EndFunction
Function GetChatStructure(Val Clear = False) Export
Return ПолучитьСтруктуруЧата(Clear);
EndFunction
Function SendMessage(Val URL, Val ChatID, Val Text, Val Attachments = "", Val Token = "") Export
Return ОтправитьСообщение(URL, ChatID, Text, Attachments, Token);
EndFunction
Function EditMessage(Val URL, Val MessageID, Val Text = "", Val Attachments = "", Val Token = "") Export
Return ИзменитьСообщение(URL, MessageID, Text, Attachments, Token);
EndFunction
Function SetMessageReaction(Val URL, Val MessageID, Val Token = "") Export
Return УстановитьРеакциюНаСообщение(URL, MessageID, Token);
EndFunction
Function DeleteMessage(Val URL, Val MessageID, Val Token = "") Export
Return УдалитьСообщение(URL, MessageID, Token);
EndFunction
Function SendFile(Val URL, Val ChatID, Val FileID, Val Description = "", Val Token = "") Export
Return ОтправитьФайл(URL, ChatID, FileID, Description, Token);
EndFunction
Function MarkMessageAsReaded(Val URL, Val ChatID, Val MessageID, Val Token = "") Export
Return ОтметитьСообщениеКакПрочитанное(URL, ChatID, MessageID, Token);
EndFunction
Function MarkMessageAsUnreaded(Val URL, Val ChatID, Val MessageID, Val Token = "") Export
Return ОтметитьСообщениеКакНепрочитанное(URL, ChatID, MessageID, Token);
EndFunction
Function GetPictureBlock(Val Name, Val URL) Export
Return ПолучитьБлокКартинки(Name, URL);
EndFunction
Function GetFileBlock(Val Name, Val URL) Export
Return ПолучитьБлокФайла(Name, URL);
EndFunction
Function CreatePersonalNotification(Val URL, Val UserID, Val Text, Val Tag = "", Val Attachments = "", Val Token = "") Export
Return СоздатьПерсональноеУведомление(URL, UserID, Text, Tag, Attachments, Token);
EndFunction
Function CreateSystemNotification(Val URL, Val UserID, Val Text, Val Tag = "", Val Attachments = "", Val Token = "") Export
Return СоздатьСистемноеУведомление(URL, UserID, Text, Tag, Attachments, Token);
EndFunction
Function DeleteNotification(Val URL, Val NotificationID, Val Token = "") Export
Return УдалитьУведомление(URL, NotificationID, Token);
EndFunction
Function CreateDepartment(Val URL, Val Name, Val ParentID = "", Val HeadID = "", Val Token = "") Export
Return СоздатьПодразделение(URL, Name, ParentID, HeadID, Token);
EndFunction
Function UpdateDepartment(Val URL, Val DepartmentID, Val Name = "", Val ParentID = "", Val HeadID = "", Val Token = "") Export
Return ИзменитьПодразделение(URL, DepartmentID, Name, ParentID, HeadID, Token);
EndFunction
Function GetDepartments(Val URL, Val DepartmentID = "", Val Name = "", Val ParentID = "", Val HeadID = "", Val Token = "") Export
Return ПолучитьПодразделения(URL, DepartmentID, Name, ParentID, HeadID, Token);
EndFunction
Function DeleteDepartment(Val URL, Val DepartmentID, Val Token = "") Export
Return УдалитьПодразделение(URL, DepartmentID, Token);
EndFunction
Function GetCurrentUser(Val URL, Val Token = "") Export
Return ПолучитьТекущегоПользователя(URL, Token);
EndFunction
Function GetUser(Val URL, Val UserID, Val Token = "") Export
Return ПолучитьПользователя(URL, UserID, Token);
EndFunction
Function CreateUser(Val URL, Val FieldsStructure, Val Token = "") Export
Return СоздатьПользователя(URL, FieldsStructure, Token);
EndFunction
Function UpdateUser(Val URL, Val UserID, Val FieldsStructure, Val Token = "") Export
Return ИзменитьПользователя(URL, UserID, FieldsStructure, Token);
EndFunction
Function ChangeUserStatus(Val URL, Val UserID, Val Fire = True, Val Token = "") Export
Return ИзменитьСтатусПользователя(URL, UserID, Fire, Token);
EndFunction
Function FindUsers(Val URL, Val FilterStructure, Val Token = "") Export
Return НайтиПользователей(URL, FilterStructure, Token);
EndFunction
Function GetUserFieldsStructure(Val URL, Val Token = "") Export
Return ПолучитьСтурктуруПользователя(URL, Token);
EndFunction
Function GetUserFilterStructure(Val Clear = False) Export
Return ПолучитьСтруктуруФильтраПользователей(Clear);
EndFunction
Function CreateLead(Val URL, Val FieldsStructure, Val Token = "") Export
Return СоздатьЛид(URL, FieldsStructure, Token);
EndFunction
Function DeleteLead(Val URL, Val LeadID, Val Token = "") Export
Return УдалитьЛид(URL, LeadID, Token);
EndFunction
Function GetLead(Val URL, Val LeadID, Val Token = "") Export
Return ПолучитьЛид(URL, LeadID, Token);
EndFunction
Function GetLeadsList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "") Export
Return ПолучитьСписокЛидов(URL, Filter, Indent, Token);
EndFunction
Function UpdateLead(Val URL, Val LeadID, Val FieldsStructure, Val Token = "") Export
Return ИзменитьЛид(URL, LeadID, FieldsStructure, Token);
EndFunction
Function GetLeadStructure(Val URL, Val Token = "") Export
Return ПолучитьСтруктуруЛида(URL, Token);
EndFunction
Function GetLeadFilterStructure(Val Clear = False) Export
Return ПолучитьСтруктуруФильтраЛидов(Clear);
EndFunction
Function CreateDeal(Val URL, Val FieldsStructure, Val Token = "") Export
Return СоздатьСделку(URL, FieldsStructure, Token);
EndFunction
Function DeleteDeal(Val URL, Val DealID, Val Token = "") Export
Return УдалитьСделку(URL, DealID, Token);
EndFunction
Function GetDeal(Val URL, Val DealID, Val Token = "") Export
Return ПолучитьСделку(URL, DealID, Token);
EndFunction
Function GetDealsList(Val URL, Val Filter = "", Val Indent = 0, Val Token = "") Export
Return ПолучитьСписокСделок(URL, Filter, Indent, Token);
EndFunction
Function UpdateDeal(Val URL, Val DealID, Val FieldsStructure, Val Token = "") Export
Return ИзменитьСделку(URL, DealID, FieldsStructure, Token);
EndFunction
Function GetDealStructure(Val URL, Val Token = "") Export
Return ПолучитьСтруктуруСделки(URL, Token);
EndFunction
Function GetDealsFilterStructure(Val Clear = False) Export
Return ПолучитьСтруктуруФильтраСделок(Clear);
EndFunction
Function GetCalendarList(Val URL, Val OwnerID, Val Type, Val Token = "") Export
Return ПолучитьСписокКалендарей(URL, OwnerID, Type, Token);
EndFunction
Function CreateCalendar(Val URL, Val FieldsStructure, Val Token = "") Export
Return СоздатьКалендарь(URL, FieldsStructure, Token);
EndFunction
Function UpdateCalendar(Val URL, Val CalendarID, Val FieldsStructure, Val Token = "") Export
Return ИзменитьКалендарь(URL, CalendarID, FieldsStructure, Token);
EndFunction
Function DeleteCalendar(Val URL, Val CalendarID, Val OwnerID, Val Type, Val Token = "") Export
Return УдалитьКалендарь(URL, CalendarID, OwnerID, Type, Token);
EndFunction
Function GetUserBusy(Val URL, Val Users, Val StartDate, Val EndDate, Val Token = "") Export
Return ПолучитьЗанятостьПользователей(URL, Users, StartDate, EndDate, Token);
EndFunction
Function GetCustomCalendarSettings(Val URL, Val Token = "") Export
Return ПолучитьПользовательскиеНастройкиКалендаря(URL, Token);
EndFunction
Function SetCustomCalendarSettings(Val URL, Val SettingsStructure, Val Token = "") Export
Return УстановитьПользовательскиеНастройкиКалендаря(URL, SettingsStructure, Token);
EndFunction
Function GetCalendarSettingsStructure(Val URL, Val Token = "") Export
Return ПолучитьСтруктуруНастроекКалендаря(URL, Token);
EndFunction
Function GetCalednarCustomSettingsStructure(Val Clear = False) Export
Return ПолучитьСтруктуруПользовательскихНастроекКаледнаря(Clear);
EndFunction
Function GetCalendarStructure(Val Clear = False) Export
Return ПолучитьСтруктуруКалендаря(Clear);
EndFunction
Function CreateCalendarEvent(Val URL, Val EventDescription, Val Token = "") Export
Return СоздатьСобытиеКалендаря(URL, EventDescription, Token);
EndFunction
Function UpdateCalendarEvent(Val URL, Val EventID, Val EventDescription, Val Token = "") Export
Return ИзменитьСобытиеКалендаря(URL, EventID, EventDescription, Token);
EndFunction
Function GetCalendarEvent(Val URL, Val EventID, Val Token = "") Export
Return ПолучитьСобытиеКалендаря(URL, EventID, Token);
EndFunction
Function GetCalendarEvents(Val URL, Val OwnerID, Val Type, Val Filter = "", Val Token = "") Export
Return ПолучитьСобытияКалендарей(URL, OwnerID, Type, Filter, Token);
EndFunction
Function DeleteCalendarEvent(Val URL, Val EventID, Val Token = "") Export
Return УдалитьСобытиеКалендаря(URL, EventID, Token);
EndFunction
Function GetUserParticipationStatus(Val URL, Val EventID, Val Token = "") Export
Return ПолучитьСтатусУчастияПользователя(URL, EventID, Token);
EndFunction
Function SetUserParticipationStatus(Val URL, Val EventID, Val Status, Val Token = "") Export
Return УстановитьСтатусУчастияПользователя(URL, EventID, Status, Token);
EndFunction
Function GetCalendarEventsStructure(Val Clear = False) Export
Return ПолучитьСтруктуруСобытияКалендаря(Clear);
EndFunction
Function GetCalendarEventsFilterStructure(Val Clear = False) Export
Return ПолучитьСтруктуруФильтраСобытийКалендарей(Clear);
EndFunction
#EndRegion

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Dropbox.os
// OneScript: ./OInt/core/Modules/OPI_Dropbox.os
// Lib: Dropbox
// CLI: dropbox
// Keywords: dropbox
@@ -987,120 +987,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function GetAuthorizationLink(Val AppKey) Export
Return ПолучитьСсылкуАвторизации(AppKey);
EndFunction
Function GetToken(Val AppKey, Val AppSecret, Val Code) Export
Return ПолучитьТокен(AppKey, AppSecret, Code);
EndFunction
Function RefreshToken(Val AppKey, Val AppSecret, Val RefreshToken) Export
Return ОбновитьТокен(AppKey, AppSecret, RefreshToken);
EndFunction
Function GetAccountInformation(Val Token, Val Account = "") Export
Return ПолучитьИнформациюОбАккаунте(Token, Account);
EndFunction
Function GetSpaceUsageData(Val Token) Export
Return ПолучитьДанныеИспользованияПространства(Token);
EndFunction
Function GetObjectInformation(Val Token, Val Path, Val Detailed = False) Export
Return ПолучитьИнформациюОбОбъекте(Token, Path, Detailed);
EndFunction
Function GetListOfFolderFiles(Val Token, Val Path = "", Val Detailed = False, Val Cursor = "") Export
Return ПолучитьСписокФайловПапки(Token, Path, Detailed, Cursor);
EndFunction
Function GetPreview(Val Token, Val Path) Export
Return ПолучитьПревью(Token, Path);
EndFunction
Function UploadFile(Val Token, Val File, Val Path, Val Overwrite = False) Export
Return ЗагрузитьФайл(Token, File, Path, Overwrite);
EndFunction
Function UploadFileByURL(Val Token, Val FileURL, Val Path) Export
Return ЗагрузитьФайлПоURL(Token, FileURL, Path);
EndFunction
Function GetUploadStatusByURL(Val Token, Val JobID) Export
Return ПолучитьСтатусЗагрузкиПоURL(Token, JobID);
EndFunction
Function DeleteObject(Val Token, Val Path, Val Irrecoverable = False) Export
Return УдалитьОбъект(Token, Path, Irrecoverable);
EndFunction
Function CopyObject(Val Token, Val From, Val Target) Export
Return КопироватьОбъект(Token, From, Target);
EndFunction
Function MoveObject(Val Token, Val From, Val Target) Export
Return ПереместитьОбъект(Token, From, Target);
EndFunction
Function CreateFolder(Val Token, Val Path) Export
Return СоздатьПапку(Token, Path);
EndFunction
Function DownloadFile(Val Token, Val Path) Export
Return СкачатьФайл(Token, Path);
EndFunction
Function DownloadFolder(Val Token, Val Path) Export
Return СкачатьПапку(Token, Path);
EndFunction
Function GetObjectVersionList(Val Token, Val Path, Val Count = 10) Export
Return ПолучитьСписокВерсийОбъекта(Token, Path, Count);
EndFunction
Function RestoreObjectToVersion(Val Token, Val Path, Val Version) Export
Return ВосстановитьОбъектКВерсии(Token, Path, Version);
EndFunction
Function GetTagList(Val Token, Val Paths) Export
Return ПолучитьСписокТегов(Token, Paths);
EndFunction
Function AddTag(Val Token, Val Path, Val Tag) Export
Return ДобавитьТег(Token, Path, Tag);
EndFunction
Function DeleteTag(Val Token, Val Path, Val Tag) Export
Return УдалитьТег(Token, Path, Tag);
EndFunction
Function PublishFolder(Val Token, Val Path) Export
Return ОпубликоватьПапку(Token, Path);
EndFunction
Function CancelFolderPublication(Val Token, Val FolderID) Export
Return ОтменитьПубликациюПапки(Token, FolderID);
EndFunction
Function AddUsersToFile(Val Token, Val FileID, Val EmailAddresses, Val ViewOnly = True) Export
Return ДобавитьПользователейКФайлу(Token, FileID, EmailAddresses, ViewOnly);
EndFunction
Function AddUsersToFolder(Val Token, Val FolderID, Val EmailAddresses, Val ViewOnly = True) Export
Return ДобавитьПользователейКПапке(Token, FolderID, EmailAddresses, ViewOnly);
EndFunction
Function GetAsynchronousChangeStatus(Val Token, Val JobID) Export
Return ПолучитьСтатусАсинхронногоИзменения(Token, JobID);
EndFunction
Function CancelFilePublication(Val Token, Val FileID) Export
Return ОтменитьПубликациюФайла(Token, FileID);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os
// OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os
// Lib: Google Calendar
// CLI: gcalendar
// Keywords: google calendar, googlecalendar, gcalendar
@@ -655,76 +655,3 @@
КонецПроцедуры
#КонецОбласти
#Region Alternate
Function CreateCalendar(Val Token, Val Name) Export
Return СоздатьКалендарь(Token, Name);
EndFunction
Function GetCalendarMetadata(Val Token, Val Calendar) Export
Return ПолучитьМетаданныеКалендаря(Token, Calendar);
EndFunction
Function EditCalendarMetadata(Val Token, Val Calendar, Val Name = "", Val Description = "") Export
Return ИзменитьМетаданныеКалендаря(Token, Calendar, Name, Description);
EndFunction
Function ClearMainCalendar(Val Token) Export
Return ОчиститьОсновнойКалендарь(Token);
EndFunction
Function DeleteCalendar(Val Token, Val Calendar) Export
Return УдалитьКалендарь(Token, Calendar);
EndFunction
Function GetCalendarList(Val Token) Export
Return ПолучитьСписокКалендарей(Token);
EndFunction
Function AddCalendarToList(Val Token, Val Calendar) Export
Return ДобавитьКалендарьВСписок(Token, Calendar);
EndFunction
Function GetListCalendar(Val Token, Val Calendar) Export
Return ПолучитьКалендарьСписка(Token, Calendar);
EndFunction
Function DeleteCalendarFromList(Val Token, Val Calendar) Export
Return УдалитьКалендарьИзСписка(Token, Calendar);
EndFunction
Function EditListCalendar(Val Token, Val Calendar, Val PrimaryColor, Val SecondaryColor, Val Hidden = False) Export
Return ИзменитьКалендарьСписка(Token, Calendar, PrimaryColor, SecondaryColor, Hidden);
EndFunction
Function GetEventDescription(Val Clear = False) Export
Return ПолучитьОписаниеСобытия(Clear);
EndFunction
Function GetEventList(Val Token, Val Calendar) Export
Return ПолучитьСписокСобытий(Token, Calendar);
EndFunction
Function GetEvent(Val Token, Val Calendar, Val Event) Export
Return ПолучитьСобытие(Token, Calendar, Event);
EndFunction
Function CreateEvent(Val Token, Val Calendar, Val EventDescription) Export
Return СоздатьСобытие(Token, Calendar, EventDescription);
EndFunction
Function MoveEvent(Val Token, Val SourceCalendar, Val TargetCalendar, Val Event) Export
Return ПереместитьСобытие(Token, SourceCalendar, TargetCalendar, Event);
EndFunction
Function EditEvent(Val Token, Val Calendar, Val EventDescription, Val Event) Export
Return ИзменитьСобытие(Token, Calendar, EventDescription, Event);
EndFunction
Function DeleteEvent(Val Token, Val Calendar, Val Event) Export
Return УдалитьСобытие(Token, Calendar, Event);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os
// OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os
// Lib: Google Drive
// CLI: gdrive
// Keywords: google drive, googledrive, gdrive, google disk
@@ -777,64 +777,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function GetObjectInformation(Val Token, Val Identifier) Export
Return ПолучитьИнформациюОбОбъекте(Token, Identifier);
EndFunction
Function GetDirectoriesList(Val Token, Val NameContains = "", Val Detailed = False) Export
Return ПолучитьСписокКаталогов(Token, NameContains, Detailed);
EndFunction
Function GetFilesList(Val Token, Val NameContains = "", Val Directory = "") Export
Return ПолучитьСписокФайлов(Token, NameContains, Directory);
EndFunction
Function UploadFile(Val Token, Val File, Val Description) Export
Return ЗагрузитьФайл(Token, File, Description);
EndFunction
Function CreateFolder(Val Token, Val Name, Val Parent = "") Export
Return СоздатьПапку(Token, Name, Parent);
EndFunction
Function DownloadFile(Val Token, Val Identifier, Val SavePath = "") Export
Return СкачатьФайл(Token, Identifier, SavePath);
EndFunction
Function CopyObject(Val Token, Val Identifier, Val NewName = "", Val NewParent = "") Export
Return СкопироватьОбъект(Token, Identifier, NewName, NewParent);
EndFunction
Function UpdateFile(Val Token, Val Identifier, Val File, Val NewName = "") Export
Return ОбновитьФайл(Token, Identifier, File, NewName);
EndFunction
Function DeleteObject(Val Token, Val Identifier) Export
Return УдалитьОбъект(Token, Identifier);
EndFunction
Function GetFileDescription(Val Clear = False) Export
Return ПолучитьОписаниеФайла(Clear);
EndFunction
Function CreateComment(Val Token, Val Identifier, Val Comment) Export
Return СоздатьКомментарий(Token, Identifier, Comment);
EndFunction
Function GetComment(Val Token, Val ObjectID, Val CommentID) Export
Return ПолучитьКомментарий(Token, ObjectID, CommentID);
EndFunction
Function GetCommentList(Val Token, Val ObjectID) Export
Return ПолучитьСписокКомментариев(Token, ObjectID);
EndFunction
Function DeleteComment(Val Token, Val ObjectID, Val CommentID) Export
Return УдалитьКомментарий(Token, ObjectID, CommentID);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os
// OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os
// Lib: Google Sheets
// CLI: gsheets
// Keywords: googlesheets, google sheets, spreadsheets
@@ -419,44 +419,3 @@
КонецПроцедуры
#КонецОбласти
#Region Alternate
Function CreateSpreadsheet(Val Token, Val Name, Val ArrayOfSheetNames) Export
Return СоздатьКнигу(Token, Name, ArrayOfSheetNames);
EndFunction
Function GetSpreadsheet(Val Token, Val Identifier) Export
Return ПолучитьКнигу(Token, Identifier);
EndFunction
Function EditSpreadsheetTitle(Val Token, Val Spreadsheet, Val Name) Export
Return ИзменитьНаименованиеКниги(Token, Spreadsheet, Name);
EndFunction
Function AddSheet(Val Token, Val Spreadsheet, Val Name) Export
Return ДобавитьЛист(Token, Spreadsheet, Name);
EndFunction
Function DeleteSheet(Val Token, Val Spreadsheet, Val Sheet) Export
Return УдалитьЛист(Token, Spreadsheet, Sheet);
EndFunction
Function CopySheet(Val Token, Val From, Val Target, Val Sheet) Export
Return КопироватьЛист(Token, From, Target, Sheet);
EndFunction
Function SetCellValues(Val Token, Val Spreadsheet, Val ValueMapping, Val Sheet = "", Val MajorDimension = "COLUMNS") Export
Return УстановитьЗначенияЯчеек(Token, Spreadsheet, ValueMapping, Sheet, MajorDimension);
EndFunction
Function ClearCells(Val Token, Val Spreadsheet, Val CellsArray, Val Sheet = "") Export
Return ОчиститьЯчейки(Token, Spreadsheet, CellsArray, Sheet);
EndFunction
Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Sheet = "") Export
Return ПолучитьЗначенияЯчеек(Token, Spreadsheet, CellsArray, Sheet);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os
// OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os
// Lib: Google Workspace
// CLI: google
@@ -243,28 +243,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function FormCodeRetrievalLink(Val ClientID, Val Calendar = True, Val Drive = True, Val Sheets = True) Export
Return СформироватьСсылкуПолученияКода(ClientID, Calendar, Drive, Sheets);
EndFunction
Function GetTokenByCode(Val ClientID, Val ClientSecret, Val Code) Export
Return ПолучитьТокенПоКоду(ClientID, ClientSecret, Code);
EndFunction
Function RefreshToken(Val ClientID, Val ClientSecret, Val RefreshToken) Export
Return ОбновитьТокен(ClientID, ClientSecret, RefreshToken);
EndFunction
Function GetServiceAccountToken(Val Data, Val Scope, Val Expire = 3600) Export
Return ПолучитьТокенServiceАккаунта(Data, Scope, Expire);
EndFunction
Function GetAuthorizationHeader(Val Token) Export
Return ПолучитьЗаголовокАвторизации(Token);
EndFunction
#EndRegion

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,483 +1,450 @@
// OneScript: ./OInt/core/Modules/OPI_Neocities.os
// Lib: Neocities
// CLI: neocities
// Keywords: neocities
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область ПолучениеДанных
// Получить данные о сайте
// Получает информацию о сайте по его имени или токену
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Сайт - Строка - Имя сайта (логин) для получения информации. Текущий, если не заполнено - sitename
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ПолучитьДанныеОСайте(Знач Токен, Знач Сайт = "") Экспорт
URL = "https://neocities.org/api/info";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("sitename", Сайт, "Строка", Параметры);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить токен
// Получает токен авторизации по логину и паролю
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Логин - Строка - Логин пользователя - login
// Пароль - Строка - Пароль пользователя - password
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ПолучитьТокен(Знач Логин, Знач Пароль) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
URL = "neocities.org";
Таймаут = 120;
Попытка
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут, ЗащищенноеСоединение);
Исключение
URL = "https://" + URL;
БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут);
КонецПопытки;
Ответ = БезопасноеСоединение.Получить(Новый HTTPЗапрос("/api/key"));
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Ответ = ПрочитатьJSON(ЧтениеJSON);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСФайлами
// Загрузить файл
// Загружает одиночный файл на сервер Neocities
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Путь - Строка - Целевой путь файла на Neocities - path
// Данные - Строка, ДвоичныеДанные - URL, путь или данные файла для загрузки - file
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Данные) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
URL = "https://neocities.org/api/upload";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
СоответствиеФайла = Новый Соответствие;
СоответствиеФайла.Вставить(Путь + "|" + Путь, Данные);
Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , СоответствиеФайла, "multipart/form-data", Заголовки);
Возврат Ответ;
КонецФункции
// Загрузить файлы
// Загружает несколько файлов на сервер Neocities
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// СоответствиеФайлов - Соответствие Из КлючИЗначение - Файлы для загрузки: Ключ > путь на NC, Значение > Файл - files
// ПоОдному - Булево - Истина > отправляет файлы отдельными запросами - singly
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ЗагрузитьФайлы(Знач Токен, Знач СоответствиеФайлов, Знач ПоОдному = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(ПоОдному);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеФайлов);
КонечныйОтвет = Новый Массив;
ОбработанноеСоответствие = Новый Соответствие;
Для Каждого ФайлОтправки Из СоответствиеФайлов Цикл
Если ПоОдному Тогда
Ответ = ЗагрузитьФайл(Токен, ФайлОтправки.Ключ, ФайлОтправки.Значение);
КонечныйОтвет.Добавить(Ответ);
Иначе
ТекущийПуть = ФайлОтправки.Ключ;
ТекущиеДанные = ФайлОтправки.Значение;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПуть);
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ТекущиеДанные);
ОбработанноеСоответствие.Вставить(ТекущийПуть + "|" + ТекущийПуть, ТекущиеДанные);
КонецЕсли;
КонецЦикла;
Если Не ПоОдному Тогда
URL = "https://neocities.org/api/upload";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
КонечныйОтвет = OPI_ЗапросыHTTP.PostMultipart(URL
,
, ОбработанноеСоответствие
, "multipart/form-data"
, Заголовки);
КонецЕсли;
Возврат КонечныйОтвет;
КонецФункции
// Удалить выбранные файлы
// Удаляет файл или несколько файлов с сервера Neocities
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Пути - Строка, Массив Из Строка - Путь или несколько путей удаляемых файлов - paths
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция УдалитьВыбранныеФайлы(Знач Токен, Знач Пути) Экспорт
OPI_ПреобразованиеТипов.ПолучитьМассив(Пути);
URL = "https://neocities.org/api/delete";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Для Н = 0 По Пути.ВГраница() Цикл
ТекущееЗначение = Пути[Н];
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение);
Пути.Установить(Н, "filenames[]=" + ТекущееЗначение);
КонецЦикла;
ПутиСтрокой = СтрСоединить(Пути, "&");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ПутиСтрокой, Заголовки, Ложь);
Возврат Ответ;
КонецФункции
// Получить список файлов
// Получает список файлов с отбором каталога или без
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Путь - Строка - Отбор файлов по каталогу. Все, если не заполнено - path
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ПолучитьСписокФайлов(Знач Токен, Знач Путь = "") Экспорт
URL = "https://neocities.org/api/list";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Параметры);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Синхронизировать каталоги
// Создает копию локального каталога по выбранному пути на сервере
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
// Метод удаляет файлы на сервере, если они отсутствуют в локальном каталоге
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// ЛокальныйКаталог - Строка - Локальный каталог источник - local
// УдаленныйКаталог - Строка - Удаленный каталог приемника. Корень, если не заполнено - remote
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - информация об ошибках синхронизации
Функция СинхронизироватьКаталоги(Знач Токен, Знач ЛокальныйКаталог, Знач УдаленныйКаталог = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(ЛокальныйКаталог);
OPI_ПреобразованиеТипов.ПолучитьСтроку(УдаленныйКаталог);
Сообщить("Начало синхронизации...");
Если ЗначениеЗаполнено(УдаленныйКаталог) Тогда
УдаленныйКаталог = ?(СтрЗаканчиваетсяНа(УдаленныйКаталог, "/"), УдаленныйКаталог, УдаленныйКаталог + "/");
КонецЕсли;
УдаленныеФайлы = ПолучитьСписокФайлов(Токен, УдаленныйКаталог);
Если Не УдаленныеФайлы["result"] = "success" Тогда
//@skip-check constructor-function-return-section
Возврат УдаленныеФайлы;
КонецЕсли;
ЛокальныеПути = Новый Соответствие;
ЛокальныеПодкаталоги = Новый Соответствие;
ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги);
МассивУдаляемых = ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги);
Результат = ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути);
//@skip-check constructor-function-return-section
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Возврат Заголовки;
КонецФункции
Функция ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги)
МассивУдаляемых = Новый Массив;
Для Каждого УдаленныйФайл Из УдаленныеФайлы["files"] Цикл
ПутьУдаленногоОсновной = УдаленныйФайл["path"];
ПутьУдаленногоДополнительный = "/" + УдаленныйФайл["path"];
Если УдаленныйФайл["is_directory"] Тогда
СуществующийУдаленный = ЛокальныеПодкаталоги[ПутьУдаленногоОсновной];
СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный)
, СуществующийУдаленный
, ЛокальныеПодкаталоги[ПутьУдаленногоДополнительный]);
Иначе
СуществующийУдаленный = ЛокальныеПути[ПутьУдаленногоОсновной];
СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный)
, СуществующийУдаленный
, ЛокальныеПути[ПутьУдаленногоДополнительный]);
КонецЕсли;
Если СуществующийУдаленный = Неопределено Тогда
МассивУдаляемых.Добавить(ПутьУдаленногоОсновной);
КонецЕсли;
КонецЦикла;
Возврат МассивУдаляемых;
КонецФункции
Функция ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути)
МассивОшибок = Новый Массив;
Если Не МассивУдаляемых.Количество() = 0 Тогда
Ответ = УдалитьВыбранныеФайлы(Токен, МассивУдаляемых);
Если Не Ответ["result"] = "success" Тогда
МассивОшибок.Добавить(Ответ);
Иначе
// BSLLS:UnusedLocalVariable-off
//@skip-check module-unused-local-variable
СообщениеУдаления = СтрШаблон("Удалено %1 лишних файлов", Строка(МассивУдаляемых.Количество()));
Сообщить(СообщениеУдаления);
// BSLLS:UnusedLocalVariable-on
КонецЕсли;
КонецЕсли;
Всего = OPI_Инструменты.ЧислоВСтроку(ЛокальныеПути.Количество());
Счетчик = 0;
Для Каждого ЛокальныйПуть Из ЛокальныеПути Цикл
Ответ = ЗагрузитьФайл(Токен, ЛокальныйПуть.Ключ, ЛокальныйПуть.Значение);
Если Не Ответ["result"] = "success" Тогда
МассивОшибок.Добавить(Ответ);
Иначе
// BSLLS:UnusedLocalVariable-off
//@skip-check module-unused-local-variable
Прогресс = "[" + OPI_Инструменты.ЧислоВСтроку(Счетчик) + "/" + Всего + "] ";
Сообщить(Прогресс + ЛокальныйПуть.Ключ + Символы.ПС + Ответ["message"] + Символы.ПС);
// BSLLS:UnusedLocalVariable-on
КонецЕсли;
Счетчик = Счетчик + 1;
КонецЦикла;
Возврат Новый Структура("errors,items", МассивОшибок.Количество(), МассивОшибок);
КонецФункции
Процедура ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги)
ЛокальныйКаталог = СтрЗаменить(ЛокальныйКаталог, "\", "/");
ЛокальныйКаталог = ?(СтрЗаканчиваетсяНа(ЛокальныйКаталог, "/"), ЛокальныйКаталог, ЛокальныйКаталог + "/");
ЛокальныеФайлы = НайтиФайлы(ЛокальныйКаталог, "*", Истина);
Для Каждого ЛокальныйФайл Из ЛокальныеФайлы Цикл
ТекущийАбсПуть = ЛокальныйФайл.ПолноеИмя;
ТекущийОтнПуть = Прав(ТекущийАбсПуть, СтрДлина(ТекущийАбсПуть) - СтрДлина(ЛокальныйКаталог));
ТекущийОтнПуть = УдаленныйКаталог + ТекущийОтнПуть;
ТекущийОтнПуть = СтрЗаменить(ТекущийОтнПуть, "\", "/");
Если ЛокальныйФайл.ЭтоКаталог() Тогда
ЛокальныеПодкаталоги.Вставить(ТекущийОтнПуть, ТекущийАбсПуть);
Иначе
ЛокальныеПути.Вставить(ТекущийОтнПуть, ТекущийАбсПуть);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Region Alternate
Function GetSiteData(Val Token, Val Website = "") Export
Return ПолучитьДанныеОСайте(Token, Website);
EndFunction
Function GetToken(Val Login, Val Password) Export
Return ПолучитьТокен(Login, Password);
EndFunction
Function UploadFile(Val Token, Val Path, Val Data) Export
Return ЗагрузитьФайл(Token, Path, Data);
EndFunction
Function UploadFiles(Val Token, Val FileMapping, Val Singly = False) Export
Return ЗагрузитьФайлы(Token, FileMapping, Singly);
EndFunction
Function DeleteSelectedFiles(Val Token, Val Paths) Export
Return УдалитьВыбранныеФайлы(Token, Paths);
EndFunction
Function GetFilesList(Val Token, Val Path = "") Export
Return ПолучитьСписокФайлов(Token, Path);
EndFunction
Function SynchronizeFolders(Val Token, Val LocalFolder, Val RemoteFolder = "") Export
Return СинхронизироватьКаталоги(Token, LocalFolder, RemoteFolder);
EndFunction
#EndRegion
// OneScript: ./OInt/core/Modules/OPI_Neocities.os
// Lib: Neocities
// CLI: neocities
// Keywords: neocities
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область ПолучениеДанных
// Получить данные о сайте
// Получает информацию о сайте по его имени или токену
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Сайт - Строка - Имя сайта (логин) для получения информации. Текущий, если не заполнено - sitename
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ПолучитьДанныеОСайте(Знач Токен, Знач Сайт = "") Экспорт
URL = "https://neocities.org/api/info";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("sitename", Сайт, "Строка", Параметры);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить токен
// Получает токен авторизации по логину и паролю
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Логин - Строка - Логин пользователя - login
// Пароль - Строка - Пароль пользователя - password
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ПолучитьТокен(Знач Логин, Знач Пароль) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
URL = "neocities.org";
Таймаут = 120;
Попытка
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут, ЗащищенноеСоединение);
Исключение
URL = "https://" + URL;
БезопасноеСоединение = Новый HTTPСоединение(URL, 443, Логин, Пароль, , Таймаут);
КонецПопытки;
Ответ = БезопасноеСоединение.Получить(Новый HTTPЗапрос("/api/key"));
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Ответ = ПрочитатьJSON(ЧтениеJSON);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСФайлами
// Загрузить файл
// Загружает одиночный файл на сервер Neocities
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Путь - Строка - Целевой путь файла на Neocities - path
// Данные - Строка, ДвоичныеДанные - URL, путь или данные файла для загрузки - file
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Данные) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
URL = "https://neocities.org/api/upload";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
СоответствиеФайла = Новый Соответствие;
СоответствиеФайла.Вставить(Путь + "|" + Путь, Данные);
Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , СоответствиеФайла, "multipart/form-data", Заголовки);
Возврат Ответ;
КонецФункции
// Загрузить файлы
// Загружает несколько файлов на сервер Neocities
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// СоответствиеФайлов - Соответствие Из КлючИЗначение - Файлы для загрузки: Ключ > путь на NC, Значение > Файл - files
// ПоОдному - Булево - Истина > отправляет файлы отдельными запросами - singly
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ЗагрузитьФайлы(Знач Токен, Знач СоответствиеФайлов, Знач ПоОдному = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(ПоОдному);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеФайлов);
КонечныйОтвет = Новый Массив;
ОбработанноеСоответствие = Новый Соответствие;
Для Каждого ФайлОтправки Из СоответствиеФайлов Цикл
Если ПоОдному Тогда
Ответ = ЗагрузитьФайл(Токен, ФайлОтправки.Ключ, ФайлОтправки.Значение);
КонечныйОтвет.Добавить(Ответ);
Иначе
ТекущийПуть = ФайлОтправки.Ключ;
ТекущиеДанные = ФайлОтправки.Значение;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПуть);
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ТекущиеДанные);
ОбработанноеСоответствие.Вставить(ТекущийПуть + "|" + ТекущийПуть, ТекущиеДанные);
КонецЕсли;
КонецЦикла;
Если Не ПоОдному Тогда
URL = "https://neocities.org/api/upload";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
КонечныйОтвет = OPI_ЗапросыHTTP.PostMultipart(URL
,
, ОбработанноеСоответствие
, "multipart/form-data"
, Заголовки);
КонецЕсли;
Возврат КонечныйОтвет;
КонецФункции
// Удалить выбранные файлы
// Удаляет файл или несколько файлов с сервера Neocities
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Пути - Строка, Массив Из Строка - Путь или несколько путей удаляемых файлов - paths
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция УдалитьВыбранныеФайлы(Знач Токен, Знач Пути) Экспорт
OPI_ПреобразованиеТипов.ПолучитьМассив(Пути);
URL = "https://neocities.org/api/delete";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Для Н = 0 По Пути.ВГраница() Цикл
ТекущееЗначение = Пути[Н];
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущееЗначение);
Пути.Установить(Н, "filenames[]=" + ТекущееЗначение);
КонецЦикла;
ПутиСтрокой = СтрСоединить(Пути, "&");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, ПутиСтрокой, Заголовки, Ложь);
Возврат Ответ;
КонецФункции
// Получить список файлов
// Получает список файлов с отбором каталога или без
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// Путь - Строка - Отбор файлов по каталогу. Все, если не заполнено - path
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Neocities
Функция ПолучитьСписокФайлов(Знач Токен, Знач Путь = "") Экспорт
URL = "https://neocities.org/api/list";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Параметры);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Синхронизировать каталоги
// Создает копию локального каталога по выбранному пути на сервере
//
// Примечание:
// Документация Neocities API: [neocities.org/api](@neocities.org/api)
// Метод удаляет файлы на сервере, если они отсутствуют в локальном каталоге
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// ЛокальныйКаталог - Строка - Локальный каталог источник - local
// УдаленныйКаталог - Строка - Удаленный каталог приемника. Корень, если не заполнено - remote
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - информация об ошибках синхронизации
Функция СинхронизироватьКаталоги(Знач Токен, Знач ЛокальныйКаталог, Знач УдаленныйКаталог = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(ЛокальныйКаталог);
OPI_ПреобразованиеТипов.ПолучитьСтроку(УдаленныйКаталог);
Сообщить("Начало синхронизации...");
Если ЗначениеЗаполнено(УдаленныйКаталог) Тогда
УдаленныйКаталог = ?(СтрЗаканчиваетсяНа(УдаленныйКаталог, "/"), УдаленныйКаталог, УдаленныйКаталог + "/");
КонецЕсли;
УдаленныеФайлы = ПолучитьСписокФайлов(Токен, УдаленныйКаталог);
Если Не УдаленныеФайлы["result"] = "success" Тогда
//@skip-check constructor-function-return-section
Возврат УдаленныеФайлы;
КонецЕсли;
ЛокальныеПути = Новый Соответствие;
ЛокальныеПодкаталоги = Новый Соответствие;
ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги);
МассивУдаляемых = ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги);
Результат = ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути);
//@skip-check constructor-function-return-section
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Возврат Заголовки;
КонецФункции
Функция ПолучитьУдаляемыеФайлы(УдаленныеФайлы, ЛокальныеПути, ЛокальныеПодкаталоги)
МассивУдаляемых = Новый Массив;
Для Каждого УдаленныйФайл Из УдаленныеФайлы["files"] Цикл
ПутьУдаленногоОсновной = УдаленныйФайл["path"];
ПутьУдаленногоДополнительный = "/" + УдаленныйФайл["path"];
Если УдаленныйФайл["is_directory"] Тогда
СуществующийУдаленный = ЛокальныеПодкаталоги[ПутьУдаленногоОсновной];
СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный)
, СуществующийУдаленный
, ЛокальныеПодкаталоги[ПутьУдаленногоДополнительный]);
Иначе
СуществующийУдаленный = ЛокальныеПути[ПутьУдаленногоОсновной];
СуществующийУдаленный = ?(ЗначениеЗаполнено(СуществующийУдаленный)
, СуществующийУдаленный
, ЛокальныеПути[ПутьУдаленногоДополнительный]);
КонецЕсли;
Если СуществующийУдаленный = Неопределено Тогда
МассивУдаляемых.Добавить(ПутьУдаленногоОсновной);
КонецЕсли;
КонецЦикла;
Возврат МассивУдаляемых;
КонецФункции
Функция ВыполнитьСинхронизацию(Токен, МассивУдаляемых, ЛокальныеПути)
МассивОшибок = Новый Массив;
Если Не МассивУдаляемых.Количество() = 0 Тогда
Ответ = УдалитьВыбранныеФайлы(Токен, МассивУдаляемых);
Если Не Ответ["result"] = "success" Тогда
МассивОшибок.Добавить(Ответ);
Иначе
// BSLLS:UnusedLocalVariable-off
//@skip-check module-unused-local-variable
СообщениеУдаления = СтрШаблон("Удалено %1 лишних файлов", Строка(МассивУдаляемых.Количество()));
Сообщить(СообщениеУдаления);
// BSLLS:UnusedLocalVariable-on
КонецЕсли;
КонецЕсли;
Всего = OPI_Инструменты.ЧислоВСтроку(ЛокальныеПути.Количество());
Счетчик = 0;
Для Каждого ЛокальныйПуть Из ЛокальныеПути Цикл
Ответ = ЗагрузитьФайл(Токен, ЛокальныйПуть.Ключ, ЛокальныйПуть.Значение);
Если Не Ответ["result"] = "success" Тогда
МассивОшибок.Добавить(Ответ);
Иначе
// BSLLS:UnusedLocalVariable-off
//@skip-check module-unused-local-variable
Прогресс = "[" + OPI_Инструменты.ЧислоВСтроку(Счетчик) + "/" + Всего + "] ";
Сообщить(Прогресс + ЛокальныйПуть.Ключ + Символы.ПС + Ответ["message"] + Символы.ПС);
// BSLLS:UnusedLocalVariable-on
КонецЕсли;
Счетчик = Счетчик + 1;
КонецЦикла;
Возврат Новый Структура("errors,items", МассивОшибок.Количество(), МассивОшибок);
КонецФункции
Процедура ПолучитьНаборыЛокальныхПутей(ЛокальныйКаталог, УдаленныйКаталог, ЛокальныеПути, ЛокальныеПодкаталоги)
ЛокальныйКаталог = СтрЗаменить(ЛокальныйКаталог, "\", "/");
ЛокальныйКаталог = ?(СтрЗаканчиваетсяНа(ЛокальныйКаталог, "/"), ЛокальныйКаталог, ЛокальныйКаталог + "/");
ЛокальныеФайлы = НайтиФайлы(ЛокальныйКаталог, "*", Истина);
Для Каждого ЛокальныйФайл Из ЛокальныеФайлы Цикл
ТекущийАбсПуть = ЛокальныйФайл.ПолноеИмя;
ТекущийОтнПуть = Прав(ТекущийАбсПуть, СтрДлина(ТекущийАбсПуть) - СтрДлина(ЛокальныйКаталог));
ТекущийОтнПуть = УдаленныйКаталог + ТекущийОтнПуть;
ТекущийОтнПуть = СтрЗаменить(ТекущийОтнПуть, "\", "/");
Если ЛокальныйФайл.ЭтоКаталог() Тогда
ЛокальныеПодкаталоги.Вставить(ТекущийОтнПуть, ТекущийАбсПуть);
Иначе
ЛокальныеПути.Вставить(ТекущийОтнПуть, ТекущийАбсПуть);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Notion.os
// OneScript: ./OInt/core/Modules/OPI_Notion.os
// Lib: Notion
// CLI: notion
// Keywords: notion
@@ -893,60 +893,3 @@
#КонецОбласти
#КонецОбласти
#Region Alternate
Function CreatePage(Val Token, Val Parent, Val Title) Export
Return СоздатьСтраницу(Token, Parent, Title);
EndFunction
Function CreatePageInDatabase(Val Token, Val Parent, Val Data) Export
Return СоздатьСтраницуВБазу(Token, Parent, Data);
EndFunction
Function GetPage(Val Token, Val Page) Export
Return ПолучитьСтраницу(Token, Page);
EndFunction
Function EditPageProperties(Val Token, Val Page, Val Data = "", Val Icon = "", Val Cover = "", Val Archived = False) Export
Return ИзменитьСвойстваСтраницы(Token, Page, Data, Icon, Cover, Archived);
EndFunction
Function CreateDatabase(Val Token, Val Parent, Val Title, Val Properties = "") Export
Return СоздатьБазуДанных(Token, Parent, Title, Properties);
EndFunction
Function GetDatabase(Val Token, Val Base) Export
Return ПолучитьБазуДанных(Token, Base);
EndFunction
Function EditDatabaseProperties(Val Token, Val Base, Val Properties = "", Val Title = "", Val Description = "") Export
Return ИзменитьСвойстваБазы(Token, Base, Properties, Title, Description);
EndFunction
Function CreateBlock(Val Token, Val Parent, Val Block, Val InsertAfter = "") Export
Return СоздатьБлок(Token, Parent, Block, InsertAfter);
EndFunction
Function ReturnBlock(Val Token, Val BlockID, Val OnlyBase = True) Export
Return ВернутьБлок(Token, BlockID, OnlyBase);
EndFunction
Function ReturnChildBlocks(Val Token, Val BlockID) Export
Return ВернутьДочерниеБлоки(Token, BlockID);
EndFunction
Function DeleteBlock(Val Token, Val BlockID) Export
Return УдалитьБлок(Token, BlockID);
EndFunction
Function UserList(Val Token) Export
Return СписокПользователей(Token);
EndFunction
Function GetUserData(Val Token, Val UserID) Export
Return ПолучитьДанныеПользователя(Token, UserID);
EndFunction
#EndRegion

File diff suppressed because it is too large Load Diff

184
src/ru/OInt/core/Modules/OPI_OpenAI.os vendored Normal file
View File

@@ -0,0 +1,184 @@
// OneScript: ./OInt/core/Modules/OPI_OpenAI.os
// Lib: OpenAI
// CLI: openai
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check constructor-function-return-section
//@skip-check doc-comment-collection-item-type
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область ОбработкаЗапросов
// Получить ответ
// Генерирует ответ по заданному текстовому запросу
//
// Примечание:
// Метод в документации API: [Create chat completion](@platform.openai.com/docs/api-reference/chat/create)
//
// Параметры:
// URL - Строка - URL сервера Ollama - url
// Токен - Строка - Токен авторизации OpenAI - token
// Модель - Строка - Имя модели - model
// Сообщения - Строка, Массив Из Строка - Сообщения разговора. См. ПолучитьСтруктуруСообщения - msgs
// ДопПараметры - Структура Из КлючИЗначение - Коллекция КлючЗначение дополнительных параметров - options
// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп. заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
Функция ПолучитьОтвет(Знач URL, Знач Токен, Знач Модель, Знач Сообщения, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт
ДополнитьURL(URL, "v1/chat/completions");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("model" , Модель , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("messages", Сообщения, "Массив", Параметры);
OPI_Инструменты.ДобавитьПоле("stream" , Ложь , "Булево", Параметры);
ОбработатьПараметры(Параметры, ДопПараметры);
ОбработатьЗаголовки(ДопЗаголовки, Токен);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки);
Возврат Ответ;
КонецФункции
// Получить представления
// Получает представления (embeddings) для заданных вводных
//
// Примечание:
// Метод в документации API: [Create embeddings](@platform.openai.com/docs/api-reference/embeddings/create)
//
// Параметры:
// URL - Строка - URL сервера Ollama - url
// Токен - Строка - Токен авторизации OpenAI - token
// Модель - Строка - Имя модели - model
// Текст - Массив Из Строка - Строка или массив строк запросов - input
// ДопПараметры - Структура Из КлючИЗначение - Доп. параметры. См. ПолучитьСтруктуруПараметровПредставлений - options
// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
Функция ПолучитьПредставления(Знач URL, Знач Токен, Знач Модель, Знач Текст, Знач ДопПараметры = "", Знач ДопЗаголовки = "") Экспорт
ДополнитьURL(URL, "v1/embeddings");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("input", Текст , "Массив", Параметры);
ОбработатьПараметры(Параметры, ДопПараметры);
ОбработатьЗаголовки(ДопЗаголовки, Токен);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, ДопЗаголовки);
Возврат Ответ;
КонецФункции
// Получить структуру сообщения контекста
// Получает структуру сообщения для списка сообщений запроса
//
// Параметры:
// Роль - Строка - Источник сообщения: system, user, developer - role
// Текст - Строка - Текст сообщения - text
// Имя - Строка - Имя участника разговора - name
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьСтруктуруСообщения(Знач Роль, Знач Текст, Знач Имя = "") Экспорт
СтруктураПолей = Новый Структура;
OPI_Инструменты.ДобавитьПоле("role" , Роль , "Строка", СтруктураПолей);
OPI_Инструменты.ДобавитьПоле("content", Текст, "Строка", СтруктураПолей);
OPI_Инструменты.ДобавитьПоле("name" , Имя , "Строка", СтруктураПолей);
Возврат СтруктураПолей;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ДополнитьURL(URL, Знач Путь)
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
URL = ?(СтрЗаканчиваетсяНа(URL, "/"), URL, URL + "/");
URL = URL + Путь;
КонецПроцедуры
Процедура ОбработатьПараметры(Параметры, Знач ДопПараметры)
Если Не ЗначениеЗаполнено(ДопПараметры) Тогда
Возврат;
КонецЕсли;
ТекстОшибки = "Передана некорректная коллекция доп. параметров!";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопПараметры, ТекстОшибки);
Для Каждого ДопПараметр Из ДопПараметры Цикл
Параметры.Вставить(ДопПараметр.Ключ, ДопПараметр.Значение);
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьЗаголовки(ДопЗаголовки, Знач Токен)
Если Не ЗначениеЗаполнено(ДопЗаголовки) Тогда
ДопЗаголовки = Новый Соответствие;
Иначе
ТекстОшибки = "Передана некорректная коллекция доп. заголовков!";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ДопЗаголовки, ТекстОшибки);
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));
КонецПроцедуры
#КонецОбласти

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,185 +1,164 @@
// OneScript: ./OInt/core/Modules/OPI_RCON.os
// Lib: RCON
// CLI: rcon
// Keywords: rcon, remote console
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область ВыполнениеКоманд
// Открыть соединение !NOCLI
// Открывает новое соединения RCON
//
// Параметры:
// ПараметрыСоединения - Структура Из КлючИЗначение - Параметры соединения. См. СформироватьПараметрыСоединения - params
//
// Возвращаемое значение:
// Произвольный - Объект коннектора или структура с информацией об ошибке
Функция ОткрытьСоединение(Знач ПараметрыСоединения) Экспорт
Если ЭтоКоннектор(ПараметрыСоединения) Тогда
Возврат ПараметрыСоединения;
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыСоединения);
МассивОбязательных = СтрРазделить("url,password,read_timeout,write_timeout", ",");
МассивНедостающих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ПараметрыСоединения, МассивОбязательных);
Если ЗначениеЗаполнено(МассивНедостающих) Тогда
ВызватьИсключение СтрШаблон("Отсутствуют параметры подключения: %1", СтрСоединить(МассивНедостающих, ", "));
КонецЕсли;
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("RCON");
URL = ПараметрыСоединения["url"];
Пароль = ПараметрыСоединения["password"];
ТаймаутЧтения = ПараметрыСоединения["read_timeout"];
ТаймаутЗаписи = ПараметрыСоединения["write_timeout"];
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЧтения);
OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЗаписи);
Результат = Коннектор.Connect(URL, Пароль, ТаймаутЧтения, ТаймаутЗаписи);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
Возврат ?(Результат["result"], Коннектор, Результат);
КонецФункции
// Выполнить команду
// Выполняет команду на сервере
//
// Примечание:
// При передаче параметров соединения, новое соединение будет создано и закрыто в рамках выполнения одной команды.^^
// Для выполнения нескольких команд (в версиях для OS и 1С) рекомендуется использовать заранее созданное соединение (см. ОткрытьСоединение)
//
// Параметры:
// Команда - Строка - Текст команды - exec
// Соединение - Произвольный, Структура Из КлючИЗначение - Соединение или параметры соединения - conn
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения команды
Функция ВыполнитьКоманду(Знач Команда, Знач Соединение) Экспорт
Если ЭтоКоннектор(Соединение) Тогда
Коннектор = Соединение;
Иначе
Коннектор = ОткрытьСоединение(Соединение);
КонецЕсли;
Если Не ЭтоКоннектор(Коннектор) Тогда
Возврат Коннектор;
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(Команда);
Результат = Коннектор.Command(Команда);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
// Сформировать параметры соединения
// Формирует коллекцию параметров соединения
//
// Параметры:
// URL - Строка - URL сервера - url
// Пароль - Строка - Пароль для подключения - pass
// ТаймаутЧтения - Число - Таймаут ожидания ответа (в секундах) - rtout
// ТаймаутЗаписи - Число - Таймаут ожидания отправки запроса (в секундах) - wtout
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура параметров соединения
Функция СформироватьПараметрыСоединения(Знач URL, Знач Пароль, Знач ТаймаутЧтения = 30, Знач ТаймаутЗаписи = 30) Экспорт
ПараметрыСоединения = Новый Структура;
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", ПараметрыСоединения);
OPI_Инструменты.ДобавитьПоле("password" , Пароль , "Строка", ПараметрыСоединения);
OPI_Инструменты.ДобавитьПоле("read_timeout" , ТаймаутЧтения, "Число" , ПараметрыСоединения);
OPI_Инструменты.ДобавитьПоле("write_timeout", ТаймаутЗаписи, "Число" , ПараметрыСоединения);
Возврат ПараметрыСоединения;
КонецФункции
// Это коннектор !NOCLI
// Проверяет, что значение является объектом внешней компоненты RCON
//
// Параметры:
// Значение - Произвольный - Значение для проверки - value
//
// Возвращаемое значение:
// Булево - Это коннектор
Функция ЭтоКоннектор(Знач Значение) Экспорт
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_RCON.Main";
КонецФункции
#КонецОбласти
#КонецОбласти
#Region Alternate
Function CreateConnection(Val ConnectionParams) Export
Return ОткрытьСоединение(ConnectionParams);
EndFunction
Function ExecuteCommand(Val Command, Val Connection) Export
Return ВыполнитьКоманду(Command, Connection);
EndFunction
Function FormConnectionParameters(Val URL, Val Password, Val ReadTimeout = 30, Val WriteTimeout = 30) Export
Return СформироватьПараметрыСоединения(URL, Password, ReadTimeout, WriteTimeout);
EndFunction
Function IsConnector(Val Value) Export
Return ЭтоКоннектор(Value);
EndFunction
#EndRegion
// OneScript: ./OInt/core/Modules/OPI_RCON.os
// Lib: RCON
// CLI: rcon
// Keywords: rcon, remote console
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область ВыполнениеКоманд
// Открыть соединение !NOCLI
// Открывает новое соединения RCON
//
// Параметры:
// ПараметрыСоединения - Структура Из КлючИЗначение - Параметры соединения. См. СформироватьПараметрыСоединения - params
//
// Возвращаемое значение:
// Произвольный - Объект коннектора или структура с информацией об ошибке
Функция ОткрытьСоединение(Знач ПараметрыСоединения) Экспорт
Если ЭтоКоннектор(ПараметрыСоединения) Тогда
Возврат ПараметрыСоединения;
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыСоединения);
МассивОбязательных = СтрРазделить("url,password,read_timeout,write_timeout", ",");
МассивНедостающих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ПараметрыСоединения, МассивОбязательных);
Если ЗначениеЗаполнено(МассивНедостающих) Тогда
ВызватьИсключение СтрШаблон("Отсутствуют параметры подключения: %1", СтрСоединить(МассивНедостающих, ", "));
КонецЕсли;
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("RCON");
URL = ПараметрыСоединения["url"];
Пароль = ПараметрыСоединения["password"];
ТаймаутЧтения = ПараметрыСоединения["read_timeout"];
ТаймаутЗаписи = ПараметрыСоединения["write_timeout"];
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЧтения);
OPI_ПреобразованиеТипов.ПолучитьЧисло(ТаймаутЗаписи);
Результат = Коннектор.Connect(URL, Пароль, ТаймаутЧтения, ТаймаутЗаписи);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
Возврат ?(Результат["result"], Коннектор, Результат);
КонецФункции
// Выполнить команду
// Выполняет команду на сервере
//
// Примечание:
// При передаче параметров соединения, новое соединение будет создано и закрыто в рамках выполнения одной команды.^^
// Для выполнения нескольких команд (в версиях для OS и 1С) рекомендуется использовать заранее созданное соединение (см. ОткрытьСоединение)
//
// Параметры:
// Команда - Строка - Текст команды - exec
// Соединение - Произвольный, Структура Из КлючИЗначение - Соединение или параметры соединения - conn
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения команды
Функция ВыполнитьКоманду(Знач Команда, Знач Соединение) Экспорт
Если ЭтоКоннектор(Соединение) Тогда
Коннектор = Соединение;
Иначе
Коннектор = ОткрытьСоединение(Соединение);
КонецЕсли;
Если Не ЭтоКоннектор(Коннектор) Тогда
Возврат Коннектор;
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(Команда);
Результат = Коннектор.Command(Команда);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
// Сформировать параметры соединения
// Формирует коллекцию параметров соединения
//
// Параметры:
// URL - Строка - URL сервера - url
// Пароль - Строка - Пароль для подключения - pass
// ТаймаутЧтения - Число - Таймаут ожидания ответа (в секундах) - rtout
// ТаймаутЗаписи - Число - Таймаут ожидания отправки запроса (в секундах) - wtout
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура параметров соединения
Функция СформироватьПараметрыСоединения(Знач URL, Знач Пароль, Знач ТаймаутЧтения = 30, Знач ТаймаутЗаписи = 30) Экспорт
ПараметрыСоединения = Новый Структура;
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", ПараметрыСоединения);
OPI_Инструменты.ДобавитьПоле("password" , Пароль , "Строка", ПараметрыСоединения);
OPI_Инструменты.ДобавитьПоле("read_timeout" , ТаймаутЧтения, "Число" , ПараметрыСоединения);
OPI_Инструменты.ДобавитьПоле("write_timeout", ТаймаутЗаписи, "Число" , ПараметрыСоединения);
Возврат ПараметрыСоединения;
КонецФункции
// Это коннектор !NOCLI
// Проверяет, что значение является объектом внешней компоненты RCON
//
// Параметры:
// Значение - Произвольный - Значение для проверки - value
//
// Возвращаемое значение:
// Булево - Это коннектор
Функция ЭтоКоннектор(Знач Значение) Экспорт
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_RCON.Main";
КонецФункции
#КонецОбласти
#КонецОбласти

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Slack.os
// OneScript: ./OInt/core/Modules/OPI_Slack.os
// Lib: Slack
// CLI: slack
// Keywords: slack
@@ -1042,156 +1042,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function GetBotInformation(Val Token) Export
Return ПолучитьИнформациюОБоте(Token);
EndFunction
Function GetWorkspaceList(Val Token, Val Cursor = "") Export
Return ПолучитьСписокРабочихОбластей(Token, Cursor);
EndFunction
Function GetUserList(Val Token, Val Cursor = "") Export
Return ПолучитьСписокПользователей(Token, Cursor);
EndFunction
Function SendMessage(Val Token, Val Channel, Val Text = "", Val SendingDate = "", Val Blocks = "") Export
Return ОтправитьСообщение(Token, Channel, Text, SendingDate, Blocks);
EndFunction
Function SendEphemeralMessage(Val Token, Val Channel, Val Text = "", Val User = "", Val Blocks = "") Export
Return ОтправитьЭфемерноеСообщение(Token, Channel, Text, User, Blocks);
EndFunction
Function EditMessage(Val Token, Val Channel, Val Timestamp, Val Text = "", Val BlockArray = "") Export
Return ИзменитьСообщение(Token, Channel, Timestamp, Text, BlockArray);
EndFunction
Function DeleteMessage(Val Token, Val Channel, Val Timestamp, Val IsDelayed = False) Export
Return УдалитьСообщение(Token, Channel, Timestamp, IsDelayed);
EndFunction
Function GetDelayedMessageList(Val Token, Val Channel, Val Cursor = "") Export
Return ПолучитьСписокОтложенныхСообщений(Token, Channel, Cursor);
EndFunction
Function GetMessageLink(Val Token, Val Channel, Val Timestamp) Export
Return ПолучитьСсылкуНаСообщение(Token, Channel, Timestamp);
EndFunction
Function GetMessageReplyList(Val Token, Val Channel, Val Timestamp, Val Cursor = "") Export
Return ПолучитьСписокОтветовНаСообщение(Token, Channel, Timestamp, Cursor);
EndFunction
Function GetChannelList(Val Token, Val ExcludeArchived = False, Val Cursor = "") Export
Return ПолучитьСписокКаналов(Token, ExcludeArchived, Cursor);
EndFunction
Function GetChannelUserList(Val Token, Val Channel, Val Cursor = "") Export
Return ПолучитьСписокПользователейКанала(Token, Channel, Cursor);
EndFunction
Function CreateChannel(Val Token, Val Name, Val Private = False) Export
Return СоздатьКанал(Token, Name, Private);
EndFunction
Function ArchiveChannel(Val Token, Val Channel) Export
Return АрхивироватьКанал(Token, Channel);
EndFunction
Function GetChannel(Val Token, Val Channel) Export
Return ПолучитьКанал(Token, Channel);
EndFunction
Function GetChannelHistory(Val Token, Val Channel) Export
Return ПолучитьИсториюКанала(Token, Channel);
EndFunction
Function InviteUsersToChannel(Val Token, Val Channel, Val ArrayOfUsers) Export
Return ПригласитьПользователейВКанал(Token, Channel, ArrayOfUsers);
EndFunction
Function KickUserFromChannel(Val Token, Val Channel, Val User) Export
Return ВыгнатьПользователяИзКанала(Token, Channel, User);
EndFunction
Function JoinChannel(Val Token, Val Channel) Export
Return ВступитьВКанал(Token, Channel);
EndFunction
Function LeaveChannel(Val Token, Val Channel) Export
Return ПокинутьКанал(Token, Channel);
EndFunction
Function SetChannelTopic(Val Token, Val Channel, Val Topic) Export
Return УстановитьТемуКанала(Token, Channel, Topic);
EndFunction
Function SetChannelGoal(Val Token, Val Channel, Val Purpose) Export
Return УстановитьЦельКанала(Token, Channel, Purpose);
EndFunction
Function RenameChannel(Val Token, Val Channel, Val Name) Export
Return ПереименоватьКанал(Token, Channel, Name);
EndFunction
Function OpenDialog(Val Token, Val ArrayOfUsers) Export
Return ОткрытьДиалог(Token, ArrayOfUsers);
EndFunction
Function CloseDialog(Val Token, Val Dialog) Export
Return ЗакрытьДиалог(Token, Dialog);
EndFunction
Function GetFilesList(Val Token, Val Channel = "", Val PageNumber = 1) Export
Return ПолучитьСписокФайлов(Token, Channel, PageNumber);
EndFunction
Function UploadFile(Val Token, Val File, Val FileName, Val Title, Val Channel = "") Export
Return ЗагрузитьФайл(Token, File, FileName, Title, Channel);
EndFunction
Function GetFileData(Val Token, Val FileID) Export
Return ПолучитьДанныеФайла(Token, FileID);
EndFunction
Function DeleteFile(Val Token, Val FileID) Export
Return УдалитьФайл(Token, FileID);
EndFunction
Function MakeFilePublic(Val Token, Val FileID) Export
Return СделатьФайлПубличным(Token, FileID);
EndFunction
Function MakeFilePrivate(Val Token, Val FileID) Export
Return СделатьФайлПриватным(Token, FileID);
EndFunction
Function GetExternalFileList(Val Token, Val Channel = "", Val Cursor = "") Export
Return ПолучитьСписокВнешнихФайлов(Token, Channel, Cursor);
EndFunction
Function GetExternalFile(Val Token, Val FileID) Export
Return ПолучитьВнешнийФайл(Token, FileID);
EndFunction
Function AddExternalFile(Val Token, Val URL, Val Title) Export
Return ДобавитьВнешнийФайл(Token, URL, Title);
EndFunction
Function SendExternalFile(Val Token, Val FileID, Val ChannelArray) Export
Return ОтправитьВнешнийФайл(Token, FileID, ChannelArray);
EndFunction
Function DeleteExternalFile(Val Token, Val FileID) Export
Return УдалитьВнешнийФайл(Token, FileID);
EndFunction
Function GenerateImageBlock(Val URL, Val AlternateText = "") Export
Return СформироватьБлокКартинку(URL, AlternateText);
EndFunction
#EndRegion

View File

@@ -1,351 +1,310 @@
// OneScript: ./OInt/core/Modules/OPI_TCP.os
// Lib: TCP
// CLI: tcp
// Keywords: tcp
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область МетодыКлиента
// Открыть соединение !NOCLI
// Создает TCP соединение
//
// Параметры:
// Адрес - Строка - Адрес и порт для подключения - address
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение, Произвольный - Возвращает объект TCP клиента при успешном подключении или информацию об ошибке
Функция ОткрытьСоединение(Знач Адрес, Знач Tls = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
OPI_Инструменты.ВернутьУправляющиеПоследовательности(Адрес);
Домен = OPI_Инструменты.ПолучитьДомен(Адрес);
TCPКлиент = OPI_Компоненты.ПолучитьКомпоненту("TCPClient");
Успех = TCPКлиент.SetAddress(Адрес, Домен);
Если Не Успех Тогда
Возврат ПолучитьПоследнююОшибку(TCPКлиент);
КонецЕсли;
Tls = OPI_Компоненты.УстановитьTls(TCPКлиент, Tls);
Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда
Возврат Tls;
КонецЕсли;
Успех = TCPКлиент.Connect();
Если Не Успех Тогда
Возврат ПолучитьПоследнююОшибку(TCPКлиент);
КонецЕсли;
Возврат TCPКлиент;
КонецФункции
// Закрыть соединение !NOCLI
// Явно закрывает созданное ранее соединение
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
//
// Возвращаемое значение:
// Булево - всегда возвращает Истина
Функция ЗакрытьСоединение(Знач Соединение) Экспорт
Возврат Соединение.Disconnect();
КонецФункции
// Прочитать двоичные данные !NOCLI
// Читает данные из указанного соединения
//
// Примечание:
// При работе с бесконечным потоком входящих данных обязательно указание параметра МаксимальныйРазмер, так как^^
// бесконечное получение данных может привести к зависанию
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// МаксимальныйРазмер - Число - Максимальный размер данных (байт). 0 > без ограничений - size
// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker
// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// ДвоичныеДанные - Полученные данные
Функция ПрочитатьДвоичныеДанные(Знач Соединение
, Знач МаксимальныйРазмер = 0
, Знач Маркер = ""
, Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут);
OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер);
Если ТипЗнч(Маркер) = Тип("Строка") Тогда
Маркер = ПолучитьДвоичныеДанныеИзСтроки(Маркер);
Иначе
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Маркер);
КонецЕсли;
Данные = Соединение.Read(МаксимальныйРазмер, Маркер, Таймаут);
Возврат Данные;
КонецФункции
// Прочитать строку !NOCLI
// Читает данные из указанного соединения в виде строки
//
// Примечание:
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// Кодировка - Строка - Кодировка преобразования данных в строку - enc
// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker
// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// Строка - Полученные данные в виде строки
Функция ПрочитатьСтроку(Знач Соединение
, Знач Кодировка = "UTF-8"
, Знач Маркер = ""
, Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
Данные = ПрочитатьДвоичныеДанные(Соединение, , Маркер, Таймаут);
Данные = ПолучитьСтрокуИзДвоичныхДанных(Данные, Кодировка);
Возврат Данные;
КонецФункции
// Отправить двоичные данные !NOCLI
// Отправляет двоичные данные через указанное соединение
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// Данные - ДвоичныеДанные - Данные для отправки - data
// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// Булево - Признак успешного выполнения
Функция ОтправитьДвоичныеДанные(Знач Соединение, Знач Данные, Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут);
Результат = Соединение.Send(Данные, Таймаут);
Возврат Результат;
КонецФункции
// Отправить строку !NOCLI
// Отправляет данные в виде строки через указанное соединение
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// Данные - Строка - Данные для отправки в виде строки - data
// Кодировка - Строка - Кодировка для записи исходящей строки в поток - enc
// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// Булево - Признак успешного выполнения
Функция ОтправитьСтроку(Знач Соединение, Знач Данные, Знач Кодировка = "UTF-8", Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Данные);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
ДанныеДД = ПолучитьДвоичныеДанныеИзСтроки(Данные, Кодировка);
Результат = ОтправитьДвоичныеДанные(Соединение, ДанныеДД, Таймаут);
Возврат Результат;
КонецФункции
// Обработать запрос
// Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки
//
// Параметры:
// Адрес - Строка - Адрес и порт для подключения - address
// Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data
// ОтветСтрокой - Булево - Признак получения ответа как строки - string
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// ДвоичныеДанные, Строка - Ответ на запрос или информация об ошибке
Функция ОбработатьЗапрос(Знач Адрес, Знач Данные = "", Знач ОтветСтрокой = Истина, Знач Tls = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь);
OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой);
Соединение = ОткрытьСоединение(Адрес, Tls);
Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда
Возврат Соединение;
КонецЕсли;
Результат = ОтправитьДвоичныеДанные(Соединение, Данные);
Если Результат Тогда
Ответ = ПрочитатьДвоичныеДанные(Соединение, , Символы.ПС);
Если Не ЗначениеЗаполнено(Ответ) Тогда
Ошибка = ПолучитьПоследнююОшибку(Соединение);
Если ЗначениеЗаполнено(Ошибка) Тогда
Ответ = OPI_Инструменты.JSONСтрокой(Ошибка);
Ответ = ПолучитьДвоичныеДанныеИзСтроки(Ответ);
КонецЕсли;
КонецЕсли;
Ответ = ?(ОтветСтрокой, ПолучитьСтрокуИзДвоичныхДанных(Ответ), Ответ);
Иначе
Ответ = ПолучитьПоследнююОшибку(Соединение);
Ответ = ?(ЗначениеЗаполнено(Ответ), OPI_Инструменты.JSONСтрокой(Ответ), "OPI: Не удалось отправить сообщение");
Ответ = ?(ОтветСтрокой, Ответ, ПолучитьДвоичныеДанныеИзСтроки(Ответ));
КонецЕсли;
ЗакрытьСоединение(Соединение);
Возврат Ответ;
КонецФункции
// Получить последнюю ошибку !NOCLI
// Получает информацию о последней ошибке в соединении
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение, Неопределено - Информация об ошибке или неопределено, если ошибки нет
Функция ПолучитьПоследнююОшибку(Знач Соединение) Экспорт
Результат = Соединение.GetLastError();
Если ЗначениеЗаполнено(Результат) Тогда
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Иначе
Результат = Неопределено;
КонецЕсли;
Возврат Результат;
КонецФункции
// Получить настройки TLS
// Формирует настройки для использования TLS при выполнении запросов
//
// Примечание:
// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^
// или неявного, при передаче строки подключения в метод `ОбработатьЗапрос`
//
// Параметры:
// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust
// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек TLS соединения
Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт
Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату);
КонецФункции
#КонецОбласти
#КонецОбласти
#Region Alternate
Function CreateConnection(Val Address, Val Tls = "") Export
Return ОткрытьСоединение(Address, Tls);
EndFunction
Function CloseConnection(Val Connection) Export
Return ЗакрытьСоединение(Connection);
EndFunction
Function ReadBinaryData(Val Connection, Val MaxSize = 0, Val Marker = "", Val Timeout = 5000) Export
Return ПрочитатьДвоичныеДанные(Connection, MaxSize, Marker, Timeout);
EndFunction
Function ReadLine(Val Connection, Val Encoding = "UTF-8", Val Marker = "", Val Timeout = 5000) Export
Return ПрочитатьСтроку(Connection, Encoding, Marker, Timeout);
EndFunction
Function SendBinaryData(Val Connection, Val Data, Val Timeout = 5000) Export
Return ОтправитьДвоичныеДанные(Connection, Data, Timeout);
EndFunction
Function SendLine(Val Connection, Val Data, Val Encoding = "UTF-8", Val Timeout = 5000) Export
Return ОтправитьСтроку(Connection, Data, Encoding, Timeout);
EndFunction
Function ProcessRequest(Val Address, Val Data = "", Val ResponseString = True, Val Tls = "") Export
Return ОбработатьЗапрос(Address, Data, ResponseString, Tls);
EndFunction
Function GetLastError(Val Connection) Export
Return ПолучитьПоследнююОшибку(Connection);
EndFunction
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath);
EndFunction
#EndRegion
// OneScript: ./OInt/core/Modules/OPI_TCP.os
// Lib: TCP
// CLI: tcp
// Keywords: tcp
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область МетодыКлиента
// Открыть соединение !NOCLI
// Создает TCP соединение
//
// Параметры:
// Адрес - Строка - Адрес и порт для подключения - address
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение, Произвольный - Возвращает объект TCP клиента при успешном подключении или информацию об ошибке
Функция ОткрытьСоединение(Знач Адрес, Знач Tls = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
OPI_Инструменты.ВернутьУправляющиеПоследовательности(Адрес);
Домен = OPI_Инструменты.ПолучитьДомен(Адрес);
TCPКлиент = OPI_Компоненты.ПолучитьКомпоненту("TCPClient");
Успех = TCPКлиент.SetAddress(Адрес, Домен);
Если Не Успех Тогда
Возврат ПолучитьПоследнююОшибку(TCPКлиент);
КонецЕсли;
Tls = OPI_Компоненты.УстановитьTls(TCPКлиент, Tls);
Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда
Возврат Tls;
КонецЕсли;
Успех = TCPКлиент.Connect();
Если Не Успех Тогда
Возврат ПолучитьПоследнююОшибку(TCPКлиент);
КонецЕсли;
Возврат TCPКлиент;
КонецФункции
// Закрыть соединение !NOCLI
// Явно закрывает созданное ранее соединение
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
//
// Возвращаемое значение:
// Булево - всегда возвращает Истина
Функция ЗакрытьСоединение(Знач Соединение) Экспорт
Возврат Соединение.Disconnect();
КонецФункции
// Прочитать двоичные данные !NOCLI
// Читает данные из указанного соединения
//
// Примечание:
// При работе с бесконечным потоком входящих данных обязательно указание параметра МаксимальныйРазмер, так как^^
// бесконечное получение данных может привести к зависанию
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// МаксимальныйРазмер - Число - Максимальный размер данных (байт). 0 > без ограничений - size
// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker
// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// ДвоичныеДанные - Полученные данные
Функция ПрочитатьДвоичныеДанные(Знач Соединение
, Знач МаксимальныйРазмер = 0
, Знач Маркер = ""
, Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут);
OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер);
Если ТипЗнч(Маркер) = Тип("Строка") Тогда
Маркер = ПолучитьДвоичныеДанныеИзСтроки(Маркер);
Иначе
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Маркер);
КонецЕсли;
Данные = Соединение.Read(МаксимальныйРазмер, Маркер, Таймаут);
Возврат Данные;
КонецФункции
// Прочитать строку !NOCLI
// Читает данные из указанного соединения в виде строки
//
// Примечание:
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// Кодировка - Строка - Кодировка преобразования данных в строку - enc
// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker
// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// Строка - Полученные данные в виде строки
Функция ПрочитатьСтроку(Знач Соединение
, Знач Кодировка = "UTF-8"
, Знач Маркер = ""
, Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
Данные = ПрочитатьДвоичныеДанные(Соединение, , Маркер, Таймаут);
Данные = ПолучитьСтрокуИзДвоичныхДанных(Данные, Кодировка);
Возврат Данные;
КонецФункции
// Отправить двоичные данные !NOCLI
// Отправляет двоичные данные через указанное соединение
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// Данные - ДвоичныеДанные - Данные для отправки - data
// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// Булево - Признак успешного выполнения
Функция ОтправитьДвоичныеДанные(Знач Соединение, Знач Данные, Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут);
Результат = Соединение.Send(Данные, Таймаут);
Возврат Результат;
КонецФункции
// Отправить строку !NOCLI
// Отправляет данные в виде строки через указанное соединение
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
// Данные - Строка - Данные для отправки в виде строки - data
// Кодировка - Строка - Кодировка для записи исходящей строки в поток - enc
// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout
//
// Возвращаемое значение:
// Булево - Признак успешного выполнения
Функция ОтправитьСтроку(Знач Соединение, Знач Данные, Знач Кодировка = "UTF-8", Знач Таймаут = 5000) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Данные);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
ДанныеДД = ПолучитьДвоичныеДанныеИзСтроки(Данные, Кодировка);
Результат = ОтправитьДвоичныеДанные(Соединение, ДанныеДД, Таймаут);
Возврат Результат;
КонецФункции
// Обработать запрос
// Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки
//
// Параметры:
// Адрес - Строка - Адрес и порт для подключения - address
// Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data
// ОтветСтрокой - Булево - Признак получения ответа как строки - string
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// ДвоичныеДанные, Строка - Ответ на запрос или информация об ошибке
Функция ОбработатьЗапрос(Знач Адрес, Знач Данные = "", Знач ОтветСтрокой = Истина, Знач Tls = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь);
OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой);
Соединение = ОткрытьСоединение(Адрес, Tls);
Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда
Возврат Соединение;
КонецЕсли;
Результат = ОтправитьДвоичныеДанные(Соединение, Данные);
Если Результат Тогда
Ответ = ПрочитатьДвоичныеДанные(Соединение, , Символы.ПС);
Если Не ЗначениеЗаполнено(Ответ) Тогда
Ошибка = ПолучитьПоследнююОшибку(Соединение);
Если ЗначениеЗаполнено(Ошибка) Тогда
Ответ = OPI_Инструменты.JSONСтрокой(Ошибка);
Ответ = ПолучитьДвоичныеДанныеИзСтроки(Ответ);
КонецЕсли;
КонецЕсли;
Ответ = ?(ОтветСтрокой, ПолучитьСтрокуИзДвоичныхДанных(Ответ), Ответ);
Иначе
Ответ = ПолучитьПоследнююОшибку(Соединение);
Ответ = ?(ЗначениеЗаполнено(Ответ), OPI_Инструменты.JSONСтрокой(Ответ), "OPI: Не удалось отправить сообщение");
Ответ = ?(ОтветСтрокой, Ответ, ПолучитьДвоичныеДанныеИзСтроки(Ответ));
КонецЕсли;
ЗакрытьСоединение(Соединение);
Возврат Ответ;
КонецФункции
// Получить последнюю ошибку !NOCLI
// Получает информацию о последней ошибке в соединении
//
// Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение, Неопределено - Информация об ошибке или неопределено, если ошибки нет
Функция ПолучитьПоследнююОшибку(Знач Соединение) Экспорт
Результат = Соединение.GetLastError();
Если ЗначениеЗаполнено(Результат) Тогда
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Иначе
Результат = Неопределено;
КонецЕсли;
Возврат Результат;
КонецФункции
// Получить настройки TLS
// Формирует настройки для использования TLS при выполнении запросов
//
// Примечание:
// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^
// или неявного, при передаче строки подключения в метод `ОбработатьЗапрос`
//
// Параметры:
// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust
// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек TLS соединения
Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт
Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату);
КонецФункции
#КонецОбласти
#КонецОбласти

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Telegram.os
// OneScript: ./OInt/core/Modules/OPI_Telegram.os
// Lib: Telegram
// CLI: telegram
// Keywords: telegram
@@ -1570,160 +1570,3 @@
КонецПроцедуры
#КонецОбласти
#Region Alternate
Function GetBotInformation(Val Token) Export
Return ПолучитьИнформациюБота(Token);
EndFunction
Function GetUpdates(Val Token, Val Timeout = 0, Val Offset = "") Export
Return ПолучитьОбновления(Token, Timeout, Offset);
EndFunction
Function SetWebhook(Val Token, Val URL) Export
Return УстановитьWebhook(Token, URL);
EndFunction
Function DeleteWebhook(Val Token) Export
Return УдалитьWebhook(Token);
EndFunction
Function DownloadFile(Val Token, Val FileID) Export
Return СкачатьФайл(Token, FileID);
EndFunction
Function ProcessTMAData(Val DataString, Val Token) Export
Return ОбработатьДанныеTMA(DataString, Token);
EndFunction
Function SendTextMessage(Val Token, Val ChatID, Val Text, Val Keyboard = "", Val Markup = "Markdown", Val RepliedID = 0) Export
Return ОтправитьТекстовоеСообщение(Token, ChatID, Text, Keyboard, Markup, RepliedID);
EndFunction
Function SendImage(Val Token, Val ChatID, Val Text, Val Image, Val Keyboard = "", Val Markup = "Markdown") Export
Return ОтправитьКартинку(Token, ChatID, Text, Image, Keyboard, Markup);
EndFunction
Function SendVideo(Val Token, Val ChatID, Val Text, Val Video, Val Keyboard = "", Val Markup = "Markdown") Export
Return ОтправитьВидео(Token, ChatID, Text, Video, Keyboard, Markup);
EndFunction
Function SendAudio(Val Token, Val ChatID, Val Text, Val Audio, Val Keyboard = "", Val Markup = "Markdown") Export
Return ОтправитьАудио(Token, ChatID, Text, Audio, Keyboard, Markup);
EndFunction
Function SendDocument(Val Token, Val ChatID, Val Text, Val Document, Val Keyboard = "", Val Markup = "Markdown", Val FileName = "") Export
Return ОтправитьДокумент(Token, ChatID, Text, Document, Keyboard, Markup, FileName);
EndFunction
Function SendGif(Val Token, Val ChatID, Val Text, Val GIF, Val Keyboard = "", Val Markup = "Markdown") Export
Return ОтправитьГифку(Token, ChatID, Text, GIF, Keyboard, Markup);
EndFunction
Function SendMediaGroup(Val Token, Val ChatID, Val Text, Val FileMapping, Val Keyboard = "", Val Markup = "Markdown") Export
Return ОтправитьМедиагруппу(Token, ChatID, Text, FileMapping, Keyboard, Markup);
EndFunction
Function SendLocation(Val Token, Val ChatID, Val Latitude, Val Longitude, Val Keyboard = "") Export
Return ОтправитьМестоположение(Token, ChatID, Latitude, Longitude, Keyboard);
EndFunction
Function SendContact(Val Token, Val ChatID, Val Name, Val LastName, Val Phone, Val Keyboard = "") Export
Return ОтправитьКонтакт(Token, ChatID, Name, LastName, Phone, Keyboard);
EndFunction
Function SendPoll(Val Token, Val ChatID, Val Question, Val AnswersArray, Val Anonymous = True) Export
Return ОтправитьОпрос(Token, ChatID, Question, AnswersArray, Anonymous);
EndFunction
Function ForwardMessage(Val Token, Val OriginalID, Val FromID, Val ToID) Export
Return ПереслатьСообщение(Token, OriginalID, FromID, ToID);
EndFunction
Function DeleteMessage(Val Token, Val ChatID, Val MessageID) Export
Return УдалитьСообщение(Token, ChatID, MessageID);
EndFunction
Function ReplaceMessageKeyboard(Val Token, Val ChatID, Val MessageID, Val Keyboard) Export
Return ЗаменитьКлавиатуруСообщения(Token, ChatID, MessageID, Keyboard);
EndFunction
Function ReplaceMessageText(Val Token, Val ChatID, Val MessageID, Val Text, Val Markup = "") Export
Return ЗаменитьТекстСообщения(Token, ChatID, MessageID, Text, Markup);
EndFunction
Function ReplaceMessageCaption(Val Token, Val ChatID, Val MessageID, Val Description, Val Markup = "") Export
Return ЗаменитьОписаниеСообщения(Token, ChatID, MessageID, Description, Markup);
EndFunction
Function FormKeyboardFromButtonArray(Val ButtonArray, Val UnderMessage = False, Val OneByOne = True) Export
Return СформироватьКлавиатуруПоМассивуКнопок(ButtonArray, UnderMessage, OneByOne);
EndFunction
Function Ban(Val Token, Val ChatID, Val UserID) Export
Return Бан(Token, ChatID, UserID);
EndFunction
Function Unban(Val Token, Val ChatID, Val UserID) Export
Return Разбан(Token, ChatID, UserID);
EndFunction
Function CreateInvitationLink(Val Token, Val ChatID, Val Title = "", Val ExpirationDate = "", Val UserLimit = 0) Export
Return СоздатьСсылкуПриглашение(Token, ChatID, Title, ExpirationDate, UserLimit);
EndFunction
Function PinMessage(Val Token, Val ChatID, Val MessageID) Export
Return ЗакрепитьСообщение(Token, ChatID, MessageID);
EndFunction
Function UnpinMessage(Val Token, Val ChatID, Val MessageID) Export
Return ОткрепитьСообщение(Token, ChatID, MessageID);
EndFunction
Function GetParticipantCount(Val Token, Val ChatID) Export
Return ПолучитьЧислоУчастников(Token, ChatID);
EndFunction
Function GetAvatarIconList(Val Token) Export
Return ПолучитьСписокИконокАватаров(Token);
EndFunction
Function CreateForumThread(Val Token, Val ChatID, Val Title, Val IconID = "") Export
Return СоздатьТемуФорума(Token, ChatID, Title, IconID);
EndFunction
Function EditForumTopic(Val Token, Val ChatID, Val ThreadID, Val Title = Undefined, Val IconID = Undefined) Export
Return ИзменитьТемуФорума(Token, ChatID, ThreadID, Title, IconID);
EndFunction
Function CloseForumThread(Val Token, Val ChatID, Val ThreadID = "") Export
Return ЗакрытьТемуФорума(Token, ChatID, ThreadID);
EndFunction
Function OpenForumThread(Val Token, Val ChatID, Val ThreadID = "") Export
Return ОткрытьТемуФорума(Token, ChatID, ThreadID);
EndFunction
Function DeleteForumTopic(Val Token, Val ChatID, Val ThreadID) Export
Return УдалитьТемуФорума(Token, ChatID, ThreadID);
EndFunction
Function HideMainForumTopic(Val Token, Val ChatID) Export
Return СкрытьГлавнуюТемуФорума(Token, ChatID);
EndFunction
Function ShowMainForumTopic(Val Token, Val ChatID) Export
Return ПоказатьГлавнуюТемуФорума(Token, ChatID);
EndFunction
Function EditMainForumTopicName(Val Token, Val ChatID, Val Title) Export
Return ИзменитьИмяГлавнойТемыФорума(Token, ChatID, Title);
EndFunction
Function ClearThreadPinnedMessagesList(Val Token, Val ChatID, Val ThreadID = "") Export
Return ОчиститьСписокЗакрепленныхСообщенийТемы(Token, ChatID, ThreadID);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Twitter.os
// OneScript: ./OInt/core/Modules/OPI_Twitter.os
// Lib: Twitter
// CLI: twitter
// Keywords: twitter, x
@@ -660,52 +660,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function GetAuthorizationLink(Parameters = "") Export
Return ПолучитьСсылкуАвторизации(Parameters);
EndFunction
Function GetToken(Val Code, Val Parameters = "") Export
Return ПолучитьТокен(Code, Parameters);
EndFunction
Function RefreshToken(Val Parameters = "") Export
Return ОбновитьТокен(Parameters);
EndFunction
Function HandleIncomingRequestAfterAuthorization(Request) Export
Return ОбработкаВходящегоЗапросаПослеАвторизации(Request);
EndFunction
Function CreateCustomTweet(Val Text = "", Val MediaArray = "", Val PollOptionsArray = "", Val PollDuration = "", Val Parameters = "") Export
Return СоздатьПроизвольныйТвит(Text, MediaArray, PollOptionsArray, PollDuration, Parameters);
EndFunction
Function CreateTextTweet(Val Text, Val Parameters = "") Export
Return СоздатьТекстовыйТвит(Text, Parameters);
EndFunction
Function CreateImageTweet(Val Text, Val ImageArray, Val Parameters = "") Export
Return СоздатьТвитКартинки(Text, ImageArray, Parameters);
EndFunction
Function CreateGifTweet(Val Text, Val GifsArray, Val Parameters = "") Export
Return СоздатьТвитГифки(Text, GifsArray, Parameters);
EndFunction
Function CreateVideoTweet(Val Text, Val VideosArray, Val Parameters = "") Export
Return СоздатьТвитВидео(Text, VideosArray, Parameters);
EndFunction
Function CreatePollTweet(Val Text, Val OptionArray, Val Duration, Val Parameters = "") Export
Return СоздатьТвитОпрос(Text, OptionArray, Duration, Parameters);
EndFunction
Function UploadAttachmentsArray(Val ArrayOfFiles, Val AttachmentsType, Val Parameters = "") Export
Return ЗагрузитьМассивВложений(ArrayOfFiles, AttachmentsType, Parameters);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_VK.os
// OneScript: ./OInt/core/Modules/OPI_VK.os
// Lib: VK
// CLI: vk
// Keywords: vk, vkontakte
@@ -2185,212 +2185,3 @@
КонецПроцедуры
#КонецОбласти
#Region Alternate
Function CreateTokenRetrievalLink(Val App_id) Export
Return СоздатьСсылкуПолученияТокена(App_id);
EndFunction
Function CreatePost(Val Text, Val ImageArray, Val Advertisement = False, Val LinkUnderPost = "", Val Parameters = "") Export
Return СоздатьПост(Text, ImageArray, Advertisement, LinkUnderPost, Parameters);
EndFunction
Function CreateCompositePost(Val Text, Val Objects, Val Advertisement = False, Val LinkUnderPost = "", Val Parameters = "") Export
Return СоздатьСоставнойПост(Text, Objects, Advertisement, LinkUnderPost, Parameters);
EndFunction
Function DeletePost(Val PostID, Val Parameters = "") Export
Return УдалитьПост(PostID, Parameters);
EndFunction
Function CreatePoll(Val Question, Val AnswersArray, Val Image = "", Val Parameters = "") Export
Return СоздатьОпрос(Question, AnswersArray, Image, Parameters);
EndFunction
Function CreateAlbum(Val Name, Val Description = "", Val Parameters = "") Export
Return СоздатьАльбом(Name, Description, Parameters);
EndFunction
Function DeleteAlbum(Val AlbumID, Val Parameters = "") Export
Return УдалитьАльбом(AlbumID, Parameters);
EndFunction
Function CreateStory(Val Image, Val URL = "", Val Parameters = "") Export
Return СоздатьИсторию(Image, URL, Parameters);
EndFunction
Function SaveImageToAlbum(Val AlbumID, Val Image, Val Description = "", Val Parameters = "") Export
Return СохранитьКартинкуВАльбом(AlbumID, Image, Description, Parameters);
EndFunction
Function DeleteImage(Val ImageID, Val Parameters = "") Export
Return УдалитьКартинку(ImageID, Parameters);
EndFunction
Function UploadVideoToServer(Val Video, Val Name, Val Description = "", Val Album = "", Val Parameters = "") Export
Return ЗагрузитьВидеоНаСервер(Video, Name, Description, Album, Parameters);
EndFunction
Function UploadPhotoToServer(Val Image, Val Parameters = "", Val View = "Post") Export
Return ЗагрузитьФотоНаСервер(Image, Parameters, View);
EndFunction
Function CreateDiscussion(Val Name, Val FirstMessageText, Val Parameters = "") Export
Return СоздатьОбсуждение(Name, FirstMessageText, Parameters);
EndFunction
Function CloseDiscussion(Val DiscussionID, Val DeleteCompletely = False, Val Parameters = "") Export
Return ЗакрытьОбсуждение(DiscussionID, DeleteCompletely, Parameters);
EndFunction
Function OpenDiscussion(Val DiscussionID, Val Parameters = "") Export
Return ОткрытьОбсуждение(DiscussionID, Parameters);
EndFunction
Function WriteInDiscussion(Val DiscussionID, Val Text, Val Parameters = "") Export
Return НаписатьВОбсуждение(DiscussionID, Text, Parameters);
EndFunction
Function LikePost(Val PostID, Val WallID = "", Val Parameters = "") Export
Return ПоставитьЛайк(PostID, WallID, Parameters);
EndFunction
Function MakeRepost(Val PostID, Val WallID = "", Val TargetWall = "", Val Advertising = False, Val Parameters = "") Export
Return СделатьРепост(PostID, WallID, TargetWall, Advertising, Parameters);
EndFunction
Function WriteMessage(Val Text, Val UserID, Val Communitytoken, Val Keyboard = "", Val Parameters = "") Export
Return НаписатьСообщение(Text, UserID, Communitytoken, Keyboard, Parameters);
EndFunction
Function WriteComment(Val PostID, Val WallID, Val Text, Val Parameters = "") Export
Return НаписатьКомментарий(PostID, WallID, Text, Parameters);
EndFunction
Function ShortenLink(Val URL, Val Parameters = "") Export
Return СократитьСсылку(URL, Parameters);
EndFunction
Function GetStatistics(Val StartDate, Val EndDate, Val Parameters = "") Export
Return ПолучитьСтатистику(StartDate, EndDate, Parameters);
EndFunction
Function GetPostStatistics(Val PostIDsArray, Val Parameters = "") Export
Return ПолучитьСтатистикуПостов(PostIDsArray, Parameters);
EndFunction
Function CreateAdvertisingCampaign(Val AccountID, Val Name, Val Parameters = "") Export
Return СоздатьРекламнуюКампанию(AccountID, Name, Parameters);
EndFunction
Function CreateAd(Val CampaignNumber, Val DailyLimit, Val CategoryNumber, Val PostID, Val AccountID, Val Parameters = "") Export
Return СоздатьРекламноеОбъявление(CampaignNumber, DailyLimit, CategoryNumber, PostID, AccountID, Parameters);
EndFunction
Function PauseAdvertising(Val AccountID, Val AdID, Val Parameters = "") Export
Return ПриостановитьРекламноеОбъявление(AccountID, AdID, Parameters);
EndFunction
Function GetAdvertisingCategoryList(Val Parameters = "") Export
Return ПолучитьСписокРекламныхКатегорий(Parameters);
EndFunction
Function GetProductCategoryList(Val Parameters = "") Export
Return ПолучитьСписокКатегорийТоваров(Parameters);
EndFunction
Function GetProductList(Val Selection = "", Val Parameters = "") Export
Return ПолучитьСписокТоваров(Selection, Parameters);
EndFunction
Function GetProductsByID(Val Products, Val Parameters = "") Export
Return ПолучитьТоварыПоИД(Products, Parameters);
EndFunction
Function AddProduct(Val ProductDescription, Val Selection = "", Val Parameters = "") Export
Return ДобавитьТовар(ProductDescription, Selection, Parameters);
EndFunction
Function EditProduct(Val Product, Val ProductDescription, Val Selection = "", Val Parameters = "") Export
Return ИзменитьТовар(Product, ProductDescription, Selection, Parameters);
EndFunction
Function DeleteProduct(Val Product, Val Parameters = "") Export
Return УдалитьТовар(Product, Parameters);
EndFunction
Function GroupProducts(Val ProductsArray, Val ExistingGroup = "", Val Parameters = "") Export
Return СгруппироватьТовары(ProductsArray, ExistingGroup, Parameters);
EndFunction
Function GetProductDescription(Val Clear = False) Export
Return ПолучитьОписаниеТовара(Clear);
EndFunction
Function GetSelectionList(Val Parameters = "") Export
Return ПолучитьСписокПодборок(Parameters);
EndFunction
Function GetSelectionsByID(Val Selections, Val Parameters = "") Export
Return ПолучитьПодборкиПоИД(Selections, Parameters);
EndFunction
Function CreateProductCollection(Val Name, Val Image, Val Main = False, Val Hidden = False, Val Parameters = "") Export
Return СоздатьПодборкуТоваров(Name, Image, Main, Hidden, Parameters);
EndFunction
Function EditProductCollection(Val Name, Val Selection, Val Image = "", Val Main = False, Val Hidden = False, Val Parameters = "") Export
Return ИзменитьПодборкуТоваров(Name, Selection, Image, Main, Hidden, Parameters);
EndFunction
Function AddProductToCollection(Val ProductsArray, Val Selection, Val Parameters = "") Export
Return ДобавитьТоварВПодборку(ProductsArray, Selection, Parameters);
EndFunction
Function RemoveProductFromSelection(Val Product, Val Selection, Val Parameters = "") Export
Return УдалитьТоварИзПодборки(Product, Selection, Parameters);
EndFunction
Function DeleteSelection(Val Selection, Val Parameters = "") Export
Return УдалитьПодборку(Selection, Parameters);
EndFunction
Function GetPropertyList(Val Parameters = "") Export
Return ПолучитьСписокСвойств(Parameters);
EndFunction
Function CreateProductProperty(Val Name, Val Parameters = "") Export
Return СоздатьСвойствоТовара(Name, Parameters);
EndFunction
Function EditProductProperty(Val Name, Val Property, Val Parameters = "") Export
Return ИзменитьСвойствоТовара(Name, Property, Parameters);
EndFunction
Function DeleteProductProperty(Val Property, Val Parameters = "") Export
Return УдалитьСвойствоТовара(Property, Parameters);
EndFunction
Function AddProductPropertyVariant(Val Value, Val Property, Val Parameters = "") Export
Return ДобавитьВариантСвойстваТовара(Value, Property, Parameters);
EndFunction
Function EditProductPropertyVariant(Val Value, Val Property, Val Option, Val Parameters = "") Export
Return ИзменитьВариантСвойстваТовара(Value, Property, Option, Parameters);
EndFunction
Function DeleteProductPropertyVariant(Val Option, Val Parameters = "") Export
Return УдалитьВариантСвойстваТовара(Option, Parameters);
EndFunction
Function GetOrderList(Val Parameters = "") Export
Return ПолучитьСписокЗаказов(Parameters);
EndFunction
Function FormKeyboard(Val ButtonArray) Export
Return СформироватьКлавиатуру(ButtonArray);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
// OneScript: ./OInt/core/Modules/OPI_VKTeams.os
// Lib: VKTeams
// CLI: vkteams
// Keywords: vkteams, vk teams
@@ -971,124 +971,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function CheckToken(Val Token) Export
Return ПроверитьТокен(Token);
EndFunction
Function GetEvents(Val Token, Val LastID, Val Timeout = 0) Export
Return ПолучитьСобытия(Token, LastID, Timeout);
EndFunction
Function GetFileInformation(Val Token, Val FileID) Export
Return ПолучитьИнформациюОФайле(Token, FileID);
EndFunction
Function SendTextMessage(Val Token, Val ChatID, Val Text, Val ReplyID = 0, Val Keyboard = "", Val Markup = "MarkdownV2") Export
Return ОтправитьТекстовоеСообщение(Token, ChatID, Text, ReplyID, Keyboard, Markup);
EndFunction
Function SendFile(Val Token, Val ChatID, Val File, Val Text = "", Val FileName = "", Val Markup = "MarkdownV2") Export
Return ОтправитьФайл(Token, ChatID, File, Text, FileName, Markup);
EndFunction
Function SendVoice(Val Token, Val ChatID, Val File, Val FileType = "m4a", Val ReplyID = 0, Val Keyboard = "") Export
Return ОтправитьГолосовоеСообщение(Token, ChatID, File, FileType, ReplyID, Keyboard);
EndFunction
Function EditMessageText(Val Token, Val ChatID, Val MessageID, Val Text, Val Markup = "MarkdownV2") Export
Return ИзменитьТекстСообщения(Token, ChatID, MessageID, Text, Markup);
EndFunction
Function DeleteMessage(Val Token, Val ChatID, Val MessageID) Export
Return УдалитьСообщение(Token, ChatID, MessageID);
EndFunction
Function ResendFile(Val Token, Val ChatID, Val FileID, Val Text = "", Val Markup = "MarkdownV2") Export
Return ПереслатьФайл(Token, ChatID, FileID, Text, Markup);
EndFunction
Function ResendVoice(Val Token, Val ChatID, Val FileID) Export
Return ПереслатьГолосовоеСообщение(Token, ChatID, FileID);
EndFunction
Function ForwardMessage(Val Token, Val MessageID, Val FromChatID, Val ChatID, Val Text = "") Export
Return ПереслатьСообщение(Token, MessageID, FromChatID, ChatID, Text);
EndFunction
Function PinMessage(Val Token, Val ChatID, Val MessageID) Export
Return ЗакрепитьСообщение(Token, ChatID, MessageID);
EndFunction
Function UnpinMessage(Val Token, Val ChatID, Val MessageID) Export
Return ОткрепитьСообщение(Token, ChatID, MessageID);
EndFunction
Function AnswerButtonEvent(Val Token, Val EventID, Val Text = "", Val URL = "", Val AsAlert = False) Export
Return ОтветитьНаСобытиеКлавиатуры(Token, EventID, Text, URL, AsAlert);
EndFunction
Function MakeActionButton(Val Text, Val Value = "", Val URL = "", Val Style = "base") Export
Return СформироватьКнопкуДействия(Text, Value, URL, Style);
EndFunction
Function RemoveChatMembers(Val Token, Val ChatID, Val Users) Export
Return ИсключитьПользователейЧата(Token, ChatID, Users);
EndFunction
Function ChangeChatPicture(Val Token, Val ChatID, Val File) Export
Return ИзменитьАватарЧата(Token, ChatID, File);
EndFunction
Function GetChatInfo(Val Token, Val ChatID) Export
Return ПолучитьИнформациюОЧате(Token, ChatID);
EndFunction
Function GetChatAdmins(Val Token, Val ChatID) Export
Return ПолучитьАдминистраторовЧата(Token, ChatID);
EndFunction
Function GetChatMembers(Val Token, Val ChatID, Val Cursor = "") Export
Return ПолучитьПользователейЧата(Token, ChatID, Cursor);
EndFunction
Function GetChatBlockedUsers(Val Token, Val ChatID) Export
Return ПолучитьЗаблокированныхПользователейЧата(Token, ChatID);
EndFunction
Function GetChatJoinRequests(Val Token, Val ChatID) Export
Return ПолучитьЗапросыВступленияЧата(Token, ChatID);
EndFunction
Function BlockChatUser(Val Token, Val ChatID, Val UserID, Val DeleteLastMessages = False) Export
Return ЗаблокироватьПользователяЧата(Token, ChatID, UserID, DeleteLastMessages);
EndFunction
Function UnblockChatUser(Val Token, Val ChatID, Val UserID) Export
Return РазблокироватьПользователяЧата(Token, ChatID, UserID);
EndFunction
Function ApprovePending(Val Token, Val ChatID, Val UserID = "") Export
Return ОдобритьЗаявкуНаВступление(Token, ChatID, UserID);
EndFunction
Function DisapprovePending(Val Token, Val ChatID, Val UserID = "") Export
Return ОтклонитьЗаявкуНаВступление(Token, ChatID, UserID);
EndFunction
Function SetChatTitle(Val Token, Val ChatID, Val Text) Export
Return УстановитьЗаголовокЧата(Token, ChatID, Text);
EndFunction
Function SetChatDescription(Val Token, Val ChatID, Val Text) Export
Return УстановитьОписаниеЧата(Token, ChatID, Text);
EndFunction
Function SetChatRules(Val Token, Val ChatID, Val Text) Export
Return УстановитьПравилаЧата(Token, ChatID, Text);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Viber.os
// OneScript: ./OInt/core/Modules/OPI_Viber.os
// Lib: Viber
// CLI: viber
// Keywords: viber
@@ -404,52 +404,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function SetWebhook(Val Token, Val URL) Export
Return УстановитьWebhook(Token, URL);
EndFunction
Function GetChannelInformation(Val Token) Export
Return ПолучитьИнформациюОКанале(Token);
EndFunction
Function GetUserData(Val Token, Val UserID) Export
Return ПолучитьДанныеПользователя(Token, UserID);
EndFunction
Function GetOnlineUsers(Val Token, Val UserIDs) Export
Return ПолучитьОнлайнПользователей(Token, UserIDs);
EndFunction
Function SendTextMessage(Val Token, Val Text, Val UserID, Val SendingToChannel, Val Keyboard = "") Export
Return ОтправитьТекстовоеСообщение(Token, Text, UserID, SendingToChannel, Keyboard);
EndFunction
Function SendImage(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Description = "") Export
Return ОтправитьКартинку(Token, URL, UserID, SendingToChannel, Description);
EndFunction
Function SendFile(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Extension, Val Size = "") Export
Return ОтправитьФайл(Token, URL, UserID, SendingToChannel, Extension, Size);
EndFunction
Function SendContact(Val Token, Val ContactName, Val PhoneNumber, Val UserID, Val SendingToChannel) Export
Return ОтправитьКонтакт(Token, ContactName, PhoneNumber, UserID, SendingToChannel);
EndFunction
Function SendLocation(Val Token, Val Latitude, Val Longitude, Val UserID, Val SendingToChannel) Export
Return ОтправитьЛокацию(Token, Latitude, Longitude, UserID, SendingToChannel);
EndFunction
Function SendLink(Val Token, Val URL, Val UserID, Val SendingToChannel) Export
Return ОтправитьСсылку(Token, URL, UserID, SendingToChannel);
EndFunction
Function CreateKeyboardFromArrayButton(Val ButtonArray, Val ButtonColor = "#2db9b9") Export
Return СформироватьКлавиатуруИзМассиваКнопок(ButtonArray, ButtonColor);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_YandexDisk.os
// OneScript: ./OInt/core/Modules/OPI_YandexDisk.os
// Lib: Yandex Disk
// CLI: yadisk
// Keywords: yandexdisk, yandex.disk, yandex disk, yandex drive, yadisk, ya disk
@@ -607,76 +607,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function GetDiskInformation(Val Token) Export
Return ПолучитьИнформациюОДиске(Token);
EndFunction
Function CreateFolder(Val Token, Val Path) Export
Return СоздатьПапку(Token, Path);
EndFunction
Function GetObject(Val Token, Val Path) Export
Return ПолучитьОбъект(Token, Path);
EndFunction
Function DeleteObject(Val Token, Val Path, Val ToCart = True) Export
Return УдалитьОбъект(Token, Path, ToCart);
EndFunction
Function CreateObjectCopy(Val Token, Val Original, Val Path, Val Overwrite = False) Export
Return СоздатьКопиюОбъекта(Token, Original, Path, Overwrite);
EndFunction
Function GetDownloadLink(Val Token, Val Path) Export
Return ПолучитьСсылкуДляСкачивания(Token, Path);
EndFunction
Function DownloadFile(Val Token, Val Path, Val SavePath = "") Export
Return СкачатьФайл(Token, Path, SavePath);
EndFunction
Function GetFilesList(Val Token, Val Count = 0, Val OffsetFromStart = 0, Val FilterByType = "", Val SortByDate = False) Export
Return ПолучитьСписокФайлов(Token, Count, OffsetFromStart, FilterByType, SortByDate);
EndFunction
Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Export
Return ПереместитьОбъект(Token, Original, Path, Overwrite);
EndFunction
Function UploadFile(Val Token, Val Path, Val File, Val Overwrite = False) Export
Return ЗагрузитьФайл(Token, Path, File, Overwrite);
EndFunction
Function UploadFileByURL(Val Token, Val Path, Val Address) Export
Return ЗагрузитьФайлПоURL(Token, Path, Address);
EndFunction
Function PublishObject(Val Token, Val Path) Export
Return ОпубликоватьОбъект(Token, Path);
EndFunction
Function CancelObjectPublication(Val Token, Val Path) Export
Return ОтменитьПубликациюОбъекта(Token, Path);
EndFunction
Function GetPublishedObjectsList(Val Token, Val Count = 0, Val OffsetFromStart = 0) Export
Return ПолучитьСписокОпубликованныхОбъектов(Token, Count, OffsetFromStart);
EndFunction
Function GetPublicObject(Val Token, Val URL, Val Count = 0, Val OffsetFromStart = 0) Export
Return ПолучитьПубличныйОбъект(Token, URL, Count, OffsetFromStart);
EndFunction
Function GetDownloadLinkForPublicObject(Val Token, Val URL, Val Path = "") Export
Return ПолучитьСсылкуСкачиванияПубличногоОбъекта(Token, URL, Path);
EndFunction
Function SavePublicObjectToDisk(Val Token, Val URL, From = "", Target = "") Export
Return СохранитьПубличныйОбъектНаДиск(Token, URL, From, Target);
EndFunction
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_YandexID.os
// OneScript: ./OInt/core/Modules/OPI_YandexID.os
// Lib: Yandex ID
// CLI: yandex
@@ -130,24 +130,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function GetConfirmationCode(Val ClientId) Export
Return ПолучитьКодПодтверждения(ClientId);
EndFunction
Function ConvertCodeToToken(Val ClientId, Val ClientSecret, Val DeviceCode) Export
Return ПреобразоватьКодВТокен(ClientId, ClientSecret, DeviceCode);
EndFunction
Function RefreshToken(Val ClientId, Val ClientSecret, Val RefreshToken) Export
Return ОбновитьТокен(ClientId, ClientSecret, RefreshToken);
EndFunction
Function GetAuthorizationHeader(Val Token) Export
Return ПолучитьЗаголовокАвторизации(Token);
EndFunction
#EndRegion

View File

@@ -1,466 +1,429 @@
// OneScript: ./OInt/core/Modules/OPI_YandexMarket.os
// Lib: Yandex Market
// CLI: yamarket
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область КабинетыИМагазины
// Получить список магазинов
// Получает список магазинов в кабинете по токену
//
// Примечание:
// Метод в документации API: [Список магазинов пользователя](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// Страница - Число - Номер страницы выдачи списка - page
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьСписокМагазинов(Знач Токен, Знач Страница = 1) Экспорт
URL = "https://api.partner.market.yandex.ru/campaigns";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
РазмерСтраницы = 100;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("page" , Страница , "Число", Параметры);
OPI_Инструменты.ДобавитьПоле("pageSize", РазмерСтраницы, "Число", Параметры);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить магазин
// Получает информацию о магазине (кампании) по ID
//
// Примечание:
// Метод в документации API: [Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьМагазин(Знач Токен, Знач IDМагазина) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
URL = "https://api.partner.market.yandex.ru/campaigns/" + IDМагазина;
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
// Получить настройки кабинета
// Получает значения настроек кабинета по ID
//
// Примечание:
// Метод в документации API: [Настройки кабинета](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDКабинета - Строка, Число - ID кабинета - business
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьНастройкиКабинета(Знач Токен, Знач IDКабинета) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
URL = "https://api.partner.market.yandex.ru/businesses/%1/settings";
URL = СтрШаблон(URL, IDКабинета);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки);
Возврат Ответ;
КонецФункции
// Получить настройки магазина
// Получает настройки магазина по ID
//
// Примечание:
// Метод в документации API: [Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьНастройкиМагазина(Знач Токен, Знач IDМагазина) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
URL = "https://api.partner.market.yandex.ru/campaigns/%1/settings";
URL = СтрШаблон(URL, IDМагазина);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСТоварами
// Добавить обновить товары
// Добавляет или обновляет информацию о товарах в каталоге
//
// Примечание:
// Метод в документации API: [Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDКабинета - Строка, Число - ID кабинета - business
// МассивТоваров - Структура, Массив Из Структура - Массив описаний товаров - offers
// СвоиИзображения - Булево - Признак использования только своих изображений товаров - pmedia
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ДобавитьОбновитьТовары(Знач Токен, Знач IDКабинета, Знач МассивТоваров, Знач СвоиИзображения = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings/update";
URL = СтрШаблон(URL, IDКабинета);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("offerMappings" , МассивТоваров , "Массив", Параметры);
OPI_Инструменты.ДобавитьПоле("onlyPartnerMediaContent", СвоиИзображения, "Булево", Параметры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить товары магазина
// Получает список товаров выбранного магазина
//
// Примечание:
// Метод в документации API: [Информация о товарах, которые размещены в заданном магазине](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/assortment/getCampaignOffers)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDМагазина - Строка, Число - ID магазина - business
// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters
// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьТоварыМагазина(Знач Токен, Знач IDМагазина, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы);
URL = "https://api.partner.market.yandex.ru/campaigns/%1/offers";
URL = СтрШаблон(URL, IDМагазина);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Если ЗначениеЗаполнено(ТокенСтраницы) Тогда
URL = URL + "?page_token=" + ТокенСтраницы;
КонецЕсли;
Если ЗначениеЗаполнено(Фильтры) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки);
Иначе
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки);
КонецЕсли;
Возврат Ответ;
КонецФункции
// Получить товары кабинета
// Получает список товаров выбранного кабинета
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDКабинета - Строка, Число - ID кабинета - business
// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters
// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьТоварыКабинета(Знач Токен, Знач IDКабинета, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы);
URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings";
URL = СтрШаблон(URL, IDКабинета);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Если ЗначениеЗаполнено(ТокенСтраницы) Тогда
URL = URL + "?page_token=" + ТокенСтраницы;
КонецЕсли;
Если ЗначениеЗаполнено(Фильтры) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки);
Иначе
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки);
КонецЕсли;
Возврат Ответ;
КонецФункции
// Получить структуру товара
// Получает структуру стандартных полей товара
//
// Примечание:
// Описание в документации API: [UpdateOfferDTO](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings#updateofferdto)
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей товара
Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
// BSLLS:DuplicateStringLiteral-off
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("offerId", "<идентификатор товара в вашей системе>");
СтруктураРасходов = Новый Структура;
СтруктураРасходов.Вставить("currencyId" , "<код валюты>");
СтруктураРасходов.Вставить("value" , "<доп. расходы>");
СтруктураТовара.Вставить("additionalExpenses", СтруктураРасходов);
СтруктураТовара.Вставить("adult" , "<параметр включает для товара пометку 18+>");
СтруктураВозраста = Новый Структура;
СтруктураВозраста.Вставить("ageUnit", "<единица измерения: YEAR, MONTH>");
СтруктураВозраста.Вставить("value" , "<возрастное ограничение>");
СтруктураТовара.Вставить("age", СтруктураВозраста);
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить("<штрихкод>");
СтруктураТовара.Вставить("barcodes", МассивШтрихкодов);
СтруктураБазовойЦены = Новый Структура;
СтруктураБазовойЦены.Вставить("currencyId" , "<код валюты>");
СтруктураБазовойЦены.Вставить("value" , "<цена>");
СтруктураБазовойЦены.Вставить("discountBase", "<цена до скидки>");
СтруктураТовара.Вставить("basicPrice", СтруктураБазовойЦены);
СтруктураТовара.Вставить("boxCount" , "<количество грузовых мест>");
СтруктураТовара.Вставить("category" , "<категория товара в вашем магазине>");
МассивСертификатов = Новый Массив;
МассивСертификатов.Добавить("<номер документа на товар>");
СтруктураТовара.Вставить("certificates", МассивСертификатов);
СтруктураЦеныДляСкидок = Новый Структура;
СтруктураЦеныДляСкидок.Вставить("currencyId" , "<код валюты>");
СтруктураЦеныДляСкидок.Вставить("value" , "<цена>");
СтруктураТовара.Вставить("cofinancePrice", СтруктураЦеныДляСкидок);
СтруктураСостояния = Новый Структура;
СтруктураСостояния.Вставить("quality", "<внешний вид товара>");
СтруктураСостояния.Вставить("reason" , "<описание дефектов>");
СтруктураСостояния.Вставить("type" , "<тип уценки>");
СтруктураТовара.Вставить("condition", СтруктураСостояния);
СтруктураТовара.Вставить("customsCommodityCode", "<код товара ТН ВЭД>");
СтруктураТовара.Вставить("description" , "<подробное описание товара>");
СтруктураТовара.Вставить("downloadable" , "<признак цифрового товара>");
СтруктураПериода = Новый Структура;
СтруктураПериода.Вставить("timePeriod", "<значение продолжительности>");
СтруктураПериода.Вставить("timeUnit" , "<единица измерения>");
СтруктураПериода.Вставить("comment" , "<комментарий>");
СтруктураТовара.Вставить("guaranteePeriod", СтруктураПериода);
СтруктураТовара.Вставить("lifeTime" , СтруктураПериода);
МассивРуководств = Новый Массив;
СтруктураРуководства = Новый Структура;
СтруктураРуководства.Вставить("url" , "<сслыка на руководство>");
СтруктураРуководства.Вставить("title", "<заголовок руководства>");
МассивРуководств.Добавить(СтруктураРуководства);
СтруктураТовара.Вставить("manuals", МассивРуководств);
МассивСтран = Новый Массив;
МассивСтран.Добавить("<страна производства>");
СтруктураТовара.Вставить("manufacturerCountries", МассивСтран);
СтруктураТовара.Вставить("marketCategoryId" , "<идентификатор категории на Маркете>");
СтруктураТовара.Вставить("name" , "<имя товара>");
МассивХарактеристик = Новый Массив;
СтруктураХарактеристики = Новый Структура;
СтруктураХарактеристики.Вставить("parameterId", "<идентификатор характеристики>");
СтруктураХарактеристики.Вставить("unitId" , "<идентификатор единицы измерения>");
СтруктураХарактеристики.Вставить("value" , "<значение>");
СтруктураХарактеристики.Вставить("valueId" , "<идентификатор значения для перечислений>");
МассивХарактеристик.Добавить(СтруктураХарактеристики);
СтруктураТовара.Вставить("parameterValues", МассивХарактеристик);
МассивКартинок = Новый Массив;
МассивКартинок.Добавить("<ссылка на картинку товара>");
СтруктураТовара.Вставить("pictures" , МассивКартинок);
СтруктураЦеныЗакупки = Новый Структура;
СтруктураЦеныЗакупки.Вставить("currencyId" , "<код валюты>");
СтруктураЦеныЗакупки.Вставить("value" , "<цена>");
СтруктураТовара.Вставить("purchasePrice", СтруктураЦеныЗакупки);
СтруктураТовара.Вставить("shelfLife" , СтруктураПериода);
МассивТэгов = Новый Массив;
МассивТэгов.Добавить("<метка>");
СтруктураТовара.Вставить("tags" , МассивТэгов);
СтруктураТовара.Вставить("type" , "<особый тип товара>");
СтруктураТовара.Вставить("vendor" , "<название бренда или производителя>");
СтруктураТовара.Вставить("vendorCode", "<артикул товара от производителя>");
МассивВидео = Новый Массив;
МассивВидео.Добавить("<ссылка на видео>");
СтруктураТовара.Вставить("videos" , МассивВидео);
СтруктураРазмеров = Новый Структура;
СтруктураРазмеров.Вставить("height", "<высота в см.>");
СтруктураРазмеров.Вставить("length", "<длина в см.>");
СтруктураРазмеров.Вставить("weight", "<вес в кг. (брутто)>");
СтруктураРазмеров.Вставить("width" , "<ширина в см.>");
СтруктураТовара.Вставить("weightDimensions", "<габариты и вес товара>");
// BSLLS:DuplicateStringLiteral-on
Если Пустая Тогда
СтруктураТовара = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураТовара);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураТовара;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Api-Key", Токен);
Возврат Заголовки;
КонецФункции
#КонецОбласти
#Region Alternate
Function GetMarketsList(Val Token, Val Page = 1) Export
Return ПолучитьСписокМагазинов(Token, Page);
EndFunction
Function GetMarket(Val Token, Val CampaignID) Export
Return ПолучитьМагазин(Token, CampaignID);
EndFunction
Function GetBusinessSettings(Val Token, Val AccountID) Export
Return ПолучитьНастройкиКабинета(Token, AccountID);
EndFunction
Function GetCampaignSettings(Val Token, Val CampaignID) Export
Return ПолучитьНастройкиМагазина(Token, CampaignID);
EndFunction
Function AddUpdateProducts(Val Token, Val AccountID, Val ProductsArray, Val OwnImages = False) Export
Return ДобавитьОбновитьТовары(Token, AccountID, ProductsArray, OwnImages);
EndFunction
Function GetCampaignProducts(Val Token, Val CampaignID, Val Filters = "", Val PageToken = "") Export
Return ПолучитьТоварыМагазина(Token, CampaignID, Filters, PageToken);
EndFunction
Function GetBusinessProducts(Val Token, Val AccountID, Val Filters = "", Val PageToken = "") Export
Return ПолучитьТоварыКабинета(Token, AccountID, Filters, PageToken);
EndFunction
Function GetProductStructure(Val Clear = False) Export
Return ПолучитьСтруктуруТовара(Clear);
EndFunction
#EndRegion
// OneScript: ./OInt/core/Modules/OPI_YandexMarket.os
// Lib: Yandex Market
// CLI: yamarket
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область КабинетыИМагазины
// Получить список магазинов
// Получает список магазинов в кабинете по токену
//
// Примечание:
// Метод в документации API: [Список магазинов пользователя](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// Страница - Число - Номер страницы выдачи списка - page
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьСписокМагазинов(Знач Токен, Знач Страница = 1) Экспорт
URL = "https://api.partner.market.yandex.ru/campaigns";
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
РазмерСтраницы = 100;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("page" , Страница , "Число", Параметры);
OPI_Инструменты.ДобавитьПоле("pageSize", РазмерСтраницы, "Число", Параметры);
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить магазин
// Получает информацию о магазине (кампании) по ID
//
// Примечание:
// Метод в документации API: [Информация о магазине](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaign)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьМагазин(Знач Токен, Знач IDМагазина) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
URL = "https://api.partner.market.yandex.ru/campaigns/" + IDМагазина;
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
// Получить настройки кабинета
// Получает значения настроек кабинета по ID
//
// Примечание:
// Метод в документации API: [Настройки кабинета](@yandex.ru/dev/market/partner-api/doc/ru/reference/businesses/getBusinessSettings)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDКабинета - Строка, Число - ID кабинета - business
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьНастройкиКабинета(Знач Токен, Знач IDКабинета) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
URL = "https://api.partner.market.yandex.ru/businesses/%1/settings";
URL = СтрШаблон(URL, IDКабинета);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки);
Возврат Ответ;
КонецФункции
// Получить настройки магазина
// Получает настройки магазина по ID
//
// Примечание:
// Метод в документации API: [Настройки магазина](@yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaignSettings)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDМагазина - Строка, Число - ID магазина (кампании) - campaign
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьНастройкиМагазина(Знач Токен, Знач IDМагазина) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
URL = "https://api.partner.market.yandex.ru/campaigns/%1/settings";
URL = СтрШаблон(URL, IDМагазина);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_ЗапросыHTTP.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСТоварами
// Добавить обновить товары
// Добавляет или обновляет информацию о товарах в каталоге
//
// Примечание:
// Метод в документации API: [Добавление товаров в каталог и изменение информации о них](@yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDКабинета - Строка, Число - ID кабинета - business
// МассивТоваров - Структура, Массив Из Структура - Массив описаний товаров - offers
// СвоиИзображения - Булево - Признак использования только своих изображений товаров - pmedia
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ДобавитьОбновитьТовары(Знач Токен, Знач IDКабинета, Знач МассивТоваров, Знач СвоиИзображения = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings/update";
URL = СтрШаблон(URL, IDКабинета);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("offerMappings" , МассивТоваров , "Массив", Параметры);
OPI_Инструменты.ДобавитьПоле("onlyPartnerMediaContent", СвоиИзображения, "Булево", Параметры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить товары магазина
// Получает список товаров выбранного магазина
//
// Примечание:
// Метод в документации API: [Информация о товарах, которые размещены в заданном магазине](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/assortment/getCampaignOffers)
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDМагазина - Строка, Число - ID магазина - business
// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters
// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьТоварыМагазина(Знач Токен, Знач IDМагазина, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDМагазина);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы);
URL = "https://api.partner.market.yandex.ru/campaigns/%1/offers";
URL = СтрШаблон(URL, IDМагазина);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Если ЗначениеЗаполнено(ТокенСтраницы) Тогда
URL = URL + "?page_token=" + ТокенСтраницы;
КонецЕсли;
Если ЗначениеЗаполнено(Фильтры) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки);
Иначе
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки);
КонецЕсли;
Возврат Ответ;
КонецФункции
// Получить товары кабинета
// Получает список товаров выбранного кабинета
//
// Параметры:
// Токен - Строка - Токен авторизации (Api-Key) - token
// IDКабинета - Строка, Число - ID кабинета - business
// Фильтры - Структура Из КлючИЗначение - Фильтры для отбора товаров - filters
// ТокенСтраницы - Строка - Токен следующей страницы при большой выборке - page
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex Market
Функция ПолучитьТоварыКабинета(Знач Токен, Знач IDКабинета, Знач Фильтры = "", Знач ТокенСтраницы = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDКабинета);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТокенСтраницы);
URL = "https://api.partner.market.yandex.ru/businesses/%1/offer-mappings";
URL = СтрШаблон(URL, IDКабинета);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Если ЗначениеЗаполнено(ТокенСтраницы) Тогда
URL = URL + "?page_token=" + ТокенСтраницы;
КонецЕсли;
Если ЗначениеЗаполнено(Фильтры) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Фильтры);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Фильтры, Заголовки);
Иначе
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, , Заголовки);
КонецЕсли;
Возврат Ответ;
КонецФункции
// Получить структуру товара
// Получает структуру стандартных полей товара
//
// Примечание:
// Описание в документации API: [UpdateOfferDTO](@https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/updateOfferMappings#updateofferdto)
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей товара
Функция ПолучитьСтруктуруТовара(Знач Пустая = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
// BSLLS:DuplicateStringLiteral-off
СтруктураТовара = Новый Структура;
СтруктураТовара.Вставить("offerId", "<идентификатор товара в вашей системе>");
СтруктураРасходов = Новый Структура;
СтруктураРасходов.Вставить("currencyId" , "<код валюты>");
СтруктураРасходов.Вставить("value" , "<доп. расходы>");
СтруктураТовара.Вставить("additionalExpenses", СтруктураРасходов);
СтруктураТовара.Вставить("adult" , "<параметр включает для товара пометку 18+>");
СтруктураВозраста = Новый Структура;
СтруктураВозраста.Вставить("ageUnit", "<единица измерения: YEAR, MONTH>");
СтруктураВозраста.Вставить("value" , "<возрастное ограничение>");
СтруктураТовара.Вставить("age", СтруктураВозраста);
МассивШтрихкодов = Новый Массив;
МассивШтрихкодов.Добавить("<штрихкод>");
СтруктураТовара.Вставить("barcodes", МассивШтрихкодов);
СтруктураБазовойЦены = Новый Структура;
СтруктураБазовойЦены.Вставить("currencyId" , "<код валюты>");
СтруктураБазовойЦены.Вставить("value" , "<цена>");
СтруктураБазовойЦены.Вставить("discountBase", "<цена до скидки>");
СтруктураТовара.Вставить("basicPrice", СтруктураБазовойЦены);
СтруктураТовара.Вставить("boxCount" , "<количество грузовых мест>");
СтруктураТовара.Вставить("category" , "<категория товара в вашем магазине>");
МассивСертификатов = Новый Массив;
МассивСертификатов.Добавить("<номер документа на товар>");
СтруктураТовара.Вставить("certificates", МассивСертификатов);
СтруктураЦеныДляСкидок = Новый Структура;
СтруктураЦеныДляСкидок.Вставить("currencyId" , "<код валюты>");
СтруктураЦеныДляСкидок.Вставить("value" , "<цена>");
СтруктураТовара.Вставить("cofinancePrice", СтруктураЦеныДляСкидок);
СтруктураСостояния = Новый Структура;
СтруктураСостояния.Вставить("quality", "<внешний вид товара>");
СтруктураСостояния.Вставить("reason" , "<описание дефектов>");
СтруктураСостояния.Вставить("type" , "<тип уценки>");
СтруктураТовара.Вставить("condition", СтруктураСостояния);
СтруктураТовара.Вставить("customsCommodityCode", "<код товара ТН ВЭД>");
СтруктураТовара.Вставить("description" , "<подробное описание товара>");
СтруктураТовара.Вставить("downloadable" , "<признак цифрового товара>");
СтруктураПериода = Новый Структура;
СтруктураПериода.Вставить("timePeriod", "<значение продолжительности>");
СтруктураПериода.Вставить("timeUnit" , "<единица измерения>");
СтруктураПериода.Вставить("comment" , "<комментарий>");
СтруктураТовара.Вставить("guaranteePeriod", СтруктураПериода);
СтруктураТовара.Вставить("lifeTime" , СтруктураПериода);
МассивРуководств = Новый Массив;
СтруктураРуководства = Новый Структура;
СтруктураРуководства.Вставить("url" , "<сслыка на руководство>");
СтруктураРуководства.Вставить("title", "<заголовок руководства>");
МассивРуководств.Добавить(СтруктураРуководства);
СтруктураТовара.Вставить("manuals", МассивРуководств);
МассивСтран = Новый Массив;
МассивСтран.Добавить("<страна производства>");
СтруктураТовара.Вставить("manufacturerCountries", МассивСтран);
СтруктураТовара.Вставить("marketCategoryId" , "<идентификатор категории на Маркете>");
СтруктураТовара.Вставить("name" , "<имя товара>");
МассивХарактеристик = Новый Массив;
СтруктураХарактеристики = Новый Структура;
СтруктураХарактеристики.Вставить("parameterId", "<идентификатор характеристики>");
СтруктураХарактеристики.Вставить("unitId" , "<идентификатор единицы измерения>");
СтруктураХарактеристики.Вставить("value" , "<значение>");
СтруктураХарактеристики.Вставить("valueId" , "<идентификатор значения для перечислений>");
МассивХарактеристик.Добавить(СтруктураХарактеристики);
СтруктураТовара.Вставить("parameterValues", МассивХарактеристик);
МассивКартинок = Новый Массив;
МассивКартинок.Добавить("<ссылка на картинку товара>");
СтруктураТовара.Вставить("pictures" , МассивКартинок);
СтруктураЦеныЗакупки = Новый Структура;
СтруктураЦеныЗакупки.Вставить("currencyId" , "<код валюты>");
СтруктураЦеныЗакупки.Вставить("value" , "<цена>");
СтруктураТовара.Вставить("purchasePrice", СтруктураЦеныЗакупки);
СтруктураТовара.Вставить("shelfLife" , СтруктураПериода);
МассивТэгов = Новый Массив;
МассивТэгов.Добавить("<метка>");
СтруктураТовара.Вставить("tags" , МассивТэгов);
СтруктураТовара.Вставить("type" , "<особый тип товара>");
СтруктураТовара.Вставить("vendor" , "<название бренда или производителя>");
СтруктураТовара.Вставить("vendorCode", "<артикул товара от производителя>");
МассивВидео = Новый Массив;
МассивВидео.Добавить("<ссылка на видео>");
СтруктураТовара.Вставить("videos" , МассивВидео);
СтруктураРазмеров = Новый Структура;
СтруктураРазмеров.Вставить("height", "<высота в см.>");
СтруктураРазмеров.Вставить("length", "<длина в см.>");
СтруктураРазмеров.Вставить("weight", "<вес в кг. (брутто)>");
СтруктураРазмеров.Вставить("width" , "<ширина в см.>");
СтруктураТовара.Вставить("weightDimensions", "<габариты и вес товара>");
// BSLLS:DuplicateStringLiteral-on
Если Пустая Тогда
СтруктураТовара = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураТовара);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураТовара;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Api-Key", Токен);
Возврат Заголовки;
КонецФункции
#КонецОбласти

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,7 @@
<module name="OPI_Neocities" file="core/Modules/OPI_Neocities.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Ollama" file="core/Modules/OPI_Ollama.os"/>
<module name="OPI_OpenAI" file="core/Modules/OPI_OpenAI.os"/>
<module name="OPI_Ozon" file="core/Modules/OPI_Ozon.os"/>
<module name="OPI_PostgreSQL" file="core/Modules/OPI_PostgreSQL.os"/>
<module name="OPI_RCON" file="core/Modules/OPI_RCON.os"/>

View File

@@ -2728,6 +2728,21 @@
#КонецОбласти
#Область OpenAI
Процедура OAI_ОбработкаЗапросов() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста);
OpenAI_ПолучитьОтвет(ПараметрыТеста);
OpenAI_ПолучитьПредставления(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
@@ -22770,6 +22785,48 @@
#КонецОбласти
#Область OpenAI
Процедура OpenAI_ПолучитьОтвет(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Сообщения = Новый Массив;
Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "What is 1C:Enterprise?"));
Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("assistant", "1C:Enterprise is a full-stack, low-code platform"));
Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "When the first version was released?"));
Модель = "openai/gpt-4o-mini";
Результат = OPI_OpenAI.ПолучитьОтвет(URL, Токен, Модель, Сообщения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьОтвет", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_OpenAIОтвет(Результат);
КонецПроцедуры
Процедура OpenAI_ПолучитьПредставления(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Текст = "What is 1C:Enterprise?";
Модель = "text-embedding-ada-002";
Результат = OPI_OpenAI.ПолучитьПредставления(URL, Токен, Модель, Текст);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьПредставления", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_OpenAIПредставления(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти

File diff suppressed because it is too large Load Diff

View File

@@ -1,366 +1,341 @@
// OneScript: ./OInt/tools/Modules/OPI_ЗапросыHTTP.os
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:UnusedLocalVariable-off
// BSLLS:UsingServiceTag-off
// BSLLS:NumberOfOptionalParams-off
//@skip-check module-unused-local-variable
//@skip-check method-too-many-params
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check use-non-recommended-method
// Раскомментировать, если выполняется OneScript
#Использовать "./internal"
#Область ПрограммныйИнтерфейс
// Новый запрос
// Создает новый объект для работы с HTTP
//
// Возвращаемое значение:
// ОбработкаОбъект.OPI_HTTPКлиент - Объект обработки
Функция НовыйЗапрос() Экспорт
Если OPI_Инструменты.ЭтоOneScript() Тогда
//@skip-check property-not-writable
Обработки = Неопределено;
HTTPКлиент = Новый("OPI_HTTPКлиент");
Иначе
HTTPКлиент = Обработки.OPI_HTTPКлиент.Создать();
КонецЕсли;
Возврат HTTPКлиент;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ЗапросыБезТела
Функция Get(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
КонецФункции
Функция Head(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "HEAD", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
КонецФункции
Функция Delete(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
КонецФункции
#КонецОбласти
#Область ЗапросыСТелом
Функция PostСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
Функция PatchСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
Функция PutСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
Функция DeleteСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "DELETE", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
#КонецОбласти
#Область ЗапросыMultipart
Функция PostMultipart(Знач URL
, Знач Параметры = ""
, Знач Файлы = ""
, Знач ТипКонтента = "image/jpeg"
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено) Экспорт
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.НачатьЗаписьТелаMultipart();
Если ЗначениеЗаполнено(Файлы) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Файлы);
Для Каждого Файл Из Файлы Цикл
СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента);
ИмяПоля = СтруктураИнформации["ИмяПоля"];
ИмяФайла = СтруктураИнформации["ИмяФайла"];
HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента);
КонецЦикла;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Параметры);
Для Каждого Параметр Из Параметры Цикл
HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
КонецЕсли;
HttpКлиент.ОбработатьЗапрос("POST");
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
Функция PutMultipart(Знач URL
, Знач Параметры = ""
, Знач Файлы = ""
, Знач ТипКонтента = "image/jpeg"
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросМультипарт(URL, "PUT", Параметры, Файлы, ТипКонтента, ДопЗаголовки, ФайлОтвета);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ВыполнитьЗапросСТелом(Знач URL
, Знач Вид
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено)
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета);
Если JSON Тогда
HttpКлиент.УстановитьJsonТело(Параметры);
Иначе
HttpКлиент.УстановитьFormТело(Параметры);
КонецЕсли;
HttpКлиент.ОбработатьЗапрос(Вид);
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина);
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ВыполнитьЗапросБезТела(Знач URL
, Знач Вид
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь)
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьПараметрыURL(Параметры)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.ОбработатьЗапрос(Вид);
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина);
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ВыполнитьЗапросМультипарт(Знач URL
, Знач Вид
, Знач Параметры = ""
, Знач Файлы = ""
, Знач ТипКонтента = "image/jpeg"
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено)
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.НачатьЗаписьТелаMultipart();
Для Каждого Файл Из Файлы Цикл
СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента);
ИмяПоля = СтруктураИнформации["ИмяПоля"];
ИмяФайла = СтруктураИнформации["ИмяФайла"];
HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента);
КонецЦикла;
Для Каждого Параметр Из Параметры Цикл
HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Результат = HttpКлиент.ОбработатьЗапрос("POST").ВернутьОтветКакJSONКоллекцию(Истина, Истина);
Возврат Результат;
КонецФункции
Функция РазобратьКлючФайла(Знач ДанныеФайла, Знач ТипКонтента)
ЗаменаТочки = "___";
ИмяФайла = СтрЗаменить(ДанныеФайла, ЗаменаТочки, ".");
МассивИмени = СтрРазделить(ИмяФайла, "|", Ложь);
ЧастейИмени = 2;
Если МассивИмени.Количество() = ЧастейИмени Тогда
ИмяПоля = МассивИмени[0];
ИмяФайла = МассивИмени[1];
Иначе
Если ТипКонтента = "image/jpeg" Тогда
ИмяПоля = "photo";
Иначе
ИмяПоля = Лев(ИмяФайла, СтрНайти(ИмяФайла, ".") - 1);
ИмяПоля = ?(ЗначениеЗаполнено(ИмяПоля), ИмяПоля, СтрЗаменить(ДанныеФайла, ЗаменаТочки, "."));
КонецЕсли;
КонецЕсли;
СтруктураВозврата = Новый Структура("ИмяПоля,ИмяФайла", ИмяПоля, ИмяФайла);
Возврат СтруктураВозврата;
КонецФункции
#КонецОбласти
#Region Alternate
Function NewRequest() Export
Return НовыйЗапрос();
EndFunction
Function PostWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export
Return PostСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile);
EndFunction
Function PatchWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export
Return PatchСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile);
EndFunction
Function PutWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export
Return PutСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile);
EndFunction
Function DeleteWithBody(Val URL, Val Parameters = "", Val AdditionalHeaders = "", Val JSON = True, Val FullResponse = False, Val ResponseFile = Undefined) Export
Return DeleteСТелом(URL, Parameters, AdditionalHeaders, JSON, FullResponse, ResponseFile);
EndFunction
#EndRegion
// OneScript: ./OInt/tools/Modules/OPI_ЗапросыHTTP.os
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:UnusedLocalVariable-off
// BSLLS:UsingServiceTag-off
// BSLLS:NumberOfOptionalParams-off
//@skip-check module-unused-local-variable
//@skip-check method-too-many-params
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check use-non-recommended-method
// Раскомментировать, если выполняется OneScript
#Использовать "./internal"
#Область ПрограммныйИнтерфейс
// Новый запрос
// Создает новый объект для работы с HTTP
//
// Возвращаемое значение:
// ОбработкаОбъект.OPI_HTTPКлиент - Объект обработки
Функция НовыйЗапрос() Экспорт
Если OPI_Инструменты.ЭтоOneScript() Тогда
//@skip-check property-not-writable
Обработки = Неопределено;
HTTPКлиент = Новый("OPI_HTTPКлиент");
Иначе
HTTPКлиент = Обработки.OPI_HTTPКлиент.Создать();
КонецЕсли;
Возврат HTTPКлиент;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ЗапросыБезТела
Функция Get(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
КонецФункции
Функция Head(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "HEAD", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
КонецФункции
Функция Delete(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь) Экспорт
Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки, ФайлОтвета, ПолныйОтвет);
КонецФункции
#КонецОбласти
#Область ЗапросыСТелом
Функция PostСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
Функция PatchСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
Функция PutСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
Функция DeleteСТелом(Знач URL
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "DELETE", Параметры, ДопЗаголовки, JSON, ПолныйОтвет, ФайлОтвета);
КонецФункции
#КонецОбласти
#Область ЗапросыMultipart
Функция PostMultipart(Знач URL
, Знач Параметры = ""
, Знач Файлы = ""
, Знач ТипКонтента = "image/jpeg"
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено) Экспорт
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.НачатьЗаписьТелаMultipart();
Если ЗначениеЗаполнено(Файлы) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Файлы);
Для Каждого Файл Из Файлы Цикл
СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента);
ИмяПоля = СтруктураИнформации["ИмяПоля"];
ИмяФайла = СтруктураИнформации["ИмяФайла"];
HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента);
КонецЦикла;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Параметры);
Для Каждого Параметр Из Параметры Цикл
HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
КонецЕсли;
HttpКлиент.ОбработатьЗапрос("POST");
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
Если HttpКлиент.Ошибка Тогда
ВызватьИсключение HttpКлиент.ПолучитьЛог(Истина);
Иначе
Возврат Результат;
КонецЕсли;
КонецФункции
Функция PutMultipart(Знач URL
, Знач Параметры = ""
, Знач Файлы = ""
, Знач ТипКонтента = "image/jpeg"
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено) Экспорт
Возврат ВыполнитьЗапросМультипарт(URL, "PUT", Параметры, Файлы, ТипКонтента, ДопЗаголовки, ФайлОтвета);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ВыполнитьЗапросСТелом(Знач URL
, Знач Вид
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач JSON = Истина
, Знач ПолныйОтвет = Ложь
, Знач ФайлОтвета = Неопределено)
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета);
Если JSON Тогда
HttpКлиент.УстановитьJsonТело(Параметры);
Иначе
HttpКлиент.УстановитьFormТело(Параметры);
КонецЕсли;
HttpКлиент.ОбработатьЗапрос(Вид);
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина);
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ВыполнитьЗапросБезТела(Знач URL
, Знач Вид
, Знач Параметры = ""
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено
, Знач ПолныйОтвет = Ложь)
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьПараметрыURL(Параметры)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.ОбработатьЗапрос(Вид);
Если ПолныйОтвет Тогда
Результат = HttpКлиент.ВернутьОтвет(Ложь, Истина);
Иначе
Результат = HttpКлиент.ВернутьОтветКакJSONКоллекцию(Истина, Истина);
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ВыполнитьЗапросМультипарт(Знач URL
, Знач Вид
, Знач Параметры = ""
, Знач Файлы = ""
, Знач ТипКонтента = "image/jpeg"
, Знач ДопЗаголовки = ""
, Знач ФайлОтвета = Неопределено)
HttpКлиент = НовыйЗапрос()
.Инициализировать(URL)
.УстановитьЗаголовки(ДопЗаголовки)
.УстановитьФайлОтвета(ФайлОтвета)
.НачатьЗаписьТелаMultipart();
Для Каждого Файл Из Файлы Цикл
СтруктураИнформации = РазобратьКлючФайла(Файл.Ключ, ТипКонтента);
ИмяПоля = СтруктураИнформации["ИмяПоля"];
ИмяФайла = СтруктураИнформации["ИмяФайла"];
HttpКлиент.ДобавитьФайлMultipartFormData(ИмяПоля, ИмяФайла, Файл.Значение, ТипКонтента);
КонецЦикла;
Для Каждого Параметр Из Параметры Цикл
HttpКлиент.ДобавитьПолеMultipartFormData(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Результат = HttpКлиент.ОбработатьЗапрос("POST").ВернутьОтветКакJSONКоллекцию(Истина, Истина);
Возврат Результат;
КонецФункции
Функция РазобратьКлючФайла(Знач ДанныеФайла, Знач ТипКонтента)
ЗаменаТочки = "___";
ИмяФайла = СтрЗаменить(ДанныеФайла, ЗаменаТочки, ".");
МассивИмени = СтрРазделить(ИмяФайла, "|", Ложь);
ЧастейИмени = 2;
Если МассивИмени.Количество() = ЧастейИмени Тогда
ИмяПоля = МассивИмени[0];
ИмяФайла = МассивИмени[1];
Иначе
Если ТипКонтента = "image/jpeg" Тогда
ИмяПоля = "photo";
Иначе
ИмяПоля = Лев(ИмяФайла, СтрНайти(ИмяФайла, ".") - 1);
ИмяПоля = ?(ЗначениеЗаполнено(ИмяПоля), ИмяПоля, СтрЗаменить(ДанныеФайла, ЗаменаТочки, "."));
КонецЕсли;
КонецЕсли;
СтруктураВозврата = Новый Структура("ИмяПоля,ИмяФайла", ИмяПоля, ИмяФайла);
Возврат СтруктураВозврата;
КонецФункции
#КонецОбласти

File diff suppressed because it is too large Load Diff

View File

@@ -1,216 +1,191 @@
// OneScript: ./OInt/tools/Modules/OPI_Компоненты.os
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:UsingHardcodePath-off
// BSLLS:Typo-off
// BSLLS:DeprecatedMessage-off
// BSLLS:UsingServiceTag-off
// BSLLS:ExecuteExternalCodeInCommonModule-off
// BSLLS:DuplicateStringLiteral-off
// BSLLS:MagicNumber-off
// BSLLS:UsingHardcodeNetworkAddress-off
//@skip-check use-non-recommended-method
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check undefined-function-or-procedure
//@skip-check wrong-string-literal-content
// Раскомментировать, если выполняется OneScript
#Использовать "./internal"
#Область СлужебныйПрограммныйИнтерфейс
Функция ПолучитьКомпоненту(Знач ИмяКомпоненты, Знач Класс = "Main") Экспорт
Компонента = Неопределено;
Ошибка = "";
ИмяКомпоненты = "OPI_" + ИмяКомпоненты;
Если Не ИнициализироватьВнешнююКомпоненту(ИмяКомпоненты, Класс, Компонента) Тогда
Ошибка = Неопределено;
Компонента = ПодключитьКомпонентуНаСервере(ИмяКомпоненты, Класс, Ошибка);
Если ЗначениеЗаполнено(Ошибка) Тогда
СформироватьИсключениеКомпоненты();
КонецЕсли;
КонецЕсли;
Возврат Компонента;
КонецФункции
Функция ЭтоКомпонента(Знач Значение) Экспорт
ТипЗначения = Строка(ТипЗнч(Значение));
Возврат СтрНачинаетсяС(ТипЗначения, "AddIn.");
КонецФункции
Функция УстановитьTls(Знач Компонета, Знач Tls) Экспорт
Результат = Новый Структура("result", Истина);
Если ЗначениеЗаполнено(Tls) Тогда
СообщениеОшибки = "Переданы некорректные настройки Tls!";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Tls, СообщениеОшибки);
ИспользоватьTls = OPI_Инструменты.ПолучитьИли(Tls, "use_tls", Ложь);
ОтключитьВалидацию = OPI_Инструменты.ПолучитьИли(Tls, "accept_invalid_certs", Ложь);
ПутьКСертификату = OPI_Инструменты.ПолучитьИли(Tls, "ca_cert_path", "");
OPI_ПреобразованиеТипов.ПолучитьБулево(ИспользоватьTls);
OPI_ПреобразованиеТипов.ПолучитьБулево(ОтключитьВалидацию);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьКСертификату);
Результат = Компонета.SetTLS(ИспользоватьTls, ОтключитьВалидацию, ПутьКСертификату);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт
СтруктураСертификата = Новый Структура;
OPI_Инструменты.ДобавитьПоле("use_tls" , Истина , "Булево", СтруктураСертификата);
OPI_Инструменты.ДобавитьПоле("accept_invalid_certs", ОтключитьПроверкуСертификатов, "Булево", СтруктураСертификата);
OPI_Инструменты.ДобавитьПоле("ca_cert_path" , ПутьКСертификату , "Строка", СтруктураСертификата);
Возврат СтруктураСертификата;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ИнициализироватьВнешнююКомпоненту(Знач ИмяКомпоненты, Знач Класс, Компонента)
Попытка
Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс);
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
КонецФункции
Функция ПодключитьКомпонентуНаСервере(Знач ИмяКомпоненты, Знач Класс, Ошибка)
Если OPI_Инструменты.ЭтоOneScript() Тогда
ИмяМакета = КаталогКомпонентOS() + ИмяКомпоненты + ".zip";
Иначе
ИмяМакета = "ОбщийМакет." + ИмяКомпоненты;
КонецЕсли;
Попытка
ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс);
Ошибка = Неопределено;
Возврат Компонента;
Исключение
Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат Неопределено;
КонецПопытки;
КонецФункции
Функция КаталогКомпонентOS() Экспорт
КаталогПрограммы = СтрЗаменить(КаталогПрограммы(), "\", "/");
ЭлементыПути = СтрРазделить(КаталогПрограммы, "/");
ЭлементыПути.Удалить(ЭлементыПути.ВГраница());
// BSLLS:UsingHardcodePath-off
КаталогКомпонент = СтрСоединить(ЭлементыПути, "/") + "/lib/oint/addins/";
// BSLLS:UsingHardcodePath-on
Возврат КаталогКомпонент;
КонецФункции
Процедура СформироватьИсключениеКомпоненты()
Текст = "Не удалось инициализировать внешнюю компоненту. Возможно, она несовместима с вашей операционной системой.";
Если Не OPI_Инструменты.ЭтоWindows() Тогда
Текст = Текст
+ Символы.ПС
+ Символы.ПС
+ "Важно: Для работы компоненты требуется GLIBC >=2.18"
+ " и OpenSSL версии 3.x"
+ Символы.ПС
+ "Проверьте, что данные зависимости удоволетворены в вашей системе!";
КонецЕсли;
Текст = Текст
+ Символы.ПС
+ Символы.ПС
+ "Подробнее: https://openintegrations.dev/docs/Start/Component-requirements";
ВызватьИсключение Текст;
КонецПроцедуры
#КонецОбласти
#Region Alternate
Function GetAddIn(Val AddInName, Val Class = "Main") Export
Return ПолучитьКомпоненту(AddInName, Class);
EndFunction
Function IsAddIn(Val Value) Export
Return ЭтоКомпонента(Value);
EndFunction
Function SetTls(Val AddIn, Val Tls) Export
Return УстановитьTls(AddIn, Tls);
EndFunction
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath);
EndFunction
Function AddInsFolderOS() Export
Return КаталогКомпонентOS();
EndFunction
#EndRegion
// OneScript: ./OInt/tools/Modules/OPI_Компоненты.os
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:UsingHardcodePath-off
// BSLLS:Typo-off
// BSLLS:DeprecatedMessage-off
// BSLLS:UsingServiceTag-off
// BSLLS:ExecuteExternalCodeInCommonModule-off
// BSLLS:DuplicateStringLiteral-off
// BSLLS:MagicNumber-off
// BSLLS:UsingHardcodeNetworkAddress-off
//@skip-check use-non-recommended-method
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check undefined-function-or-procedure
//@skip-check wrong-string-literal-content
// Раскомментировать, если выполняется OneScript
#Использовать "./internal"
#Область СлужебныйПрограммныйИнтерфейс
Функция ПолучитьКомпоненту(Знач ИмяКомпоненты, Знач Класс = "Main") Экспорт
Компонента = Неопределено;
Ошибка = "";
ИмяКомпоненты = "OPI_" + ИмяКомпоненты;
Если Не ИнициализироватьВнешнююКомпоненту(ИмяКомпоненты, Класс, Компонента) Тогда
Ошибка = Неопределено;
Компонента = ПодключитьКомпонентуНаСервере(ИмяКомпоненты, Класс, Ошибка);
Если ЗначениеЗаполнено(Ошибка) Тогда
СформироватьИсключениеКомпоненты();
КонецЕсли;
КонецЕсли;
Возврат Компонента;
КонецФункции
Функция ЭтоКомпонента(Знач Значение) Экспорт
ТипЗначения = Строка(ТипЗнч(Значение));
Возврат СтрНачинаетсяС(ТипЗначения, "AddIn.");
КонецФункции
Функция УстановитьTls(Знач Компонета, Знач Tls) Экспорт
Результат = Новый Структура("result", Истина);
Если ЗначениеЗаполнено(Tls) Тогда
СообщениеОшибки = "Переданы некорректные настройки Tls!";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Tls, СообщениеОшибки);
ИспользоватьTls = OPI_Инструменты.ПолучитьИли(Tls, "use_tls", Ложь);
ОтключитьВалидацию = OPI_Инструменты.ПолучитьИли(Tls, "accept_invalid_certs", Ложь);
ПутьКСертификату = OPI_Инструменты.ПолучитьИли(Tls, "ca_cert_path", "");
OPI_ПреобразованиеТипов.ПолучитьБулево(ИспользоватьTls);
OPI_ПреобразованиеТипов.ПолучитьБулево(ОтключитьВалидацию);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьКСертификату);
Результат = Компонета.SetTLS(ИспользоватьTls, ОтключитьВалидацию, ПутьКСертификату);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт
СтруктураСертификата = Новый Структура;
OPI_Инструменты.ДобавитьПоле("use_tls" , Истина , "Булево", СтруктураСертификата);
OPI_Инструменты.ДобавитьПоле("accept_invalid_certs", ОтключитьПроверкуСертификатов, "Булево", СтруктураСертификата);
OPI_Инструменты.ДобавитьПоле("ca_cert_path" , ПутьКСертификату , "Строка", СтруктураСертификата);
Возврат СтруктураСертификата;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ИнициализироватьВнешнююКомпоненту(Знач ИмяКомпоненты, Знач Класс, Компонента)
Попытка
Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс);
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
КонецФункции
Функция ПодключитьКомпонентуНаСервере(Знач ИмяКомпоненты, Знач Класс, Ошибка)
Если OPI_Инструменты.ЭтоOneScript() Тогда
ИмяМакета = КаталогКомпонентOS() + ИмяКомпоненты + ".zip";
Иначе
ИмяМакета = "ОбщийМакет." + ИмяКомпоненты;
КонецЕсли;
Попытка
ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn." + ИмяКомпоненты + "." + Класс);
Ошибка = Неопределено;
Возврат Компонента;
Исключение
Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Возврат Неопределено;
КонецПопытки;
КонецФункции
Функция КаталогКомпонентOS() Экспорт
КаталогПрограммы = СтрЗаменить(КаталогПрограммы(), "\", "/");
ЭлементыПути = СтрРазделить(КаталогПрограммы, "/");
ЭлементыПути.Удалить(ЭлементыПути.ВГраница());
// BSLLS:UsingHardcodePath-off
КаталогКомпонент = СтрСоединить(ЭлементыПути, "/") + "/lib/oint/addins/";
// BSLLS:UsingHardcodePath-on
Возврат КаталогКомпонент;
КонецФункции
Процедура СформироватьИсключениеКомпоненты()
Текст = "Не удалось инициализировать внешнюю компоненту. Возможно, она несовместима с вашей операционной системой.";
Если Не OPI_Инструменты.ЭтоWindows() Тогда
Текст = Текст
+ Символы.ПС
+ Символы.ПС
+ "Важно: Для работы компоненты требуется GLIBC >=2.18"
+ " и OpenSSL версии 3.x"
+ Символы.ПС
+ "Проверьте, что данные зависимости удоволетворены в вашей системе!";
КонецЕсли;
Текст = Текст
+ Символы.ПС
+ Символы.ПС
+ "Подробнее: https://openintegrations.dev/docs/Start/Component-requirements";
ВызватьИсключение Текст;
КонецПроцедуры
#КонецОбласти

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os
// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os
// MIT License
@@ -434,48 +434,3 @@
КонецПроцедуры
#КонецОбласти
#Region Alternate
Procedure GetBinaryData(Value, Val Force = False, Val TryB64 = True) Export
ПолучитьДвоичныеДанные(Value, Force, TryB64);
EndProcedure
Procedure GetBinaryOrStream(Value) Export
ПолучитьДвоичныеИлиПоток(Value);
EndProcedure
Procedure GetCollection(Value) Export
ПолучитьКоллекцию(Value);
EndProcedure
Procedure GetKeyValueCollection(Value, Val ErrorText = "The specified value is not a valid collection!") Export
ПолучитьКоллекциюКлючИЗначение(Value, ErrorText);
EndProcedure
Procedure GetArray(Value) Export
ПолучитьМассив(Value);
EndProcedure
Procedure GetBoolean(Value) Export
ПолучитьБулево(Value);
EndProcedure
Procedure GetLine(Value, Val FromSource = False) Export
ПолучитьСтроку(Value, FromSource);
EndProcedure
Procedure GetDate(Value) Export
ПолучитьДату(Value);
EndProcedure
Procedure GetNumber(Value) Export
ПолучитьЧисло(Value);
EndProcedure
Procedure GetFileOnDisk(Value, Val Extension = "tmp") Export
ПолучитьФайлНаДиске(Value, Extension);
EndProcedure
#EndRegion

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
// MIT License
@@ -727,9 +727,9 @@
Попытка
ЭтоОтладка = Неопределено;
ЭтоОтладка = Неопределено;
ЭтоОтладка = ПолучитьПеременнуюСреды("OINT_DEBUG");
ЭтоОтладка = ?(ЗначениеЗаполнено(ЭтоОтладка), ЭтоОтладка, "NO");
ЭтоОтладка = ?(ЗначениеЗаполнено(ЭтоОтладка), ЭтоОтладка, "NO");
Исключение
ЭтоОтладка = "NO";
@@ -1144,156 +1144,3 @@
КонецФункции
#КонецОбласти
#Region Alternate
Function RequestParametersToString(Val Parameters, Val SplitArrayParams = False, Val Start = True) Export
Return ПараметрыЗапросаВСтроку(Parameters, SplitArrayParams, Start);
EndFunction
Function RequestParametersToMap(Val ParameterString) Export
Return ПараметрыЗапросаВСоответствие(ParameterString);
EndFunction
Function SplitURL(Val URL) Export
Return РазбитьURL(URL);
EndFunction
Function GetDomain(Val ConnectionString) Export
Return ПолучитьДомен(ConnectionString);
EndFunction
Function JsonToStructure(Val Text, Val ToMap = True) Export
Return JsonВСтруктуру(Text, ToMap);
EndFunction
Function JSONString(Val Data, Val Escaping = "None", Val LineBreaks = True, Val DoubleQuotes = True) Export
Return JSONСтрокой(Data, Escaping, LineBreaks, DoubleQuotes);
EndFunction
Function ReadJSONFile(Val Path) Export
Return ПрочитатьJSONФайл(Path);
EndFunction
Function ProcessXML(XML) Export
Return ОбработатьXML(XML);
EndFunction
Function GetXML(Value, TargetNamespace = "", XMLWriter = Undefined) Export
Return ПолучитьXML(Value, TargetNamespace, XMLWriter);
EndFunction
Procedure AddField(Val Name, Val Value, Val Type, Collection) Export
ДобавитьПоле(Name, Value, Type, Collection);
EndProcedure
Procedure AddKeyValue(Table, Val Key, Val Value) Export
ДобавитьКлючЗначение(Table, Key, Value);
EndProcedure
Procedure RemoveEmptyCollectionFields(Collection) Export
УдалитьПустыеПоляКоллекции(Collection);
EndProcedure
Procedure ValueToArray(Value) Export
ЗначениеВМассив(Value);
EndProcedure
Function CollectionFieldExist(Val Collection, Val Field, FieldValue = Undefined) Export
Return ПолеКоллекцииСуществует(Collection, Field, FieldValue);
EndFunction
Function FindMissingCollectionFields(Val Collection, Val Fields) Export
Return НайтиОтсутствующиеПоляКоллекции(Collection, Fields);
EndFunction
Function ClearCollectionRecursively(Val Collection) Export
Return ОчиститьКоллекциюРекурсивно(Collection);
EndFunction
Function CopyCollection(Val Collection) Export
Return КопироватьКоллекцию(Collection);
EndFunction
Function GetOr(Val Collection, Val Field, Val DefaultValue) Export
Return ПолучитьИли(Collection, Field, DefaultValue);
EndFunction
Function IsOneScript() Export
Return ЭтоOneScript();
EndFunction
Procedure ProgressInformation(Val Current, Val Total, Val Unit, Val Divider = 1) Export
ИнформацияОПрогрессе(Current, Total, Unit, Divider);
EndProcedure
Procedure DebugInfo(Val Text) Export
ОтладочнаяИнформация(Text);
EndProcedure
Procedure ReplaceSpecialCharacters(Text, Markup = "Markdown") Export
ЗаменитьСпецСимволы(Text, Markup);
EndProcedure
Procedure Pause(Val Seconds) Export
Пауза(Seconds);
EndProcedure
Procedure ReplaceEscapeSequences(Text) Export
ЗаменитьУправляющиеПоследовательности(Text);
EndProcedure
Procedure RestoreEscapeSequences(Text) Export
ВернутьУправляющиеПоследовательности(Text);
EndProcedure
Procedure StreamToStart(CurrentStream) Export
ПотокВНачало(CurrentStream);
EndProcedure
Function NumberToString(Val Value) Export
Return ЧислоВСтроку(Value);
EndFunction
Function GetCurrentDate() Export
Return ПолучитьТекущуюДату();
EndFunction
Function DateRFC3339(Val Date, Val Offset = "Z") Export
Return ДатаRFC3339(Date, Offset);
EndFunction
Function ConvertDataWithSizeRetrieval(Data, Val MinimumStreamSize = 0) Export
Return ПреобразоватьДанныеСПолучениемРазмера(Data, MinimumStreamSize);
EndFunction
Function ISOTimestamp(Val Date) Export
Return ВременнаяМеткаISO(Date);
EndFunction
Function CreateStream(Val FilePath = Undefined) Export
Return СоздатьПоток(FilePath);
EndFunction
Function IsWindows() Export
Return ЭтоWindows();
EndFunction
Function MergeData(Val Data, Val Addition) Export
Return СклеитьДанные(Data, Addition);
EndFunction
Function IsPrimitiveType(Val Value) Export
Return ЭтоПримитивныйТип(Value);
EndFunction
Function ThisIsCollection(Val Value, Val KeyValue = False) Export
Return ЭтоКоллекция(Value, KeyValue);
EndFunction
Procedure WriteOnCurrentLine(Val Text, Val Color = "", Val ToStart = False) Export
ВывестиТекстВТекущуюСтроку(Text, Color, ToStart);
EndProcedure
#EndRegion

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os
// MIT License
@@ -240,24 +240,3 @@
#КонецОбласти
#КонецОбласти
#Region Alternate
Function CreateSignature(Val SignKey, Val SignatureData, Val Algorithm, Val HashFunc) Export
Return СоздатьПодпись(SignKey, SignatureData, Algorithm, HashFunc);
EndFunction
Function Hash(BinaryData, Type) Export
Return Хеш(BinaryData, Type);
EndFunction
Function UniteBinaryData(BinaryData1, BinaryData2) Export
Return СклеитьДвоичныеДанные(BinaryData1, BinaryData2);
EndFunction
Function RepeatString(String, Count) Export
Return ПовторитьСтроку(String, Count);
EndFunction
#EndRegion