mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-04-02 22:05:37 +02:00
Скрипт автоформатирования модулей
This commit is contained in:
parent
e58b2e318e
commit
0211b78acc
3
.github/workflows/oint_convert.yml
vendored
3
.github/workflows/oint_convert.yml
vendored
@ -47,6 +47,9 @@ jobs:
|
|||||||
- name: Обновить Workflow тестирования OInt (EN)
|
- name: Обновить Workflow тестирования OInt (EN)
|
||||||
run: oscript ./.github/workflows/os/oint_testmaker_en.os
|
run: oscript ./.github/workflows/os/oint_testmaker_en.os
|
||||||
|
|
||||||
|
- name: Скрипт форматирования модулей
|
||||||
|
run: oscript ./.github/workflows/os/format.os
|
||||||
|
|
||||||
|
|
||||||
- uses: stefanzweifel/git-auto-commit-action@v5
|
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
with:
|
with:
|
||||||
|
206
.github/workflows/os/format.os
vendored
Normal file
206
.github/workflows/os/format.os
vendored
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
Процедура ОтформатироватьМодуль(Знач ПутьКМодулю) Экспорт
|
||||||
|
|
||||||
|
ТекстовыйДокумент = Новый ТекстовыйДокумент();
|
||||||
|
ТекстовыйДокумент.Прочитать(ПутьКМодулю, "UTF-8");
|
||||||
|
|
||||||
|
БлокиКода = РазобратьМодульНаБлоки(ТекстовыйДокумент);
|
||||||
|
|
||||||
|
Для Н = 0 По БлокиКода.ВГраница() Цикл
|
||||||
|
|
||||||
|
МассивСтрокБлока = СтрРазделить(БлокиКода[Н], Символы.ПС);
|
||||||
|
|
||||||
|
Если МассивСтрокБлока.Количество() < 2 Тогда
|
||||||
|
Продолжить;
|
||||||
|
ИначеЕсли СтрНачинаетсяС(СокрЛП(МассивСтрокБлока[1]), "//") Тогда
|
||||||
|
Продолжить;
|
||||||
|
Иначе
|
||||||
|
ВыровнятьЗнакиРавно(МассивСтрокБлока);
|
||||||
|
ВыровнятьЗапятые(МассивСтрокБлока);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
БлокиКода[Н] = СтрСоединить(МассивСтрокБлока, Символы.ПС);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ТекстФайла = СтрСоединить(БлокиКода, "");
|
||||||
|
|
||||||
|
ТекстовыйДокумент.УстановитьТекст(ТекстФайла);
|
||||||
|
ТекстовыйДокумент.Записать(ПутьКМодулю);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция РазобратьМодульНаБлоки(Знач ТекстовыйДокумент)
|
||||||
|
|
||||||
|
Для Н = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
|
||||||
|
|
||||||
|
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(Н);
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(СокрЛП(ТекущаяСтрока)) Тогда
|
||||||
|
ТекстовыйДокумент.ЗаменитьСтроку(Н, "⣿");
|
||||||
|
Иначе
|
||||||
|
ТекстовыйДокумент.ЗаменитьСтроку(Н, СокрП(ТекущаяСтрока));
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ТекстФайла = ТекстовыйДокумент.ПолучитьТекст();
|
||||||
|
БлокиФайла = СтрРазделить(ТекстФайла, "⣿");
|
||||||
|
|
||||||
|
Возврат БлокиФайла;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ВыровнятьЗнакиРавно(МассивСтрокБлока)
|
||||||
|
|
||||||
|
СоответствиеРасположений = Новый Соответствие();
|
||||||
|
МаксимальноеРасположение = 0;
|
||||||
|
ЧислоЗнаковРавно = 0;
|
||||||
|
|
||||||
|
Для Н = 0 По МассивСтрокБлока.ВГраница() Цикл
|
||||||
|
|
||||||
|
РасположениеРавно = СтрНайти(МассивСтрокБлока[Н], "=");
|
||||||
|
СоответствиеРасположений.Вставить(Н, РасположениеРавно);
|
||||||
|
МаксимальноеРасположение = ?(РасположениеРавно > МаксимальноеРасположение, РасположениеРавно, МаксимальноеРасположение);
|
||||||
|
|
||||||
|
Если Не РасположениеРавно = 0 Тогда
|
||||||
|
ЧислоЗнаковРавно = ЧислоЗнаковРавно + 1;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если МаксимальноеРасположение = 0 Или ЧислоЗнаковРавно < 2 Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Каждого СтрокаБлока Из СоответствиеРасположений Цикл
|
||||||
|
|
||||||
|
РасположениеРавно = СтрокаБлока.Значение;
|
||||||
|
Индекс = СтрокаБлока.Ключ;
|
||||||
|
|
||||||
|
Если РасположениеРавно = 0 Или МаксимальноеРасположение - РасположениеРавно > 12 Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Н = РасположениеРавно По МаксимальноеРасположение - 1 Цикл
|
||||||
|
МассивСтрокБлока[Индекс] = СтрЗаменить(МассивСтрокБлока[Индекс], "=", " =");
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ВыровнятьЗапятые(МассивСтрокБлока, СоответствиеМаксимумов = "")
|
||||||
|
|
||||||
|
ПолноеСоответствиеРасположений = Новый Соответствие();
|
||||||
|
СтрокаСЗапятыми = 0;
|
||||||
|
НачалоСтроки = "";
|
||||||
|
|
||||||
|
Для Н = 0 По МассивСтрокБлока.ВГраница() Цикл
|
||||||
|
|
||||||
|
МассивУчастков = СтрРазделить(МассивСтрокБлока[Н], ",");
|
||||||
|
МассивУчастков_ = Новый Массив;
|
||||||
|
Соединение = Ложь;
|
||||||
|
СтрокаСоединения = "";
|
||||||
|
|
||||||
|
Для Каждого Участок Из МассивУчастков Цикл
|
||||||
|
|
||||||
|
ЧислоКавычек = СтрЧислоВхождений(Участок, """");
|
||||||
|
|
||||||
|
Если (ЧислоКавычек = 0 Или ЧислоКавычек % 2 = 0 ) И Не Соединение Тогда
|
||||||
|
|
||||||
|
МассивУчастков_.Добавить(Участок);
|
||||||
|
|
||||||
|
ИначеЕсли Соединение И ЧислоКавычек % 2 <> 0 Тогда
|
||||||
|
МассивУчастков_.Добавить(СтрокаСоединения + "," + Участок);
|
||||||
|
СтрокаСоединения = "";
|
||||||
|
Соединение = Ложь;
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
СтрокаСоединения = ?(ЗначениеЗаполнено(СтрокаСоединения), СтрокаСоединения + "," + Участок, Участок);
|
||||||
|
Соединение = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
МассивУчастков = МассивУчастков_;
|
||||||
|
|
||||||
|
Если МассивУчастков.Количество() < 2 Тогда
|
||||||
|
Продолжить;
|
||||||
|
Иначе
|
||||||
|
СтрокаСЗапятыми = СтрокаСЗапятыми + 1;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
МассивНачалаСтроки = СтрРазделить(МассивУчастков[0], "(");
|
||||||
|
|
||||||
|
Если МассивНачалаСтроки.Количество() < 2 Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
НачалоСтроки = МассивНачалаСтроки[0];
|
||||||
|
СоответствиеРасположений = ПолноеСоответствиеРасположений[НачалоСтроки];
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(СоответствиеРасположений) Тогда
|
||||||
|
СоответствиеРасположений = Новый Соответствие;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Для Р = 0 По МассивУчастков.ВГраница() - 1 Цикл
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(СоответствиеМаксимумов) Тогда
|
||||||
|
|
||||||
|
ДлинаУчастка = СтрДлина(МассивУчастков[Р]);
|
||||||
|
|
||||||
|
ТекущийМаксимум = СоответствиеРасположений.Получить(Р);
|
||||||
|
ТекущийМаксимум = ?(ЗначениеЗаполнено(ТекущийМаксимум), ТекущийМаксимум, 0);
|
||||||
|
ТекущийМаксимум = ?(ДлинаУчастка > ТекущийМаксимум , ДлинаУчастка , ТекущийМаксимум);
|
||||||
|
|
||||||
|
СоответствиеРасположений.Вставить(Р, ТекущийМаксимум);
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
ТекущееСоответствиеМаксимумов = СоответствиеМаксимумов[НачалоСтроки];
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(ТекущееСоответствиеМаксимумов) Тогда
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
НеобходимаяДлина = ТекущееСоответствиеМаксимумов[Р];
|
||||||
|
|
||||||
|
Если НеобходимаяДлина = Неопределено Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Пока СтрДлина(МассивУчастков[Р]) < НеобходимаяДлина Цикл
|
||||||
|
МассивУчастков[Р] = МассивУчастков[Р] + " ";
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ПолноеСоответствиеРасположений.Вставить(НачалоСтроки, СоответствиеРасположений);
|
||||||
|
|
||||||
|
МассивСтрокБлока[Н] = СтрСоединить(МассивУчастков, ",");
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(СоответствиеМаксимумов)
|
||||||
|
И ЗначениеЗаполнено(ПолноеСоответствиеРасположений)
|
||||||
|
И СтрокаСЗапятыми > 1 Тогда
|
||||||
|
ВыровнятьЗапятые(МассивСтрокБлока, ПолноеСоответствиеРасположений);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Для Каждого Файл Из НайтиФайлы("./src", "*.os", Истина) Цикл
|
||||||
|
Если СтрНайти(Файл.ПолноеИмя, "\cli\") = 0
|
||||||
|
И СтрНайти(Файл.ПолноеИмя, "/cli/") = 0 Тогда
|
||||||
|
ОтформатироватьМодуль(Файл.ПолноеИмя);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Для Каждого Файл Из НайтиФайлы("./src", "*.bsl", Истина) Цикл
|
||||||
|
Если СтрНайти(Файл.ПолноеИмя, "\cli\") = 0
|
||||||
|
И СтрНайти(Файл.ПолноеИмя, "/cli/") = 0 Тогда
|
||||||
|
ОтформатироватьМодуль(Файл.ПолноеИмя);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
@ -42,91 +42,91 @@
|
|||||||
|
|
||||||
// Get list of bases
|
// Get list of bases
|
||||||
// Gets the list of available bases
|
// Gets the list of available bases
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Indent - String - Next page identifier of the base list from the previous request - offset
|
// Indent - String - Next page identifier of the base list from the previous request - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetListOfBases(Val Token, Val Indent = "") Export
|
Function GetListOfBases(Val Token, Val Indent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Indent);
|
OPI_TypeConversion.GetLine(Indent);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get base tables
|
// Get base tables
|
||||||
// Gets the schema of base tables
|
// Gets the schema of base tables
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetDatabaseTables(Val Token, Val Base) Export
|
Function GetDatabaseTables(Val Token, Val Base) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create base
|
// Create base
|
||||||
// Creates a new database
|
// Creates a new database
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Workspace - String - Workspace identifier - ws
|
// Workspace - String - Workspace identifier - ws
|
||||||
// Name - String - New base name - title
|
// Name - String - New base name - title
|
||||||
// TableCollection - Map Of KeyAndValue - Table description: Key > name, Value > array of fields - tablesdata
|
// TableCollection - Map Of KeyAndValue - Table description: Key > name, Value > array of fields - tablesdata
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateDatabase(Val Token, Val Workspace, Val Name, Val TableCollection) Export
|
Function CreateDatabase(Val Token, Val Workspace, Val Name, Val TableCollection) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(TableCollection);
|
OPI_TypeConversion.GetCollection(TableCollection);
|
||||||
|
|
||||||
If Not TypeOf(TableCollection) = Type("Structure")
|
If Not TypeOf(TableCollection) = Type("Structure")
|
||||||
And Not TypeOf(TableCollection) = Type("Map") Then
|
And Not TypeOf(TableCollection) = Type("Map") Then
|
||||||
|
|
||||||
Raise "Error in table collection data";
|
Raise "Error in table collection data";
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
TableArray = New Array;
|
TableArray = New Array;
|
||||||
|
|
||||||
For Each Table In TableCollection Do
|
For Each Table In TableCollection Do
|
||||||
|
|
||||||
Description = GenerateTableDescription(Table.Key, Table.Value);
|
Description = GenerateTableDescription(Table.Key, Table.Value);
|
||||||
TableArray.Add(Description);
|
TableArray.Add(Description);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
||||||
OPI_Tools.AddField("tables" , TableArray , "Array", Parameters);
|
OPI_Tools.AddField("tables" , TableArray , "Array" , Parameters);
|
||||||
OPI_Tools.AddField("workspaceId", Workspace, "String", Parameters);
|
OPI_Tools.AddField("workspaceId", Workspace , "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -137,56 +137,56 @@ EndFunction
|
|||||||
|
|
||||||
// Create table
|
// Create table
|
||||||
// Creates a new table in the base
|
// Creates a new table in the base
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
// Name - String - New table name - title
|
// Name - String - New table name - title
|
||||||
// FieldArray - Array of Structure - Array of field descriptions - fieldsdata
|
// FieldArray - Array of Structure - Array of field descriptions - fieldsdata
|
||||||
// Description - String - Table description - description
|
// Description - String - Table description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateTable(Val Token, Val Base, Val Name, Val FieldArray, Val Description = "") Export
|
Function CreateTable(Val Token, Val Base, Val Name, Val FieldArray, Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
Parameters = GenerateTableDescription(Name, FieldArray, Description);
|
Parameters = GenerateTableDescription(Name, FieldArray, Description);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Modify table
|
// Modify table
|
||||||
// Changes the name and/or description of the base
|
// Changes the name and/or description of the base
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
// Description - String - New description - description
|
// Description - String - New description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function ModifyTable(Val Token, Val Base, Val Table, Val Name = "", Val Description = "") Export
|
Function ModifyTable(Val Token, Val Base, Val Table, Val Name = "", Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table;
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
OPI_Tools.AddField("name" , Name, "String", Parameters);
|
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
||||||
OPI_Tools.AddField("description", Description , "String", Parameters);
|
OPI_Tools.AddField("description", Description , "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -197,40 +197,40 @@ EndFunction
|
|||||||
|
|
||||||
// Create field
|
// Create field
|
||||||
// Creates a new field in the table
|
// Creates a new field in the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// FieldStructure - Structure of KeyAndValue - Description of the new field - fielddata
|
// FieldStructure - Structure of KeyAndValue - Description of the new field - fielddata
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateField(Val Token, Val Base, Val Table, Val FieldStructure) Export
|
Function CreateField(Val Token, Val Base, Val Table, Val FieldStructure) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetCollection(FieldStructure);
|
OPI_TypeConversion.GetCollection(FieldStructure);
|
||||||
|
|
||||||
If Not TypeOf(FieldStructure) = Type("Structure")
|
If Not TypeOf(FieldStructure) = Type("Structure")
|
||||||
And Not TypeOf(FieldStructure) = Type("Map") Then
|
And Not TypeOf(FieldStructure) = Type("Map") Then
|
||||||
|
|
||||||
Raise "Error in field description data";
|
Raise "Error in field description data";
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table + "/fields";
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table + "/fields";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, FieldStructure, Headers);
|
Response = OPI_Tools.Post(URL, FieldStructure, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Modify field
|
// Modify field
|
||||||
// Changes the name and/or description of an existing table field
|
// Changes the name and/or description of an existing table field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier Base - base
|
// Base - String - Base identifier Base - base
|
||||||
@ -238,152 +238,152 @@ EndFunction
|
|||||||
// Field - String - Field identifier - field
|
// Field - String - Field identifier - field
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
// Description - String - New description - description
|
// Description - String - New description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function ModifyField(Val Token, Val Base, Val Table, Val Field, Val Name = "", Val Description = "") Export
|
Function ModifyField(Val Token, Val Base, Val Table, Val Field, Val Name = "", Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Field);
|
OPI_TypeConversion.GetLine(Field);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/"
|
URL = "https://api.airtable.com/v0/meta/bases/"
|
||||||
+ Base
|
+ Base
|
||||||
+ "/tables/"
|
+ "/tables/"
|
||||||
+ Table
|
+ Table
|
||||||
+ "/fields/"
|
+ "/fields/"
|
||||||
+ Field;
|
+ Field;
|
||||||
|
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("name" , Name, "String", Parameters);
|
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
||||||
OPI_Tools.AddField("description", Description , "String", Parameters);
|
OPI_Tools.AddField("description", Description , "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (string)
|
// Get field (string)
|
||||||
// Gets the description of a string field
|
// Gets the description of a string field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - New field name - title
|
// Name - String - New field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetStringField(Val Name) Export
|
Function GetStringField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "richText");
|
Return PrimitiveFieldDescription(Name, "richText");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (numeric)
|
// Get field (numeric)
|
||||||
// Gets the description of a numeric field
|
// Gets the description of a numeric field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - New field name - title
|
// Name - String - New field name - title
|
||||||
// Precision - Number, String - Number of decimal places - precision
|
// Precision - Number, String - Number of decimal places - precision
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetNumberField(Val Name, Val Precision = 0) Export
|
Function GetNumberField(Val Name, Val Precision = 0) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetNumber(Precision);
|
OPI_TypeConversion.GetNumber(Precision);
|
||||||
|
|
||||||
OptionsStructure = New Structure("precision", Precision);
|
OptionsStructure = New Structure("precision", Precision);
|
||||||
Return PrimitiveFieldDescription(Name, "number", OptionsStructure);
|
Return PrimitiveFieldDescription(Name, "number", OptionsStructure);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (file)
|
// Get field (file)
|
||||||
// Gets the description of a file field
|
// Gets the description of a file field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetAttachmentField(Val Name) Export
|
Function GetAttachmentField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "multipleAttachments");
|
Return PrimitiveFieldDescription(Name, "multipleAttachments");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (checkbox)
|
// Get field (checkbox)
|
||||||
// Gets the description of a boolean field
|
// Gets the description of a boolean field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetCheckboxField(Val Name) Export
|
Function GetCheckboxField(Val Name) Export
|
||||||
|
|
||||||
OptionsStructure = New Structure("icon,color", "check", "yellowBright");
|
OptionsStructure = New Structure("icon,color", "check", "yellowBright");
|
||||||
Return PrimitiveFieldDescription(Name, "checkbox", OptionsStructure);
|
Return PrimitiveFieldDescription(Name, "checkbox", OptionsStructure);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (date)
|
// Get field (date)
|
||||||
// Gets the description of a date field
|
// Gets the description of a date field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetDateField(Val Name) Export
|
Function GetDateField(Val Name) Export
|
||||||
|
|
||||||
FormatStructure = New Structure("format,name", "YYYY-MM-DD", "iso");
|
FormatStructure = New Structure("format,name", "YYYY-MM-DD", "iso");
|
||||||
OptionsStructure = New Structure("dateFormat", FormatStructure);
|
OptionsStructure = New Structure("dateFormat", FormatStructure);
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "date", OptionsStructure);
|
Return PrimitiveFieldDescription(Name, "date", OptionsStructure);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (email)
|
// Get field (email)
|
||||||
// Gets the description of an email field
|
// Gets the description of an email field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetEmailField(Val Name) Export
|
Function GetEmailField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "email");
|
Return PrimitiveFieldDescription(Name, "email");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (phone)
|
// Get field (phone)
|
||||||
// Gets the description of a phone number field
|
// Gets the description of a phone number field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetPhoneField(Val Name) Export
|
Function GetPhoneField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "phoneNumber");
|
Return PrimitiveFieldDescription(Name, "phoneNumber");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (url)
|
// Get field (url)
|
||||||
// Gets the description of a URL field
|
// Gets the description of a URL field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetLinkField(Val Name) Export
|
Function GetLinkField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "url");
|
Return PrimitiveFieldDescription(Name, "url");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -392,67 +392,67 @@ EndFunction
|
|||||||
|
|
||||||
// Get list of records
|
// Get list of records
|
||||||
// Gets the list of records of the selected table
|
// Gets the list of records of the selected table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Indent - String - Next page identifier of data from the previous request - offset
|
// Indent - String - Next page identifier of data from the previous request - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetListOfRecords(Val Token, Val Base, Val Table, Val Indent = "") Export
|
Function GetListOfRecords(Val Token, Val Base, Val Table, Val Indent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get record
|
// Get record
|
||||||
// Gets row data of the table by identifier
|
// Gets row data of the table by identifier
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetRecord(Val Token, Val Base, Val Table, Val Record) Export
|
Function GetRecord(Val Token, Val Base, Val Table, Val Record) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create records
|
// Create records
|
||||||
// Creates one or an array of records by description or an array of field value descriptions
|
// Creates one or an array of records by description or an array of field value descriptions
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Data - Structure, Array of Structure - Set or array of sets of pairs Key : Value > Field : FieldValue - data
|
// Data - Structure, Array of Structure - Set or array of sets of pairs Key : Value > Field : FieldValue - data
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export
|
Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export
|
||||||
@ -460,52 +460,52 @@ Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export
|
|||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetCollection(Data);
|
OPI_TypeConversion.GetCollection(Data);
|
||||||
|
|
||||||
Parameters = New Structure();
|
|
||||||
AddDataDescription(Data, Parameters);
|
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
Parameters = New Structure();
|
||||||
|
AddDataDescription(Data, Parameters);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete records
|
// Delete records
|
||||||
// Deletes one or an array of records by identifiers
|
// Deletes one or an array of records by identifiers
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Records - String, Array of String - Identifier or array of record identifiers - records
|
// Records - String, Array of String - Identifier or array of record identifiers - records
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function DeletePosts(Val Token, Val Base, Val Table, Val Records) Export
|
Function DeletePosts(Val Token, Val Base, Val Table, Val Records) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetArray(Records);
|
OPI_TypeConversion.GetArray(Records);
|
||||||
|
|
||||||
RecordString = "";
|
RecordString = "";
|
||||||
|
|
||||||
For Each Record In Records Do
|
For Each Record In Records Do
|
||||||
RecordString = RecordString
|
RecordString = RecordString
|
||||||
+ ?(ValueIsFilled(RecordString), "&", "?")
|
+ ?(ValueIsFilled(RecordString), "&", "?")
|
||||||
+ "records[]="
|
+ "records[]="
|
||||||
+ OPI_Tools.NumberToString(Record);
|
+ OPI_Tools.NumberToString(Record);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + RecordString;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + RecordString;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -514,67 +514,67 @@ EndFunction
|
|||||||
|
|
||||||
// Get comments
|
// Get comments
|
||||||
// Gets the list of comments for a record in the table
|
// Gets the list of comments for a record in the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Indent - String - Next page identifier of data from the previous request - offset
|
// Indent - String - Next page identifier of data from the previous request - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetComments(Val Token, Val Base, Val Table, Val Record, Val Indent = "") Export
|
Function GetComments(Val Token, Val Base, Val Table, Val Record, Val Indent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create comment
|
// Create comment
|
||||||
// Creates a comment for a record in the table
|
// Creates a comment for a record in the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Text - String - Comment text - text
|
// Text - String - Comment text - text
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateComment(Val Token, Val Base, Val Table, Val Record, Val Text) Export
|
Function CreateComment(Val Token, Val Base, Val Table, Val Record, Val Text) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("text", Text, "String", Parameters);
|
OPI_Tools.AddField("text", Text, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Modify comment
|
// Modify comment
|
||||||
// Changes the text of an existing comment
|
// Changes the text of an existing comment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
@ -582,54 +582,54 @@ EndFunction
|
|||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Comment - String - Comment identifier - comment
|
// Comment - String - Comment identifier - comment
|
||||||
// Text - String - New comment text - text
|
// Text - String - New comment text - text
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function EditComment(Val Token, Val Base, Val Table, Val Record, Val Comment, Val Text) Export
|
Function EditComment(Val Token, Val Base, Val Table, Val Record, Val Comment, Val Text) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
OPI_TypeConversion.GetLine(Comment);
|
OPI_TypeConversion.GetLine(Comment);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("text", Text, "String", Parameters);
|
OPI_Tools.AddField("text", Text, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete comment
|
// Delete comment
|
||||||
// Deletes a comment for a table record
|
// Deletes a comment for a table record
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Comment - String - Comment identifier - comment
|
// Comment - String - Comment identifier - comment
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function DeleteComment(Val Token, Val Base, Val Table, Val Record, Val Comment) Export
|
Function DeleteComment(Val Token, Val Base, Val Table, Val Record, Val Comment) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
OPI_TypeConversion.GetLine(Comment);
|
OPI_TypeConversion.GetLine(Comment);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -639,58 +639,58 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function GetAuthorizationHeader(Val Token)
|
Function GetAuthorizationHeader(Val Token)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = New Map;
|
Headers = New Map;
|
||||||
Headers.Insert("Authorization", "Bearer " + Token);
|
Headers.Insert("Authorization", "Bearer " + Token);
|
||||||
|
|
||||||
Return Headers;
|
Return Headers;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GenerateTableDescription(Val Name, Val FieldArray, Val Description = "")
|
Function GenerateTableDescription(Val Name, Val FieldArray, Val Description = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetCollection(FieldArray);
|
OPI_TypeConversion.GetCollection(FieldArray);
|
||||||
|
|
||||||
TableDescription = New Structure("name,fields", Name, FieldArray);
|
TableDescription = New Structure("name,fields", Name, FieldArray);
|
||||||
|
|
||||||
OPI_Tools.AddField("description", Description, "String", TableDescription);
|
OPI_Tools.AddField("description", Description, "String", TableDescription);
|
||||||
|
|
||||||
Return TableDescription;
|
Return TableDescription;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function PrimitiveFieldDescription(Val Name, Val Type, Val Options = "")
|
Function PrimitiveFieldDescription(Val Name, Val Type, Val Options = "")
|
||||||
|
|
||||||
FieldStructure = New Structure();
|
FieldStructure = New Structure();
|
||||||
OPI_Tools.AddField("name" , Name, "String" , FieldStructure);
|
OPI_Tools.AddField("name" , Name , "String" , FieldStructure);
|
||||||
OPI_Tools.AddField("type" , Type , "String" , FieldStructure);
|
OPI_Tools.AddField("type" , Type , "String" , FieldStructure);
|
||||||
OPI_Tools.AddField("options", Options , "Collection", FieldStructure);
|
OPI_Tools.AddField("options", Options , "Collection", FieldStructure);
|
||||||
|
|
||||||
Return FieldStructure;
|
Return FieldStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure AddDataDescription(Val Data, Parameters)
|
Procedure AddDataDescription(Val Data, Parameters)
|
||||||
|
|
||||||
If TypeOf(Data) = Type("Array") Then
|
If TypeOf(Data) = Type("Array") Then
|
||||||
|
|
||||||
SendArray = New Array;
|
SendArray = New Array;
|
||||||
|
|
||||||
For Each RecordDescription In Data Do
|
For Each RecordDescription In Data Do
|
||||||
SendArray.Add(New Structure("fields", RecordDescription));
|
SendArray.Add(New Structure("fields", RecordDescription));
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
OPI_Tools.AddField("records", SendArray, "Array", Parameters);
|
OPI_Tools.AddField("records", SendArray, "Array", Parameters);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
OPI_Tools.AddField("fields", Data, "Collection", Parameters);
|
OPI_Tools.AddField("fields", Data, "Collection", Parameters);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -43,131 +43,131 @@
|
|||||||
|
|
||||||
// Create calendar
|
// Create calendar
|
||||||
// Creates an empty calendar
|
// Creates an empty calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Name - String - Name of the created calendar - title
|
// Name - String - Name of the created calendar - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateCalendar(Val Token, Val Name) Export
|
Function CreateCalendar(Val Token, Val Name) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("summary" , Name);
|
Parameters.Insert("summary" , Name);
|
||||||
Parameters.Insert("timeZone", "Europe/Moscow");
|
Parameters.Insert("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get calendar
|
// Get calendar
|
||||||
// Gets calendar information by ID
|
// Gets calendar information by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetCalendarMetadata(Val Token, Val Calendar) Export
|
Function GetCalendarMetadata(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Edit calendar
|
// Edit calendar
|
||||||
// Edits properties of an existing calendar
|
// Edits properties of an existing calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
// Description - String - New calendar description - description
|
// Description - String - New calendar description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditCalendarMetadata(Val Token
|
Function EditCalendarMetadata(Val Token
|
||||||
, Val Calendar
|
, Val Calendar
|
||||||
, Val Name = ""
|
, Val Name = ""
|
||||||
, Val Description = "") Export
|
, Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetLine(Description);
|
OPI_TypeConversion.GetLine(Description);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Name) Then
|
If ValueIsFilled(Name) Then
|
||||||
Parameters.Insert("summary", Name);
|
Parameters.Insert("summary", Name);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Description) Then
|
If ValueIsFilled(Description) Then
|
||||||
Parameters.Insert("description", Description);
|
Parameters.Insert("description", Description);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Clear primary calendar
|
// Clear primary calendar
|
||||||
// Clears the event list of the primary calendar
|
// Clears the event list of the primary calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function ClearMainCalendar(Val Token) Export
|
Function ClearMainCalendar(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
||||||
Response = OPI_Tools.Post(URL, , Headers, False);
|
Response = OPI_Tools.Post(URL, , Headers, False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete calendar
|
// Delete calendar
|
||||||
// Deletes a calendar by ID
|
// Deletes a calendar by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteCalendar(Val Token, Val Calendar) Export
|
Function DeleteCalendar(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -178,105 +178,105 @@ EndFunction
|
|||||||
|
|
||||||
// Get list of calendars
|
// Get list of calendars
|
||||||
// Gets an array of account calendars
|
// Gets an array of account calendars
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of calendar data mappings
|
// Map Of KeyAndValue - Array of calendar data mappings
|
||||||
Function GetCalendarList(Val Token) Export
|
Function GetCalendarList(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfCalendars = New Array;
|
ArrayOfCalendars = New Array;
|
||||||
|
|
||||||
GetCalendarsListRecursively(Headers, ArrayOfCalendars);
|
GetCalendarsListRecursively(Headers, ArrayOfCalendars);
|
||||||
|
|
||||||
Return ArrayOfCalendars;
|
Return ArrayOfCalendars;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Add calendar to list
|
// Add calendar to list
|
||||||
// Adds an existing calendar to the user's list
|
// Adds an existing calendar to the user's list
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function AddCalendarToList(Val Token, Val Calendar) Export
|
Function AddCalendarToList(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("id", Calendar);
|
Parameters.Insert("id", Calendar);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list calendar
|
// Get list calendar
|
||||||
// Gets a calendar from the user's list by ID
|
// Gets a calendar from the user's list by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetListCalendar(Val Token, Val Calendar) Export
|
Function GetListCalendar(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Remove calendar from list
|
// Remove calendar from list
|
||||||
// Removes a calendar from the user's list
|
// Removes a calendar from the user's list
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteCalendarFromList(Val Token, Val Calendar) Export
|
Function DeleteCalendarFromList(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Edit list calendar
|
// Edit list calendar
|
||||||
// Edits the properties of a calendar from the user's list
|
// Edits the properties of a calendar from the user's list
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// PrimaryColor - String - HEX primary color (#ffffff) - primary
|
// PrimaryColor - String - HEX primary color (#ffffff) - primary
|
||||||
// SecondaryColor - String - HEX secondary color (#ffffff) - secondary
|
// SecondaryColor - String - HEX secondary color (#ffffff) - secondary
|
||||||
// Hidden - Boolean - Hidden calendar - hidden
|
// Hidden - Boolean - Hidden calendar - hidden
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditListCalendar(Val Token
|
Function EditListCalendar(Val Token
|
||||||
@ -284,23 +284,23 @@ Function EditListCalendar(Val Token
|
|||||||
, Val PrimaryColor
|
, Val PrimaryColor
|
||||||
, Val SecondaryColor
|
, Val SecondaryColor
|
||||||
, Val Hidden = False) Export
|
, Val Hidden = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(PrimaryColor);
|
OPI_TypeConversion.GetLine(PrimaryColor);
|
||||||
OPI_TypeConversion.GetLine(SecondaryColor);
|
OPI_TypeConversion.GetLine(SecondaryColor);
|
||||||
OPI_TypeConversion.GetBoolean(Hidden);
|
OPI_TypeConversion.GetBoolean(Hidden);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat=true";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat =true";
|
||||||
|
|
||||||
Parameters = New Map;
|
Parameters = New Map;
|
||||||
Parameters.Insert("hidden" , Hidden);
|
Parameters.Insert("hidden" , Hidden);
|
||||||
Parameters.Insert("foregroundColor", PrimaryColor);
|
Parameters.Insert("foregroundColor", PrimaryColor);
|
||||||
Parameters.Insert("backgroundColor", SecondaryColor);
|
Parameters.Insert("backgroundColor", SecondaryColor);
|
||||||
|
|
||||||
Response = OPI_Tools.Put(URL, Parameters, Headers);
|
Response = OPI_Tools.Put(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -310,167 +310,167 @@ EndFunction
|
|||||||
#Region EventManagement
|
#Region EventManagement
|
||||||
|
|
||||||
// Get event description !NOCLI
|
// Get event description !NOCLI
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Empty event template
|
// Map Of KeyAndValue - Empty event template
|
||||||
Function GetEventDescription() Export
|
Function GetEventDescription() Export
|
||||||
|
|
||||||
CurrentDate = OPI_Tools.GetCurrentDate();
|
CurrentDate = OPI_Tools.GetCurrentDate();
|
||||||
Hour = 3600;
|
Hour = 3600;
|
||||||
Event = New Map;
|
Event = New Map;
|
||||||
|
|
||||||
Event.Insert("Description" , ""); // Event description
|
Event.Insert("Description" , ""); // Event description
|
||||||
Event.Insert("Title" , "New event"); // Title events
|
Event.Insert("Title" , "New event"); // Title events
|
||||||
Event.Insert("Venue" , ""); // String description of the venue of the event
|
Event.Insert("Venue" , ""); // String description of the venue of the event
|
||||||
Event.Insert("StartDate" , CurrentDate); // Date of start events
|
Event.Insert("StartDate" , CurrentDate); // Date of start events
|
||||||
Event.Insert("EndDate" , CurrentDate + Hour); // Date of end events
|
Event.Insert("EndDate" , CurrentDate + Hour); // Date of end events
|
||||||
Event.Insert("ArrayOfAttachmentURLs", New Map); // Key - name, Value - URL to file
|
Event.Insert("ArrayOfAttachmentURLs", New Map); // Key - name, Value - URL to file
|
||||||
Event.Insert("SendNotifications" , True); // Indication of sending notifications to participants
|
Event.Insert("SendNotifications" , True); // Indication of sending notifications to participants
|
||||||
|
|
||||||
Return Event;
|
Return Event;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of events
|
// Get list of events
|
||||||
// Gets the list of all calendar events
|
// Gets the list of all calendar events
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of event maps
|
// Map Of KeyAndValue - Array of event maps
|
||||||
Function GetEventList(Val Token, Val Calendar) Export
|
Function GetEventList(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfEvents = New Array;
|
ArrayOfEvents = New Array;
|
||||||
|
|
||||||
GetEventsListRecursively(Headers, Calendar, ArrayOfEvents);
|
GetEventsListRecursively(Headers, Calendar, ArrayOfEvents);
|
||||||
|
|
||||||
Return ArrayOfEvents;
|
Return ArrayOfEvents;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get event
|
// Get event
|
||||||
// Gets an event by ID
|
// Gets an event by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// Event - String - Event ID - event
|
// Event - String - Event ID - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetEvent(Val Token, Val Calendar, Val Event) Export
|
Function GetEvent(Val Token, Val Calendar, Val Event) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Calendar
|
+ Calendar
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Event;
|
+ Event;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create event
|
// Create event
|
||||||
// Creates a new event
|
// Creates a new event
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// EventDescription - Map Of KeyAndValue - Event description - props
|
// EventDescription - Map Of KeyAndValue - Event description - props
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// String, Arbitrary, HTTPResponse, BinaryData, Undefined - Google server response
|
// String, Arbitrary, HTTPResponse, BinaryData, Undefined - Google server response
|
||||||
Function CreateEvent(Val Token, Val Calendar, Val EventDescription) Export
|
Function CreateEvent(Val Token, Val Calendar, Val EventDescription) Export
|
||||||
|
|
||||||
Return EventManagement(Token, Calendar, EventDescription);
|
Return EventManagement(Token, Calendar, EventDescription);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Move event
|
// Move event
|
||||||
// Moves an event to another calendar
|
// Moves an event to another calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// SourceCalendar - String - ID of the source calendar - from
|
// SourceCalendar - String - ID of the source calendar - from
|
||||||
// TargetCalendar - String - ID of the target calendar - to
|
// TargetCalendar - String - ID of the target calendar - to
|
||||||
// Event - String - ID of the source calendar event - event
|
// Event - String - ID of the source calendar event - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function MoveEvent(Val Token, Val SourceCalendar, Val TargetCalendar, Val Event) Export
|
Function MoveEvent(Val Token, Val SourceCalendar, Val TargetCalendar, Val Event) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(SourceCalendar);
|
OPI_TypeConversion.GetLine(SourceCalendar);
|
||||||
OPI_TypeConversion.GetLine(TargetCalendar);
|
OPI_TypeConversion.GetLine(TargetCalendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ SourceCalendar
|
+ SourceCalendar
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Event
|
+ Event
|
||||||
+ "/move?destination="
|
+ "/move?destination="
|
||||||
+ TargetCalendar;
|
+ TargetCalendar;
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, , Headers);
|
Response = OPI_Tools.Post(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Edit event
|
// Edit event
|
||||||
// Edits an existing event
|
// Edits an existing event
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// EventDescription - String - New event description - props
|
// EventDescription - String - New event description - props
|
||||||
// Event - String - Event ID - event
|
// Event - String - Event ID - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditEvent(Val Token, Val Calendar, Val EventDescription, Val Event) Export
|
Function EditEvent(Val Token, Val Calendar, Val EventDescription, Val Event) Export
|
||||||
|
|
||||||
Return EventManagement(Token, Calendar, EventDescription, Event);
|
Return EventManagement(Token, Calendar, EventDescription, Event);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete event
|
// Delete event
|
||||||
// Deletes an event by ID
|
// Deletes an event by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// Event - String - Event ID - event
|
// Event - String - Event ID - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteEvent(Val Token, Val Calendar, Val Event) Export
|
Function DeleteEvent(Val Token, Val Calendar, Val Event) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Calendar
|
+ Calendar
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Event;
|
+ Event;
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -482,51 +482,51 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function ConvertDate(Val Date)
|
Function ConvertDate(Val Date)
|
||||||
|
|
||||||
OPI_TypeConversion.GetDate(Date);
|
OPI_TypeConversion.GetDate(Date);
|
||||||
|
|
||||||
DateStructure = New Structure;
|
DateStructure = New Structure;
|
||||||
|
|
||||||
If Not TypeOf(Date) = Type("Date") Then
|
If Not TypeOf(Date) = Type("Date") Then
|
||||||
Return Undefined;
|
Return Undefined;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Date = BegOfDay(Date) Then
|
If Date = BegOfDay(Date) Then
|
||||||
DateFormat = "DF=yyyy-MM-dd";
|
DateFormat = "DF=yyyy-MM-dd";
|
||||||
Field = "date";
|
Field = "date";
|
||||||
Else
|
Else
|
||||||
DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ";
|
DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ";
|
||||||
Field = "dateTime";
|
Field = "dateTime";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Date = Format(Date, DateFormat);
|
Date = Format(Date, DateFormat);
|
||||||
DateStructure.Insert(Field , Date);
|
DateStructure.Insert(Field , Date);
|
||||||
DateStructure.Insert("timeZone", "Europe/Moscow");
|
DateStructure.Insert("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Return DateStructure;
|
Return DateStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ConvertAttachments(Val Attachments)
|
Function ConvertAttachments(Val Attachments)
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(Attachments);
|
OPI_TypeConversion.GetCollection(Attachments);
|
||||||
|
|
||||||
AttachmentsArray = New Array;
|
AttachmentsArray = New Array;
|
||||||
|
|
||||||
If TypeOf(Attachments) = Type("Map") Or TypeOf(Attachments) = Type("Structure") Then
|
If TypeOf(Attachments) = Type("Map") Or TypeOf(Attachments) = Type("Structure") Then
|
||||||
|
|
||||||
For Each Attachment In Attachments Do
|
For Each Attachment In Attachments Do
|
||||||
|
|
||||||
CurrentAttachment = New Structure;
|
CurrentAttachment = New Structure;
|
||||||
CurrentAttachment.Insert("title" , Attachment.Key);
|
CurrentAttachment.Insert("title" , Attachment.Key);
|
||||||
CurrentAttachment.Insert("fileUrl", Attachment.Value);
|
CurrentAttachment.Insert("fileUrl", Attachment.Value);
|
||||||
|
|
||||||
AttachmentsArray.Add(CurrentAttachment);
|
AttachmentsArray.Add(CurrentAttachment);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If AttachmentsArray.Count() > 0 Then
|
If AttachmentsArray.Count() > 0 Then
|
||||||
Return AttachmentsArray;
|
Return AttachmentsArray;
|
||||||
Else
|
Else
|
||||||
@ -536,105 +536,105 @@ Function ConvertAttachments(Val Attachments)
|
|||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function EventManagement(Val Token, Val Calendar, Val EventDescription, Val Event = "")
|
Function EventManagement(Val Token, Val Calendar, Val EventDescription, Val Event = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
OPI_TypeConversion.GetCollection(EventDescription);
|
OPI_TypeConversion.GetCollection(EventDescription);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
Existing = ValueIsFilled(Event);
|
Existing = ValueIsFilled(Event);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Calendar
|
+ Calendar
|
||||||
+ "/events"
|
+ "/events"
|
||||||
+ ?(Existing, "/" + Event, "");
|
+ ?(Existing, "/" + Event, "");
|
||||||
|
|
||||||
Date0 = EventDescription["StartDate"];
|
Date0 = EventDescription["StartDate"];
|
||||||
Date1 = EventDescription["EndDate"];
|
Date1 = EventDescription["EndDate"];
|
||||||
Attachments = EventDescription["ArrayOfAttachmentURLs"];
|
Attachments = EventDescription["ArrayOfAttachmentURLs"];
|
||||||
Attachments = ConvertAttachments(Attachments);
|
Attachments = ConvertAttachments(Attachments);
|
||||||
Notifications = ?(EventDescription["SendNotifications"] = Undefined
|
Notifications = ?(EventDescription["SendNotifications"] = Undefined
|
||||||
, False
|
, False
|
||||||
, EventDescription["SendNotifications"]);
|
, EventDescription["SendNotifications"]);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("summary" , EventDescription["Title"]);
|
Parameters.Insert("summary" , EventDescription["Title"]);
|
||||||
Parameters.Insert("description", EventDescription["Description"]);
|
Parameters.Insert("description", EventDescription["Description"]);
|
||||||
Parameters.Insert("location" , EventDescription["Venue"]);
|
Parameters.Insert("location" , EventDescription["Venue"]);
|
||||||
Parameters.Insert("start" , ConvertDate(Date0));
|
Parameters.Insert("start" , ConvertDate(Date0));
|
||||||
Parameters.Insert("end" , ConvertDate(Date1));
|
Parameters.Insert("end" , ConvertDate(Date1));
|
||||||
Parameters.Insert("attachments", Attachments);
|
Parameters.Insert("attachments", Attachments);
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("sendUpdates" , ?(Notifications, "all", "none"));
|
URLParameters.Insert("sendUpdates" , ?(Notifications , "all" , "none"));
|
||||||
URLParameters.Insert("supportsAttachments" , ?(ValueIsFilled(Attachments), "true", "false"));
|
URLParameters.Insert("supportsAttachments" , ?(ValueIsFilled(Attachments), "true", "false"));
|
||||||
|
|
||||||
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
||||||
|
|
||||||
OPI_Tools.RemoveEmptyCollectionFields(Parameters);
|
OPI_Tools.RemoveEmptyCollectionFields(Parameters);
|
||||||
|
|
||||||
If Existing Then
|
If Existing Then
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
||||||
Else
|
Else
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers, True);
|
Response = OPI_Tools.Post(URL, Parameters, Headers, True);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure GetCalendarsListRecursively(Val Headers, ArrayOfCalendars, Page = "")
|
Procedure GetCalendarsListRecursively(Val Headers, ArrayOfCalendars, Page = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Page) Then
|
If ValueIsFilled(Page) Then
|
||||||
Parameters.Insert("pageToken", Page);
|
Parameters.Insert("pageToken", Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
||||||
, Parameters
|
, Parameters
|
||||||
, Headers);
|
, Headers);
|
||||||
|
|
||||||
Calendars = Result[Items];
|
Calendars = Result[Items];
|
||||||
Page = Result[NPT];
|
Page = Result[NPT];
|
||||||
|
|
||||||
For Each Calendar In Calendars Do
|
For Each Calendar In Calendars Do
|
||||||
ArrayOfCalendars.Add(Calendar);
|
ArrayOfCalendars.Add(Calendar);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If Calendars.Count() > 0 And ValueIsFilled(Page) Then
|
If Calendars.Count() > 0 And ValueIsFilled(Page) Then
|
||||||
GetCalendarsListRecursively(Headers, ArrayOfCalendars, Page);
|
GetCalendarsListRecursively(Headers, ArrayOfCalendars, Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetEventsListRecursively(Val Headers, Val Calendar, ArrayOfEvents, Page = "")
|
Procedure GetEventsListRecursively(Val Headers, Val Calendar, ArrayOfEvents, Page = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Page) Then
|
If ValueIsFilled(Page) Then
|
||||||
Parameters.Insert("pageToken", Page);
|
Parameters.Insert("pageToken", Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/calendars/" + Calendar + "/events"
|
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/calendars/" + Calendar + "/events"
|
||||||
, Parameters
|
, Parameters
|
||||||
, Headers);
|
, Headers);
|
||||||
|
|
||||||
Events = Result[Items];
|
Events = Result[Items];
|
||||||
Page = Result[NPT];
|
Page = Result[NPT];
|
||||||
|
|
||||||
For Each Event In Events Do
|
For Each Event In Events Do
|
||||||
ArrayOfEvents.Add(Event);
|
ArrayOfEvents.Add(Event);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If Events.Count() > 0 And ValueIsFilled(Page) Then
|
If Events.Count() > 0 And ValueIsFilled(Page) Then
|
||||||
GetEventsListRecursively(Headers, ArrayOfEvents, Page);
|
GetEventsListRecursively(Headers, ArrayOfEvents, Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -43,277 +43,277 @@
|
|||||||
|
|
||||||
// Get object information
|
// Get object information
|
||||||
// Gets information about a folder or file by ID
|
// Gets information about a folder or file by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the file or folder - object
|
// Identifier - String - Identifier of the file or folder - object
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetObjectInformation(Val Token, Val Identifier) Export
|
Function GetObjectInformation(Val Token, Val Identifier) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of directories
|
// Get list of directories
|
||||||
// Gets the list of drive directories
|
// Gets the list of drive directories
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// NameContains - String - Filter by name - querry
|
// NameContains - String - Filter by name - querry
|
||||||
// Detailed - Boolean - Adds a list of files to the directory fields - depth
|
// Detailed - Boolean - Adds a list of files to the directory fields - depth
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of directory mappings
|
// Map Of KeyAndValue - Array of directory mappings
|
||||||
Function GetDirectoriesList(Val Token, Val NameContains = "", Val Detailed = False) Export
|
Function GetDirectoriesList(Val Token, Val NameContains = "", Val Detailed = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(NameContains);
|
OPI_TypeConversion.GetLine(NameContains);
|
||||||
OPI_TypeConversion.GetBoolean(Detailed);
|
OPI_TypeConversion.GetBoolean(Detailed);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfObjects = New Array;
|
ArrayOfObjects = New Array;
|
||||||
Filter = New Array;
|
Filter = New Array;
|
||||||
|
|
||||||
Filter.Add("mimeType = 'application/vnd.google-apps.folder'");
|
Filter.Add("mimeType = 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
If ValueIsFilled(NameContains) Then
|
If ValueIsFilled(NameContains) Then
|
||||||
Filter.Add("name contains '" + NameContains + "'");
|
Filter.Add("name contains '" + NameContains + "'");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter);
|
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter);
|
||||||
|
|
||||||
If Detailed Then
|
If Detailed Then
|
||||||
BreakDownObjectsInDetail(Token, ArrayOfObjects);
|
BreakDownObjectsInDetail(Token, ArrayOfObjects);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return ArrayOfObjects;
|
Return ArrayOfObjects;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of files
|
// Get list of files
|
||||||
// Gets the list of files
|
// Gets the list of files
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// NameContains - String - Filter by name - querry
|
// NameContains - String - Filter by name - querry
|
||||||
// Directory - String - Filter by parent directory ID - catalog
|
// Directory - String - Filter by parent directory ID - catalog
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of file mappings
|
// Map Of KeyAndValue - Array of file mappings
|
||||||
Function GetFilesList(Val Token, Val NameContains = "", Val Directory = "") Export
|
Function GetFilesList(Val Token, Val NameContains = "", Val Directory = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(NameContains);
|
OPI_TypeConversion.GetLine(NameContains);
|
||||||
OPI_TypeConversion.GetLine(Directory);
|
OPI_TypeConversion.GetLine(Directory);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfObjects = New Array;
|
ArrayOfObjects = New Array;
|
||||||
Filter = New Array;
|
Filter = New Array;
|
||||||
|
|
||||||
Filter.Add("mimeType != 'application/vnd.google-apps.folder'");
|
Filter.Add("mimeType != 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
If ValueIsFilled(NameContains) Then
|
If ValueIsFilled(NameContains) Then
|
||||||
Filter.Add("name contains '" + NameContains + "'");
|
Filter.Add("name contains '" + NameContains + "'");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Directory) Then
|
If ValueIsFilled(Directory) Then
|
||||||
Filter.Add("'" + Directory + "' in parents");
|
Filter.Add("'" + Directory + "' in parents");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
GetObjectsListRecursively(Headers, ArrayOfObjects, , Filter);
|
GetObjectsListRecursively(Headers, ArrayOfObjects, , Filter);
|
||||||
|
|
||||||
Return ArrayOfObjects;
|
Return ArrayOfObjects;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload file
|
// Upload file
|
||||||
// Uploads a file to the drive
|
// Uploads a file to the drive
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// File - BinaryData,String - File to be uploaded - file
|
// File - BinaryData,String - File to be uploaded - file
|
||||||
// Description - Map Of KeyAndValue - See GetFileDescription - props - JSON description or path to .json
|
// Description - Map Of KeyAndValue - See GetFileDescription - props - JSON description or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function UploadFile(Val Token, Val File, Val Description) Export
|
Function UploadFile(Val Token, Val File, Val Description) Export
|
||||||
|
|
||||||
Return FileManagement(Token, File, Description);
|
Return FileManagement(Token, File, Description);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create folder
|
// Create folder
|
||||||
// Creates an empty directory on the drive
|
// Creates an empty directory on the drive
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Name - String - Folder name - title
|
// Name - String - Folder name - title
|
||||||
// Parent - String - Parent - catalog
|
// Parent - String - Parent - catalog
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateFolder(Val Token, Val Name, Val Parent = "") Export
|
Function CreateFolder(Val Token, Val Name, Val Parent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetLine(Parent);
|
OPI_TypeConversion.GetLine(Parent);
|
||||||
|
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
Description.Insert("MIME" , "application/vnd.google-apps.folder");
|
Description.Insert("MIME" , "application/vnd.google-apps.folder");
|
||||||
Description.Insert("Name" , Name);
|
Description.Insert("Name" , Name);
|
||||||
Description.Insert("Description", "");
|
Description.Insert("Description", "");
|
||||||
Description.Insert("Parent", ?(ValueIsFilled(Parent), Parent, "root"));
|
Description.Insert("Parent" , ?(ValueIsFilled(Parent), Parent, "root"));
|
||||||
|
|
||||||
Return FileManagement(Token, , Description);
|
Return FileManagement(Token, , Description);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Download file
|
// Download file
|
||||||
// Gets file by ID
|
// Gets file by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - File identifier - object
|
// Identifier - String - File identifier - object
|
||||||
// SavePath - String - File save path - out
|
// SavePath - String - File save path - out
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
||||||
Function DownloadFile(Val Token, Val Identifier, Val SavePath = "") Export
|
Function DownloadFile(Val Token, Val Identifier, Val SavePath = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
||||||
|
|
||||||
Parameters = New Map;
|
Parameters = New Map;
|
||||||
Parameters.Insert("alt", "media");
|
Parameters.Insert("alt", "media");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters , Headers, SavePath);
|
Response = OPI_Tools.Get(URL, Parameters , Headers, SavePath);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Copy object
|
// Copy object
|
||||||
// Copies file or directory
|
// Copies file or directory
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Object identifier - object
|
// Identifier - String - Object identifier - object
|
||||||
// NewName - String - New object name - title
|
// NewName - String - New object name - title
|
||||||
// NewParent - String - New parent directory - catalog
|
// NewParent - String - New parent directory - catalog
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CopyObject(Val Token, Val Identifier, Val NewName = "", Val NewParent = "") Export
|
Function CopyObject(Val Token, Val Identifier, Val NewName = "", Val NewParent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(NewName);
|
OPI_TypeConversion.GetLine(NewName);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
OPI_TypeConversion.GetLine(NewParent);
|
OPI_TypeConversion.GetLine(NewParent);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/copy";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/copy";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(NewName) Then
|
If ValueIsFilled(NewName) Then
|
||||||
Parameters.Insert("name", NewName);
|
Parameters.Insert("name", NewName);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(NewParent) Then
|
If ValueIsFilled(NewParent) Then
|
||||||
|
|
||||||
ArrayOfParents = New Array;
|
ArrayOfParents = New Array;
|
||||||
ArrayOfParents.Add(NewParent);
|
ArrayOfParents.Add(NewParent);
|
||||||
Parameters.Insert("parents", ArrayOfParents);
|
Parameters.Insert("parents", ArrayOfParents);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters , Headers, True);
|
Response = OPI_Tools.Post(URL, Parameters , Headers, True);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Update file
|
// Update file
|
||||||
// Updates file binary data
|
// Updates file binary data
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the object to update - object
|
// Identifier - String - Identifier of the object to update - object
|
||||||
// File - BinaryData,String - File source for update - file
|
// File - BinaryData,String - File source for update - file
|
||||||
// NewName - String - New file name (if necessary) - title
|
// NewName - String - New file name (if necessary) - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function UpdateFile(Val Token, Val Identifier, Val File, Val NewName = "") Export
|
Function UpdateFile(Val Token, Val Identifier, Val File, Val NewName = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
OPI_TypeConversion.GetLine(NewName);
|
OPI_TypeConversion.GetLine(NewName);
|
||||||
OPI_TypeConversion.GetBinaryData(File);
|
OPI_TypeConversion.GetBinaryData(File);
|
||||||
|
|
||||||
If ValueIsFilled(NewName) Then
|
If ValueIsFilled(NewName) Then
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
Description.Insert("Name", NewName);
|
Description.Insert("Name", NewName);
|
||||||
Else
|
Else
|
||||||
Description = "";
|
Description = "";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return FileManagement(Token, File, Description, Identifier);
|
Return FileManagement(Token, File, Description, Identifier);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete object
|
// Delete object
|
||||||
// Deletes file or directory by ID
|
// Deletes file or directory by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the object to delete - object
|
// Identifier - String - Identifier of the object to delete - object
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteObject(Val Token, Val Identifier) Export
|
Function DeleteObject(Val Token, Val Identifier) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get file description !NOCLI
|
// Get file description !NOCLI
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - File description
|
// Map Of KeyAndValue - File description
|
||||||
Function GetFileDescription() Export
|
Function GetFileDescription() Export
|
||||||
|
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
Description.Insert("MIME" , "image/jpeg"); // MIME-type uploading file
|
Description.Insert("MIME" , "image/jpeg"); // MIME-type uploading file
|
||||||
Description.Insert("Name" , "New file.jpg"); // File name with extension
|
Description.Insert("Name" , "New file.jpg"); // File name with extension
|
||||||
Description.Insert("Description" , "This is a new file"); // File description
|
Description.Insert("Description" , "This is a new file"); // File description
|
||||||
Description.Insert("Parent" , "root"); // ID directory upload or "root" for upload in root
|
Description.Insert("Parent" , "root"); // ID directory upload or "root" for upload in root
|
||||||
|
|
||||||
Return Description;
|
Return Description;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -322,107 +322,107 @@ EndFunction
|
|||||||
|
|
||||||
// Create comment
|
// Create comment
|
||||||
// Creates a comment for a file or directory
|
// Creates a comment for a file or directory
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the object that needs a comment - object
|
// Identifier - String - Identifier of the object that needs a comment - object
|
||||||
// Comment - String - Comment text - text
|
// Comment - String - Comment text - text
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateComment(Val Token, Val Identifier, Val Comment) Export
|
Function CreateComment(Val Token, Val Identifier, Val Comment) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
OPI_TypeConversion.GetLine(Comment);
|
OPI_TypeConversion.GetLine(Comment);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields=*";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields =*";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("content", Comment);
|
Parameters.Insert("content", Comment);
|
||||||
|
|
||||||
Response = OPI_Tools.POST(URL, Parameters, Headers);
|
Response = OPI_Tools.POST(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get comment
|
// Get comment
|
||||||
// Gets comment by ID
|
// Gets comment by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
||||||
// CommentID - String - Comment identifier - comment
|
// CommentID - String - Comment identifier - comment
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetComment(Val Token, Val ObjectID, Val CommentID) Export
|
Function GetComment(Val Token, Val ObjectID, Val CommentID) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(ObjectID);
|
OPI_TypeConversion.GetLine(ObjectID);
|
||||||
OPI_TypeConversion.GetLine(CommentID);
|
OPI_TypeConversion.GetLine(CommentID);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of comments
|
// Get list of comments
|
||||||
// Gets the list of all comments of the object
|
// Gets the list of all comments of the object
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ObjectID - String - Object identifier - object
|
// ObjectID - String - Object identifier - object
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetCommentList(Val Token, Val ObjectID) Export
|
Function GetCommentList(Val Token, Val ObjectID) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(ObjectID);
|
OPI_TypeConversion.GetLine(ObjectID);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments";
|
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete comment
|
// Delete comment
|
||||||
// Deletes comment by ID
|
// Deletes comment by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
||||||
// CommentID - String - Comment identifier - comment
|
// CommentID - String - Comment identifier - comment
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteComment(Val Token, Val ObjectID, Val CommentID) Export
|
Function DeleteComment(Val Token, Val ObjectID, Val CommentID) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(ObjectID);
|
OPI_TypeConversion.GetLine(ObjectID);
|
||||||
OPI_TypeConversion.GetLine(CommentID);
|
OPI_TypeConversion.GetLine(CommentID);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -433,294 +433,294 @@ EndFunction
|
|||||||
|
|
||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Procedure GetObjectsListRecursively(Val Headers, ArrayOfObjects, Detailed = False, Filter = "", Page = "")
|
Procedure GetObjectsListRecursively(Val Headers, ArrayOfObjects, Detailed = False, Filter = "", Page = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/drive/v3/files";
|
URL = "https://www.googleapis.com/drive/v3/files";
|
||||||
Files = "files";
|
Files = "files";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
If ValueIsFilled(Page) Then
|
If ValueIsFilled(Page) Then
|
||||||
Parameters.Insert("pageToken", Page);
|
Parameters.Insert("pageToken", Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Filter) And TypeOf(Filter) = Type("Array") Then
|
If ValueIsFilled(Filter) And TypeOf(Filter) = Type("Array") Then
|
||||||
FilterString = StrConcat(Filter, " and ");
|
FilterString = StrConcat(Filter, " and ");
|
||||||
Parameters.Insert("q", FilterString);
|
Parameters.Insert("q", FilterString);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Result = OPI_Tools.Get(URL, Parameters, Headers);
|
Result = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Objects = Result[Files];
|
Objects = Result[Files];
|
||||||
Page = Result[NPT];
|
Page = Result[NPT];
|
||||||
|
|
||||||
For Each CurrentObject In Objects Do
|
For Each CurrentObject In Objects Do
|
||||||
ArrayOfObjects.Add(CurrentObject);
|
ArrayOfObjects.Add(CurrentObject);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If Objects.Count() > 0 And ValueIsFilled(Page) Then
|
If Objects.Count() > 0 And ValueIsFilled(Page) Then
|
||||||
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter, Page);
|
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter, Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure BreakDownObjectsInDetail(Val Token, ArrayOfObjects)
|
Procedure BreakDownObjectsInDetail(Val Token, ArrayOfObjects)
|
||||||
|
|
||||||
For Each CurrentObject In ArrayOfObjects Do
|
For Each CurrentObject In ArrayOfObjects Do
|
||||||
|
|
||||||
ArrayOfFiles = New Array;
|
ArrayOfFiles = New Array;
|
||||||
CurrentID = CurrentObject["id"];
|
CurrentID = CurrentObject["id"];
|
||||||
|
|
||||||
Result = GetFilesList(Token, , CurrentID);
|
Result = GetFilesList(Token, , CurrentID);
|
||||||
|
|
||||||
For Each File In Result Do
|
For Each File In Result Do
|
||||||
ArrayOfFiles.Add(File);
|
ArrayOfFiles.Add(File);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
CurrentObject.Insert("files", ArrayOfFiles);
|
CurrentObject.Insert("files", ArrayOfFiles);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure FormFileUploadParameters(Description)
|
Procedure FormFileUploadParameters(Description)
|
||||||
|
|
||||||
FormedDescription = New Map;
|
FormedDescription = New Map;
|
||||||
OPI_Tools.RemoveEmptyCollectionFields(Description);
|
OPI_Tools.RemoveEmptyCollectionFields(Description);
|
||||||
|
|
||||||
FieldMapping = New Map;
|
FieldMapping = New Map;
|
||||||
FieldMapping.Insert("MIME" , "mimeType");
|
FieldMapping.Insert("MIME" , "mimeType");
|
||||||
FieldMapping.Insert("Name" , "name");
|
FieldMapping.Insert("Name" , "name");
|
||||||
FieldMapping.Insert("Description" , "description");
|
FieldMapping.Insert("Description" , "description");
|
||||||
FieldMapping.Insert("Parent" , "parents");
|
FieldMapping.Insert("Parent" , "parents");
|
||||||
FieldMapping.Insert("Extension", "fileExtension");
|
FieldMapping.Insert("Extension" , "fileExtension");
|
||||||
|
|
||||||
For Each Element In Description Do
|
For Each Element In Description Do
|
||||||
|
|
||||||
If Element.Key = "Parent" Then
|
If Element.Key = "Parent" Then
|
||||||
|
|
||||||
CurrentValue = New Array;
|
CurrentValue = New Array;
|
||||||
CurrentValue.Add(Element.Value);
|
CurrentValue.Add(Element.Value);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
CurrentValue = Element.Value;
|
CurrentValue = Element.Value;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
FieldName = FieldMapping.Get(Element.Key);
|
FieldName = FieldMapping.Get(Element.Key);
|
||||||
FormedDescription.Insert(FieldName, CurrentValue);
|
FormedDescription.Insert(FieldName, CurrentValue);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Description = FormedDescription;
|
Description = FormedDescription;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Function FileManagement(Val Token, Val File = "", Val Description = "", Val Identifier = "")
|
Function FileManagement(Val Token, Val File = "", Val Description = "", Val Identifier = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
If ValueIsFilled(Description) Then
|
If ValueIsFilled(Description) Then
|
||||||
OPI_TypeConversion.GetCollection(Description);
|
OPI_TypeConversion.GetCollection(Description);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
MimeType = "mimeType";
|
MimeType = "mimeType";
|
||||||
|
|
||||||
If ValueIsFilled(Identifier) Then
|
If ValueIsFilled(Identifier) Then
|
||||||
MIME = GetObjectInformation(Token, Identifier)[MimeType];
|
MIME = GetObjectInformation(Token, Identifier)[MimeType];
|
||||||
Else
|
Else
|
||||||
MIME = Description["MIME"];
|
MIME = Description["MIME"];
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Not ValueIsFilled(Description) Then
|
If Not ValueIsFilled(Description) Then
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
FormFileUploadParameters(Description);
|
FormFileUploadParameters(Description);
|
||||||
JSONDescription = OPI_Tools.JSONString(Description);
|
JSONDescription = OPI_Tools.JSONString(Description);
|
||||||
|
|
||||||
FileMapping = New Map;
|
FileMapping = New Map;
|
||||||
|
|
||||||
If ValueIsFilled(File) Then
|
If ValueIsFilled(File) Then
|
||||||
|
|
||||||
ChunkSize = 268435457;
|
ChunkSize = 268435457;
|
||||||
Size = OPI_Tools.ConvertDataWithSizeRetrieval(File, ChunkSize);
|
Size = OPI_Tools.ConvertDataWithSizeRetrieval(File, ChunkSize);
|
||||||
|
|
||||||
FileMapping.Insert(File, MIME);
|
FileMapping.Insert(File, MIME);
|
||||||
|
|
||||||
If Size < ChunkSize And TypeOf(File) = Type("BinaryData") Then
|
If Size < ChunkSize And TypeOf(File) = Type("BinaryData") Then
|
||||||
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
||||||
Else
|
Else
|
||||||
Response = UploadLargeFile(Description, FileMapping, Headers, Identifier);
|
Response = UploadLargeFile(Description, FileMapping, Headers, Identifier);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadSmallFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
Function UploadSmallFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
||||||
|
|
||||||
If ValueIsFilled(Identifier) Then
|
If ValueIsFilled(Identifier) Then
|
||||||
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
||||||
Response = OPI_Tools.PatchMultipartRelated(URL, Description, FileMapping, Headers);
|
Response = OPI_Tools.PatchMultipartRelated(URL, Description, FileMapping, Headers);
|
||||||
Else
|
Else
|
||||||
Response = OPI_Tools.PostMultipartRelated(URL, Description, FileMapping, Headers);
|
Response = OPI_Tools.PostMultipartRelated(URL, Description, FileMapping, Headers);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadLargeFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
Function UploadLargeFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
||||||
|
|
||||||
For Each File In FileMapping Do
|
For Each File In FileMapping Do
|
||||||
Binary = File.Key;
|
Binary = File.Key;
|
||||||
Break;
|
Break;
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
||||||
|
|
||||||
If ValueIsFilled(Identifier) Then
|
If ValueIsFilled(Identifier) Then
|
||||||
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
||||||
Response = OPI_Tools.Patch(URL, Description, Headers, True, True);
|
Response = OPI_Tools.Patch(URL, Description, Headers, True, True);
|
||||||
Else
|
Else
|
||||||
Response = OPI_Tools.Post(URL, Description, Headers, True, True);
|
Response = OPI_Tools.Post(URL, Description, Headers, True, True);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
UploadURL = Response.Headers["Location"];
|
UploadURL = Response.Headers["Location"];
|
||||||
|
|
||||||
If Not ValueIsFilled(UploadURL) Then
|
If Not ValueIsFilled(UploadURL) Then
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
UploadResponse = UploadFileInParts(Binary, UploadURL);
|
UploadResponse = UploadFileInParts(Binary, UploadURL);
|
||||||
Response = ?(ValueIsFilled(UploadResponse), UploadResponse, Response);
|
Response = ?(ValueIsFilled(UploadResponse), UploadResponse, Response);
|
||||||
|
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadFileInParts(Val Binary, Val UploadURL)
|
Function UploadFileInParts(Val Binary, Val UploadURL)
|
||||||
|
|
||||||
Response = "";
|
Response = "";
|
||||||
ChunkSize = 268435456;
|
ChunkSize = 268435456;
|
||||||
BytesRead = 0;
|
BytesRead = 0;
|
||||||
CurrentPosition = 0;
|
CurrentPosition = 0;
|
||||||
TotalSize = Binary.Size();
|
TotalSize = Binary.Size();
|
||||||
StrTotalSize = OPI_Tools.NumberToString(TotalSize);
|
StrTotalSize = OPI_Tools.NumberToString(TotalSize);
|
||||||
DataReader = New DataReader(Binary);
|
DataReader = New DataReader(Binary);
|
||||||
SourceStream = DataReader.SourceStream();
|
SourceStream = DataReader.SourceStream();
|
||||||
|
|
||||||
WHile BytesRead < TotalSize Do
|
WHile BytesRead < TotalSize Do
|
||||||
|
|
||||||
BytesRead = SourceStream.CurrentPosition();
|
BytesRead = SourceStream.CurrentPosition();
|
||||||
Result = DataReader.Read(ChunkSize);
|
Result = DataReader.Read(ChunkSize);
|
||||||
CurrentData = Result.GetBinaryData();
|
CurrentData = Result.GetBinaryData();
|
||||||
CurrentSize = CurrentData.Size();
|
CurrentSize = CurrentData.Size();
|
||||||
NextPosition = CurrentPosition + CurrentSize - 1;
|
NextPosition = CurrentPosition + CurrentSize - 1;
|
||||||
|
|
||||||
If Not ValueIsFilled(CurrentData) Then
|
If Not ValueIsFilled(CurrentData) Then
|
||||||
Break;
|
Break;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
StreamHeader = "bytes "
|
StreamHeader = "bytes "
|
||||||
+ OPI_Tools.NumberToString(CurrentPosition)
|
+ OPI_Tools.NumberToString(CurrentPosition)
|
||||||
+ "-"
|
+ "-"
|
||||||
+ OPI_Tools.NumberToString(NextPosition)
|
+ OPI_Tools.NumberToString(NextPosition)
|
||||||
+ "/"
|
+ "/"
|
||||||
+ StrTotalSize;
|
+ StrTotalSize;
|
||||||
|
|
||||||
AdditionalHeaders = New Map;
|
AdditionalHeaders = New Map;
|
||||||
AdditionalHeaders.Insert("Content-Length", OPI_Tools.NumberToString(CurrentSize));
|
AdditionalHeaders.Insert("Content-Length", OPI_Tools.NumberToString(CurrentSize));
|
||||||
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
||||||
AdditionalHeaders.Insert("Content-Type" , "application/octet-stream");
|
AdditionalHeaders.Insert("Content-Type" , "application/octet-stream");
|
||||||
|
|
||||||
Response = OPI_Tools.Put(UploadURL, CurrentData, AdditionalHeaders, False, True);
|
Response = OPI_Tools.Put(UploadURL, CurrentData, AdditionalHeaders, False, True);
|
||||||
|
|
||||||
CheckResult = CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition);
|
CheckResult = CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition);
|
||||||
|
|
||||||
If ValueIsFilled(CheckResult) Then
|
If ValueIsFilled(CheckResult) Then
|
||||||
Return CheckResult;
|
Return CheckResult;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
KBytes = 1024;
|
KBytes = 1024;
|
||||||
MByte = KBytes * KBytes;
|
MByte = KBytes * KBytes;
|
||||||
Message(OPI_Tools.ProgressInformation(CurrentPosition, TotalSize, "MB", MByte));
|
Message(OPI_Tools.ProgressInformation(CurrentPosition, TotalSize, "MB", MByte));
|
||||||
|
|
||||||
RunGarbageCollection();
|
RunGarbageCollection();
|
||||||
FreeObject(CurrentData);
|
FreeObject(CurrentData);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition)
|
Function CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition)
|
||||||
|
|
||||||
StartOfErrorCodes = 400;
|
StartOfErrorCodes = 400;
|
||||||
EndOfFailureCodes = 600;
|
EndOfFailureCodes = 600;
|
||||||
StartOfSuccessCodes = 200;
|
StartOfSuccessCodes = 200;
|
||||||
EndOfSuccessCodes = 300;
|
EndOfSuccessCodes = 300;
|
||||||
Redirection = 308;
|
Redirection = 308;
|
||||||
|
|
||||||
If Response.StatusCode >= StartOfErrorCodes And Response.StatusCode < EndOfFailureCodes Then
|
If Response.StatusCode >= StartOfErrorCodes And Response.StatusCode < EndOfFailureCodes Then
|
||||||
|
|
||||||
StreamHeader = "bytes */" + StrTotalSize;
|
StreamHeader = "bytes */" + StrTotalSize;
|
||||||
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
||||||
|
|
||||||
CheckResponse = OPI_Tools.Put(UploadURL, "", AdditionalHeaders, False, True);
|
CheckResponse = OPI_Tools.Put(UploadURL, "", AdditionalHeaders, False, True);
|
||||||
|
|
||||||
If CheckResponse.StatusCode >= StartOfSuccessCodes And CheckResponse.StatusCode < EndOfSuccessCodes Then
|
If CheckResponse.StatusCode >= StartOfSuccessCodes And CheckResponse.StatusCode < EndOfSuccessCodes Then
|
||||||
|
|
||||||
OPI_Tools.ProcessResponse(CheckResponse);
|
OPI_Tools.ProcessResponse(CheckResponse);
|
||||||
Return CheckResponse;
|
Return CheckResponse;
|
||||||
|
|
||||||
ElsIf CheckResponse.StatusCode = Redirection Then
|
ElsIf CheckResponse.StatusCode = Redirection Then
|
||||||
|
|
||||||
UploadedData = Response.Headers["Range"];
|
UploadedData = Response.Headers["Range"];
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
UploadedData = Response.Headers["Range"];
|
UploadedData = Response.Headers["Range"];
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Not ValueIsFilled(UploadedData) Then
|
If Not ValueIsFilled(UploadedData) Then
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
UploadedData = StrReplace(UploadedData, "bytes=", "");
|
UploadedData = StrReplace(UploadedData, "bytes =", "");
|
||||||
ArrayOfInformation = StrSplit(UploadedData, "-", False);
|
ArrayOfInformation = StrSplit(UploadedData, "-", False);
|
||||||
PartsRequired = 2;
|
PartsRequired = 2;
|
||||||
|
|
||||||
If Not ArrayOfInformation.Count() = PartsRequired Then
|
If Not ArrayOfInformation.Count() = PartsRequired Then
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
CurrentPosition = Number(ArrayOfInformation[1]) + 1;
|
CurrentPosition = Number(ArrayOfInformation[1]) + 1;
|
||||||
|
|
||||||
Return "";
|
Return "";
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -43,90 +43,90 @@
|
|||||||
|
|
||||||
// Create spreadsheet
|
// Create spreadsheet
|
||||||
// Creates a new spreadsheet
|
// Creates a new spreadsheet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Name - String - Name - title
|
// Name - String - Name - title
|
||||||
// ArrayOfSheetNames - Array of String - Array of names to add new sheets to the spreadsheet - sheets
|
// ArrayOfSheetNames - Array of String - Array of names to add new sheets to the spreadsheet - sheets
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateSpreadsheet(Val Token, Val Name, Val ArrayOfSheetNames) Export
|
Function CreateSpreadsheet(Val Token, Val Name, Val ArrayOfSheetNames) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetCollection(ArrayOfSheetNames);
|
OPI_TypeConversion.GetCollection(ArrayOfSheetNames);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
||||||
|
|
||||||
Properties = New Structure("title" , Name);
|
Properties = New Structure("title" , Name);
|
||||||
Sheets = New Array;
|
Sheets = New Array;
|
||||||
|
|
||||||
FillSheetArray(ArrayOfSheetNames, Sheets);
|
FillSheetArray(ArrayOfSheetNames, Sheets);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("properties", Properties, "Collection", Parameters);
|
OPI_Tools.AddField("properties", Properties, "Collection", Parameters);
|
||||||
OPI_Tools.AddField("sheets" , Sheets , "Collection", Parameters);
|
OPI_Tools.AddField("sheets" , Sheets , "Collection", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get spreadsheet
|
// Get spreadsheet
|
||||||
// Gets information about the spreadsheet by ID
|
// Gets information about the spreadsheet by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Spreadsheet identifier - spreadsheet
|
// Identifier - String - Spreadsheet identifier - spreadsheet
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetSpreadsheet(Val Token, Val Identifier) Export
|
Function GetSpreadsheet(Val Token, Val Identifier) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Identifier;
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Identifier;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Change spreadsheet name
|
// Change spreadsheet name
|
||||||
// Changes the name of the existing spreadsheet
|
// Changes the name of the existing spreadsheet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditSpreadsheetTitle(Val Token, Val Spreadsheet, Val Name) Export
|
Function EditSpreadsheetTitle(Val Token, Val Spreadsheet, Val Name) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
||||||
|
|
||||||
Change = New Structure("title", Name);
|
Change = New Structure("title", Name);
|
||||||
ChangeRequest = New Structure("properties,fields", Change, "title");
|
ChangeRequest = New Structure("properties,fields", Change, "title");
|
||||||
Request = New Structure("updateSpreadsheetProperties", ChangeRequest);
|
Request = New Structure("updateSpreadsheetProperties", ChangeRequest);
|
||||||
|
|
||||||
ArrayOfRequests = New Array;
|
ArrayOfRequests = New Array;
|
||||||
ArrayOfRequests.Add(Request);
|
ArrayOfRequests.Add(Request);
|
||||||
|
|
||||||
Parameters = New Structure("requests", ArrayOfRequests);
|
Parameters = New Structure("requests", ArrayOfRequests);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -135,95 +135,95 @@ EndFunction
|
|||||||
|
|
||||||
// Add sheet
|
// Add sheet
|
||||||
// Adds a new sheet to the spreadsheet
|
// Adds a new sheet to the spreadsheet
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
||||||
// Name - String - NewSheetName - title
|
// Name - String - NewSheetName - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function AddSheet(Val Token, Val Spreadsheet, Val Name) Export
|
Function AddSheet(Val Token, Val Spreadsheet, Val Name) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
||||||
Sheet = CreateSheet(Name);
|
Sheet = CreateSheet(Name);
|
||||||
|
|
||||||
Requests = New Array;
|
Requests = New Array;
|
||||||
Change = New Structure("addSheet", Sheet);
|
Change = New Structure("addSheet", Sheet);
|
||||||
Requests.Add(Change);
|
Requests.Add(Change);
|
||||||
|
|
||||||
Parameters = New Structure("requests", Requests);
|
Parameters = New Structure("requests", Requests);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete sheet
|
// Delete sheet
|
||||||
// Deletes a sheet from the spreadsheet
|
// Deletes a sheet from the spreadsheet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
||||||
// Sheet - String - IdentifierOfSheetToDelete - sheet
|
// Sheet - String - IdentifierOfSheetToDelete - sheet
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteSheet(Val Token, Val Spreadsheet, Val Sheet) Export
|
Function DeleteSheet(Val Token, Val Spreadsheet, Val Sheet) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
||||||
|
|
||||||
Requests = New Array;
|
Requests = New Array;
|
||||||
Sheet = New Structure("sheetId" , Sheet);
|
Sheet = New Structure("sheetId" , Sheet);
|
||||||
Change = New Structure("deleteSheet", Sheet);
|
Change = New Structure("deleteSheet", Sheet);
|
||||||
Requests.Add(Change);
|
Requests.Add(Change);
|
||||||
|
|
||||||
Parameters = New Structure("requests", Requests);
|
Parameters = New Structure("requests", Requests);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Copy sheet
|
// Copy sheet
|
||||||
// Copies a sheet from one spreadsheet to another
|
// Copies a sheet from one spreadsheet to another
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// From - String - Source spreadsheet ID - from
|
// From - String - Source spreadsheet ID - from
|
||||||
// Target - String - Destination spreadsheet ID - to
|
// Target - String - Destination spreadsheet ID - to
|
||||||
// Sheet - String - CopiedSheetID - sheet
|
// Sheet - String - CopiedSheetID - sheet
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CopySheet(Val Token, Val From, Val Target, Val Sheet) Export
|
Function CopySheet(Val Token, Val From, Val Target, Val Sheet) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(From);
|
OPI_TypeConversion.GetLine(From);
|
||||||
OPI_TypeConversion.GetLine(Target);
|
OPI_TypeConversion.GetLine(Target);
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
||||||
+ From
|
+ From
|
||||||
+ "/sheets/"
|
+ "/sheets/"
|
||||||
+ Sheet
|
+ Sheet
|
||||||
+ ":copyTo";
|
+ ":copyTo";
|
||||||
|
|
||||||
Parameters = New Structure("destinationSpreadsheetId", Target);
|
Parameters = New Structure("destinationSpreadsheetId", Target);
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -232,14 +232,14 @@ EndFunction
|
|||||||
|
|
||||||
// Set cell values
|
// Set cell values
|
||||||
// Sets sheet cell values
|
// Sets sheet cell values
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// ValueMapping - Map Of KeyAndValue - Fill data where the key is the cell name like A1 - data
|
// ValueMapping - Map Of KeyAndValue - Fill data where the key is the cell name like A1 - data
|
||||||
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
||||||
// MajorDimension - String - Main dimension when filling the array range - dim
|
// MajorDimension - String - Main dimension when filling the array range - dim
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function SetCellValues(Val Token
|
Function SetCellValues(Val Token
|
||||||
@ -247,90 +247,90 @@ Function SetCellValues(Val Token
|
|||||||
, Val ValueMapping
|
, Val ValueMapping
|
||||||
, Val Sheet = ""
|
, Val Sheet = ""
|
||||||
, Val MajorDimension = "COLUMNS") Export
|
, Val MajorDimension = "COLUMNS") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetCollection(ValueMapping);
|
OPI_TypeConversion.GetCollection(ValueMapping);
|
||||||
|
|
||||||
If Not TypeOf(ValueMapping) = Type("Structure")
|
If Not TypeOf(ValueMapping) = Type("Structure")
|
||||||
And Not TypeOf(ValueMapping) = Type("Map") Then
|
And Not TypeOf(ValueMapping) = Type("Map") Then
|
||||||
Return "Failed to convert the structure of values to a collection";
|
Return "Failed to convert the structure of values to a collection";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchUpdate";
|
||||||
DataArray = FormCellDataArray(ValueMapping, MajorDimension, Sheet);
|
DataArray = FormCellDataArray(ValueMapping, MajorDimension, Sheet);
|
||||||
|
|
||||||
Parameters = New Structure("data,valueInputOption", DataArray, "USER_ENTERED");
|
Parameters = New Structure("data,valueInputOption", DataArray, "USER_ENTERED");
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Clear cells
|
// Clear cells
|
||||||
// Clears the value in cells
|
// Clears the value in cells
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// CellsArray - Array of String - Array of cells like A1 to be cleared - cells
|
// CellsArray - Array of String - Array of cells like A1 to be cleared - cells
|
||||||
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function ClearCells(Val Token, Val Spreadsheet, Val CellsArray, Val Sheet = "") Export
|
Function ClearCells(Val Token, Val Spreadsheet, Val CellsArray, Val Sheet = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetCollection(CellsArray);
|
OPI_TypeConversion.GetCollection(CellsArray);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchClear";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchClear";
|
||||||
|
|
||||||
FormCellNameArray(CellsArray, Sheet);
|
FormCellNameArray(CellsArray, Sheet);
|
||||||
|
|
||||||
Parameters = New Structure("ranges", CellsArray);
|
Parameters = New Structure("ranges", CellsArray);
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get cell values
|
// Get cell values
|
||||||
// Gets cell values of the table
|
// Gets cell values of the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// CellsArray - Array of String - Array of A1 type cells to get (whole sheet if not filled) - cells
|
// CellsArray - Array of String - Array of A1 type cells to get (whole sheet if not filled) - cells
|
||||||
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Sheet = "") Export
|
Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Sheet = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchGet";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchGet";
|
||||||
|
|
||||||
If ValueIsFilled(CellsArray) Then
|
If ValueIsFilled(CellsArray) Then
|
||||||
OPI_TypeConversion.GetCollection(CellsArray);
|
OPI_TypeConversion.GetCollection(CellsArray);
|
||||||
FormCellNameArray(CellsArray, Sheet);
|
FormCellNameArray(CellsArray, Sheet);
|
||||||
|
|
||||||
First = True;
|
First = True;
|
||||||
For Each Cell In CellsArray Do
|
For Each Cell In CellsArray Do
|
||||||
Delimiter = ?(First, "?", "&");
|
Delimiter = ?(First, "?", "&");
|
||||||
URL = URL + Delimiter + "ranges=" + Cell;
|
URL = URL + Delimiter + "ranges =" + Cell;
|
||||||
First = False;
|
First = False;
|
||||||
EndDo;
|
EndDo;
|
||||||
Else
|
Else
|
||||||
URL = URL + "?ranges='" + Sheet + "'";
|
URL = URL + "?ranges ='" + Sheet + "'";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -340,75 +340,75 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Procedure FillSheetArray(Val ArrayOfNames, SheetArray)
|
Procedure FillSheetArray(Val ArrayOfNames, SheetArray)
|
||||||
|
|
||||||
For Each SheetName In ArrayOfNames Do
|
For Each SheetName In ArrayOfNames Do
|
||||||
|
|
||||||
Sheet = CreateSheet(SheetName);
|
Sheet = CreateSheet(SheetName);
|
||||||
SheetArray.Add(Sheet);
|
SheetArray.Add(Sheet);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure AddSheetName(Cell, Val Sheet)
|
Procedure AddSheetName(Cell, Val Sheet)
|
||||||
|
|
||||||
If ValueIsFilled(Sheet) Then
|
If ValueIsFilled(Sheet) Then
|
||||||
Cell = "'" + Sheet + "'!" + Cell;
|
Cell = "'" + Sheet + "'!" + Cell;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Function CreateSheet(Val Name)
|
Function CreateSheet(Val Name)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
|
||||||
SheetProperties = New Structure("title" , Name);
|
SheetProperties = New Structure("title" , Name);
|
||||||
Sheet = New Structure("properties", SheetProperties);
|
Sheet = New Structure("properties", SheetProperties);
|
||||||
|
|
||||||
Return Sheet;
|
Return Sheet;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function FormCellDataArray(Val ValueStructure, Val MajorDimension, Val Sheet)
|
Function FormCellDataArray(Val ValueStructure, Val MajorDimension, Val Sheet)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
DataArray = New Array;
|
DataArray = New Array;
|
||||||
|
|
||||||
For Each CellData In ValueStructure Do
|
For Each CellData In ValueStructure Do
|
||||||
|
|
||||||
CurrentValue = CellData.Value;
|
CurrentValue = CellData.Value;
|
||||||
CurrentKey = CellData.Key;
|
CurrentKey = CellData.Key;
|
||||||
|
|
||||||
AddSheetName(CurrentKey, Sheet);
|
AddSheetName(CurrentKey, Sheet);
|
||||||
|
|
||||||
OPI_TypeConversion.GetArray(CurrentValue);
|
OPI_TypeConversion.GetArray(CurrentValue);
|
||||||
|
|
||||||
CurrentData = New Map;
|
CurrentData = New Map;
|
||||||
CurrentArray = New Array;
|
CurrentArray = New Array;
|
||||||
|
|
||||||
CurrentArray.Add(CurrentValue);
|
CurrentArray.Add(CurrentValue);
|
||||||
|
|
||||||
OPI_Tools.AddField("range" , CurrentKey , "String", CurrentData);
|
OPI_Tools.AddField("range" , CurrentKey , "String", CurrentData);
|
||||||
OPI_Tools.AddField("values" , CurrentArray , "Array", CurrentData);
|
OPI_Tools.AddField("values" , CurrentArray , "Array" , CurrentData);
|
||||||
OPI_Tools.AddField("majorDimension", MajorDimension, "String", CurrentData);
|
OPI_Tools.AddField("majorDimension", MajorDimension, "String", CurrentData);
|
||||||
|
|
||||||
DataArray.Add(CurrentData);
|
DataArray.Add(CurrentData);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return DataArray;
|
Return DataArray;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure FormCellNameArray(Val ArrayOfNames, Val Sheet)
|
Procedure FormCellNameArray(Val ArrayOfNames, Val Sheet)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
For N = 0 To ArrayOfNames.UBound() Do
|
For N = 0 To ArrayOfNames.UBound() Do
|
||||||
AddSheetName(ArrayOfNames[N], Sheet);
|
AddSheetName(ArrayOfNames[N], Sheet);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -41,97 +41,97 @@
|
|||||||
|
|
||||||
// Generate code retrieval link
|
// Generate code retrieval link
|
||||||
// Returns URL for browser authorization
|
// Returns URL for browser authorization
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientID - String - Client ID - id
|
// ClientID - String - Client ID - id
|
||||||
// Calendar - Boolean - Calendar methods permission - calendar
|
// Calendar - Boolean - Calendar methods permission - calendar
|
||||||
// Drive - Boolean - Drive methods permission - drive
|
// Drive - Boolean - Drive methods permission - drive
|
||||||
// Sheets - Boolean - Sheets methods permission - sheets
|
// Sheets - Boolean - Sheets methods permission - sheets
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// String - Code retrieval link
|
// String - Code retrieval link
|
||||||
Function FormCodeRetrievalLink(Val ClientID
|
Function FormCodeRetrievalLink(Val ClientID
|
||||||
, Val Calendar = True
|
, Val Calendar = True
|
||||||
, Val Drive = True
|
, Val Drive = True
|
||||||
, Val Sheets = True) Export
|
, Val Sheets = True) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientID);
|
OPI_TypeConversion.GetLine(ClientID);
|
||||||
OPI_TypeConversion.GetBoolean(Calendar);
|
OPI_TypeConversion.GetBoolean(Calendar);
|
||||||
OPI_TypeConversion.GetBoolean(Sheets);
|
OPI_TypeConversion.GetBoolean(Sheets);
|
||||||
OPI_TypeConversion.GetBoolean(Drive);
|
OPI_TypeConversion.GetBoolean(Drive);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/auth";
|
URL = "https://accounts.google.com/o/oauth2/auth";
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("response_type", "code");
|
URLParameters.Insert("response_type", "code");
|
||||||
URLParameters.Insert("client_id" , ClientID);
|
URLParameters.Insert("client_id" , ClientID);
|
||||||
URLParameters.Insert("redirect_uri" , "http://localhost");
|
URLParameters.Insert("redirect_uri" , "http://localhost");
|
||||||
URLParameters.Insert("access_type" , "offline");
|
URLParameters.Insert("access_type" , "offline");
|
||||||
URLParameters.Insert("scope" , GetPermissionsList(Calendar, Drive, Sheets));
|
URLParameters.Insert("scope" , GetPermissionsList(Calendar, Drive, Sheets));
|
||||||
|
|
||||||
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
||||||
|
|
||||||
Return URL;
|
Return URL;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get token by code
|
// Get token by code
|
||||||
// Gets token by code from browser authorization
|
// Gets token by code from browser authorization
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientID - String - Client ID - id
|
// ClientID - String - Client ID - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// Code - String - Code from browser - code
|
// Code - String - Code from browser - code
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetTokenByCode(Val ClientID, Val ClientSecret, Val Code) Export
|
Function GetTokenByCode(Val ClientID, Val ClientSecret, Val Code) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientID);
|
OPI_TypeConversion.GetLine(ClientID);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(Code);
|
OPI_TypeConversion.GetLine(Code);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("grant_type" , "authorization_code");
|
URLParameters.Insert("grant_type" , "authorization_code");
|
||||||
URLParameters.Insert("client_id" , ClientID);
|
URLParameters.Insert("client_id" , ClientID);
|
||||||
URLParameters.Insert("client_secret", ClientSecret);
|
URLParameters.Insert("client_secret", ClientSecret);
|
||||||
URLParameters.Insert("redirect_uri" , "http://localhost");
|
URLParameters.Insert("redirect_uri" , "http://localhost");
|
||||||
URLParameters.Insert("code" , Code);
|
URLParameters.Insert("code" , Code);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Refresh token
|
// Refresh token
|
||||||
// Updates token by Refresh token
|
// Updates token by Refresh token
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientID - String - Client ID - id
|
// ClientID - String - Client ID - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// RefreshToken - String - Refresh token - refresh
|
// RefreshToken - String - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function RefreshToken(Val ClientID, Val ClientSecret, Val RefreshToken) Export
|
Function RefreshToken(Val ClientID, Val ClientSecret, Val RefreshToken) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientID);
|
OPI_TypeConversion.GetLine(ClientID);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(RefreshToken);
|
OPI_TypeConversion.GetLine(RefreshToken);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("grant_type" , "refresh_token");
|
URLParameters.Insert("grant_type" , "refresh_token");
|
||||||
URLParameters.Insert("client_id" , ClientID);
|
URLParameters.Insert("client_id" , ClientID);
|
||||||
URLParameters.Insert("client_secret", ClientSecret);
|
URLParameters.Insert("client_secret", ClientSecret);
|
||||||
URLParameters.Insert("refresh_token", RefreshToken);
|
URLParameters.Insert("refresh_token", RefreshToken);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -141,14 +141,14 @@ EndFunction
|
|||||||
#Region Internal
|
#Region Internal
|
||||||
|
|
||||||
Function GetAuthorizationHeader(Val Token) Export
|
Function GetAuthorizationHeader(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = New Map;
|
Headers = New Map;
|
||||||
Headers.Insert("Authorization", "Bearer " + Token);
|
Headers.Insert("Authorization", "Bearer " + Token);
|
||||||
|
|
||||||
Return Headers;
|
Return Headers;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -156,23 +156,23 @@ EndFunction
|
|||||||
#Region ServiceProceduresAndFunctions
|
#Region ServiceProceduresAndFunctions
|
||||||
|
|
||||||
Function GetPermissionsList(Calendar, Drive, Sheets)
|
Function GetPermissionsList(Calendar, Drive, Sheets)
|
||||||
|
|
||||||
PermissionsArray = New Array;
|
PermissionsArray = New Array;
|
||||||
|
|
||||||
If Calendar Then
|
If Calendar Then
|
||||||
PermissionsArray.Add("https://www.googleapis.com/auth/calendar");
|
PermissionsArray.Add("https://www.googleapis.com/auth/calendar");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Drive Then
|
If Drive Then
|
||||||
PermissionsArray.Add("https://www.googleapis.com/auth/drive");
|
PermissionsArray.Add("https://www.googleapis.com/auth/drive");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Sheets Then
|
If Sheets Then
|
||||||
PermissionsArray.Add("https://www.googleapis.com/auth/spreadsheets");
|
PermissionsArray.Add("https://www.googleapis.com/auth/spreadsheets");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return StrConcat(PermissionsArray, " ");
|
Return StrConcat(PermissionsArray, " ");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -48,83 +48,83 @@
|
|||||||
|
|
||||||
// Get authorization link
|
// Get authorization link
|
||||||
// Forms a link for authorization via the browser
|
// Forms a link for authorization via the browser
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// String - URL for browser transition
|
// String - URL for browser transition
|
||||||
Function GetAuthorizationLink(Parameters = "") Export
|
Function GetAuthorizationLink(Parameters = "") Export
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
|
|
||||||
URLParameters.Insert("response_type" , "code");
|
URLParameters.Insert("response_type" , "code");
|
||||||
URLParameters.Insert("client_id" , Parameters_["client_id"]);
|
URLParameters.Insert("client_id" , Parameters_["client_id"]);
|
||||||
URLParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
URLParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
||||||
URLParameters.Insert("scope" , Parameters_["scope"]);
|
URLParameters.Insert("scope" , Parameters_["scope"]);
|
||||||
URLParameters.Insert("state" , "state");
|
URLParameters.Insert("state" , "state");
|
||||||
URLParameters.Insert("code_challenge" , "challenge");
|
URLParameters.Insert("code_challenge" , "challenge");
|
||||||
URLParameters.Insert("code_challenge_method", "plain");
|
URLParameters.Insert("code_challenge_method", "plain");
|
||||||
|
|
||||||
URLParameters = OPI_Tools.RequestParametersToString(URLParameters);
|
URLParameters = OPI_Tools.RequestParametersToString(URLParameters);
|
||||||
Link = "https://twitter.com/i/oauth2/authorize" + URLParameters;
|
Link = "https://twitter.com/i/oauth2/authorize" + URLParameters;
|
||||||
|
|
||||||
Return Link;
|
Return Link;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get token
|
// Get token
|
||||||
// Gets the token by the code received when authorizing using the link from GetAuthorizationLink
|
// Gets the token by the code received when authorizing using the link from GetAuthorizationLink
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Code - String - Code obtained from authorization See GetAuthorizationLink - code
|
// Code - String - Code obtained from authorization See GetAuthorizationLink - code
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function GetToken(Val Code, Val Parameters = "") Export
|
Function GetToken(Val Code, Val Parameters = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Code);
|
OPI_TypeConversion.GetLine(Code);
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
|
|
||||||
RequestParameters = New Structure;
|
RequestParameters = New Structure;
|
||||||
RequestParameters.Insert("code" , Code);
|
RequestParameters.Insert("code" , Code);
|
||||||
RequestParameters.Insert("grant_type" , "authorization_code");
|
RequestParameters.Insert("grant_type" , "authorization_code");
|
||||||
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
||||||
RequestParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
RequestParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
||||||
RequestParameters.Insert("code_verifier", "challenge");
|
RequestParameters.Insert("code_verifier", "challenge");
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, RequestParameters, , False);
|
, RequestParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Refresh token
|
// Refresh token
|
||||||
// Updates the v2 token using the refresh_token
|
// Updates the v2 token using the refresh_token
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function RefreshToken(Val Parameters = "") Export
|
Function RefreshToken(Val Parameters = "") Export
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
Refresh = "refresh_token";
|
Refresh = "refresh_token";
|
||||||
|
|
||||||
RequestParameters = New Structure;
|
RequestParameters = New Structure;
|
||||||
RequestParameters.Insert(Refresh , Parameters_[Refresh]);
|
RequestParameters.Insert(Refresh , Parameters_[Refresh]);
|
||||||
RequestParameters.Insert("grant_type" , Refresh);
|
RequestParameters.Insert("grant_type" , Refresh);
|
||||||
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, RequestParameters, , False);
|
, RequestParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -133,23 +133,23 @@ EndFunction
|
|||||||
// Method for insertion into an http service, the address of which is specified in redirect_uri
|
// Method for insertion into an http service, the address of which is specified in redirect_uri
|
||||||
// Calls the token acquisition method, as for obtaining a token from the code received
|
// Calls the token acquisition method, as for obtaining a token from the code received
|
||||||
// on redirect_uri after authorization via the browser is only 30 seconds
|
// on redirect_uri after authorization via the browser is only 30 seconds
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Request - HTTPServiceRequest - Request coming to the http service
|
// Request - HTTPServiceRequest - Request coming to the http service
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// HTTPResponse, Arbitrary, BinaryData - Result of reading the JSON response from the server
|
// HTTPResponse, Arbitrary, BinaryData - Result of reading the JSON response from the server
|
||||||
Function HandleIncomingRequestAfterAuthorization(Request) Export
|
Function HandleIncomingRequestAfterAuthorization(Request) Export
|
||||||
|
|
||||||
Code = Request.RequestParameters["code"];
|
Code = Request.RequestParameters["code"];
|
||||||
TokenResponse = GetToken(Code);
|
TokenResponse = GetToken(Code);
|
||||||
|
|
||||||
// BSLLS:CommentedCode-off
|
// BSLLS:CommentedCode-off
|
||||||
// Preferred token storage
|
// Preferred token storage
|
||||||
// Constants.TwitterRefresh.Set(ResponseToken["refresh_token"]);
|
// Constants.TwitterRefresh.Set(ResponseToken["refresh_token"]);
|
||||||
// Constants.TwitterToken.Set(ResponseToken["access_token"]);
|
// Constants.TwitterToken.Set(ResponseToken["access_token"]);
|
||||||
// BSLLS:CommentedCode-on
|
// BSLLS:CommentedCode-on
|
||||||
|
|
||||||
Return TokenResponse;
|
Return TokenResponse;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -160,189 +160,189 @@ EndFunction
|
|||||||
|
|
||||||
// !NOCLI
|
// !NOCLI
|
||||||
// Create custom tweet
|
// Create custom tweet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text
|
// Text - String - Tweet text
|
||||||
// MediaArray - Array of String, BinaryData - Array of binary data or file paths
|
// MediaArray - Array of String, BinaryData - Array of binary data or file paths
|
||||||
// PollOptionsArray - Array of String - Array of poll options, if necessary
|
// PollOptionsArray - Array of String - Array of poll options, if necessary
|
||||||
// PollDuration - String, Number - Poll duration if necessary (poll without duration is not created)
|
// PollDuration - String, Number - Poll duration if necessary (poll without duration is not created)
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateCustomTweet(Val Text = ""
|
Function CreateCustomTweet(Val Text = ""
|
||||||
, Val MediaArray = ""
|
, Val MediaArray = ""
|
||||||
, Val PollOptionsArray = ""
|
, Val PollOptionsArray = ""
|
||||||
, Val PollDuration = ""
|
, Val PollDuration = ""
|
||||||
, Val Parameters = "") Export
|
, Val Parameters = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Text);
|
OPI_TypeConversion.GetLine(Text);
|
||||||
OPI_TypeConversion.GetLine(PollDuration);
|
OPI_TypeConversion.GetLine(PollDuration);
|
||||||
|
|
||||||
If ValueIsFilled(MediaArray) Then
|
If ValueIsFilled(MediaArray) Then
|
||||||
OPI_TypeConversion.GetCollection(MediaArray);
|
OPI_TypeConversion.GetCollection(MediaArray);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(PollOptionsArray) Then
|
If ValueIsFilled(PollOptionsArray) Then
|
||||||
OPI_TypeConversion.GetCollection(PollOptionsArray);
|
OPI_TypeConversion.GetCollection(PollOptionsArray);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
URL = "https://api.twitter.com/2/tweets";
|
URL = "https://api.twitter.com/2/tweets";
|
||||||
Array = "Array";
|
Array = "Array";
|
||||||
Fields = New Map;
|
Fields = New Map;
|
||||||
|
|
||||||
If ValueIsFilled(Text) Then
|
If ValueIsFilled(Text) Then
|
||||||
Fields.Insert("text", Text);
|
Fields.Insert("text", Text);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(PollOptionsArray) = Type(Array) And ValueIsFilled(PollDuration) Then
|
If TypeOf(PollOptionsArray) = Type(Array) And ValueIsFilled(PollDuration) Then
|
||||||
|
|
||||||
PollDuration = Number(PollDuration);
|
PollDuration = Number(PollDuration);
|
||||||
|
|
||||||
If PollOptionsArray.Count() > 0 Then
|
If PollOptionsArray.Count() > 0 Then
|
||||||
|
|
||||||
OptionStructure = New Structure("options,duration_minutes", PollOptionsArray, PollDuration);
|
OptionStructure = New Structure("options,duration_minutes", PollOptionsArray, PollDuration);
|
||||||
Fields.Insert("poll", OptionStructure);
|
Fields.Insert("poll", OptionStructure);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(MediaArray) = Type(Array) Then
|
If TypeOf(MediaArray) = Type(Array) Then
|
||||||
If MediaArray.Count() > 0 Then
|
If MediaArray.Count() > 0 Then
|
||||||
Fields.Insert("media", New Structure("media_ids", MediaArray));
|
Fields.Insert("media", New Structure("media_ids", MediaArray));
|
||||||
EndIf;
|
EndIf;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV2(Parameters_);
|
Authorization = CreateAuthorizationHeaderV2(Parameters_);
|
||||||
Response = OPI_Tools.Post(URL, Fields, Authorization);
|
Response = OPI_Tools.Post(URL, Fields, Authorization);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create text tweet
|
// Create text tweet
|
||||||
// Creates a tweet without attachments
|
// Creates a tweet without attachments
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateTextTweet(Val Text, Val Parameters = "") Export
|
Function CreateTextTweet(Val Text, Val Parameters = "") Export
|
||||||
Return CreateCustomTweet(Text, , , , Parameters);
|
Return CreateCustomTweet(Text, , , , Parameters);
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create image tweet
|
// Create image tweet
|
||||||
// Creates a tweet with an image attachment
|
// Creates a tweet with an image attachment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// ImageArray - Array of String, BinaryData - Image files array - pictures
|
// ImageArray - Array of String, BinaryData - Image files array - pictures
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateImageTweet(Val Text, Val ImageArray, Val Parameters = "") Export
|
Function CreateImageTweet(Val Text, Val ImageArray, Val Parameters = "") Export
|
||||||
|
|
||||||
MediaArray = UploadAttachmentsArray(ImageArray, "photo", Parameters);
|
MediaArray = UploadAttachmentsArray(ImageArray, "photo", Parameters);
|
||||||
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create gif tweet
|
// Create gif tweet
|
||||||
// Creates a tweet with a gif attachment
|
// Creates a tweet with a gif attachment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// GifsArray - Array of String, BinaryData - Gif files array - gifs
|
// GifsArray - Array of String, BinaryData - Gif files array - gifs
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateGifTweet(Val Text, Val GifsArray, Val Parameters = "") Export
|
Function CreateGifTweet(Val Text, Val GifsArray, Val Parameters = "") Export
|
||||||
|
|
||||||
MediaArray = UploadAttachmentsArray(GifsArray, "animated_gif", Parameters);
|
MediaArray = UploadAttachmentsArray(GifsArray, "animated_gif", Parameters);
|
||||||
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create video tweet
|
// Create video tweet
|
||||||
// Creates a tweet with a video attachment
|
// Creates a tweet with a video attachment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// VideosArray - Array of String, BinaryData - Video files array - videos
|
// VideosArray - Array of String, BinaryData - Video files array - videos
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateVideoTweet(Val Text, Val VideosArray, Val Parameters = "") Export
|
Function CreateVideoTweet(Val Text, Val VideosArray, Val Parameters = "") Export
|
||||||
|
|
||||||
MediaArray = UploadAttachmentsArray(VideosArray, "video", Parameters);
|
MediaArray = UploadAttachmentsArray(VideosArray, "video", Parameters);
|
||||||
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create poll tweet
|
// Create poll tweet
|
||||||
// Creates a tweet with a poll
|
// Creates a tweet with a poll
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// OptionArray - Array of String - Poll options array - options
|
// OptionArray - Array of String - Poll options array - options
|
||||||
// Duration - String, Number - Poll duration - duration
|
// Duration - String, Number - Poll duration - duration
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreatePollTweet(Val Text, Val OptionArray, Val Duration, Val Parameters = "") Export
|
Function CreatePollTweet(Val Text, Val OptionArray, Val Duration, Val Parameters = "") Export
|
||||||
|
|
||||||
Return CreateCustomTweet(Text, , OptionArray, Duration, Parameters);
|
Return CreateCustomTweet(Text, , OptionArray, Duration, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload attachments array !NOCLI
|
// Upload attachments array !NOCLI
|
||||||
// Uploads files to the server and returns their IDs
|
// Uploads files to the server and returns their IDs
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ArrayOfFiles - Array of String, BinaryData - Files array
|
// ArrayOfFiles - Array of String, BinaryData - Files array
|
||||||
// AttachmentsType - String - Attachments type
|
// AttachmentsType - String - Attachments type
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Array Of String - Media ID array
|
// Array Of String - Media ID array
|
||||||
Function UploadAttachmentsArray(Val ArrayOfFiles, Val AttachmentsType, Val Parameters = "") Export
|
Function UploadAttachmentsArray(Val ArrayOfFiles, Val AttachmentsType, Val Parameters = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(AttachmentsType);
|
OPI_TypeConversion.GetLine(AttachmentsType);
|
||||||
OPI_TypeConversion.GetCollection(ArrayOfFiles);
|
OPI_TypeConversion.GetCollection(ArrayOfFiles);
|
||||||
|
|
||||||
MediaArray = New Array;
|
MediaArray = New Array;
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
|
|
||||||
If ValueIsFilled(ArrayOfFiles) Then
|
If ValueIsFilled(ArrayOfFiles) Then
|
||||||
|
|
||||||
For Each SendingFile In ArrayOfFiles Do
|
For Each SendingFile In ArrayOfFiles Do
|
||||||
|
|
||||||
OPI_TypeConversion.GetBinaryData(SendingFile);
|
OPI_TypeConversion.GetBinaryData(SendingFile);
|
||||||
|
|
||||||
Response = UploadMediaFile(SendingFile, AttachmentsType, Parameters_);
|
Response = UploadMediaFile(SendingFile, AttachmentsType, Parameters_);
|
||||||
MediaID = Response[MIS];
|
MediaID = Response[MIS];
|
||||||
|
|
||||||
If Not ValueIsFilled(MediaID) Then
|
If Not ValueIsFilled(MediaID) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
MediaArray.Add(MediaID);
|
MediaArray.Add(MediaID);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return MediaArray;
|
Return MediaArray;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -351,195 +351,195 @@ EndFunction
|
|||||||
|
|
||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function UploadMediaFile(Val File, Val Type, Val Parameters)
|
Function UploadMediaFile(Val File, Val Type, Val Parameters)
|
||||||
|
|
||||||
OPI_TypeConversion.GetBinaryData(File);
|
OPI_TypeConversion.GetBinaryData(File);
|
||||||
|
|
||||||
RequestType = "POST";
|
RequestType = "POST";
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
||||||
|
|
||||||
If Type = "photo" Then
|
If Type = "photo" Then
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert("media_data" , Base64String(File));
|
Fields.Insert("media_data" , Base64String(File));
|
||||||
Fields.Insert("media_category", Type);
|
Fields.Insert("media_category", Type);
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters_, Fields, RequestType, URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters_, Fields, RequestType, URL);
|
||||||
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Response = UploadMediaInParts(File, Type, RequestType, URL, Parameters_);
|
Response = UploadMediaInParts(File, Type, RequestType, URL, Parameters_);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadMediaInParts(Val File, Val Type, Val RequestType, Val URL, Parameters)
|
Function UploadMediaInParts(Val File, Val Type, Val RequestType, Val URL, Parameters)
|
||||||
|
|
||||||
Unit = 1024;
|
Unit = 1024;
|
||||||
Count = 4;
|
Count = 4;
|
||||||
MediaKey = "media_key";
|
MediaKey = "media_key";
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Size = File.Size();
|
Size = File.Size();
|
||||||
|
|
||||||
MIMETypeMapping = New Map;
|
MIMETypeMapping = New Map;
|
||||||
MIMETypeMapping.Insert("photo" , "image/jpeg");
|
MIMETypeMapping.Insert("photo" , "image/jpeg");
|
||||||
MIMETypeMapping.Insert("video" , "video/mp4");
|
MIMETypeMapping.Insert("video" , "video/mp4");
|
||||||
MIMETypeMapping.Insert("animated_gif", "image/gif");
|
MIMETypeMapping.Insert("animated_gif", "image/gif");
|
||||||
|
|
||||||
ChunkSize = Count * Unit * Unit;
|
ChunkSize = Count * Unit * Unit;
|
||||||
ArrayReading = SplitBinaryData(File, ChunkSize);
|
ArrayReading = SplitBinaryData(File, ChunkSize);
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert(Command , "INIT");
|
Fields.Insert(Command , "INIT");
|
||||||
Fields.Insert("total_bytes" , OPI_Tools.NumberToString(Size));
|
Fields.Insert("total_bytes" , OPI_Tools.NumberToString(Size));
|
||||||
Fields.Insert("media_type" , MIMETypeMapping.Get(Type));
|
Fields.Insert("media_type" , MIMETypeMapping.Get(Type));
|
||||||
Fields.Insert("media_category" , Type);
|
Fields.Insert("media_category" , Type);
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, RequestType, URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, RequestType, URL);
|
||||||
|
|
||||||
InitializationResponse = OPI_Tools.Post(URL, Fields, Authorization, False);
|
InitializationResponse = OPI_Tools.Post(URL, Fields, Authorization, False);
|
||||||
InitializationKey = InitializationResponse[MediaKey];
|
InitializationKey = InitializationResponse[MediaKey];
|
||||||
InitializationID = InitializationResponse[MIS];
|
InitializationID = InitializationResponse[MIS];
|
||||||
|
|
||||||
If Not ValueIsFilled(InitializationKey) Or Not ValueIsFilled(InitializationID) Then
|
If Not ValueIsFilled(InitializationKey) Or Not ValueIsFilled(InitializationID) Then
|
||||||
Return InitializationResponse;
|
Return InitializationResponse;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Counter = 0;
|
Counter = 0;
|
||||||
|
|
||||||
For Each Part In ArrayReading Do
|
For Each Part In ArrayReading Do
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert(Command , "APPEND");
|
Fields.Insert(Command , "APPEND");
|
||||||
Fields.Insert("media_key" , InitializationKey);
|
Fields.Insert("media_key" , InitializationKey);
|
||||||
Fields.Insert("segment_index" , OPI_Tools.NumberToString(Counter));
|
Fields.Insert("segment_index" , OPI_Tools.NumberToString(Counter));
|
||||||
Fields.Insert("media" , Part);
|
Fields.Insert("media" , Part);
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, New Structure, RequestType, URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, New Structure, RequestType, URL);
|
||||||
|
|
||||||
OPI_Tools.PostMultipart(URL, Fields, , , Authorization);
|
OPI_Tools.PostMultipart(URL, Fields, , , Authorization);
|
||||||
|
|
||||||
Counter = Counter + 1;
|
Counter = Counter + 1;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert(Command , "FINALIZE");
|
Fields.Insert(Command , "FINALIZE");
|
||||||
Fields.Insert("media_id", InitializationID);
|
Fields.Insert("media_id", InitializationID);
|
||||||
|
|
||||||
ProcessingStatus = GetProcessingStatus(Parameters, Fields, URL);
|
ProcessingStatus = GetProcessingStatus(Parameters, Fields, URL);
|
||||||
|
|
||||||
If Not TypeOf(ProcessingStatus) = Type("String") Then
|
If Not TypeOf(ProcessingStatus) = Type("String") Then
|
||||||
Return ProcessingStatus;
|
Return ProcessingStatus;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = WaitForProcessingCompletion(ProcessingStatus, InitializationID, URL, Parameters);
|
Response = WaitForProcessingCompletion(ProcessingStatus, InitializationID, URL, Parameters);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function WaitForProcessingCompletion(Val ProcessingStatus, Val InitializationID, Val URL, Val Parameters)
|
Function WaitForProcessingCompletion(Val ProcessingStatus, Val InitializationID, Val URL, Val Parameters)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
|
|
||||||
Fields.Insert(Command , "STATUS");
|
Fields.Insert(Command , "STATUS");
|
||||||
Fields.Insert("media_id", InitializationID);
|
Fields.Insert("media_id", InitializationID);
|
||||||
|
|
||||||
WHile String(ProcessingStatus) = "pending" Or String(ProcessingStatus) = "in_progress" Do
|
WHile String(ProcessingStatus) = "pending" Or String(ProcessingStatus) = "in_progress" Do
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "GET", URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "GET", URL);
|
||||||
Response = OPI_Tools.Get(URL, Fields, Authorization);
|
Response = OPI_Tools.Get(URL, Fields, Authorization);
|
||||||
Information = Response[ProcessingInfo];
|
Information = Response[ProcessingInfo];
|
||||||
|
|
||||||
If Not ValueIsFilled(Information) Then
|
If Not ValueIsFilled(Information) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
ProcessingStatus = Information["state"];
|
ProcessingStatus = Information["state"];
|
||||||
|
|
||||||
If Not ValueIsFilled(ProcessingStatus) Then
|
If Not ValueIsFilled(ProcessingStatus) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If ProcessingStatus = "failed" Then
|
If ProcessingStatus = "failed" Then
|
||||||
Raise "Twitter could not process the video you uploaded";
|
Raise "Twitter could not process the video you uploaded";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetStandardParameters(Val Parameters = "")
|
Function GetStandardParameters(Val Parameters = "")
|
||||||
|
|
||||||
// The definition of the data required for the work is collected here.
|
// The definition of the data required for the work is collected here.
|
||||||
// For Twitter, this is quite a significant set, which is due to the presence of 2 APIs at once,
|
// For Twitter, this is quite a significant set, which is due to the presence of 2 APIs at once,
|
||||||
// which, at the same time, are not created for different tasks, but are simply versions of each other.
|
// which, at the same time, are not created for different tasks, but are simply versions of each other.
|
||||||
// The current version of the API is v2 and it requires obtaining temporary tokens. Despite the fact,
|
// The current version of the API is v2 and it requires obtaining temporary tokens. Despite the fact,
|
||||||
// that Twitter insists on using this latest version, they somehow managed not to transfer
|
// that Twitter insists on using this latest version, they somehow managed not to transfer
|
||||||
// file upload mechanism and some others from the old version - v1.1. Therefore, something needs to be done
|
// file upload mechanism and some others from the old version - v1.1. Therefore, something needs to be done
|
||||||
// on version 1.1, and something on 2: up to the point that they removed the ability to post tweets from v1.1,
|
// on version 1.1, and something on 2: up to the point that they removed the ability to post tweets from v1.1,
|
||||||
// but only through it you can add a picture to the tweet. At the same time, their authentication methods and tokens are different
|
// but only through it you can add a picture to the tweet. At the same time, their authentication methods and tokens are different
|
||||||
|
|
||||||
// The world gigacorporation of Elon Musk, by the way, a reminder ;)
|
// The world gigacorporation of Elon Musk, by the way, a reminder ;)
|
||||||
|
|
||||||
// P.S The following is often referred to as the "Twitter Developer settings page" - this
|
// P.S The following is often referred to as the "Twitter Developer settings page" - this
|
||||||
// https://developer.twitter.com/en/portal/dashboard and chosing of project from list (key icon)
|
// https://developer.twitter.com/en/portal/dashboard and chosing of project from list (key icon)
|
||||||
|
|
||||||
Parameters_ = New Map;
|
Parameters_ = New Map;
|
||||||
Permissions = "tweet.read tweet.write tweet.moderate.write users.read "
|
Permissions = "tweet.read tweet.write tweet.moderate.write users.read "
|
||||||
+ "follows.read follows.write offline.access space.read mute.read "
|
+ "follows.read follows.write offline.access space.read mute.read "
|
||||||
+ "mute.write like.read like.write list.read list.write block.read "
|
+ "mute.write like.read like.write list.read list.write block.read "
|
||||||
+ "block.write bookmark.read bookmark.write";
|
+ "block.write bookmark.read bookmark.write";
|
||||||
|
|
||||||
// Data for API v2
|
// Data for API v2
|
||||||
|
|
||||||
// redirect_uri - URL of your http service (or other request handler) for authorization
|
// redirect_uri - URL of your http service (or other request handler) for authorization
|
||||||
// scope - a set of permissions for the received key. Can be any, but offline.access is mandatory
|
// scope - a set of permissions for the received key. Can be any, but offline.access is mandatory
|
||||||
// client_id - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
// client_id - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
||||||
// client_secret - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
// client_secret - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
||||||
// access_token - GetAuthorizationLink() -> Browser -> code will come to redirect_uri -> GetToken(code)
|
// access_token - GetAuthorizationLink() -> Browser -> code will come to redirect_uri -> GetToken(code)
|
||||||
// refresh_token - Comes together with access_token and is used to refresh it (access_token lifetime - 2 hr)
|
// refresh_token - Comes together with access_token and is used to refresh it (access_token lifetime - 2 hr)
|
||||||
// The update is done using the UpdateToken method with new access_token and refresh_token.
|
// The update is done using the UpdateToken method with new access_token and refresh_token.
|
||||||
// For the next update, you need to use a new refresh_token, so hardcode
|
// For the next update, you need to use a new refresh_token, so hardcode
|
||||||
// won't work (access_token won't work either)
|
// won't work (access_token won't work either)
|
||||||
|
|
||||||
// |--> RefreshToken() ->|access_token --> 2 hrs. lifetime
|
// |--> RefreshToken() ->|access_token --> 2 hrs. lifetime
|
||||||
// | |refresh_token --|
|
// | |refresh_token --|
|
||||||
// |--------[after 2 hrs.]-------------------|
|
// |--------[after 2 hrs.]-------------------|
|
||||||
|
|
||||||
// Data for API v1.1
|
// Data for API v1.1
|
||||||
|
|
||||||
// oauth_token - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
// oauth_token - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
||||||
// oauth_token_secret - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
// oauth_token_secret - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
||||||
// oauth_consumer_key - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
// oauth_consumer_key - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
||||||
// oauth_consumer_secret - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
// oauth_consumer_secret - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
||||||
|
|
||||||
// These tokens do not need to be updated
|
// These tokens do not need to be updated
|
||||||
|
|
||||||
Parameters_.Insert("redirect_uri" , "");
|
Parameters_.Insert("redirect_uri" , "");
|
||||||
Parameters_.Insert("scope" , Permissions);
|
Parameters_.Insert("scope" , Permissions);
|
||||||
Parameters_.Insert("client_id" , "");
|
Parameters_.Insert("client_id" , "");
|
||||||
Parameters_.Insert("client_secret" , "");
|
Parameters_.Insert("client_secret" , "");
|
||||||
Parameters_.Insert("access_token" , ""); // Should be something like Constants.TwitterToken.Get()
|
Parameters_.Insert("access_token" , ""); // Should be something like Constants.TwitterToken.Get()
|
||||||
Parameters_.Insert("refresh_token" , ""); // Should be something like Constants.TwitterRefresh.Get()
|
Parameters_.Insert("refresh_token" , ""); // Should be something like Constants.TwitterRefresh.Get()
|
||||||
Parameters_.Insert("oauth_token" , "");
|
Parameters_.Insert("oauth_token" , "");
|
||||||
Parameters_.Insert("oauth_token_secret" , "");
|
Parameters_.Insert("oauth_token_secret" , "");
|
||||||
Parameters_.Insert("oauth_consumer_key" , "");
|
Parameters_.Insert("oauth_consumer_key" , "");
|
||||||
Parameters_.Insert("oauth_consumer_secret", "");
|
Parameters_.Insert("oauth_consumer_secret", "");
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(Parameters);
|
OPI_TypeConversion.GetCollection(Parameters);
|
||||||
|
|
||||||
If TypeOf(Parameters) = Type("Structure") Or TypeOf(Parameters) = Type("Map") Then
|
If TypeOf(Parameters) = Type("Structure") Or TypeOf(Parameters) = Type("Map") Then
|
||||||
For Each PassedParameter In Parameters Do
|
For Each PassedParameter In Parameters Do
|
||||||
Parameters_.Insert(PassedParameter.Key, OPI_Tools.NumberToString(PassedParameter.Value));
|
Parameters_.Insert(PassedParameter.Key, OPI_Tools.NumberToString(PassedParameter.Value));
|
||||||
@ -551,137 +551,137 @@ Function GetStandardParameters(Val Parameters = "")
|
|||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType, Val URL)
|
Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType, Val URL)
|
||||||
|
|
||||||
CurrentDate = OPI_Tools.GetCurrentDate();
|
CurrentDate = OPI_Tools.GetCurrentDate();
|
||||||
AuthorizationHeader = "";
|
AuthorizationHeader = "";
|
||||||
HashingMethod = "HMAC-SHA1";
|
HashingMethod = "HMAC-SHA1";
|
||||||
APIVersion = "1.0";
|
APIVersion = "1.0";
|
||||||
SignatureString = "";
|
SignatureString = "";
|
||||||
Signature = "";
|
Signature = "";
|
||||||
OCK = "oauth_consumer_key";
|
OCK = "oauth_consumer_key";
|
||||||
OTK = "oauth_token";
|
OTK = "oauth_token";
|
||||||
CurrentUNIXDate = OPI_Tools.UNIXTime(CurrentDate);
|
CurrentUNIXDate = OPI_Tools.UNIXTime(CurrentDate);
|
||||||
CurrentUNIXDate = OPI_Tools.NumberToString(CurrentUNIXDate);
|
CurrentUNIXDate = OPI_Tools.NumberToString(CurrentUNIXDate);
|
||||||
ParametersTable = New ValueTable;
|
ParametersTable = New ValueTable;
|
||||||
ParametersTable.Columns.Add("Key");
|
ParametersTable.Columns.Add("Key");
|
||||||
ParametersTable.Columns.Add("Value");
|
ParametersTable.Columns.Add("Value");
|
||||||
|
|
||||||
For Each Field In Fields Do
|
For Each Field In Fields Do
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = Field.Key;
|
NewLine.Key = Field.Key;
|
||||||
NewLine.Value = Field.Value;
|
NewLine.Value = Field.Value;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = OCK;
|
NewLine.Key = OCK;
|
||||||
NewLine.Value = Parameters[OCK];
|
NewLine.Value = Parameters[OCK];
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = OTK;
|
NewLine.Key = OTK;
|
||||||
NewLine.Value = Parameters[OTK];
|
NewLine.Value = Parameters[OTK];
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_version";
|
NewLine.Key = "oauth_version";
|
||||||
NewLine.Value = APIVersion;
|
NewLine.Value = APIVersion;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_signature_method";
|
NewLine.Key = "oauth_signature_method";
|
||||||
NewLine.Value = HashingMethod;
|
NewLine.Value = HashingMethod;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_timestamp";
|
NewLine.Key = "oauth_timestamp";
|
||||||
NewLine.Value = CurrentUNIXDate;
|
NewLine.Value = CurrentUNIXDate;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_nonce";
|
NewLine.Key = "oauth_nonce";
|
||||||
NewLine.Value = CurrentUNIXDate;
|
NewLine.Value = CurrentUNIXDate;
|
||||||
|
|
||||||
For Each TableRow In ParametersTable Do
|
For Each TableRow In ParametersTable Do
|
||||||
|
|
||||||
TableRow.Key = EncodeString(TableRow.Key, StringEncodingMethod.URLencoding);
|
TableRow.Key = EncodeString(TableRow.Key, StringEncodingMethod.URLencoding);
|
||||||
TableRow.Value = EncodeString(TableRow.Value, StringEncodingMethod.URLencoding);
|
TableRow.Value = EncodeString(TableRow.Value, StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
ParametersTable.Sort("Key");
|
ParametersTable.Sort("Key");
|
||||||
|
|
||||||
For Each TableRow In ParametersTable Do
|
For Each TableRow In ParametersTable Do
|
||||||
|
|
||||||
SignatureString = SignatureString
|
SignatureString = SignatureString
|
||||||
+ TableRow.Key
|
+ TableRow.Key
|
||||||
+ "="
|
+ " ="
|
||||||
+ TableRow.Value
|
+ TableRow.Value
|
||||||
+ "&";
|
+ "&";
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
SignatureString = Left(SignatureString, StrLen(SignatureString) - 1);
|
SignatureString = Left(SignatureString, StrLen(SignatureString) - 1);
|
||||||
SignatureString = Upper(RequestType)
|
SignatureString = Upper(RequestType)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ EncodeString(URL, StringEncodingMethod.URLencoding)
|
+ EncodeString(URL , StringEncodingMethod.URLencoding)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ EncodeString(SignatureString, StringEncodingMethod.URLencoding);
|
+ EncodeString(SignatureString, StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
Signature = EncodeString(Parameters["oauth_consumer_secret"], StringEncodingMethod.URLencoding)
|
Signature = EncodeString(Parameters["oauth_consumer_secret"], StringEncodingMethod.URLencoding)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ EncodeString(Parameters["oauth_token_secret"], StringEncodingMethod.URLencoding);
|
+ EncodeString(Parameters["oauth_token_secret"], StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
Signature = OPI_Cryptography.HMAC(GetBinaryDataFromString(Signature)
|
Signature = OPI_Cryptography.HMAC(GetBinaryDataFromString(Signature)
|
||||||
, GetBinaryDataFromString(SignatureString)
|
, GetBinaryDataFromString(SignatureString)
|
||||||
, HashFunction.SHA1
|
, HashFunction.SHA1
|
||||||
, 64);
|
, 64);
|
||||||
|
|
||||||
Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding);
|
Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
Delimiter = """,";
|
Delimiter = """,";
|
||||||
AuthorizationHeader = AuthorizationHeader
|
AuthorizationHeader = AuthorizationHeader
|
||||||
+ "OAuth "
|
+ "OAuth "
|
||||||
+ "oauth_consumer_key=""" + Parameters[OCK] + Delimiter
|
+ "oauth_consumer_key =""" + Parameters[OCK] + Delimiter
|
||||||
+ "oauth_token=""" + Parameters[OTK] + Delimiter
|
+ "oauth_token =""" + Parameters[OTK] + Delimiter
|
||||||
+ "oauth_signature_method=""" + HashingMethod + Delimiter
|
+ "oauth_signature_method=""" + HashingMethod + Delimiter
|
||||||
+ "oauth_timestamp=""" + CurrentUNIXDate + Delimiter
|
+ "oauth_timestamp =""" + CurrentUNIXDate + Delimiter
|
||||||
+ "oauth_nonce=""" + CurrentUNIXDate + Delimiter
|
+ "oauth_nonce =""" + CurrentUNIXDate + Delimiter
|
||||||
+ "oauth_version=""" + APIVersion + Delimiter
|
+ "oauth_version =""" + APIVersion + Delimiter
|
||||||
+ "oauth_signature=""" + Signature;
|
+ "oauth_signature =""" + Signature;
|
||||||
|
|
||||||
HeaderMapping = New Map;
|
HeaderMapping = New Map;
|
||||||
HeaderMapping.Insert("authorization", AuthorizationHeader);
|
HeaderMapping.Insert("authorization", AuthorizationHeader);
|
||||||
|
|
||||||
Return HeaderMapping;
|
Return HeaderMapping;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function CreateAuthorizationHeaderV2(Val Parameters)
|
Function CreateAuthorizationHeaderV2(Val Parameters)
|
||||||
|
|
||||||
ReturnMapping = New Map;
|
ReturnMapping = New Map;
|
||||||
ReturnMapping.Insert("Authorization", "Bearer " + Parameters["access_token"]);
|
ReturnMapping.Insert("Authorization", "Bearer " + Parameters["access_token"]);
|
||||||
|
|
||||||
Return ReturnMapping;
|
Return ReturnMapping;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetProcessingStatus(Val Parameters, Val Fields, Val URL)
|
Function GetProcessingStatus(Val Parameters, Val Fields, Val URL)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "POST", URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "POST", URL);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
||||||
Information = Response[ProcessingInfo];
|
Information = Response[ProcessingInfo];
|
||||||
|
|
||||||
If Not ValueIsFilled(Information) Then
|
If Not ValueIsFilled(Information) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
ProcessingStatus = Information["state"];
|
ProcessingStatus = Information["state"];
|
||||||
|
|
||||||
If Not ValueIsFilled(ProcessingStatus) Then
|
If Not ValueIsFilled(ProcessingStatus) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
Else
|
Else
|
||||||
Return ProcessingStatus;
|
Return ProcessingStatus;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -23,7 +23,7 @@
|
|||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
// 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
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||||
@ -46,55 +46,55 @@
|
|||||||
// which will return 200 and a genuine SSL certificate. If there is a certificate and the database is published
|
// which will return 200 and a genuine SSL certificate. If there is a certificate and the database is published
|
||||||
// on the server - you can use an HTTP service. Information about new messages will also be sent there
|
// on the server - you can use an HTTP service. Information about new messages will also be sent there
|
||||||
// Viber periodically knocks on the Webhook address, so if it is inactive, everything will stop working
|
// Viber periodically knocks on the Webhook address, so if it is inactive, everything will stop working
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Viber Token - token
|
// Token - String - Viber Token - token
|
||||||
// URL - String - URL for setting up Webhook - url
|
// URL - String - URL for setting up Webhook - url
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SetWebhook(Val Token, Val URL) Export
|
Function SetWebhook(Val Token, Val URL) Export
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("url" , URL , "String", Parameters);
|
OPI_Tools.AddField("url" , URL , "String", Parameters);
|
||||||
OPI_Tools.AddField("auth_token" , Token, "String", Parameters);
|
OPI_Tools.AddField("auth_token" , Token, "String", Parameters);
|
||||||
|
|
||||||
Return OPI_Tools.Post("https://chatapi.viber.com/pa/set_webhook", Parameters);
|
Return OPI_Tools.Post("https://chatapi.viber.com/pa/set_webhook", Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get channel information
|
// Get channel information
|
||||||
// Here you can get the channel's user IDs. Bot IDs need to be obtained from the Webhook arrivals
|
// Here you can get the channel's user IDs. Bot IDs need to be obtained from the Webhook arrivals
|
||||||
// The user ID from channel information is not suitable for sending messages through the bot - they are different
|
// The user ID from channel information is not suitable for sending messages through the bot - they are different
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function GetChannelInformation(Val Token) Export
|
Function GetChannelInformation(Val Token) Export
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_account_info";
|
URL = "https://chatapi.viber.com/pa/get_account_info";
|
||||||
Return OPI_Tools.Get(URL, , TokenInHeaders(Token));
|
Return OPI_Tools.Get(URL, , TokenInHeaders(Token));
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get user data
|
// Get user data
|
||||||
// Gets user information by ID
|
// Gets user information by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// UserID - String, Number - Viber User ID - user
|
// UserID - String, Number - Viber User ID - user
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function GetUserData(Val Token, Val UserID) Export
|
Function GetUserData(Val Token, Val UserID) Export
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_user_details";
|
URL = "https://chatapi.viber.com/pa/get_user_details";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("id", UserID, "String", Parameters);
|
OPI_Tools.AddField("id", UserID, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
@ -103,22 +103,22 @@ EndFunction
|
|||||||
|
|
||||||
// Get online users
|
// Get online users
|
||||||
// Gets the status of a user or multiple users by ID
|
// Gets the status of a user or multiple users by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Viber Token - token
|
// Token - String - Viber Token - token
|
||||||
// UserIDs - String,Number,Array of String,Number - Viber User(s) ID - users
|
// UserIDs - String,Number,Array of String,Number - Viber User(s) ID - users
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function GetOnlineUsers(Val Token, Val UserIDs) Export
|
Function GetOnlineUsers(Val Token, Val UserIDs) Export
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_online";
|
URL = "https://chatapi.viber.com/pa/get_online";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("ids", UserIDs, "Collection", Parameters);
|
OPI_Tools.AddField("ids", UserIDs, "Collection", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -129,14 +129,14 @@ EndFunction
|
|||||||
|
|
||||||
// Send text message
|
// Send text message
|
||||||
// Sends a text message to a chat or channel
|
// Sends a text message to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Text - String - Message text - text
|
// Text - String - Message text - text
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
// Keyboard - Structure Of String - See CreateKeyboardFromArrayButton - keyboard
|
// Keyboard - Structure Of String - See CreateKeyboardFromArrayButton - keyboard
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendTextMessage(Val Token
|
Function SendTextMessage(Val Token
|
||||||
@ -144,40 +144,40 @@ Function SendTextMessage(Val Token
|
|||||||
, Val UserID
|
, Val UserID
|
||||||
, Val SendingToChannel
|
, Val SendingToChannel
|
||||||
, Val Keyboard = "") Export
|
, Val Keyboard = "") Export
|
||||||
|
|
||||||
Return SendMessage(Token, "text", UserID, SendingToChannel, , Text, Keyboard);
|
Return SendMessage(Token, "text", UserID, SendingToChannel, , Text, Keyboard);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send image
|
// Send image
|
||||||
// Sends an image to a chat or channel
|
// Sends an image to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Image URL - picture
|
// URL - String - Image URL - picture
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - boolean - Sending to channel or bot chat - ischannel
|
||||||
// Description - String - Image annotation - description
|
// Description - String - Image annotation - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendImage(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Description = "") Export
|
Function SendImage(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Description = "") Export
|
||||||
|
|
||||||
Return SendMessage(Token, "picture", UserID, SendingToChannel, URL, Description);
|
Return SendMessage(Token, "picture", UserID, SendingToChannel, URL, Description);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// SendFile
|
// SendFile
|
||||||
// Sends a file (document) to a chat or channel
|
// Sends a file (document) to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - File URL - file
|
// URL - String - File URL - file
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
// Extension - String - File extension - ext
|
// Extension - String - File extension - ext
|
||||||
// Size - Number - File size. If not filled in > determined automatically by downloading the file - size
|
// Size - Number - File size. If not filled in > determined automatically by downloading the file - size
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendFile(Val Token
|
Function SendFile(Val Token
|
||||||
@ -186,36 +186,36 @@ Function SendFile(Val Token
|
|||||||
, Val SendingToChannel
|
, Val SendingToChannel
|
||||||
, Val Extension
|
, Val Extension
|
||||||
, Val Size = "") Export
|
, Val Size = "") Export
|
||||||
|
|
||||||
If Not ValueIsFilled(Size) Then
|
If Not ValueIsFilled(Size) Then
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL);
|
Response = OPI_Tools.Get(URL);
|
||||||
Size = Response.Size();
|
Size = Response.Size();
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
String_ = "String";
|
String_ = "String";
|
||||||
Extension = StrReplace(Extension, ".", "");
|
Extension = StrReplace(Extension, ".", "");
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("URL" , URL , String_, Parameters);
|
OPI_Tools.AddField("URL" , URL , String_, Parameters);
|
||||||
OPI_Tools.AddField("Size" , Size , String_, Parameters);
|
OPI_Tools.AddField("Size" , Size , String_, Parameters);
|
||||||
OPI_Tools.AddField("Extension", Extension, String_, Parameters);
|
OPI_Tools.AddField("Extension", Extension, String_, Parameters);
|
||||||
|
|
||||||
Return SendMessage(Token, "file", UserID, SendingToChannel, Parameters);
|
Return SendMessage(Token, "file", UserID, SendingToChannel, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send contact
|
// Send contact
|
||||||
// Sends a contact with a phone number to a chat or channel
|
// Sends a contact with a phone number to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ContactName - String - Contact name - name
|
// ContactName - String - Contact name - name
|
||||||
// PhoneNumber - String - Phone number - phone
|
// PhoneNumber - String - Phone number - phone
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendContact(Val Token
|
Function SendContact(Val Token
|
||||||
@ -223,91 +223,91 @@ Function SendContact(Val Token
|
|||||||
, Val PhoneNumber
|
, Val PhoneNumber
|
||||||
, Val UserID
|
, Val UserID
|
||||||
, Val SendingToChannel) Export
|
, Val SendingToChannel) Export
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("name" , ContactName , "String", Parameters);
|
OPI_Tools.AddField("name" , ContactName , "String", Parameters);
|
||||||
OPI_Tools.AddField("phone_number", PhoneNumber, "String", Parameters);
|
OPI_Tools.AddField("phone_number", PhoneNumber , "String", Parameters);
|
||||||
|
|
||||||
Return SendMessage(Token, "contact", UserID, SendingToChannel, Parameters);
|
Return SendMessage(Token, "contact", UserID, SendingToChannel, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send location
|
// Send location
|
||||||
// Sends geographic coordinates to a chat or channel
|
// Sends geographic coordinates to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Latitude - String, Number - Geographic latitude - lat
|
// Latitude - String, Number - Geographic latitude - lat
|
||||||
// Longitude - String, Number - Geographic longitude - long
|
// Longitude - String, Number - Geographic longitude - long
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendLocation(Val Token, Val Latitude, Val Longitude, Val UserID, Val SendingToChannel) Export
|
Function SendLocation(Val Token, Val Latitude, Val Longitude, Val UserID, Val SendingToChannel) Export
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("lat", Latitude , "String", Parameters);
|
OPI_Tools.AddField("lat", Latitude , "String", Parameters);
|
||||||
OPI_Tools.AddField("lon", Longitude, "String", Parameters);
|
OPI_Tools.AddField("lon", Longitude, "String", Parameters);
|
||||||
|
|
||||||
Return SendMessage(Token, "location", UserID, SendingToChannel, Parameters);
|
Return SendMessage(Token, "location", UserID, SendingToChannel, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send link
|
// Send link
|
||||||
// Sends a URL with a preview to a chat or channel
|
// Sends a URL with a preview to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - SentLink - url
|
// URL - String - SentLink - url
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendLink(Val Token, Val URL, Val UserID, Val SendingToChannel) Export
|
Function SendLink(Val Token, Val URL, Val UserID, Val SendingToChannel) Export
|
||||||
|
|
||||||
Return SendMessage(Token, "url", UserID, SendingToChannel, URL);
|
Return SendMessage(Token, "url", UserID, SendingToChannel, URL);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create a keyboard from an array of buttons
|
// Create a keyboard from an array of buttons
|
||||||
// Returns a keyboard structure for messages
|
// Returns a keyboard structure for messages
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ButtonArray - Array of String - Array of buttons - buttons
|
// ButtonArray - Array of String - Array of buttons - buttons
|
||||||
// ButtonColor - String - HEX color of buttons with # at the beginning - color
|
// ButtonColor - String - HEX color of buttons with # at the beginning - color
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Create a keyboard from an array of buttons:
|
// Structure - Create a keyboard from an array of buttons:
|
||||||
// * Buttons - Array of Structure - Array of formed buttons
|
// * Buttons - Array of Structure - Array of formed buttons
|
||||||
// * Type - String - KeyboardType
|
// * Type - String - KeyboardType
|
||||||
Function CreateKeyboardFromArrayButton(Val ButtonArray, Val ButtonColor = "#2db9b9") Export
|
Function CreateKeyboardFromArrayButton(Val ButtonArray, Val ButtonColor = "#2db9b9") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ButtonColor);
|
OPI_TypeConversion.GetLine(ButtonColor);
|
||||||
OPI_TypeConversion.GetCollection(ButtonArray);
|
OPI_TypeConversion.GetCollection(ButtonArray);
|
||||||
|
|
||||||
ArrayOfButtonStructures = New Array;
|
ArrayOfButtonStructures = New Array;
|
||||||
KeyboardStructure = New Structure;
|
KeyboardStructure = New Structure;
|
||||||
|
|
||||||
For Each ButtonText In ButtonArray Do
|
For Each ButtonText In ButtonArray Do
|
||||||
|
|
||||||
ButtonStructure = New Structure;
|
ButtonStructure = New Structure;
|
||||||
ButtonStructure.Insert("ActionType", "reply");
|
ButtonStructure.Insert("ActionType", "reply");
|
||||||
ButtonStructure.Insert("ActionBody", ButtonText);
|
ButtonStructure.Insert("ActionBody", ButtonText);
|
||||||
ButtonStructure.Insert("Text" , ButtonText);
|
ButtonStructure.Insert("Text" , ButtonText);
|
||||||
ButtonStructure.Insert("BgColor" , ButtonColor);
|
ButtonStructure.Insert("BgColor" , ButtonColor);
|
||||||
ButtonStructure.Insert("Coloumns" , 3);
|
ButtonStructure.Insert("Coloumns" , 3);
|
||||||
|
|
||||||
ArrayOfButtonStructures.Add(ButtonStructure);
|
ArrayOfButtonStructures.Add(ButtonStructure);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
KeyboardStructure.Insert("Buttons", ArrayOfButtonStructures);
|
KeyboardStructure.Insert("Buttons", ArrayOfButtonStructures);
|
||||||
KeyboardStructure.Insert("Type" , "keyboard");
|
KeyboardStructure.Insert("Type" , "keyboard");
|
||||||
|
|
||||||
Return KeyboardStructure;
|
Return KeyboardStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -317,7 +317,7 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
// Send message.
|
// Send message.
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token
|
// Token - String - Token
|
||||||
// Type - String - TypeOfSentMessage
|
// Type - String - TypeOfSentMessage
|
||||||
@ -328,8 +328,8 @@ EndFunction
|
|||||||
// * Size - Number, String - File size in case of sending
|
// * Size - Number, String - File size in case of sending
|
||||||
// * Extension - String - File extension in case of sending
|
// * Extension - String - File extension in case of sending
|
||||||
// Text - String - Message text
|
// Text - String - Message text
|
||||||
// Keyboard - Structure Of String - Keyboard, if needed, see CreateKeyboardFromArrayButton
|
// Keyboard - Structure Of String - Keyboard, if needed, see CreateKeyboardFromArrayButton
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Arbitrary, HTTPResponse - Send message
|
// Arbitrary, HTTPResponse - Send message
|
||||||
Function SendMessage(Val Token
|
Function SendMessage(Val Token
|
||||||
@ -339,81 +339,81 @@ Function SendMessage(Val Token
|
|||||||
, Val Value = ""
|
, Val Value = ""
|
||||||
, Val Text = ""
|
, Val Text = ""
|
||||||
, Val Keyboard = "")
|
, Val Keyboard = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Type);
|
OPI_TypeConversion.GetLine(Type);
|
||||||
OPI_TypeConversion.GetLine(UserID);
|
OPI_TypeConversion.GetLine(UserID);
|
||||||
OPI_TypeConversion.GetLine(Text);
|
OPI_TypeConversion.GetLine(Text);
|
||||||
OPI_TypeConversion.GetBoolean(IsChannel);
|
OPI_TypeConversion.GetBoolean(IsChannel);
|
||||||
OPI_TypeConversion.GetCollection(Keyboard);
|
OPI_TypeConversion.GetCollection(Keyboard);
|
||||||
|
|
||||||
ParametersStructure = ReturnStandardParameters();
|
ParametersStructure = ReturnStandardParameters();
|
||||||
ParametersStructure.Insert("type", Type);
|
ParametersStructure.Insert("type", Type);
|
||||||
|
|
||||||
If (Type = "text" Or Type = "picture") And ValueIsFilled(Text) Then
|
If (Type = "text" Or Type = "picture") And ValueIsFilled(Text) Then
|
||||||
ParametersStructure.Insert("text", Text);
|
ParametersStructure.Insert("text", Text);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Keyboard) = Type("Structure") Then
|
If TypeOf(Keyboard) = Type("Structure") Then
|
||||||
ParametersStructure.Insert("keyboard", Keyboard);
|
ParametersStructure.Insert("keyboard", Keyboard);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Value) Then
|
If ValueIsFilled(Value) Then
|
||||||
|
|
||||||
If Type = "file" Then
|
If Type = "file" Then
|
||||||
ParametersStructure.Insert("media" , Value["URL"]);
|
ParametersStructure.Insert("media" , Value["URL"]);
|
||||||
ParametersStructure.Insert("size" , Value["Size"]);
|
ParametersStructure.Insert("size" , Value["Size"]);
|
||||||
ParametersStructure.Insert("file_name", "File." + Value["Extension"]);
|
ParametersStructure.Insert("file_name", "File." + Value["Extension"]);
|
||||||
ElsIf Type = "contact" Then
|
ElsIf Type = "contact" Then
|
||||||
ParametersStructure.Insert("contact" , Value);
|
ParametersStructure.Insert("contact" , Value);
|
||||||
ElsIf Type = "location" Then
|
ElsIf Type = "location" Then
|
||||||
ParametersStructure.Insert("location" , Value);
|
ParametersStructure.Insert("location" , Value);
|
||||||
Else
|
Else
|
||||||
ParametersStructure.Insert("media" , Value);
|
ParametersStructure.Insert("media" , Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If IsChannel Then
|
If IsChannel Then
|
||||||
ParametersStructure.Insert("from", UserID);
|
ParametersStructure.Insert("from" , UserID);
|
||||||
URL = "https://chatapi.viber.com/pa/post";
|
URL = "https://chatapi.viber.com/pa/post";
|
||||||
Else
|
Else
|
||||||
ParametersStructure.Insert("receiver", UserID);
|
ParametersStructure.Insert("receiver", UserID);
|
||||||
URL = "https://chatapi.viber.com/pa/send_message";
|
URL = "https://chatapi.viber.com/pa/send_message";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, ParametersStructure, TokenInHeaders(Token));
|
Response = OPI_Tools.Post(URL, ParametersStructure, TokenInHeaders(Token));
|
||||||
|
|
||||||
Try
|
Try
|
||||||
Return OPI_Tools.JsonToStructure(Response.ПолучитьТелоКакДвоичныеДанные());
|
Return OPI_Tools.JsonToStructure(Response.ПолучитьТелоКакДвоичныеДанные());
|
||||||
Except
|
Except
|
||||||
Return Response;
|
Return Response;
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ReturnStandardParameters()
|
Function ReturnStandardParameters()
|
||||||
|
|
||||||
SenderStructure = New Structure;
|
SenderStructure = New Structure;
|
||||||
SenderStructure.Insert("name" , "Bot");
|
SenderStructure.Insert("name" , "Bot");
|
||||||
SenderStructure.Insert("avatar", "");
|
SenderStructure.Insert("avatar", "");
|
||||||
|
|
||||||
ParametersStructure = New Structure;
|
ParametersStructure = New Structure;
|
||||||
ParametersStructure.Insert("sender", SenderStructure);
|
ParametersStructure.Insert("sender" , SenderStructure);
|
||||||
ParametersStructure.Insert("min_api_version", 1);
|
ParametersStructure.Insert("min_api_version", 1);
|
||||||
|
|
||||||
Return ParametersStructure;
|
Return ParametersStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function TokenInHeaders(Val Token)
|
Function TokenInHeaders(Val Token)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
HeadersStructure = New Map;
|
HeadersStructure = New Map;
|
||||||
HeadersStructure.Insert("X-Viber-Auth-Token", Token);
|
HeadersStructure.Insert("X-Viber-Auth-Token", Token);
|
||||||
Return HeadersStructure;
|
Return HeadersStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
//@skip-check wrong-string-literal-content
|
//@skip-check wrong-string-literal-content
|
||||||
|
|
||||||
// Uncomment if OneScript is executed
|
// Uncomment if OneScript is executed
|
||||||
#Use "../../tools"
|
#Use "../../tools"
|
||||||
|
|
||||||
#Region Public
|
#Region Public
|
||||||
|
|
||||||
@ -45,217 +45,217 @@
|
|||||||
|
|
||||||
// Get disk information
|
// Get disk information
|
||||||
// Gets information about the current disk
|
// Gets information about the current disk
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetDiskInformation(Val Token) Export
|
Function GetDiskInformation(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk", , Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk", , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create folder
|
// Create folder
|
||||||
// Creates a directory on the disk
|
// Creates a directory on the disk
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the created folder - path
|
// Path - String - Path to the created folder - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function CreateFolder(Val Token, Val Path) Export
|
Function CreateFolder(Val Token, Val Path) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get object
|
// Get object
|
||||||
// Gets information about a disk object at the specified path
|
// Gets information about a disk object at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to folder or file - path
|
// Path - String - Path to folder or file - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetObject(Val Token, Val Path) Export
|
Function GetObject(Val Token, Val Path) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete object
|
// Delete object
|
||||||
// Deletes an object at the specified path
|
// Deletes an object at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the folder or file to be deleted - path
|
// Path - String - Path to the folder or file to be deleted - path
|
||||||
// ToCart - Boolean - To cart - can
|
// ToCart - Boolean - To cart - can
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function DeleteObject(Val Token, Val Path, Val ToCart = True) Export
|
Function DeleteObject(Val Token, Val Path, Val ToCart = True) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(ToCart);
|
OPI_TypeConversion.GetBoolean(ToCart);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("permanently", Not ToCart);
|
Parameters.Insert("permanently", Not ToCart);
|
||||||
|
|
||||||
Response = OPI_Tools.Delete("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
Response = OPI_Tools.Delete("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create object copy
|
// Create object copy
|
||||||
// Creates a copy of the object at the specified path and path to the original
|
// Creates a copy of the object at the specified path and path to the original
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Original - String - Path to the original file or directory - from
|
// Original - String - Path to the original file or directory - from
|
||||||
// Path - String - Destination path for the copy - to
|
// Path - String - Destination path for the copy - to
|
||||||
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function CreateObjectCopy(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
Function CreateObjectCopy(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Original);
|
OPI_TypeConversion.GetLine(Original);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(Overwrite);
|
OPI_TypeConversion.GetBoolean(Overwrite);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("from" , Original);
|
Parameters.Insert("from" , Original);
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("overwrite" , Overwrite);
|
Parameters.Insert("overwrite" , Overwrite);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get download link
|
// Get download link
|
||||||
// Gets a download link for the file
|
// Gets a download link for the file
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the file for downloading - path
|
// Path - String - Path to the file for downloading - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetDownloadLink(Val Token, Val Path) Export
|
Function GetDownloadLink(Val Token, Val Path) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Download file
|
// Download file
|
||||||
// Downloads a file at the specified path
|
// Downloads a file at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the file for downloading - path
|
// Path - String - Path to the file for downloading - path
|
||||||
// SavePath - String - File save path - out
|
// SavePath - String - File save path - out
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
||||||
Function DownloadFile(Val Token, Val Path, Val SavePath = "") Export
|
Function DownloadFile(Val Token, Val Path, Val SavePath = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(SavePath);
|
OPI_TypeConversion.GetLine(SavePath);
|
||||||
Response = GetDownloadLink(Token, Path);
|
Response = GetDownloadLink(Token, Path);
|
||||||
URL = Response["href"];
|
URL = Response["href"];
|
||||||
|
|
||||||
If Not ValueIsFilled(URL) Then
|
If Not ValueIsFilled(URL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , , SavePath);
|
Response = OPI_Tools.Get(URL, , , SavePath);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of files
|
// Get list of files
|
||||||
// Gets a list of files with or without filtering by type
|
// Gets a list of files with or without filtering by type
|
||||||
// List of available types: audio, backup, book, compressed, data, development,
|
// List of available types: audio, backup, book, compressed, data, development,
|
||||||
// diskimage, document, encoded, executable, flash, font,
|
// diskimage, document, encoded, executable, flash, font,
|
||||||
// mage, settings, spreadsheet, text, unknown, video, web
|
// mage, settings, spreadsheet, text, unknown, video, web
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Count - Number, String - Number of returned objects - amount
|
// Count - Number, String - Number of returned objects - amount
|
||||||
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
||||||
// FilterByType - String - Filter by file type - type
|
// FilterByType - String - Filter by file type - type
|
||||||
// SortByDate - Boolean - True > sort by date, False > alphabetically - datesort
|
// SortByDate - Boolean - True > sort by date, False > alphabetically - datesort
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetFilesList(Val Token
|
Function GetFilesList(Val Token
|
||||||
@ -263,50 +263,50 @@ Function GetFilesList(Val Token
|
|||||||
, Val OffsetFromStart = 0
|
, Val OffsetFromStart = 0
|
||||||
, Val FilterByType = ""
|
, Val FilterByType = ""
|
||||||
, Val SortByDate = False) Export
|
, Val SortByDate = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Count);
|
OPI_TypeConversion.GetLine(Count);
|
||||||
OPI_TypeConversion.GetLine(OffsetFromStart);
|
OPI_TypeConversion.GetLine(OffsetFromStart);
|
||||||
OPI_TypeConversion.GetLine(FilterByType);
|
OPI_TypeConversion.GetLine(FilterByType);
|
||||||
OPI_TypeConversion.GetBoolean(SortByDate);
|
OPI_TypeConversion.GetBoolean(SortByDate);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Count) Then
|
If ValueIsFilled(Count) Then
|
||||||
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(OffsetFromStart) Then
|
If ValueIsFilled(OffsetFromStart) Then
|
||||||
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(FilterByType) Then
|
If ValueIsFilled(FilterByType) Then
|
||||||
Parameters.Insert("media_type", FilterByType);
|
Parameters.Insert("media_type", FilterByType);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If SortByDate Then
|
If SortByDate Then
|
||||||
Destination = "last-uploaded";
|
Destination = "last-uploaded";
|
||||||
Else
|
Else
|
||||||
Destination = "files";
|
Destination = "files";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Destination, Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Destination, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Move object
|
// Move object
|
||||||
// Moves the object to the specified path and path to the original
|
// Moves the object to the specified path and path to the original
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Original - String - Path to the original file or folder - from
|
// Original - String - Path to the original file or folder - from
|
||||||
// Path - String - Destination path for moving - to
|
// Path - String - Destination path for moving - to
|
||||||
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
||||||
@ -315,97 +315,97 @@ Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Ex
|
|||||||
OPI_TypeConversion.GetLine(Original);
|
OPI_TypeConversion.GetLine(Original);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(Overwrite);
|
OPI_TypeConversion.GetBoolean(Overwrite);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("from" , Original);
|
Parameters.Insert("from" , Original);
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("overwrite" , Overwrite);
|
Parameters.Insert("overwrite" , Overwrite);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload file
|
// Upload file
|
||||||
// Uploads a file to disk at the specified path
|
// Uploads a file to disk at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path for saving the file to disk - path
|
// Path - String - Path for saving the file to disk - path
|
||||||
// File - String, BinaryData - File for upload - file
|
// File - String, BinaryData - File for upload - file
|
||||||
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function UploadFile(Val Token, Val Path, Val File, Val Overwrite = False) Export
|
Function UploadFile(Val Token, Val Path, Val File, Val Overwrite = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(Overwrite);
|
OPI_TypeConversion.GetBoolean(Overwrite);
|
||||||
OPI_TypeConversion.GetBinaryData(File);
|
OPI_TypeConversion.GetBinaryData(File);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Href = "href";
|
Href = "href";
|
||||||
File = New Structure("file", File);
|
File = New Structure("file", File);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("overwrite" , Overwrite);
|
Parameters.Insert("overwrite" , Overwrite);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Parameters, Headers);
|
||||||
URL = Response[Href];
|
URL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(URL) Then
|
If Not ValueIsFilled(URL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.PutMultipart(URL, New Structure(), File, "multipart", Headers);
|
Response = OPI_Tools.PutMultipart(URL, New Structure(), File, "multipart", Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload file by URL
|
// Upload file by URL
|
||||||
// Downloads a file to disk from the specified URL
|
// Downloads a file to disk from the specified URL
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to place the downloaded file - path
|
// Path - String - Path to place the downloaded file - path
|
||||||
// Address - String - File URL - url
|
// Address - String - File URL - url
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function UploadFileByURL(Val Token, Val Path, Val Address) Export
|
Function UploadFileByURL(Val Token, Val Path, Val Address) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetLine(Address);
|
OPI_TypeConversion.GetLine(Address);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("url" , EncodeString(Address, StringEncodingMethod.URLencoding));
|
Parameters.Insert("url" , EncodeString(Address, StringEncodingMethod.URLencoding));
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -414,186 +414,186 @@ EndFunction
|
|||||||
|
|
||||||
// Publish object
|
// Publish object
|
||||||
// Publishes the disk object for public access
|
// Publishes the disk object for public access
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the object to be published - path
|
// Path - String - Path to the object to be published - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function PublishObject(Val Token, Val Path) Export
|
Function PublishObject(Val Token, Val Path) Export
|
||||||
|
|
||||||
Return TogglePublicAccess(Token, Path, True);
|
Return TogglePublicAccess(Token, Path, True);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Unpublish object
|
// Unpublish object
|
||||||
// Unpublishes a previously published object
|
// Unpublishes a previously published object
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the previously published object - path
|
// Path - String - Path to the previously published object - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function CancelObjectPublication(Val Token, Val Path) Export
|
Function CancelObjectPublication(Val Token, Val Path) Export
|
||||||
|
|
||||||
Return TogglePublicAccess(Token, Path, False);
|
Return TogglePublicAccess(Token, Path, False);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of published objects.
|
// Get list of published objects.
|
||||||
// Gets a list of published objects
|
// Gets a list of published objects
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Count - Number - Number of returned objects - amount
|
// Count - Number - Number of returned objects - amount
|
||||||
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetPublishedObjectsList(Val Token, Val Count = 0, Val OffsetFromStart = 0) Export
|
Function GetPublishedObjectsList(Val Token, Val Count = 0, Val OffsetFromStart = 0) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Count);
|
OPI_TypeConversion.GetLine(Count);
|
||||||
OPI_TypeConversion.GetLine(OffsetFromStart);
|
OPI_TypeConversion.GetLine(OffsetFromStart);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Count) Then
|
If ValueIsFilled(Count) Then
|
||||||
Parameters.Insert("limit", Count);
|
Parameters.Insert("limit", Count);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(OffsetFromStart) Then
|
If ValueIsFilled(OffsetFromStart) Then
|
||||||
Parameters.Insert("offset", OffsetFromStart);
|
Parameters.Insert("offset", OffsetFromStart);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get public object
|
// Get public object
|
||||||
// Gets information about the published object by its URL
|
// Gets information about the published object by its URL
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Object address - url
|
// URL - String - Object address - url
|
||||||
// Count - Number - Number of returned nested objects (for catalog) - amount
|
// Count - Number - Number of returned nested objects (for catalog) - amount
|
||||||
// OffsetFromStart - Number - Offset for getting nested objects not from the beginning of the list - offset
|
// OffsetFromStart - Number - Offset for getting nested objects not from the beginning of the list - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetPublicObject(Val Token, Val URL, Val Count = 0, Val OffsetFromStart = 0) Export
|
Function GetPublicObject(Val Token, Val URL, Val Count = 0, Val OffsetFromStart = 0) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(URL);
|
OPI_TypeConversion.GetLine(URL);
|
||||||
OPI_TypeConversion.GetLine(Count);
|
OPI_TypeConversion.GetLine(Count);
|
||||||
OPI_TypeConversion.GetLine(OffsetFromStart);
|
OPI_TypeConversion.GetLine(OffsetFromStart);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Count) Then
|
If ValueIsFilled(Count) Then
|
||||||
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(OffsetFromStart) Then
|
If ValueIsFilled(OffsetFromStart) Then
|
||||||
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters.Insert("public_key", URL);
|
Parameters.Insert("public_key", URL);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get download link for public object
|
// Get download link for public object
|
||||||
// Gets a direct link to download the public object
|
// Gets a direct link to download the public object
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Object address - url
|
// URL - String - Object address - url
|
||||||
// Path - String - Path inside the object - path
|
// Path - String - Path inside the object - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetDownloadLinkForPublicObject(Val Token, Val URL, Val Path = "") Export
|
Function GetDownloadLinkForPublicObject(Val Token, Val URL, Val Path = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(URL);
|
OPI_TypeConversion.GetLine(URL);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Path) Then
|
If ValueIsFilled(Path) Then
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters.Insert("public_key", URL);
|
Parameters.Insert("public_key", URL);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Save public object to disk
|
// Save public object to disk
|
||||||
// Saves the public object to your disk
|
// Saves the public object to your disk
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Object address - url
|
// URL - String - Object address - url
|
||||||
// From - String - Path within public catalog (folders only) - from
|
// From - String - Path within public catalog (folders only) - from
|
||||||
// Target - String - File save path - to
|
// Target - String - File save path - to
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function SavePublicObjectToDisk(Val Token, Val URL, From = "", Target = "") Export
|
Function SavePublicObjectToDisk(Val Token, Val URL, From = "", Target = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(URL);
|
OPI_TypeConversion.GetLine(URL);
|
||||||
OPI_TypeConversion.GetLine(From);
|
OPI_TypeConversion.GetLine(From);
|
||||||
OPI_TypeConversion.GetLine(Target);
|
OPI_TypeConversion.GetLine(Target);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Address = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
Address = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("public_key", EncodeString(URL, StringEncodingMethod.URLencoding));
|
Parameters.Insert("public_key", EncodeString(URL, StringEncodingMethod.URLencoding));
|
||||||
|
|
||||||
If ValueIsFilled(From) Then
|
If ValueIsFilled(From) Then
|
||||||
Parameters.Insert("path", From);
|
Parameters.Insert("path", From);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Target) Then
|
If ValueIsFilled(Target) Then
|
||||||
Parameters.Insert("save_path", Target);
|
Parameters.Insert("save_path", Target);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(Address + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(Address + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -601,42 +601,42 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function AuthorizationHeader(Val Token)
|
Function AuthorizationHeader(Val Token)
|
||||||
|
|
||||||
Headers = New Map;
|
Headers = New Map;
|
||||||
Headers.Insert("Authorization", "OAuth " + Token);
|
Headers.Insert("Authorization", "OAuth " + Token);
|
||||||
|
|
||||||
Return Headers;
|
Return Headers;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function TogglePublicAccess(Val Token, Val Path, Val PublicAccess)
|
Function TogglePublicAccess(Val Token, Val Path, Val PublicAccess)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(PublicAccess);
|
OPI_TypeConversion.GetBoolean(PublicAccess);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Destination = ?(PublicAccess, "publish", "unpublish");
|
Destination = ?(PublicAccess, "publish", "unpublish");
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Destination;
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Destination;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -41,77 +41,77 @@
|
|||||||
|
|
||||||
// Get confirmation code
|
// Get confirmation code
|
||||||
// Gets the confirmation code and the address of the page where it needs to be entered
|
// Gets the confirmation code and the address of the page where it needs to be entered
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientId - String - Client id - id
|
// ClientId - String - Client id - id
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetConfirmationCode(Val ClientId) Export
|
Function GetConfirmationCode(Val ClientId) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientId);
|
OPI_TypeConversion.GetLine(ClientId);
|
||||||
|
|
||||||
Parameters = New Structure("client_id", ClientId);
|
Parameters = New Structure("client_id", ClientId);
|
||||||
Response = OPI_Tools.Post("https://oauth.yandex.ru/device/code", Parameters, , False);
|
Response = OPI_Tools.Post("https://oauth.yandex.ru/device/code", Parameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Convert code to token
|
// Convert code to token
|
||||||
// Converts the code to a token after entering the code when executing GetConfirmationCode
|
// Converts the code to a token after entering the code when executing GetConfirmationCode
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientId - String - Client id - id
|
// ClientId - String - Client id - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// DeviceCode - String - device_code from GetConfirmationCode() - device
|
// DeviceCode - String - device_code from GetConfirmationCode() - device
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function ConvertCodeToToken(Val ClientId, Val ClientSecret, Val DeviceCode) Export
|
Function ConvertCodeToToken(Val ClientId, Val ClientSecret, Val DeviceCode) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientId);
|
OPI_TypeConversion.GetLine(ClientId);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(DeviceCode);
|
OPI_TypeConversion.GetLine(DeviceCode);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("grant_type" , "device_code");
|
Parameters.Insert("grant_type" , "device_code");
|
||||||
Parameters.Insert("code" , DeviceCode);
|
Parameters.Insert("code" , DeviceCode);
|
||||||
Parameters.Insert("client_id" , ClientId);
|
Parameters.Insert("client_id" , ClientId);
|
||||||
Parameters.Insert("client_secret" , ClientSecret);
|
Parameters.Insert("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Refresh token
|
// Refresh token
|
||||||
// Updates token by Refresh token
|
// Updates token by Refresh token
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientId - String - Client id - id
|
// ClientId - String - Client id - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// RefreshToken - String - Refresh token - refresh
|
// RefreshToken - String - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function RefreshToken(Val ClientId, Val ClientSecret, Val RefreshToken) Export
|
Function RefreshToken(Val ClientId, Val ClientSecret, Val RefreshToken) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientId);
|
OPI_TypeConversion.GetLine(ClientId);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(RefreshToken);
|
OPI_TypeConversion.GetLine(RefreshToken);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("grant_type" , "refresh_token");
|
Parameters.Insert("grant_type" , "refresh_token");
|
||||||
Parameters.Insert("refresh_token" , RefreshToken);
|
Parameters.Insert("refresh_token" , RefreshToken);
|
||||||
Parameters.Insert("client_id" , ClientId);
|
Parameters.Insert("client_id" , ClientId);
|
||||||
Parameters.Insert("client_secret" , ClientSecret);
|
Parameters.Insert("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -46,404 +46,404 @@
|
|||||||
#Region Internal
|
#Region Internal
|
||||||
|
|
||||||
Function GetTestingSectionMapping() Export
|
Function GetTestingSectionMapping() Export
|
||||||
|
|
||||||
StandardDependencies = "[Decode, Build]";
|
StandardDependencies = "[Decode, Build]";
|
||||||
GoogleDependencies = "Testing-GoogleWorkspace";
|
GoogleDependencies = "Testing-GoogleWorkspace";
|
||||||
|
|
||||||
Sections = New Structure;
|
Sections = New Structure;
|
||||||
Sections.Insert("Telegram" , StandardDependencies);
|
Sections.Insert("Telegram" , StandardDependencies);
|
||||||
Sections.Insert("VK" , StandardDependencies);
|
Sections.Insert("VK" , StandardDependencies);
|
||||||
Sections.Insert("Viber" , StandardDependencies);
|
Sections.Insert("Viber" , StandardDependencies);
|
||||||
Sections.Insert("Twitter" , StandardDependencies);
|
Sections.Insert("Twitter" , StandardDependencies);
|
||||||
Sections.Insert("YandexDisk" , StandardDependencies);
|
Sections.Insert("YandexDisk" , StandardDependencies);
|
||||||
Sections.Insert("GoogleWorkspace", StandardDependencies);
|
Sections.Insert("GoogleWorkspace", StandardDependencies);
|
||||||
Sections.Insert("GoogleCalendar" , GoogleDependencies);
|
Sections.Insert("GoogleCalendar" , GoogleDependencies);
|
||||||
Sections.Insert("GoogleDrive" , GoogleDependencies);
|
Sections.Insert("GoogleDrive" , GoogleDependencies);
|
||||||
Sections.Insert("GoogleSheets" , GoogleDependencies);
|
Sections.Insert("GoogleSheets" , GoogleDependencies);
|
||||||
Sections.Insert("Notion" , StandardDependencies);
|
Sections.Insert("Notion" , StandardDependencies);
|
||||||
Sections.Insert("Slack" , StandardDependencies);
|
Sections.Insert("Slack" , StandardDependencies);
|
||||||
Sections.Insert("Airtable" , StandardDependencies);
|
Sections.Insert("Airtable" , StandardDependencies);
|
||||||
Sections.Insert("Dropbox" , StandardDependencies);
|
Sections.Insert("Dropbox" , StandardDependencies);
|
||||||
Sections.Insert("Bitrix24" , StandardDependencies);
|
Sections.Insert("Bitrix24" , StandardDependencies);
|
||||||
|
|
||||||
Return Sections;
|
Return Sections;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetTestTable() Export
|
Function GetTestTable() Export
|
||||||
|
|
||||||
Telegram = "Telegram";
|
Telegram = "Telegram";
|
||||||
VKontakte = "VK";
|
VKontakte = "VK";
|
||||||
YDisk = "YandexDisk";
|
YDisk = "YandexDisk";
|
||||||
Calendar = "GoogleCalendar";
|
Calendar = "GoogleCalendar";
|
||||||
Twitter = "Twitter";
|
Twitter = "Twitter";
|
||||||
Viber = "Viber";
|
Viber = "Viber";
|
||||||
Drive = "GoogleDrive";
|
Drive = "GoogleDrive";
|
||||||
VSpace = "GoogleWorkspace";
|
VSpace = "GoogleWorkspace";
|
||||||
Notion = "Notion";
|
Notion = "Notion";
|
||||||
Slack = "Slack";
|
Slack = "Slack";
|
||||||
Tables = "GoogleSheets";
|
Tables = "GoogleSheets";
|
||||||
AirT = "Airtable";
|
AirT = "Airtable";
|
||||||
Dropbox = "Dropbox";
|
Dropbox = "Dropbox";
|
||||||
Bitrix = "Bitrix24";
|
Bitrix = "Bitrix24";
|
||||||
|
|
||||||
TestTable = New ValueTable;
|
TestTable = New ValueTable;
|
||||||
TestTable.Columns.Add("Method");
|
TestTable.Columns.Add("Method");
|
||||||
TestTable.Columns.Add("Synonym");
|
TestTable.Columns.Add("Synonym");
|
||||||
TestTable.Columns.Add("Section");
|
TestTable.Columns.Add("Section");
|
||||||
|
|
||||||
NewTest(TestTable, "TelegramAPI_GetBotInfo" , "Get bot information" , Telegram);
|
NewTest(TestTable, "TelegramAPI_GetBotInfo" , "Get bot information" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_GetUpdates" , "Get updates" , Telegram);
|
NewTest(TestTable, "TelegramAPI_GetUpdates" , "Get updates" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SetWebhook" , "Set Webhook" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SetWebhook" , "Set Webhook" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendTextMessage" , "Send text message" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendTextMessage" , "Send text message" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendImage" , "Send image" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendImage" , "Send image" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendVideo" , "Send video" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendVideo" , "Send video" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendAudio" , "Send audio" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendAudio" , "Send audio" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendDocument" , "Send document" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendDocument" , "Send document" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendGIF" , "Send GIF" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendGIF" , "Send GIF" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendMediaGroup" , "Send mediagroup" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendMediaGroup" , "Send mediagroup" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendLocation" , "Send location" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendLocation" , "Send location" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendContact" , "Send contact" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendContact" , "Send contact" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendPoll" , "Send poll" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendPoll" , "Send poll" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_ForwardMessage" , "Forward message" , Telegram);
|
NewTest(TestTable, "TelegramAPI_ForwardMessage" , "Forward message" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_BanUnban" , "Ban/Unban" , Telegram);
|
NewTest(TestTable, "TelegramAPI_BanUnban" , "Ban/Unban" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_CreateInvitationLink" , "Create invitation link" , Telegram);
|
NewTest(TestTable, "TelegramAPI_CreateInvitationLink" , "Create invitation link" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_PinUnpinMessage" , "Pin/Unpin message" , Telegram);
|
NewTest(TestTable, "TelegramAPI_PinUnpinMessage" , "Pin/Unpin message" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_GetMemberCount" , "Get participant count" , Telegram);
|
NewTest(TestTable, "TelegramAPI_GetMemberCount" , "Get participant count" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_GetForumAvatarsList", "Get forum avatars list", Telegram);
|
NewTest(TestTable, "TelegramAPI_GetForumAvatarsList" , "Get forum avatars list" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_CreateDeleteForumTopic" , "Create/Delete forum topic" , Telegram);
|
NewTest(TestTable, "TelegramAPI_CreateDeleteForumTopic" , "Create/Delete forum topic" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_ChangeMainTopicName" , "Change main topic name" , Telegram);
|
NewTest(TestTable, "TelegramAPI_ChangeMainTopicName" , "Change main topic name" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_HideShowMainTopic" , "Hide/Show main topic" , Telegram);
|
NewTest(TestTable, "TelegramAPI_HideShowMainTopic" , "Hide/Show main topic" , Telegram);
|
||||||
|
|
||||||
NewTest(TestTable, "VKAPI_CreateTokenLink" , "Create token retrieval link", VKontakte);
|
NewTest(TestTable, "VKAPI_CreateTokenLink" , "Create token retrieval link" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateDeletePost" , "Create/Delete post" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateDeletePost" , "Create/Delete post" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateCompositePost" , "Create/Delete composite post" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateCompositePost" , "Create/Delete composite post" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreatePoll" , "Create poll" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreatePoll" , "Create poll" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_SaveDeleteImage" , "Add/Delete image" , VKontakte);
|
NewTest(TestTable, "VKAPI_SaveDeleteImage" , "Add/Delete image" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateStory" , "Create story" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateStory" , "Create story" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_DiscussionMethods" , "Actions with discussions" , VKontakte);
|
NewTest(TestTable, "VKAPI_DiscussionMethods" , "Actions with discussions" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_LikeRepostComment" , "Like/Repost/Comment" , VKontakte);
|
NewTest(TestTable, "VKAPI_LikeRepostComment" , "Like/Repost/Comment" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetStatistics" , "Get statistics" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetStatistics" , "Get statistics" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetPostStatistics" , "Get post statistics" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetPostStatistics" , "Get post statistics" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateAdCampaign" , "Create advertising campaign" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateAdCampaign" , "Create advertising campaign" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_SendMessage" , "Send message" , VKontakte);
|
NewTest(TestTable, "VKAPI_SendMessage" , "Send message" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetProductCategories" , "Get product categories" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetProductCategories" , "Get product categories" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateProductSelection" , "Create product and selection" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateProductSelection" , "Create product and selection" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateProductWithProperties" , "Create product with properties" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateProductWithProperties" , "Create product with properties" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetProductList" , "Get product list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetProductList" , "Get product list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetSelectionList" , "Get selection list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetSelectionList" , "Get selection list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetPropertyList" , "Get property list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetPropertyList" , "Get property list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetOrderList" , "Get order list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetOrderList" , "Get order list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_UploadVideo" , "Upload video" , VKontakte);
|
NewTest(TestTable, "VKAPI_UploadVideo" , "Upload video" , VKontakte);
|
||||||
|
|
||||||
NewTest(TestTable, "YDisk_GetDiskInfo" , "Get disk information" , YDisk);
|
NewTest(TestTable, "YDisk_GetDiskInfo" , "Get disk information" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_CreateFolder" , "Create folder" , YDisk);
|
NewTest(TestTable, "YDisk_CreateFolder" , "Create folder" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_UploadByUrlAndGetObject", "Upload by URL and get" , YDisk);
|
NewTest(TestTable, "YDisk_UploadByUrlAndGetObject", "Upload by URL and get" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_UploadDeleteFile" , "Upload/Delete file" , YDisk);
|
NewTest(TestTable, "YDisk_UploadDeleteFile" , "Upload/Delete file" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_CreateObjectCopy" , "Create object copy" , YDisk);
|
NewTest(TestTable, "YDisk_CreateObjectCopy" , "Create object copy" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_GetDownloadLink" , "Get download link" , YDisk);
|
NewTest(TestTable, "YDisk_GetDownloadLink" , "Get download link" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_GetFileList" , "Get list of files" , YDisk);
|
NewTest(TestTable, "YDisk_GetFileList" , "Get list of files" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_MoveObject" , "Move object" , YDisk);
|
NewTest(TestTable, "YDisk_MoveObject" , "Move object" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_PublicObjectActions" , "Actions with public objects", YDisk);
|
NewTest(TestTable, "YDisk_PublicObjectActions" , "Actions with public objects", YDisk);
|
||||||
NewTest(TestTable, "YDisk_GetPublishedList" , "Get published list" , YDisk);
|
NewTest(TestTable, "YDisk_GetPublishedList" , "Get published list" , YDisk);
|
||||||
|
|
||||||
NewTest(TestTable, "GV_GetAuthorizationLink" , "Get authorization link" , VSpace);
|
NewTest(TestTable, "GV_GetAuthorizationLink" , "Get authorization link" , VSpace);
|
||||||
NewTest(TestTable, "GV_GetToken" , "Get token" , VSpace);
|
NewTest(TestTable, "GV_GetToken" , "Get token" , VSpace);
|
||||||
NewTest(TestTable, "GV_UpdateToken" , "Refresh token" , VSpace);
|
NewTest(TestTable, "GV_UpdateToken" , "Refresh token" , VSpace);
|
||||||
|
|
||||||
NewTest(TestTable, "GC_GetCalendarList" , "Get list of calendars" , Calendar);
|
NewTest(TestTable, "GC_GetCalendarList" , "Get list of calendars" , Calendar);
|
||||||
NewTest(TestTable, "GC_CreateDeleteCalendar" , "Create/Delete calendar" , Calendar);
|
NewTest(TestTable, "GC_CreateDeleteCalendar" , "Create/Delete calendar" , Calendar);
|
||||||
NewTest(TestTable, "GC_CreateDeleteEvent" , "Create/Delete event" , Calendar);
|
NewTest(TestTable, "GC_CreateDeleteEvent" , "Create/Delete event" , Calendar);
|
||||||
NewTest(TestTable, "GC_GetEventList" , "Get list of events" , Calendar);
|
NewTest(TestTable, "GC_GetEventList" , "Get list of events" , Calendar);
|
||||||
|
|
||||||
NewTest(TestTable, "GD_GetCatalogList" , "Get list of directories" , Drive);
|
NewTest(TestTable, "GD_GetCatalogList" , "Get list of directories" , Drive);
|
||||||
NewTest(TestTable, "GD_UploadDeleteFile" , "Upload/Delete file" , Drive);
|
NewTest(TestTable, "GD_UploadDeleteFile" , "Upload/Delete file" , Drive);
|
||||||
NewTest(TestTable, "GD_CreateDeleteComment" , "Create/Delete Comment" , Drive);
|
NewTest(TestTable, "GD_CreateDeleteComment" , "Create/Delete Comment" , Drive);
|
||||||
NewTest(TestTable, "GD_CreateCatalog" , "Create/Delete catalog" , Drive);
|
NewTest(TestTable, "GD_CreateCatalog" , "Create/Delete catalog" , Drive);
|
||||||
|
|
||||||
NewTest(TestTable, "GT_CreateTable" , "Create table" , Tables);
|
NewTest(TestTable, "GT_CreateTable" , "Create table" , Tables);
|
||||||
NewTest(TestTable, "GT_GetTable" , "Get table" , Tables);
|
NewTest(TestTable, "GT_GetTable" , "Get table" , Tables);
|
||||||
NewTest(TestTable, "GT_FillClearCells" , "Fill/Clear cells" , Tables);
|
NewTest(TestTable, "GT_FillClearCells" , "Fill/Clear cells" , Tables);
|
||||||
|
|
||||||
NewTest(TestTable, "Twitter_GetAuthorizationLink" , "Get authorization link" , Twitter);
|
NewTest(TestTable, "Twitter_GetAuthorizationLink" , "Get authorization link" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_UpdateToken" , "Refresh token" , Twitter);
|
NewTest(TestTable, "Twitter_UpdateToken" , "Refresh token" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTextTweet" , "Text tweet" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTextTweet" , "Text tweet" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithImage" , "Tweet with image" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithImage" , "Tweet with image" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithVideo" , "Tweet with video" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithVideo" , "Tweet with video" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithGif" , "Tweet with gif" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithGif" , "Tweet with gif" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithPoll" , "Tweet with poll" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithPoll" , "Tweet with poll" , Twitter);
|
||||||
|
|
||||||
NewTest(TestTable, "Viber_GetChannelInfo" , "Get channel info" , Viber);
|
NewTest(TestTable, "Viber_GetChannelInfo" , "Get channel info" , Viber);
|
||||||
NewTest(TestTable, "Viber_GetUserData" , "Get user data" , Viber);
|
NewTest(TestTable, "Viber_GetUserData" , "Get user data" , Viber);
|
||||||
NewTest(TestTable, "Viber_GetOnlineUsers" , "Get online users" , Viber);
|
NewTest(TestTable, "Viber_GetOnlineUsers" , "Get online users" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendTextMessage" , "Send text message" , Viber);
|
NewTest(TestTable, "Viber_SendTextMessage" , "Send text message" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendImage" , "Send image" , Viber);
|
NewTest(TestTable, "Viber_SendImage" , "Send image" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendFile" , "SendFile" , Viber);
|
NewTest(TestTable, "Viber_SendFile" , "SendFile" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendContact" , "Send contact" , Viber);
|
NewTest(TestTable, "Viber_SendContact" , "Send contact" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendLocation" , "Send location" , Viber);
|
NewTest(TestTable, "Viber_SendLocation" , "Send location" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendLink" , "Send link" , Viber);
|
NewTest(TestTable, "Viber_SendLink" , "Send link" , Viber);
|
||||||
|
|
||||||
NewTest(TestTable, "Notion_CreatePage" , "Create page" , Notion);
|
NewTest(TestTable, "Notion_CreatePage" , "Create page" , Notion);
|
||||||
NewTest(TestTable, "Notion_CreateEditDatabase" , "Create/Edit database" , Notion);
|
NewTest(TestTable, "Notion_CreateEditDatabase" , "Create/Edit database" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetPageInfo" , "Get page info" , Notion);
|
NewTest(TestTable, "Notion_GetPageInfo" , "Get page info" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetDatabaseInfo" , "Get database info" , Notion);
|
NewTest(TestTable, "Notion_GetDatabaseInfo" , "Get database info" , Notion);
|
||||||
NewTest(TestTable, "Notion_CreatePageInDatabase" , "Create page in database" , Notion);
|
NewTest(TestTable, "Notion_CreatePageInDatabase" , "Create page in database" , Notion);
|
||||||
NewTest(TestTable, "Notion_EditPageProperties" , "Edit page properties" , Notion);
|
NewTest(TestTable, "Notion_EditPageProperties" , "Edit page properties" , Notion);
|
||||||
NewTest(TestTable, "Notion_CreateDeleteBlock" , "Create/Delete block" , Notion);
|
NewTest(TestTable, "Notion_CreateDeleteBlock" , "Create/Delete block" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetUsers" , "Get users" , Notion);
|
NewTest(TestTable, "Notion_GetUsers" , "Get users" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetUserData" , "Get user data" , Notion);
|
NewTest(TestTable, "Notion_GetUserData" , "Get user data" , Notion);
|
||||||
|
|
||||||
NewTest(TestTable, "Slack_GetBotInfo" , "Get bot information" , Slack);
|
NewTest(TestTable, "Slack_GetBotInfo" , "Get bot information" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetUserList" , "Get user list" , Slack);
|
NewTest(TestTable, "Slack_GetUserList" , "Get user list" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetRegionList" , "Get region list" , Slack);
|
NewTest(TestTable, "Slack_GetRegionList" , "Get region list" , Slack);
|
||||||
NewTest(TestTable, "Slack_SendDeleteMessage" , "Send/Delete message" , Slack);
|
NewTest(TestTable, "Slack_SendDeleteMessage" , "Send/Delete message" , Slack);
|
||||||
NewTest(TestTable, "Slack_SendDeleteEphemeral" , "Send/Delete ephemeral" , Slack);
|
NewTest(TestTable, "Slack_SendDeleteEphemeral" , "Send/Delete ephemeral" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetScheduledMessages" , "Get scheduled messages" , Slack);
|
NewTest(TestTable, "Slack_GetScheduledMessages" , "Get scheduled messages" , Slack);
|
||||||
NewTest(TestTable, "Slack_CreateArchiveChannel" , "Create/Archive channel" , Slack);
|
NewTest(TestTable, "Slack_CreateArchiveChannel" , "Create/Archive channel" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetChannelList" , "Get channel list" , Slack);
|
NewTest(TestTable, "Slack_GetChannelList" , "Get channel list" , Slack);
|
||||||
NewTest(TestTable, "Slack_OpenCloseDialog" , "Open/Close dialog" , Slack);
|
NewTest(TestTable, "Slack_OpenCloseDialog" , "Open/Close dialog" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetFileList" , "Get list of files" , Slack);
|
NewTest(TestTable, "Slack_GetFileList" , "Get list of files" , Slack);
|
||||||
NewTest(TestTable, "Slack_UploadDeleteFile" , "Upload/Delete file" , Slack);
|
NewTest(TestTable, "Slack_UploadDeleteFile" , "Upload/Delete file" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetExternalFileList" , "Get external file list" , Slack);
|
NewTest(TestTable, "Slack_GetExternalFileList" , "Get external file list" , Slack);
|
||||||
NewTest(TestTable, "Slack_UploadDeleteExternalFile" , "Upload/Delete external file" , Slack);
|
NewTest(TestTable, "Slack_UploadDeleteExternalFile" , "Upload/Delete external file" , Slack);
|
||||||
|
|
||||||
NewTest(TestTable, "AT_CreateDatabase" , "Create/Edit database" , AirT);
|
NewTest(TestTable, "AT_CreateDatabase" , "Create/Edit database" , AirT);
|
||||||
NewTest(TestTable, "AT_CreateTable" , "Create/Edit table" , AirT);
|
NewTest(TestTable, "AT_CreateTable" , "Create/Edit table" , AirT);
|
||||||
NewTest(TestTable, "AT_CreateField" , "Create/Edit field" , AirT);
|
NewTest(TestTable, "AT_CreateField" , "Create/Edit field" , AirT);
|
||||||
NewTest(TestTable, "AT_CreateDeleteRecords" , "Create/Delete records" , AirT);
|
NewTest(TestTable, "AT_CreateDeleteRecords" , "Create/Delete records" , AirT);
|
||||||
|
|
||||||
NewTest(TestTable, "DropboxAPI_GetUpdateToken" , "Get/Update token" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_GetUpdateToken" , "Get/Update token" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_UploadFile" , "Upload file" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_UploadFile" , "Upload file" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_UploadFileByURL" , "Upload file by URL" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_UploadFileByURL" , "Upload file by URL" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_CreateFolder" , "Create folder" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_CreateFolder" , "Create folder" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_CreateDeleteTag" , "Create/Delete tag" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_CreateDeleteTag" , "Create/Delete tag" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_GetAccount" , "Get account data" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_GetAccount" , "Get account data" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_AccessManagement" , "Access management" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_AccessManagement" , "Access management" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_GetFolderFileList" , "Get list of folder files" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_GetFolderFileList" , "Get list of folder files" , Dropbox);
|
||||||
|
|
||||||
NewTest(TestTable, "B24_TokenManagment" , "Token management" , Bitrix);
|
NewTest(TestTable, "B24_TokenManagment" , "Token management" , Bitrix);
|
||||||
NewTest(TestTable, "B24_ServerTime" , "Server time" , Bitrix);
|
NewTest(TestTable, "B24_ServerTime" , "Server time" , Bitrix);
|
||||||
NewTest(TestTable, "B24_PostsManagment" , "Posts managment" , Bitrix);
|
NewTest(TestTable, "B24_PostsManagment" , "Posts managment" , Bitrix);
|
||||||
NewTest(TestTable, "B24_TaskManagment" , "Tasks managment" , Bitrix);
|
NewTest(TestTable, "B24_TaskManagment" , "Tasks managment" , Bitrix);
|
||||||
NewTest(TestTable, "B24_CommentsManagment" , "Comments managment" , Bitrix);
|
NewTest(TestTable, "B24_CommentsManagment" , "Comments managment" , Bitrix);
|
||||||
NewTest(TestTable, "B24_WorkingWithDrive" , "Working with drive" , Bitrix);
|
NewTest(TestTable, "B24_WorkingWithDrive" , "Working with drive" , Bitrix);
|
||||||
NewTest(TestTable, "B24_Kanban" , "Kanban" , Bitrix);
|
NewTest(TestTable, "B24_Kanban" , "Kanban" , Bitrix);
|
||||||
NewTest(TestTable, "B24_Timekeeping" , "Timekeeping" , Bitrix);
|
NewTest(TestTable, "B24_Timekeeping" , "Timekeeping" , Bitrix);
|
||||||
NewTest(TestTable, "B24_ChatManagment" , "Chats works" , Bitrix);
|
NewTest(TestTable, "B24_ChatManagment" , "Chats works" , Bitrix);
|
||||||
NewTest(TestTable, "B24_NotificationsManagment" , "Notifications managment" , Bitrix);
|
NewTest(TestTable, "B24_NotificationsManagment" , "Notifications managment" , Bitrix);
|
||||||
|
|
||||||
Return TestTable;
|
Return TestTable;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ExpectsThat(Value) Export
|
Function ExpectsThat(Value) Export
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
Module = GetCommonModule("ЮТест");
|
Module = GetCommonModule("ЮТест");
|
||||||
Ожидаем = TypeOf(Module) = Type("CommonModule");
|
Ожидаем = TypeOf(Module) = Type("CommonModule");
|
||||||
Return Module.ОжидаетЧто(Value);
|
Return Module.ОжидаетЧто(Value);
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Return Ожидаем.Что(Value);
|
Return Ожидаем.Что(Value);
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function FormYAXTests() Export
|
Function FormYAXTests() Export
|
||||||
|
|
||||||
Module = GetCommonModule("ЮТТесты");
|
Module = GetCommonModule("ЮТТесты");
|
||||||
Sections = GetTestingSectionMapping();
|
Sections = GetTestingSectionMapping();
|
||||||
TestTable = GetTestTable();
|
TestTable = GetTestTable();
|
||||||
|
|
||||||
For Each Section In Sections Do
|
For Each Section In Sections Do
|
||||||
|
|
||||||
CurrentSection = Section.Key;
|
CurrentSection = Section.Key;
|
||||||
Filter = New Structure("Section", CurrentSection);
|
Filter = New Structure("Section", CurrentSection);
|
||||||
SectionTests = TestTable.FindRows(Filter);
|
SectionTests = TestTable.FindRows(Filter);
|
||||||
|
|
||||||
Set = Module.ДобавитьТестовыйНабор(CurrentSection);
|
Set = Module.ДобавитьТестовыйНабор(CurrentSection);
|
||||||
|
|
||||||
For Each Test In SectionTests Do
|
For Each Test In SectionTests Do
|
||||||
Set.ДобавитьСерверныйТест(Test.Method, Test.Synonym);
|
Set.ДобавитьСерверныйТест(Test.Method, Test.Synonym);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return "";
|
Return "";
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function FormAssertsTests() Export
|
Function FormAssertsTests() Export
|
||||||
|
|
||||||
TestTable = GetTestTable();
|
TestTable = GetTestTable();
|
||||||
ArrayOfTests = New Array;
|
ArrayOfTests = New Array;
|
||||||
|
|
||||||
For Each Test In TestTable Do
|
For Each Test In TestTable Do
|
||||||
ArrayOfTests.Add(Test.Method);
|
ArrayOfTests.Add(Test.Method);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return ArrayOfTests;
|
Return ArrayOfTests;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetParameter(Parameter) Export
|
Function GetParameter(Parameter) Export
|
||||||
|
|
||||||
Path = DataFilePath();
|
Path = DataFilePath();
|
||||||
Return GetValueFromFile(Parameter, Path);
|
Return GetValueFromFile(Parameter, Path);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetBinary(Parameter) Export
|
Function GetBinary(Parameter) Export
|
||||||
|
|
||||||
Path = DataFilePath();
|
Path = DataFilePath();
|
||||||
LocalParameter = Parameter + "Local";
|
LocalParameter = Parameter + "Local";
|
||||||
MainValue = GetValueFromFile(Parameter , Path);
|
MainValue = GetValueFromFile(Parameter , Path);
|
||||||
LocalValue = GetValueFromFile(LocalParameter, Path);
|
LocalValue = GetValueFromFile(LocalParameter, Path);
|
||||||
|
|
||||||
LocalFile = New File(LocalValue);
|
LocalFile = New File(LocalValue);
|
||||||
|
|
||||||
If LocalFile.Exist() Then
|
If LocalFile.Exist() Then
|
||||||
Value = New BinaryData(LocalValue);
|
Value = New BinaryData(LocalValue);
|
||||||
Else
|
Else
|
||||||
Value = MainValue;
|
Value = MainValue;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Value) = Type("String") Then
|
If TypeOf(Value) = Type("String") Then
|
||||||
Value = GetFilePath(Value, LocalParameter);
|
Value = GetFilePath(Value, LocalParameter);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Value;
|
Return Value;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetFilePath(Val Path, LocalParameter, Val SaveLocally = True) Export
|
Function GetFilePath(Val Path, LocalParameter, Val SaveLocally = True) Export
|
||||||
|
|
||||||
If StrFind(Path, "http") > 0
|
If StrFind(Path, "http") > 0
|
||||||
Or StrFind(Path, "www") > 0 Then
|
Or StrFind(Path, "www") > 0 Then
|
||||||
|
|
||||||
TFN = GetTempFileName();
|
TFN = GetTempFileName();
|
||||||
CopyFile(Path, TFN);
|
CopyFile(Path, TFN);
|
||||||
Path = TFN;
|
Path = TFN;
|
||||||
Binary = New BinaryData(Path);
|
Binary = New BinaryData(Path);
|
||||||
|
|
||||||
If SaveLocally Then
|
If SaveLocally Then
|
||||||
WriteParameter(LocalParameter, TFN);
|
WriteParameter(LocalParameter, TFN);
|
||||||
Else
|
Else
|
||||||
DeleteFiles(TFN);
|
DeleteFiles(TFN);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Binary = New BinaryData(Path);
|
Binary = New BinaryData(Path);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Binary;
|
Return Binary;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure ParameterToCollection(Parameter, Collection) Export
|
Procedure ParameterToCollection(Parameter, Collection) Export
|
||||||
|
|
||||||
Value = GetParameter(Parameter);
|
Value = GetParameter(Parameter);
|
||||||
Collection.Insert(Parameter, Value);
|
Collection.Insert(Parameter, Value);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure BinaryToCollection(Parameter, Collection) Export
|
Procedure BinaryToCollection(Parameter, Collection) Export
|
||||||
|
|
||||||
Value = GetBinary(Parameter);
|
Value = GetBinary(Parameter);
|
||||||
Collection.Insert(Parameter, Value);
|
Collection.Insert(Parameter, Value);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteParameter(Parameter, Value) Export
|
Procedure WriteParameter(Parameter, Value) Export
|
||||||
|
|
||||||
Path = DataFilePath();
|
Path = DataFilePath();
|
||||||
WriteParameterToFile(Parameter, Value, Path);
|
WriteParameterToFile(Parameter, Value, Path);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteLog(Val Result, Val Method, Val Library = "") Export
|
Procedure WriteLog(Val Result, Val Method, Val Library = "") Export
|
||||||
|
|
||||||
Header = String(OPI_Tools.GetCurrentDate()) + " | " + Method;
|
Header = String(OPI_Tools.GetCurrentDate()) + " | " + Method;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
Data = OPI_Tools.JSONString(Result);
|
Data = OPI_Tools.JSONString(Result);
|
||||||
Except
|
Except
|
||||||
Data = "Not JSON: " + String(Result);
|
Data = "Not JSON: " + String(Result);
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
Data = " " + Data;
|
Data = " " + Data;
|
||||||
|
|
||||||
Message(Header);
|
Message(Header);
|
||||||
Message(Chars.LF);
|
Message(Chars.LF);
|
||||||
Message(Data);
|
Message(Data);
|
||||||
Message(Chars.LF);
|
Message(Chars.LF);
|
||||||
Message("---------------------------------");
|
Message("---------------------------------");
|
||||||
Message(Chars.LF);
|
Message(Chars.LF);
|
||||||
|
|
||||||
If ValueIsFilled(Library) Then
|
If ValueIsFilled(Library) Then
|
||||||
WriteLogFile(Data, Method, Library);
|
WriteLogFile(Data, Method, Library);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function GetValueFromFile(Parameter, Path)
|
Function GetValueFromFile(Parameter, Path)
|
||||||
|
|
||||||
Values = OPI_Tools.ReadJSONFile(Path);
|
Values = OPI_Tools.ReadJSONFile(Path);
|
||||||
Return ?(Values.Property(Parameter), Values[Parameter], "");
|
Return ?(Values.Property(Parameter), Values[Parameter], "");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function DataFilePath()
|
Function DataFilePath()
|
||||||
|
|
||||||
Path = "";
|
Path = "";
|
||||||
PossiblePaths = New Array;
|
PossiblePaths = New Array;
|
||||||
PossiblePaths.Add("./data.json");
|
PossiblePaths.Add("./data.json");
|
||||||
PossiblePaths.Add("C:\GDrive\Мой Диск\data.json");
|
PossiblePaths.Add("C:\GDrive\Мой Диск\data.json");
|
||||||
PossiblePaths.Add("D:\GD\Мой Диск\data.json");
|
PossiblePaths.Add("D:\GD\Мой Диск\data.json");
|
||||||
|
|
||||||
For Each PossiblePath In PossiblePaths Do
|
For Each PossiblePath In PossiblePaths Do
|
||||||
|
|
||||||
RepositoryFile = New File(PossiblePath);
|
RepositoryFile = New File(PossiblePath);
|
||||||
|
|
||||||
If RepositoryFile.Exist() Then
|
If RepositoryFile.Exist() Then
|
||||||
Path = PossiblePath;
|
Path = PossiblePath;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return Path;
|
Return Path;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetCommonModule(Val Name)
|
Function GetCommonModule(Val Name)
|
||||||
|
|
||||||
Module = Eval(Name);
|
Module = Eval(Name);
|
||||||
|
|
||||||
Return Module;
|
Return Module;
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure NewTest(ValueTable, Val Method, Val Synonym, Val Section)
|
Procedure NewTest(ValueTable, Val Method, Val Synonym, Val Section)
|
||||||
|
|
||||||
NewTest = ValueTable.Add();
|
NewTest = ValueTable.Add();
|
||||||
NewTest.Method = Method;
|
NewTest.Method = Method;
|
||||||
NewTest.Synonym = Synonym;
|
NewTest.Synonym = Synonym;
|
||||||
NewTest.Section = Section;
|
NewTest.Section = Section;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteParameterToFile(Val Parameter, Val Value, Val Path)
|
Procedure WriteParameterToFile(Val Parameter, Val Value, Val Path)
|
||||||
|
|
||||||
Values = OPI_Tools.ReadJSONFile(Path);
|
Values = OPI_Tools.ReadJSONFile(Path);
|
||||||
Values.Insert(Parameter, Value);
|
Values.Insert(Parameter, Value);
|
||||||
|
|
||||||
Record = New JSONWriter;
|
Record = New JSONWriter;
|
||||||
JSONWriterSettings = New JSONWriterSettings(JSONLineBreak.Auto, Chars.Tab);
|
JSONWriterSettings = New JSONWriterSettings(JSONLineBreak.Auto, Chars.Tab);
|
||||||
Record.OpenFile(Path, , , JSONWriterSettings);
|
Record.OpenFile(Path, , , JSONWriterSettings);
|
||||||
WriteJSON(Record, Values);
|
WriteJSON(Record, Values);
|
||||||
@ -452,37 +452,37 @@ Procedure WriteParameterToFile(Val Parameter, Val Value, Val Path)
|
|||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteLogFile(Val Data, Val Method, Val Library)
|
Procedure WriteLogFile(Val Data, Val Method, Val Library)
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
LogPath = "./docs/ru/results";
|
LogPath = "./docs/ru/results";
|
||||||
LibraryLogPath = LogPath + "/" + Library;
|
LibraryLogPath = LogPath + "/" + Library;
|
||||||
|
|
||||||
LogDirectory = New File(LogPath);
|
LogDirectory = New File(LogPath);
|
||||||
|
|
||||||
If Not LogDirectory.Exist() Then
|
If Not LogDirectory.Exist() Then
|
||||||
CreateDirectory(LogPath);
|
CreateDirectory(LogPath);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
LibraryLogCatalog = New File(LibraryLogPath);
|
LibraryLogCatalog = New File(LibraryLogPath);
|
||||||
|
|
||||||
If Not LibraryLogCatalog.Exist() Then
|
If Not LibraryLogCatalog.Exist() Then
|
||||||
CreateDirectory(LibraryLogPath);
|
CreateDirectory(LibraryLogPath);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
FilePath = LibraryLogPath + "/" + Method + ".log";
|
FilePath = LibraryLogPath + "/" + Method + ".log";
|
||||||
LogFile = New File(FilePath);
|
LogFile = New File(FilePath);
|
||||||
|
|
||||||
If Not LogFile.Exist() Then
|
If Not LogFile.Exist() Then
|
||||||
LogDocument = New TextDocument;
|
LogDocument = New TextDocument;
|
||||||
LogDocument.SetText(Data);
|
LogDocument.SetText(Data);
|
||||||
LogDocument.Write(FilePath);
|
LogDocument.Write(FilePath);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Message("Failed to write log file!: " + ErrorDescription());
|
Message("Failed to write log file!: " + ErrorDescription());
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -39,268 +39,268 @@
|
|||||||
#Region Internal
|
#Region Internal
|
||||||
|
|
||||||
Procedure GetBinaryData(Value) Export
|
Procedure GetBinaryData(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If TypeOf(Value) = Type("BinaryData") Then
|
If TypeOf(Value) = Type("BinaryData") Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
|
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
|
|
||||||
If File.Exist() Then
|
If File.Exist() Then
|
||||||
Value = New BinaryData(Value);
|
Value = New BinaryData(Value);
|
||||||
|
|
||||||
ElsIf StrFind(Value, "//") Then
|
ElsIf StrFind(Value, "//") Then
|
||||||
|
|
||||||
Value = OPI_Tools.Get(Value);
|
Value = OPI_Tools.Get(Value);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Value = Base64Value(Value);
|
Value = Base64Value(Value);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Raise "Error getting binary data from parameter: " + ErrorDescription();
|
Raise "Error getting binary data from parameter: " + ErrorDescription();
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetBinaryOrStream(Value) Export
|
Procedure GetBinaryOrStream(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Value) <> Type("String") Then
|
If TypeOf(Value) <> Type("String") Then
|
||||||
GetBinaryData(Value);
|
GetBinaryData(Value);
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
|
|
||||||
If File.Exist() Then
|
If File.Exist() Then
|
||||||
Value = New FileStream(Value, FileOpenMode.Open);
|
Value = New FileStream(Value, FileOpenMode.Open);
|
||||||
Else
|
Else
|
||||||
GetBinaryData(Value);
|
GetBinaryData(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetCollection(Value) Export
|
Procedure GetCollection(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
InitialValue = Value;
|
InitialValue = Value;
|
||||||
|
|
||||||
If ThisIsCollection(Value) Then
|
If ThisIsCollection(Value) Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
|
|
||||||
If TypeOf(Value) = Type("BinaryData") Then
|
If TypeOf(Value) = Type("BinaryData") Then
|
||||||
Value = GetStringFromBinaryData(Value);
|
Value = GetStringFromBinaryData(Value);
|
||||||
Else
|
Else
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
JSONReader = New JSONReader;
|
JSONReader = New JSONReader;
|
||||||
|
|
||||||
If File.Exist() Then
|
If File.Exist() Then
|
||||||
|
|
||||||
JSONReader.OpenFile(Value);
|
JSONReader.OpenFile(Value);
|
||||||
|
|
||||||
ElsIf StrStartsWith(Lower(Value), "http") Then
|
ElsIf StrStartsWith(Lower(Value), "http") Then
|
||||||
|
|
||||||
TFN = GetTempFileName();
|
TFN = GetTempFileName();
|
||||||
CopyFile(Value, TFN);
|
CopyFile(Value, TFN);
|
||||||
JSONReader.OpenFile(TFN);
|
JSONReader.OpenFile(TFN);
|
||||||
JSONReader.Read();
|
JSONReader.Read();
|
||||||
|
|
||||||
DeleteFiles(TFN);
|
DeleteFiles(TFN);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
JSONReader.SetString(TrimAll(Value));
|
JSONReader.SetString(TrimAll(Value));
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Value = ReadJSON(JSONReader, True, Undefined, JSONDateFormat.ISO);
|
Value = ReadJSON(JSONReader, True, Undefined, JSONDateFormat.ISO);
|
||||||
JSONReader.Close();
|
JSONReader.Close();
|
||||||
|
|
||||||
If (Not ThisIsCollection(Value)) Or Not ValueIsFilled(Value) Then
|
If (Not ThisIsCollection(Value)) Or Not ValueIsFilled(Value) Then
|
||||||
|
|
||||||
Value = InitialValue;
|
Value = InitialValue;
|
||||||
GetArray(Value);
|
GetArray(Value);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
|
|
||||||
Value = InitialValue;
|
Value = InitialValue;
|
||||||
GetArray(Value);
|
GetArray(Value);
|
||||||
|
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetArray(Value) Export
|
Procedure GetArray(Value) Export
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Array") Then
|
If TypeOf(Value) = Type("Array") Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Value) = Type("String")
|
If TypeOf(Value) = Type("String")
|
||||||
And StrStartsWith(Value, "[")
|
And StrStartsWith(Value, "[")
|
||||||
And StrEndsWith(Value, "]") Then
|
And StrEndsWith(Value, "]") Then
|
||||||
|
|
||||||
CommaInQuotes = "','";
|
CommaInQuotes = "','";
|
||||||
|
|
||||||
Value = StrReplace(Value, "['" , "");
|
Value = StrReplace(Value, "['" , "");
|
||||||
Value = StrReplace(Value, "']" , "");
|
Value = StrReplace(Value, "']" , "");
|
||||||
Value = StrReplace(Value, "', '" , CommaInQuotes);
|
Value = StrReplace(Value, "', '" , CommaInQuotes);
|
||||||
Value = StrReplace(Value, "' , '", CommaInQuotes);
|
Value = StrReplace(Value, "' , '", CommaInQuotes);
|
||||||
Value = StrReplace(Value, "' ,'" , CommaInQuotes);
|
Value = StrReplace(Value, "' ,'" , CommaInQuotes);
|
||||||
|
|
||||||
Value = StrSplit(Value, CommaInQuotes, False);
|
Value = StrSplit(Value, CommaInQuotes, False);
|
||||||
|
|
||||||
For N = 0 To Value.UBound() Do
|
For N = 0 To Value.UBound() Do
|
||||||
Value[N] = TrimAll(Value[N]);
|
Value[N] = TrimAll(Value[N]);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Number") Then
|
If TypeOf(Value) = Type("Number") Then
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
OPI_Tools.ValueToArray(Value);
|
OPI_Tools.ValueToArray(Value);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetBoolean(Value) Export
|
Procedure GetBoolean(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Boolean") Then
|
If TypeOf(Value) = Type("Boolean") Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
Value = Boolean(Value);
|
Value = Boolean(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Raise "Error getting boolean data from parameter";
|
Raise "Error getting boolean data from parameter";
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetLine(Value, Val FromSource = False) Export
|
Procedure GetLine(Value, Val FromSource = False) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If ThisIsSymbolic(Value) Then
|
If ThisIsSymbolic(Value) Then
|
||||||
|
|
||||||
If Not FromSource Then
|
If Not FromSource Then
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
|
|
||||||
If File.Exist() Then
|
If File.Exist() Then
|
||||||
|
|
||||||
TextReader = New TextReader(Value);
|
TextReader = New TextReader(Value);
|
||||||
Value = TextReader.Read();
|
Value = TextReader.Read();
|
||||||
TextReader.Close();
|
TextReader.Close();
|
||||||
|
|
||||||
ElsIf StrStartsWith(Lower(Value), "http") Then
|
ElsIf StrStartsWith(Lower(Value), "http") Then
|
||||||
|
|
||||||
TFN = GetTempFileName();
|
TFN = GetTempFileName();
|
||||||
CopyFile(Value, TFN);
|
CopyFile(Value, TFN);
|
||||||
|
|
||||||
TextReader = New TextReader(TFN);
|
TextReader = New TextReader(TFN);
|
||||||
Value = TextReader.Read();
|
Value = TextReader.Read();
|
||||||
TextReader.Close();
|
TextReader.Close();
|
||||||
|
|
||||||
DeleteFiles(TFN);
|
DeleteFiles(TFN);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Return;
|
Return;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
ElsIf TypeOf(Value) = Type("BinaryData") Then
|
ElsIf TypeOf(Value) = Type("BinaryData") Then
|
||||||
|
|
||||||
Value = GetStringFromBinaryData(Value);
|
Value = GetStringFromBinaryData(Value);
|
||||||
|
|
||||||
ElsIf ThisIsCollection(Value) Then
|
ElsIf ThisIsCollection(Value) Then
|
||||||
|
|
||||||
Value = OPI_Tools.JSONString(Value);
|
Value = OPI_Tools.JSONString(Value);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Value = String(Value);
|
Value = String(Value);
|
||||||
Return;
|
Return;
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetDate(Value) Export
|
Procedure GetDate(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Date = "Date";
|
Date = "Date";
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If TypeOf(Value) = Type(Date) Then
|
If TypeOf(Value) = Type(Date) Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
Value = XMLValue(Type(Date), Value);
|
Value = XMLValue(Type(Date), Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
OOD = New TypeDescription(Date);
|
OOD = New TypeDescription(Date);
|
||||||
Value = OOD.AdjustValue(Value);
|
Value = OOD.AdjustValue(Value);
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetNumber(Value) Export
|
Procedure GetNumber(Value) Export
|
||||||
|
|
||||||
TypeDescription = New TypeDescription("Number");
|
TypeDescription = New TypeDescription("Number");
|
||||||
Value = TypeDescription.AdjustValue(Value);
|
Value = TypeDescription.AdjustValue(Value);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -308,19 +308,19 @@ EndProcedure
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function ThisIsCollection(Val Value)
|
Function ThisIsCollection(Val Value)
|
||||||
|
|
||||||
Return TypeOf(Value) = Type("Array")
|
Return TypeOf(Value) = Type("Array")
|
||||||
Or TypeOf(Value) = Type("Structure")
|
Or TypeOf(Value) = Type("Structure")
|
||||||
Or TypeOf(Value) = Type("Map");
|
Or TypeOf(Value) = Type("Map");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ThisIsSymbolic(Val Value)
|
Function ThisIsSymbolic(Val Value)
|
||||||
|
|
||||||
Return TypeOf(Value) = Type("String")
|
Return TypeOf(Value) = Type("String")
|
||||||
Or TypeOf(Value) = Type("Number")
|
Or TypeOf(Value) = Type("Number")
|
||||||
Or TypeOf(Value) = Type("Date");
|
Or TypeOf(Value) = Type("Date");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -39,75 +39,75 @@
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Copyright (c) 2019, LLC 1C-Soft
|
// Copyright (c) 2019, LLC 1C-Soft
|
||||||
// All rights reserved. This program and accompanying materials are provided
|
// All rights reserved. This program and accompanying materials are provided
|
||||||
// under the terms of the Attribution 4.0 International (CC BY 4.0 license)
|
// under the terms of the Attribution 4.0 International (CC BY 4.0 license)
|
||||||
// License text available at:
|
// License text available at:
|
||||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Function HMACSHA256(Val Key, Val Data) Export
|
Function HMACSHA256(Val Key, Val Data) Export
|
||||||
|
|
||||||
Return HMAC(Key, Data, HashFunction.SHA256, 64);
|
Return HMAC(Key, Data, HashFunction.SHA256, 64);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function Hash(BinaryData, Type) Export
|
Function Hash(BinaryData, Type) Export
|
||||||
|
|
||||||
Hashing = New DataHashing(Type);
|
Hashing = New DataHashing(Type);
|
||||||
Hashing.Append(BinaryData);
|
Hashing.Append(BinaryData);
|
||||||
|
|
||||||
Return Hashing.HashSum;
|
Return Hashing.HashSum;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function HMAC(Val Key, Val Data, Type, BlockSize) Export
|
Function HMAC(Val Key, Val Data, Type, BlockSize) Export
|
||||||
|
|
||||||
Twice = 2;
|
Twice = 2;
|
||||||
|
|
||||||
If Key.Size() > BlockSize Then
|
If Key.Size() > BlockSize Then
|
||||||
Key = Hash(Key, Type);
|
Key = Hash(Key, Type);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Key.Size() <= BlockSize Then
|
If Key.Size() <= BlockSize Then
|
||||||
Key = GetHexStringFromBinaryData(Key);
|
Key = GetHexStringFromBinaryData(Key);
|
||||||
Key = Left(Key + RepeatString("00", BlockSize), BlockSize * Twice);
|
Key = Left(Key + RepeatString("00", BlockSize), BlockSize * Twice);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Key = GetBinaryDataBufferFromBinaryData(GetBinaryDataFromHexString(Key));
|
Key = GetBinaryDataBufferFromBinaryData(GetBinaryDataFromHexString(Key));
|
||||||
|
|
||||||
Ipad = GetBinaryDataBufferFromHexString(RepeatString("36", BlockSize));
|
Ipad = GetBinaryDataBufferFromHexString(RepeatString("36", BlockSize));
|
||||||
Opad = GetBinaryDataBufferFromHexString(RepeatString("5c", BlockSize));
|
Opad = GetBinaryDataBufferFromHexString(RepeatString("5c", BlockSize));
|
||||||
|
|
||||||
Ipad.WriteBitwiseXor(0, Key);
|
Ipad.WriteBitwiseXor(0, Key);
|
||||||
Ikeypad = GetBinaryDataFromBinaryDataBuffer(ipad);
|
Ikeypad = GetBinaryDataFromBinaryDataBuffer(ipad);
|
||||||
|
|
||||||
Opad.WriteBitwiseXor(0, Key);
|
Opad.WriteBitwiseXor(0, Key);
|
||||||
Okeypad = GetBinaryDataFromBinaryDataBuffer(opad);
|
Okeypad = GetBinaryDataFromBinaryDataBuffer(opad);
|
||||||
|
|
||||||
Return Hash(UniteBinaryData(okeypad, Hash(UniteBinaryData(ikeypad, Data), Type)), Type);
|
Return Hash(UniteBinaryData(okeypad, Hash(UniteBinaryData(ikeypad, Data), Type)), Type);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UniteBinaryData(BinaryData1, BinaryData2) Export
|
Function UniteBinaryData(BinaryData1, BinaryData2) Export
|
||||||
|
|
||||||
BinaryDataArray = New Array;
|
BinaryDataArray = New Array;
|
||||||
BinaryDataArray.Add(BinaryData1);
|
BinaryDataArray.Add(BinaryData1);
|
||||||
BinaryDataArray.Add(BinaryData2);
|
BinaryDataArray.Add(BinaryData2);
|
||||||
|
|
||||||
Return ConcatenateBinaryData(BinaryDataArray);
|
Return ConcatenateBinaryData(BinaryDataArray);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function RepeatString(String, Count) Export
|
Function RepeatString(String, Count) Export
|
||||||
|
|
||||||
Parts = New Array(Count);
|
Parts = New Array(Count);
|
||||||
|
|
||||||
For K = 1 To Count Do
|
For K = 1 To Count Do
|
||||||
Parts.Add(String);
|
Parts.Add(String);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return StrConcat(Parts, "");
|
Return StrConcat(Parts, "");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -42,91 +42,91 @@
|
|||||||
|
|
||||||
// Get list of bases
|
// Get list of bases
|
||||||
// Gets the list of available bases
|
// Gets the list of available bases
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Indent - String - Next page identifier of the base list from the previous request - offset
|
// Indent - String - Next page identifier of the base list from the previous request - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetListOfBases(Val Token, Val Indent = "") Export
|
Function GetListOfBases(Val Token, Val Indent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Indent);
|
OPI_TypeConversion.GetLine(Indent);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get base tables
|
// Get base tables
|
||||||
// Gets the schema of base tables
|
// Gets the schema of base tables
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetDatabaseTables(Val Token, Val Base) Export
|
Function GetDatabaseTables(Val Token, Val Base) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create base
|
// Create base
|
||||||
// Creates a new database
|
// Creates a new database
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Workspace - String - Workspace identifier - ws
|
// Workspace - String - Workspace identifier - ws
|
||||||
// Name - String - New base name - title
|
// Name - String - New base name - title
|
||||||
// TableCollection - Map Of KeyAndValue - Table description: Key > name, Value > array of fields - tablesdata
|
// TableCollection - Map Of KeyAndValue - Table description: Key > name, Value > array of fields - tablesdata
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateDatabase(Val Token, Val Workspace, Val Name, Val TableCollection) Export
|
Function CreateDatabase(Val Token, Val Workspace, Val Name, Val TableCollection) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(TableCollection);
|
OPI_TypeConversion.GetCollection(TableCollection);
|
||||||
|
|
||||||
If Not TypeOf(TableCollection) = Type("Structure")
|
If Not TypeOf(TableCollection) = Type("Structure")
|
||||||
And Not TypeOf(TableCollection) = Type("Map") Then
|
And Not TypeOf(TableCollection) = Type("Map") Then
|
||||||
|
|
||||||
Raise "Error in table collection data";
|
Raise "Error in table collection data";
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
TableArray = New Array;
|
TableArray = New Array;
|
||||||
|
|
||||||
For Each Table In TableCollection Do
|
For Each Table In TableCollection Do
|
||||||
|
|
||||||
Description = GenerateTableDescription(Table.Key, Table.Value);
|
Description = GenerateTableDescription(Table.Key, Table.Value);
|
||||||
TableArray.Add(Description);
|
TableArray.Add(Description);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
||||||
OPI_Tools.AddField("tables" , TableArray , "Array", Parameters);
|
OPI_Tools.AddField("tables" , TableArray , "Array" , Parameters);
|
||||||
OPI_Tools.AddField("workspaceId", Workspace, "String", Parameters);
|
OPI_Tools.AddField("workspaceId", Workspace , "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -137,56 +137,56 @@ EndFunction
|
|||||||
|
|
||||||
// Create table
|
// Create table
|
||||||
// Creates a new table in the base
|
// Creates a new table in the base
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
// Name - String - New table name - title
|
// Name - String - New table name - title
|
||||||
// FieldArray - Array of Structure - Array of field descriptions - fieldsdata
|
// FieldArray - Array of Structure - Array of field descriptions - fieldsdata
|
||||||
// Description - String - Table description - description
|
// Description - String - Table description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateTable(Val Token, Val Base, Val Name, Val FieldArray, Val Description = "") Export
|
Function CreateTable(Val Token, Val Base, Val Name, Val FieldArray, Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
Parameters = GenerateTableDescription(Name, FieldArray, Description);
|
Parameters = GenerateTableDescription(Name, FieldArray, Description);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Modify table
|
// Modify table
|
||||||
// Changes the name and/or description of the base
|
// Changes the name and/or description of the base
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
// Description - String - New description - description
|
// Description - String - New description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function ModifyTable(Val Token, Val Base, Val Table, Val Name = "", Val Description = "") Export
|
Function ModifyTable(Val Token, Val Base, Val Table, Val Name = "", Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table;
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
OPI_Tools.AddField("name" , Name, "String", Parameters);
|
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
||||||
OPI_Tools.AddField("description", Description , "String", Parameters);
|
OPI_Tools.AddField("description", Description , "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -197,40 +197,40 @@ EndFunction
|
|||||||
|
|
||||||
// Create field
|
// Create field
|
||||||
// Creates a new field in the table
|
// Creates a new field in the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier - base
|
// Base - String - Base identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// FieldStructure - Structure of KeyAndValue - Description of the new field - fielddata
|
// FieldStructure - Structure of KeyAndValue - Description of the new field - fielddata
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateField(Val Token, Val Base, Val Table, Val FieldStructure) Export
|
Function CreateField(Val Token, Val Base, Val Table, Val FieldStructure) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetCollection(FieldStructure);
|
OPI_TypeConversion.GetCollection(FieldStructure);
|
||||||
|
|
||||||
If Not TypeOf(FieldStructure) = Type("Structure")
|
If Not TypeOf(FieldStructure) = Type("Structure")
|
||||||
And Not TypeOf(FieldStructure) = Type("Map") Then
|
And Not TypeOf(FieldStructure) = Type("Map") Then
|
||||||
|
|
||||||
Raise "Error in field description data";
|
Raise "Error in field description data";
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table + "/fields";
|
URL = "https://api.airtable.com/v0/meta/bases/" + Base + "/tables/" + Table + "/fields";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, FieldStructure, Headers);
|
Response = OPI_Tools.Post(URL, FieldStructure, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Modify field
|
// Modify field
|
||||||
// Changes the name and/or description of an existing table field
|
// Changes the name and/or description of an existing table field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Base identifier Base - base
|
// Base - String - Base identifier Base - base
|
||||||
@ -238,152 +238,152 @@ EndFunction
|
|||||||
// Field - String - Field identifier - field
|
// Field - String - Field identifier - field
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
// Description - String - New description - description
|
// Description - String - New description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function ModifyField(Val Token, Val Base, Val Table, Val Field, Val Name = "", Val Description = "") Export
|
Function ModifyField(Val Token, Val Base, Val Table, Val Field, Val Name = "", Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Field);
|
OPI_TypeConversion.GetLine(Field);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/"
|
URL = "https://api.airtable.com/v0/meta/bases/"
|
||||||
+ Base
|
+ Base
|
||||||
+ "/tables/"
|
+ "/tables/"
|
||||||
+ Table
|
+ Table
|
||||||
+ "/fields/"
|
+ "/fields/"
|
||||||
+ Field;
|
+ Field;
|
||||||
|
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("name" , Name, "String", Parameters);
|
OPI_Tools.AddField("name" , Name , "String", Parameters);
|
||||||
OPI_Tools.AddField("description", Description , "String", Parameters);
|
OPI_Tools.AddField("description", Description , "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (string)
|
// Get field (string)
|
||||||
// Gets the description of a string field
|
// Gets the description of a string field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - New field name - title
|
// Name - String - New field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetStringField(Val Name) Export
|
Function GetStringField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "richText");
|
Return PrimitiveFieldDescription(Name, "richText");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (numeric)
|
// Get field (numeric)
|
||||||
// Gets the description of a numeric field
|
// Gets the description of a numeric field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - New field name - title
|
// Name - String - New field name - title
|
||||||
// Precision - Number, String - Number of decimal places - precision
|
// Precision - Number, String - Number of decimal places - precision
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetNumberField(Val Name, Val Precision = 0) Export
|
Function GetNumberField(Val Name, Val Precision = 0) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetNumber(Precision);
|
OPI_TypeConversion.GetNumber(Precision);
|
||||||
|
|
||||||
OptionsStructure = New Structure("precision", Precision);
|
OptionsStructure = New Structure("precision", Precision);
|
||||||
Return PrimitiveFieldDescription(Name, "number", OptionsStructure);
|
Return PrimitiveFieldDescription(Name, "number", OptionsStructure);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (file)
|
// Get field (file)
|
||||||
// Gets the description of a file field
|
// Gets the description of a file field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetAttachmentField(Val Name) Export
|
Function GetAttachmentField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "multipleAttachments");
|
Return PrimitiveFieldDescription(Name, "multipleAttachments");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (checkbox)
|
// Get field (checkbox)
|
||||||
// Gets the description of a boolean field
|
// Gets the description of a boolean field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetCheckboxField(Val Name) Export
|
Function GetCheckboxField(Val Name) Export
|
||||||
|
|
||||||
OptionsStructure = New Structure("icon,color", "check", "yellowBright");
|
OptionsStructure = New Structure("icon,color", "check", "yellowBright");
|
||||||
Return PrimitiveFieldDescription(Name, "checkbox", OptionsStructure);
|
Return PrimitiveFieldDescription(Name, "checkbox", OptionsStructure);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (date)
|
// Get field (date)
|
||||||
// Gets the description of a date field
|
// Gets the description of a date field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetDateField(Val Name) Export
|
Function GetDateField(Val Name) Export
|
||||||
|
|
||||||
FormatStructure = New Structure("format,name", "YYYY-MM-DD", "iso");
|
FormatStructure = New Structure("format,name", "YYYY-MM-DD", "iso");
|
||||||
OptionsStructure = New Structure("dateFormat", FormatStructure);
|
OptionsStructure = New Structure("dateFormat", FormatStructure);
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "date", OptionsStructure);
|
Return PrimitiveFieldDescription(Name, "date", OptionsStructure);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (email)
|
// Get field (email)
|
||||||
// Gets the description of an email field
|
// Gets the description of an email field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetEmailField(Val Name) Export
|
Function GetEmailField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "email");
|
Return PrimitiveFieldDescription(Name, "email");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (phone)
|
// Get field (phone)
|
||||||
// Gets the description of a phone number field
|
// Gets the description of a phone number field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetPhoneField(Val Name) Export
|
Function GetPhoneField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "phoneNumber");
|
Return PrimitiveFieldDescription(Name, "phoneNumber");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get field (url)
|
// Get field (url)
|
||||||
// Gets the description of a URL field
|
// Gets the description of a URL field
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Name - String - Field name - title
|
// Name - String - Field name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Field description
|
// Structure - Field description
|
||||||
Function GetLinkField(Val Name) Export
|
Function GetLinkField(Val Name) Export
|
||||||
|
|
||||||
Return PrimitiveFieldDescription(Name, "url");
|
Return PrimitiveFieldDescription(Name, "url");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -392,67 +392,67 @@ EndFunction
|
|||||||
|
|
||||||
// Get list of records
|
// Get list of records
|
||||||
// Gets the list of records of the selected table
|
// Gets the list of records of the selected table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Indent - String - Next page identifier of data from the previous request - offset
|
// Indent - String - Next page identifier of data from the previous request - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetListOfRecords(Val Token, Val Base, Val Table, Val Indent = "") Export
|
Function GetListOfRecords(Val Token, Val Base, Val Table, Val Indent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get record
|
// Get record
|
||||||
// Gets row data of the table by identifier
|
// Gets row data of the table by identifier
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetRecord(Val Token, Val Base, Val Table, Val Record) Export
|
Function GetRecord(Val Token, Val Base, Val Table, Val Record) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create records
|
// Create records
|
||||||
// Creates one or an array of records by description or an array of field value descriptions
|
// Creates one or an array of records by description or an array of field value descriptions
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Data - Structure, Array of Structure - Set or array of sets of pairs Key : Value > Field : FieldValue - data
|
// Data - Structure, Array of Structure - Set or array of sets of pairs Key : Value > Field : FieldValue - data
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export
|
Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export
|
||||||
@ -460,52 +460,52 @@ Function CreatePosts(Val Token, Val Base, Val Table, Val Data) Export
|
|||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetCollection(Data);
|
OPI_TypeConversion.GetCollection(Data);
|
||||||
|
|
||||||
Parameters = New Structure();
|
|
||||||
AddDataDescription(Data, Parameters);
|
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
Parameters = New Structure();
|
||||||
|
AddDataDescription(Data, Parameters);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete records
|
// Delete records
|
||||||
// Deletes one or an array of records by identifiers
|
// Deletes one or an array of records by identifiers
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Records - String, Array of String - Identifier or array of record identifiers - records
|
// Records - String, Array of String - Identifier or array of record identifiers - records
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function DeletePosts(Val Token, Val Base, Val Table, Val Records) Export
|
Function DeletePosts(Val Token, Val Base, Val Table, Val Records) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetArray(Records);
|
OPI_TypeConversion.GetArray(Records);
|
||||||
|
|
||||||
RecordString = "";
|
RecordString = "";
|
||||||
|
|
||||||
For Each Record In Records Do
|
For Each Record In Records Do
|
||||||
RecordString = RecordString
|
RecordString = RecordString
|
||||||
+ ?(ValueIsFilled(RecordString), "&", "?")
|
+ ?(ValueIsFilled(RecordString), "&", "?")
|
||||||
+ "records[]="
|
+ "records[]="
|
||||||
+ OPI_Tools.NumberToString(Record);
|
+ OPI_Tools.NumberToString(Record);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + RecordString;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + RecordString;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -514,67 +514,67 @@ EndFunction
|
|||||||
|
|
||||||
// Get comments
|
// Get comments
|
||||||
// Gets the list of comments for a record in the table
|
// Gets the list of comments for a record in the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Indent - String - Next page identifier of data from the previous request - offset
|
// Indent - String - Next page identifier of data from the previous request - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function GetComments(Val Token, Val Base, Val Table, Val Record, Val Indent = "") Export
|
Function GetComments(Val Token, Val Base, Val Table, Val Record, Val Indent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
OPI_Tools.AddField("offset", Indent, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create comment
|
// Create comment
|
||||||
// Creates a comment for a record in the table
|
// Creates a comment for a record in the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Text - String - Comment text - text
|
// Text - String - Comment text - text
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function CreateComment(Val Token, Val Base, Val Table, Val Record, Val Text) Export
|
Function CreateComment(Val Token, Val Base, Val Table, Val Record, Val Text) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments";
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("text", Text, "String", Parameters);
|
OPI_Tools.AddField("text", Text, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Modify comment
|
// Modify comment
|
||||||
// Changes the text of an existing comment
|
// Changes the text of an existing comment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
@ -582,54 +582,54 @@ EndFunction
|
|||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Comment - String - Comment identifier - comment
|
// Comment - String - Comment identifier - comment
|
||||||
// Text - String - New comment text - text
|
// Text - String - New comment text - text
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function EditComment(Val Token, Val Base, Val Table, Val Record, Val Comment, Val Text) Export
|
Function EditComment(Val Token, Val Base, Val Table, Val Record, Val Comment, Val Text) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
OPI_TypeConversion.GetLine(Comment);
|
OPI_TypeConversion.GetLine(Comment);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure();
|
Parameters = New Structure();
|
||||||
OPI_Tools.AddField("text", Text, "String", Parameters);
|
OPI_Tools.AddField("text", Text, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete comment
|
// Delete comment
|
||||||
// Deletes a comment for a table record
|
// Deletes a comment for a table record
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Base - String - Database identifier - base
|
// Base - String - Database identifier - base
|
||||||
// Table - String - Table identifier - table
|
// Table - String - Table identifier - table
|
||||||
// Record - String - Record identifier in the table - record
|
// Record - String - Record identifier in the table - record
|
||||||
// Comment - String - Comment identifier - comment
|
// Comment - String - Comment identifier - comment
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Airtable
|
// Map Of KeyAndValue - serialized JSON response from Airtable
|
||||||
Function DeleteComment(Val Token, Val Base, Val Table, Val Record, Val Comment) Export
|
Function DeleteComment(Val Token, Val Base, Val Table, Val Record, Val Comment) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Base);
|
OPI_TypeConversion.GetLine(Base);
|
||||||
OPI_TypeConversion.GetLine(Table);
|
OPI_TypeConversion.GetLine(Table);
|
||||||
OPI_TypeConversion.GetLine(Record);
|
OPI_TypeConversion.GetLine(Record);
|
||||||
OPI_TypeConversion.GetLine(Comment);
|
OPI_TypeConversion.GetLine(Comment);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
URL = "https://api.airtable.com/v0/" + Base + "/" + Table + "/" + Record + "/comments/" + Comment;
|
||||||
Headers = GetAuthorizationHeader(Token);
|
Headers = GetAuthorizationHeader(Token);
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -639,58 +639,58 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function GetAuthorizationHeader(Val Token)
|
Function GetAuthorizationHeader(Val Token)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = New Map;
|
Headers = New Map;
|
||||||
Headers.Insert("Authorization", "Bearer " + Token);
|
Headers.Insert("Authorization", "Bearer " + Token);
|
||||||
|
|
||||||
Return Headers;
|
Return Headers;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GenerateTableDescription(Val Name, Val FieldArray, Val Description = "")
|
Function GenerateTableDescription(Val Name, Val FieldArray, Val Description = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetCollection(FieldArray);
|
OPI_TypeConversion.GetCollection(FieldArray);
|
||||||
|
|
||||||
TableDescription = New Structure("name,fields", Name, FieldArray);
|
TableDescription = New Structure("name,fields", Name, FieldArray);
|
||||||
|
|
||||||
OPI_Tools.AddField("description", Description, "String", TableDescription);
|
OPI_Tools.AddField("description", Description, "String", TableDescription);
|
||||||
|
|
||||||
Return TableDescription;
|
Return TableDescription;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function PrimitiveFieldDescription(Val Name, Val Type, Val Options = "")
|
Function PrimitiveFieldDescription(Val Name, Val Type, Val Options = "")
|
||||||
|
|
||||||
FieldStructure = New Structure();
|
FieldStructure = New Structure();
|
||||||
OPI_Tools.AddField("name" , Name, "String" , FieldStructure);
|
OPI_Tools.AddField("name" , Name , "String" , FieldStructure);
|
||||||
OPI_Tools.AddField("type" , Type , "String" , FieldStructure);
|
OPI_Tools.AddField("type" , Type , "String" , FieldStructure);
|
||||||
OPI_Tools.AddField("options", Options , "Collection", FieldStructure);
|
OPI_Tools.AddField("options", Options , "Collection", FieldStructure);
|
||||||
|
|
||||||
Return FieldStructure;
|
Return FieldStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure AddDataDescription(Val Data, Parameters)
|
Procedure AddDataDescription(Val Data, Parameters)
|
||||||
|
|
||||||
If TypeOf(Data) = Type("Array") Then
|
If TypeOf(Data) = Type("Array") Then
|
||||||
|
|
||||||
SendArray = New Array;
|
SendArray = New Array;
|
||||||
|
|
||||||
For Each RecordDescription In Data Do
|
For Each RecordDescription In Data Do
|
||||||
SendArray.Add(New Structure("fields", RecordDescription));
|
SendArray.Add(New Structure("fields", RecordDescription));
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
OPI_Tools.AddField("records", SendArray, "Array", Parameters);
|
OPI_Tools.AddField("records", SendArray, "Array", Parameters);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
OPI_Tools.AddField("fields", Data, "Collection", Parameters);
|
OPI_Tools.AddField("fields", Data, "Collection", Parameters);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -39,75 +39,75 @@
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Copyright (c) 2019, LLC 1C-Soft
|
// Copyright (c) 2019, LLC 1C-Soft
|
||||||
// All rights reserved. This program and accompanying materials are provided
|
// All rights reserved. This program and accompanying materials are provided
|
||||||
// under the terms of the Attribution 4.0 International (CC BY 4.0 license)
|
// under the terms of the Attribution 4.0 International (CC BY 4.0 license)
|
||||||
// License text available at:
|
// License text available at:
|
||||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Function HMACSHA256(Val Key, Val Data) Export
|
Function HMACSHA256(Val Key, Val Data) Export
|
||||||
|
|
||||||
Return HMAC(Key, Data, HashFunction.SHA256, 64);
|
Return HMAC(Key, Data, HashFunction.SHA256, 64);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function Hash(BinaryData, Type) Export
|
Function Hash(BinaryData, Type) Export
|
||||||
|
|
||||||
Hashing = New DataHashing(Type);
|
Hashing = New DataHashing(Type);
|
||||||
Hashing.Append(BinaryData);
|
Hashing.Append(BinaryData);
|
||||||
|
|
||||||
Return Hashing.HashSum;
|
Return Hashing.HashSum;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function HMAC(Val Key, Val Data, Type, BlockSize) Export
|
Function HMAC(Val Key, Val Data, Type, BlockSize) Export
|
||||||
|
|
||||||
Twice = 2;
|
Twice = 2;
|
||||||
|
|
||||||
If Key.Size() > BlockSize Then
|
If Key.Size() > BlockSize Then
|
||||||
Key = Hash(Key, Type);
|
Key = Hash(Key, Type);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Key.Size() <= BlockSize Then
|
If Key.Size() <= BlockSize Then
|
||||||
Key = GetHexStringFromBinaryData(Key);
|
Key = GetHexStringFromBinaryData(Key);
|
||||||
Key = Left(Key + RepeatString("00", BlockSize), BlockSize * Twice);
|
Key = Left(Key + RepeatString("00", BlockSize), BlockSize * Twice);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Key = GetBinaryDataBufferFromBinaryData(GetBinaryDataFromHexString(Key));
|
Key = GetBinaryDataBufferFromBinaryData(GetBinaryDataFromHexString(Key));
|
||||||
|
|
||||||
Ipad = GetBinaryDataBufferFromHexString(RepeatString("36", BlockSize));
|
Ipad = GetBinaryDataBufferFromHexString(RepeatString("36", BlockSize));
|
||||||
Opad = GetBinaryDataBufferFromHexString(RepeatString("5c", BlockSize));
|
Opad = GetBinaryDataBufferFromHexString(RepeatString("5c", BlockSize));
|
||||||
|
|
||||||
Ipad.WriteBitwiseXor(0, Key);
|
Ipad.WriteBitwiseXor(0, Key);
|
||||||
Ikeypad = GetBinaryDataFromBinaryDataBuffer(ipad);
|
Ikeypad = GetBinaryDataFromBinaryDataBuffer(ipad);
|
||||||
|
|
||||||
Opad.WriteBitwiseXor(0, Key);
|
Opad.WriteBitwiseXor(0, Key);
|
||||||
Okeypad = GetBinaryDataFromBinaryDataBuffer(opad);
|
Okeypad = GetBinaryDataFromBinaryDataBuffer(opad);
|
||||||
|
|
||||||
Return Hash(UniteBinaryData(okeypad, Hash(UniteBinaryData(ikeypad, Data), Type)), Type);
|
Return Hash(UniteBinaryData(okeypad, Hash(UniteBinaryData(ikeypad, Data), Type)), Type);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UniteBinaryData(BinaryData1, BinaryData2) Export
|
Function UniteBinaryData(BinaryData1, BinaryData2) Export
|
||||||
|
|
||||||
BinaryDataArray = New Array;
|
BinaryDataArray = New Array;
|
||||||
BinaryDataArray.Add(BinaryData1);
|
BinaryDataArray.Add(BinaryData1);
|
||||||
BinaryDataArray.Add(BinaryData2);
|
BinaryDataArray.Add(BinaryData2);
|
||||||
|
|
||||||
Return ConcatBinaryData(BinaryDataArray);
|
Return ConcatBinaryData(BinaryDataArray);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function RepeatString(String, Count) Export
|
Function RepeatString(String, Count) Export
|
||||||
|
|
||||||
Parts = New Array(Count);
|
Parts = New Array(Count);
|
||||||
|
|
||||||
For K = 1 To Count Do
|
For K = 1 To Count Do
|
||||||
Parts.Add(String);
|
Parts.Add(String);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return StrConcat(Parts, "");
|
Return StrConcat(Parts, "");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -43,131 +43,131 @@
|
|||||||
|
|
||||||
// Create calendar
|
// Create calendar
|
||||||
// Creates an empty calendar
|
// Creates an empty calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Name - String - Name of the created calendar - title
|
// Name - String - Name of the created calendar - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateCalendar(Val Token, Val Name) Export
|
Function CreateCalendar(Val Token, Val Name) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("summary" , Name);
|
Parameters.Insert("summary" , Name);
|
||||||
Parameters.Insert("timeZone", "Europe/Moscow");
|
Parameters.Insert("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get calendar
|
// Get calendar
|
||||||
// Gets calendar information by ID
|
// Gets calendar information by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetCalendarMetadata(Val Token, Val Calendar) Export
|
Function GetCalendarMetadata(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Edit calendar
|
// Edit calendar
|
||||||
// Edits properties of an existing calendar
|
// Edits properties of an existing calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
// Description - String - New calendar description - description
|
// Description - String - New calendar description - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditCalendarMetadata(Val Token
|
Function EditCalendarMetadata(Val Token
|
||||||
, Val Calendar
|
, Val Calendar
|
||||||
, Val Name = ""
|
, Val Name = ""
|
||||||
, Val Description = "") Export
|
, Val Description = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetLine(Description);
|
OPI_TypeConversion.GetLine(Description);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Name) Then
|
If ValueIsFilled(Name) Then
|
||||||
Parameters.Insert("summary", Name);
|
Parameters.Insert("summary", Name);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Description) Then
|
If ValueIsFilled(Description) Then
|
||||||
Parameters.Insert("description", Description);
|
Parameters.Insert("description", Description);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Clear primary calendar
|
// Clear primary calendar
|
||||||
// Clears the event list of the primary calendar
|
// Clears the event list of the primary calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function ClearMainCalendar(Val Token) Export
|
Function ClearMainCalendar(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
||||||
Response = OPI_Tools.Post(URL, , Headers, False);
|
Response = OPI_Tools.Post(URL, , Headers, False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete calendar
|
// Delete calendar
|
||||||
// Deletes a calendar by ID
|
// Deletes a calendar by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteCalendar(Val Token, Val Calendar) Export
|
Function DeleteCalendar(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Calendar;
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -178,105 +178,105 @@ EndFunction
|
|||||||
|
|
||||||
// Get list of calendars
|
// Get list of calendars
|
||||||
// Gets an array of account calendars
|
// Gets an array of account calendars
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of calendar data mappings
|
// Map Of KeyAndValue - Array of calendar data mappings
|
||||||
Function GetCalendarList(Val Token) Export
|
Function GetCalendarList(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfCalendars = New Array;
|
ArrayOfCalendars = New Array;
|
||||||
|
|
||||||
GetCalendarsListRecursively(Headers, ArrayOfCalendars);
|
GetCalendarsListRecursively(Headers, ArrayOfCalendars);
|
||||||
|
|
||||||
Return ArrayOfCalendars;
|
Return ArrayOfCalendars;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Add calendar to list
|
// Add calendar to list
|
||||||
// Adds an existing calendar to the user's list
|
// Adds an existing calendar to the user's list
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function AddCalendarToList(Val Token, Val Calendar) Export
|
Function AddCalendarToList(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("id", Calendar);
|
Parameters.Insert("id", Calendar);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list calendar
|
// Get list calendar
|
||||||
// Gets a calendar from the user's list by ID
|
// Gets a calendar from the user's list by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetListCalendar(Val Token, Val Calendar) Export
|
Function GetListCalendar(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Remove calendar from list
|
// Remove calendar from list
|
||||||
// Removes a calendar from the user's list
|
// Removes a calendar from the user's list
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteCalendarFromList(Val Token, Val Calendar) Export
|
Function DeleteCalendarFromList(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar;
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Edit list calendar
|
// Edit list calendar
|
||||||
// Edits the properties of a calendar from the user's list
|
// Edits the properties of a calendar from the user's list
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// PrimaryColor - String - HEX primary color (#ffffff) - primary
|
// PrimaryColor - String - HEX primary color (#ffffff) - primary
|
||||||
// SecondaryColor - String - HEX secondary color (#ffffff) - secondary
|
// SecondaryColor - String - HEX secondary color (#ffffff) - secondary
|
||||||
// Hidden - Boolean - Hidden calendar - hidden
|
// Hidden - Boolean - Hidden calendar - hidden
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditListCalendar(Val Token
|
Function EditListCalendar(Val Token
|
||||||
@ -284,23 +284,23 @@ Function EditListCalendar(Val Token
|
|||||||
, Val PrimaryColor
|
, Val PrimaryColor
|
||||||
, Val SecondaryColor
|
, Val SecondaryColor
|
||||||
, Val Hidden = False) Export
|
, Val Hidden = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(PrimaryColor);
|
OPI_TypeConversion.GetLine(PrimaryColor);
|
||||||
OPI_TypeConversion.GetLine(SecondaryColor);
|
OPI_TypeConversion.GetLine(SecondaryColor);
|
||||||
OPI_TypeConversion.GetBoolean(Hidden);
|
OPI_TypeConversion.GetBoolean(Hidden);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat=true";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Calendar + "?colorRgbFormat =true";
|
||||||
|
|
||||||
Parameters = New Map;
|
Parameters = New Map;
|
||||||
Parameters.Insert("hidden" , Hidden);
|
Parameters.Insert("hidden" , Hidden);
|
||||||
Parameters.Insert("foregroundColor", PrimaryColor);
|
Parameters.Insert("foregroundColor", PrimaryColor);
|
||||||
Parameters.Insert("backgroundColor", SecondaryColor);
|
Parameters.Insert("backgroundColor", SecondaryColor);
|
||||||
|
|
||||||
Response = OPI_Tools.Put(URL, Parameters, Headers);
|
Response = OPI_Tools.Put(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -310,167 +310,167 @@ EndFunction
|
|||||||
#Region EventManagement
|
#Region EventManagement
|
||||||
|
|
||||||
// Get event description !NOCLI
|
// Get event description !NOCLI
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Empty event template
|
// Map Of KeyAndValue - Empty event template
|
||||||
Function GetEventDescription() Export
|
Function GetEventDescription() Export
|
||||||
|
|
||||||
CurrentDate = OPI_Tools.GetCurrentDate();
|
CurrentDate = OPI_Tools.GetCurrentDate();
|
||||||
Hour = 3600;
|
Hour = 3600;
|
||||||
Event = New Map;
|
Event = New Map;
|
||||||
|
|
||||||
Event.Insert("Description" , ""); // Event description
|
Event.Insert("Description" , ""); // Event description
|
||||||
Event.Insert("Title" , "New event"); // Title events
|
Event.Insert("Title" , "New event"); // Title events
|
||||||
Event.Insert("Venue" , ""); // String description of the venue of the event
|
Event.Insert("Venue" , ""); // String description of the venue of the event
|
||||||
Event.Insert("StartDate" , CurrentDate); // Date of start events
|
Event.Insert("StartDate" , CurrentDate); // Date of start events
|
||||||
Event.Insert("EndDate" , CurrentDate + Hour); // Date of end events
|
Event.Insert("EndDate" , CurrentDate + Hour); // Date of end events
|
||||||
Event.Insert("ArrayOfAttachmentURLs", New Map); // Key - name, Value - URL to file
|
Event.Insert("ArrayOfAttachmentURLs", New Map); // Key - name, Value - URL to file
|
||||||
Event.Insert("SendNotifications" , True); // Indication of sending notifications to participants
|
Event.Insert("SendNotifications" , True); // Indication of sending notifications to participants
|
||||||
|
|
||||||
Return Event;
|
Return Event;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of events
|
// Get list of events
|
||||||
// Gets the list of all calendar events
|
// Gets the list of all calendar events
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of event maps
|
// Map Of KeyAndValue - Array of event maps
|
||||||
Function GetEventList(Val Token, Val Calendar) Export
|
Function GetEventList(Val Token, Val Calendar) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfEvents = New Array;
|
ArrayOfEvents = New Array;
|
||||||
|
|
||||||
GetEventsListRecursively(Headers, Calendar, ArrayOfEvents);
|
GetEventsListRecursively(Headers, Calendar, ArrayOfEvents);
|
||||||
|
|
||||||
Return ArrayOfEvents;
|
Return ArrayOfEvents;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get event
|
// Get event
|
||||||
// Gets an event by ID
|
// Gets an event by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// Event - String - Event ID - event
|
// Event - String - Event ID - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetEvent(Val Token, Val Calendar, Val Event) Export
|
Function GetEvent(Val Token, Val Calendar, Val Event) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Calendar
|
+ Calendar
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Event;
|
+ Event;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create event
|
// Create event
|
||||||
// Creates a new event
|
// Creates a new event
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// EventDescription - Map Of KeyAndValue - Event description - props
|
// EventDescription - Map Of KeyAndValue - Event description - props
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// String, Arbitrary, HTTPResponse, BinaryData, Undefined - Google server response
|
// String, Arbitrary, HTTPResponse, BinaryData, Undefined - Google server response
|
||||||
Function CreateEvent(Val Token, Val Calendar, Val EventDescription) Export
|
Function CreateEvent(Val Token, Val Calendar, Val EventDescription) Export
|
||||||
|
|
||||||
Return EventManagement(Token, Calendar, EventDescription);
|
Return EventManagement(Token, Calendar, EventDescription);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Move event
|
// Move event
|
||||||
// Moves an event to another calendar
|
// Moves an event to another calendar
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// SourceCalendar - String - ID of the source calendar - from
|
// SourceCalendar - String - ID of the source calendar - from
|
||||||
// TargetCalendar - String - ID of the target calendar - to
|
// TargetCalendar - String - ID of the target calendar - to
|
||||||
// Event - String - ID of the source calendar event - event
|
// Event - String - ID of the source calendar event - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function MoveEvent(Val Token, Val SourceCalendar, Val TargetCalendar, Val Event) Export
|
Function MoveEvent(Val Token, Val SourceCalendar, Val TargetCalendar, Val Event) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(SourceCalendar);
|
OPI_TypeConversion.GetLine(SourceCalendar);
|
||||||
OPI_TypeConversion.GetLine(TargetCalendar);
|
OPI_TypeConversion.GetLine(TargetCalendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ SourceCalendar
|
+ SourceCalendar
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Event
|
+ Event
|
||||||
+ "/move?destination="
|
+ "/move?destination="
|
||||||
+ TargetCalendar;
|
+ TargetCalendar;
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, , Headers);
|
Response = OPI_Tools.Post(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Edit event
|
// Edit event
|
||||||
// Edits an existing event
|
// Edits an existing event
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// EventDescription - String - New event description - props
|
// EventDescription - String - New event description - props
|
||||||
// Event - String - Event ID - event
|
// Event - String - Event ID - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditEvent(Val Token, Val Calendar, Val EventDescription, Val Event) Export
|
Function EditEvent(Val Token, Val Calendar, Val EventDescription, Val Event) Export
|
||||||
|
|
||||||
Return EventManagement(Token, Calendar, EventDescription, Event);
|
Return EventManagement(Token, Calendar, EventDescription, Event);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete event
|
// Delete event
|
||||||
// Deletes an event by ID
|
// Deletes an event by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Calendar - String - Calendar ID - calendar
|
// Calendar - String - Calendar ID - calendar
|
||||||
// Event - String - Event ID - event
|
// Event - String - Event ID - event
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteEvent(Val Token, Val Calendar, Val Event) Export
|
Function DeleteEvent(Val Token, Val Calendar, Val Event) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Calendar
|
+ Calendar
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Event;
|
+ Event;
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -482,51 +482,51 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function ConvertDate(Val Date)
|
Function ConvertDate(Val Date)
|
||||||
|
|
||||||
OPI_TypeConversion.GetDate(Date);
|
OPI_TypeConversion.GetDate(Date);
|
||||||
|
|
||||||
DateStructure = New Structure;
|
DateStructure = New Structure;
|
||||||
|
|
||||||
If Not TypeOf(Date) = Type("Date") Then
|
If Not TypeOf(Date) = Type("Date") Then
|
||||||
Return Undefined;
|
Return Undefined;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Date = BegOfDay(Date) Then
|
If Date = BegOfDay(Date) Then
|
||||||
DateFormat = "DF=yyyy-MM-dd";
|
DateFormat = "DF=yyyy-MM-dd";
|
||||||
Field = "date";
|
Field = "date";
|
||||||
Else
|
Else
|
||||||
DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ";
|
DateFormat = "DF=yyyy-MM-ddTHH:mm:ssZ";
|
||||||
Field = "dateTime";
|
Field = "dateTime";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Date = Format(Date, DateFormat);
|
Date = Format(Date, DateFormat);
|
||||||
DateStructure.Insert(Field , Date);
|
DateStructure.Insert(Field , Date);
|
||||||
DateStructure.Insert("timeZone", "Europe/Moscow");
|
DateStructure.Insert("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Return DateStructure;
|
Return DateStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ConvertAttachments(Val Attachments)
|
Function ConvertAttachments(Val Attachments)
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(Attachments);
|
OPI_TypeConversion.GetCollection(Attachments);
|
||||||
|
|
||||||
AttachmentsArray = New Array;
|
AttachmentsArray = New Array;
|
||||||
|
|
||||||
If TypeOf(Attachments) = Type("Map") Or TypeOf(Attachments) = Type("Structure") Then
|
If TypeOf(Attachments) = Type("Map") Or TypeOf(Attachments) = Type("Structure") Then
|
||||||
|
|
||||||
For Each Attachment In Attachments Do
|
For Each Attachment In Attachments Do
|
||||||
|
|
||||||
CurrentAttachment = New Structure;
|
CurrentAttachment = New Structure;
|
||||||
CurrentAttachment.Insert("title" , Attachment.Key);
|
CurrentAttachment.Insert("title" , Attachment.Key);
|
||||||
CurrentAttachment.Insert("fileUrl", Attachment.Value);
|
CurrentAttachment.Insert("fileUrl", Attachment.Value);
|
||||||
|
|
||||||
AttachmentsArray.Add(CurrentAttachment);
|
AttachmentsArray.Add(CurrentAttachment);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If AttachmentsArray.Count() > 0 Then
|
If AttachmentsArray.Count() > 0 Then
|
||||||
Return AttachmentsArray;
|
Return AttachmentsArray;
|
||||||
Else
|
Else
|
||||||
@ -536,105 +536,105 @@ Function ConvertAttachments(Val Attachments)
|
|||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function EventManagement(Val Token, Val Calendar, Val EventDescription, Val Event = "")
|
Function EventManagement(Val Token, Val Calendar, Val EventDescription, Val Event = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Calendar);
|
OPI_TypeConversion.GetLine(Calendar);
|
||||||
OPI_TypeConversion.GetLine(Event);
|
OPI_TypeConversion.GetLine(Event);
|
||||||
OPI_TypeConversion.GetCollection(EventDescription);
|
OPI_TypeConversion.GetCollection(EventDescription);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
Existing = ValueIsFilled(Event);
|
Existing = ValueIsFilled(Event);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Calendar
|
+ Calendar
|
||||||
+ "/events"
|
+ "/events"
|
||||||
+ ?(Existing, "/" + Event, "");
|
+ ?(Existing, "/" + Event, "");
|
||||||
|
|
||||||
Date0 = EventDescription["StartDate"];
|
Date0 = EventDescription["StartDate"];
|
||||||
Date1 = EventDescription["EndDate"];
|
Date1 = EventDescription["EndDate"];
|
||||||
Attachments = EventDescription["ArrayOfAttachmentURLs"];
|
Attachments = EventDescription["ArrayOfAttachmentURLs"];
|
||||||
Attachments = ConvertAttachments(Attachments);
|
Attachments = ConvertAttachments(Attachments);
|
||||||
Notifications = ?(EventDescription["SendNotifications"] = Undefined
|
Notifications = ?(EventDescription["SendNotifications"] = Undefined
|
||||||
, False
|
, False
|
||||||
, EventDescription["SendNotifications"]);
|
, EventDescription["SendNotifications"]);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("summary" , EventDescription["Title"]);
|
Parameters.Insert("summary" , EventDescription["Title"]);
|
||||||
Parameters.Insert("description", EventDescription["Description"]);
|
Parameters.Insert("description", EventDescription["Description"]);
|
||||||
Parameters.Insert("location" , EventDescription["Venue"]);
|
Parameters.Insert("location" , EventDescription["Venue"]);
|
||||||
Parameters.Insert("start" , ConvertDate(Date0));
|
Parameters.Insert("start" , ConvertDate(Date0));
|
||||||
Parameters.Insert("end" , ConvertDate(Date1));
|
Parameters.Insert("end" , ConvertDate(Date1));
|
||||||
Parameters.Insert("attachments", Attachments);
|
Parameters.Insert("attachments", Attachments);
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("sendUpdates" , ?(Notifications, "all", "none"));
|
URLParameters.Insert("sendUpdates" , ?(Notifications , "all" , "none"));
|
||||||
URLParameters.Insert("supportsAttachments" , ?(ValueIsFilled(Attachments), "true", "false"));
|
URLParameters.Insert("supportsAttachments" , ?(ValueIsFilled(Attachments), "true", "false"));
|
||||||
|
|
||||||
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
||||||
|
|
||||||
OPI_Tools.RemoveEmptyCollectionFields(Parameters);
|
OPI_Tools.RemoveEmptyCollectionFields(Parameters);
|
||||||
|
|
||||||
If Existing Then
|
If Existing Then
|
||||||
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
Response = OPI_Tools.Patch(URL, Parameters, Headers, True);
|
||||||
Else
|
Else
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers, True);
|
Response = OPI_Tools.Post(URL, Parameters, Headers, True);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure GetCalendarsListRecursively(Val Headers, ArrayOfCalendars, Page = "")
|
Procedure GetCalendarsListRecursively(Val Headers, ArrayOfCalendars, Page = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Page) Then
|
If ValueIsFilled(Page) Then
|
||||||
Parameters.Insert("pageToken", Page);
|
Parameters.Insert("pageToken", Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
||||||
, Parameters
|
, Parameters
|
||||||
, Headers);
|
, Headers);
|
||||||
|
|
||||||
Calendars = Result[Items];
|
Calendars = Result[Items];
|
||||||
Page = Result[NPT];
|
Page = Result[NPT];
|
||||||
|
|
||||||
For Each Calendar In Calendars Do
|
For Each Calendar In Calendars Do
|
||||||
ArrayOfCalendars.Add(Calendar);
|
ArrayOfCalendars.Add(Calendar);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If Calendars.Count() > 0 And ValueIsFilled(Page) Then
|
If Calendars.Count() > 0 And ValueIsFilled(Page) Then
|
||||||
GetCalendarsListRecursively(Headers, ArrayOfCalendars, Page);
|
GetCalendarsListRecursively(Headers, ArrayOfCalendars, Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetEventsListRecursively(Val Headers, Val Calendar, ArrayOfEvents, Page = "")
|
Procedure GetEventsListRecursively(Val Headers, Val Calendar, ArrayOfEvents, Page = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Page) Then
|
If ValueIsFilled(Page) Then
|
||||||
Parameters.Insert("pageToken", Page);
|
Parameters.Insert("pageToken", Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/calendars/" + Calendar + "/events"
|
Result = OPI_Tools.Get("https://www.googleapis.com/calendar/v3/calendars/" + Calendar + "/events"
|
||||||
, Parameters
|
, Parameters
|
||||||
, Headers);
|
, Headers);
|
||||||
|
|
||||||
Events = Result[Items];
|
Events = Result[Items];
|
||||||
Page = Result[NPT];
|
Page = Result[NPT];
|
||||||
|
|
||||||
For Each Event In Events Do
|
For Each Event In Events Do
|
||||||
ArrayOfEvents.Add(Event);
|
ArrayOfEvents.Add(Event);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If Events.Count() > 0 And ValueIsFilled(Page) Then
|
If Events.Count() > 0 And ValueIsFilled(Page) Then
|
||||||
GetEventsListRecursively(Headers, ArrayOfEvents, Page);
|
GetEventsListRecursively(Headers, ArrayOfEvents, Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -43,277 +43,277 @@
|
|||||||
|
|
||||||
// Get object information
|
// Get object information
|
||||||
// Gets information about a folder or file by ID
|
// Gets information about a folder or file by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the file or folder - object
|
// Identifier - String - Identifier of the file or folder - object
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetObjectInformation(Val Token, Val Identifier) Export
|
Function GetObjectInformation(Val Token, Val Identifier) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of directories
|
// Get list of directories
|
||||||
// Gets the list of drive directories
|
// Gets the list of drive directories
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// NameContains - String - Filter by name - querry
|
// NameContains - String - Filter by name - querry
|
||||||
// Detailed - Boolean - Adds a list of files to the directory fields - depth
|
// Detailed - Boolean - Adds a list of files to the directory fields - depth
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of directory mappings
|
// Map Of KeyAndValue - Array of directory mappings
|
||||||
Function GetDirectoriesList(Val Token, Val NameContains = "", Val Detailed = False) Export
|
Function GetDirectoriesList(Val Token, Val NameContains = "", Val Detailed = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(NameContains);
|
OPI_TypeConversion.GetLine(NameContains);
|
||||||
OPI_TypeConversion.GetBoolean(Detailed);
|
OPI_TypeConversion.GetBoolean(Detailed);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfObjects = New Array;
|
ArrayOfObjects = New Array;
|
||||||
Filter = New Array;
|
Filter = New Array;
|
||||||
|
|
||||||
Filter.Add("mimeType = 'application/vnd.google-apps.folder'");
|
Filter.Add("mimeType = 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
If ValueIsFilled(NameContains) Then
|
If ValueIsFilled(NameContains) Then
|
||||||
Filter.Add("name contains '" + NameContains + "'");
|
Filter.Add("name contains '" + NameContains + "'");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter);
|
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter);
|
||||||
|
|
||||||
If Detailed Then
|
If Detailed Then
|
||||||
BreakDownObjectsInDetail(Token, ArrayOfObjects);
|
BreakDownObjectsInDetail(Token, ArrayOfObjects);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return ArrayOfObjects;
|
Return ArrayOfObjects;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of files
|
// Get list of files
|
||||||
// Gets the list of files
|
// Gets the list of files
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// NameContains - String - Filter by name - querry
|
// NameContains - String - Filter by name - querry
|
||||||
// Directory - String - Filter by parent directory ID - catalog
|
// Directory - String - Filter by parent directory ID - catalog
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - Array of file mappings
|
// Map Of KeyAndValue - Array of file mappings
|
||||||
Function GetFilesList(Val Token, Val NameContains = "", Val Directory = "") Export
|
Function GetFilesList(Val Token, Val NameContains = "", Val Directory = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(NameContains);
|
OPI_TypeConversion.GetLine(NameContains);
|
||||||
OPI_TypeConversion.GetLine(Directory);
|
OPI_TypeConversion.GetLine(Directory);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
ArrayOfObjects = New Array;
|
ArrayOfObjects = New Array;
|
||||||
Filter = New Array;
|
Filter = New Array;
|
||||||
|
|
||||||
Filter.Add("mimeType != 'application/vnd.google-apps.folder'");
|
Filter.Add("mimeType != 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
If ValueIsFilled(NameContains) Then
|
If ValueIsFilled(NameContains) Then
|
||||||
Filter.Add("name contains '" + NameContains + "'");
|
Filter.Add("name contains '" + NameContains + "'");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Directory) Then
|
If ValueIsFilled(Directory) Then
|
||||||
Filter.Add("'" + Directory + "' in parents");
|
Filter.Add("'" + Directory + "' in parents");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
GetObjectsListRecursively(Headers, ArrayOfObjects, , Filter);
|
GetObjectsListRecursively(Headers, ArrayOfObjects, , Filter);
|
||||||
|
|
||||||
Return ArrayOfObjects;
|
Return ArrayOfObjects;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload file
|
// Upload file
|
||||||
// Uploads a file to the drive
|
// Uploads a file to the drive
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// File - BinaryData,String - File to be uploaded - file
|
// File - BinaryData,String - File to be uploaded - file
|
||||||
// Description - Map Of KeyAndValue - See GetFileDescription - props - JSON description or path to .json
|
// Description - Map Of KeyAndValue - See GetFileDescription - props - JSON description or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function UploadFile(Val Token, Val File, Val Description) Export
|
Function UploadFile(Val Token, Val File, Val Description) Export
|
||||||
|
|
||||||
Return FileManagement(Token, File, Description);
|
Return FileManagement(Token, File, Description);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create folder
|
// Create folder
|
||||||
// Creates an empty directory on the drive
|
// Creates an empty directory on the drive
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Name - String - Folder name - title
|
// Name - String - Folder name - title
|
||||||
// Parent - String - Parent - catalog
|
// Parent - String - Parent - catalog
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateFolder(Val Token, Val Name, Val Parent = "") Export
|
Function CreateFolder(Val Token, Val Name, Val Parent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetLine(Parent);
|
OPI_TypeConversion.GetLine(Parent);
|
||||||
|
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
Description.Insert("MIME" , "application/vnd.google-apps.folder");
|
Description.Insert("MIME" , "application/vnd.google-apps.folder");
|
||||||
Description.Insert("Name" , Name);
|
Description.Insert("Name" , Name);
|
||||||
Description.Insert("Description", "");
|
Description.Insert("Description", "");
|
||||||
Description.Insert("Parent", ?(ValueIsFilled(Parent), Parent, "root"));
|
Description.Insert("Parent" , ?(ValueIsFilled(Parent), Parent, "root"));
|
||||||
|
|
||||||
Return FileManagement(Token, , Description);
|
Return FileManagement(Token, , Description);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Download file
|
// Download file
|
||||||
// Gets file by ID
|
// Gets file by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - File identifier - object
|
// Identifier - String - File identifier - object
|
||||||
// SavePath - String - File save path - out
|
// SavePath - String - File save path - out
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
||||||
Function DownloadFile(Val Token, Val Identifier, Val SavePath = "") Export
|
Function DownloadFile(Val Token, Val Identifier, Val SavePath = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
||||||
|
|
||||||
Parameters = New Map;
|
Parameters = New Map;
|
||||||
Parameters.Insert("alt", "media");
|
Parameters.Insert("alt", "media");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters , Headers, SavePath);
|
Response = OPI_Tools.Get(URL, Parameters , Headers, SavePath);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Copy object
|
// Copy object
|
||||||
// Copies file or directory
|
// Copies file or directory
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Object identifier - object
|
// Identifier - String - Object identifier - object
|
||||||
// NewName - String - New object name - title
|
// NewName - String - New object name - title
|
||||||
// NewParent - String - New parent directory - catalog
|
// NewParent - String - New parent directory - catalog
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CopyObject(Val Token, Val Identifier, Val NewName = "", Val NewParent = "") Export
|
Function CopyObject(Val Token, Val Identifier, Val NewName = "", Val NewParent = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(NewName);
|
OPI_TypeConversion.GetLine(NewName);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
OPI_TypeConversion.GetLine(NewParent);
|
OPI_TypeConversion.GetLine(NewParent);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/copy";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/copy";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(NewName) Then
|
If ValueIsFilled(NewName) Then
|
||||||
Parameters.Insert("name", NewName);
|
Parameters.Insert("name", NewName);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(NewParent) Then
|
If ValueIsFilled(NewParent) Then
|
||||||
|
|
||||||
ArrayOfParents = New Array;
|
ArrayOfParents = New Array;
|
||||||
ArrayOfParents.Add(NewParent);
|
ArrayOfParents.Add(NewParent);
|
||||||
Parameters.Insert("parents", ArrayOfParents);
|
Parameters.Insert("parents", ArrayOfParents);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters , Headers, True);
|
Response = OPI_Tools.Post(URL, Parameters , Headers, True);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Update file
|
// Update file
|
||||||
// Updates file binary data
|
// Updates file binary data
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the object to update - object
|
// Identifier - String - Identifier of the object to update - object
|
||||||
// File - BinaryData,String - File source for update - file
|
// File - BinaryData,String - File source for update - file
|
||||||
// NewName - String - New file name (if necessary) - title
|
// NewName - String - New file name (if necessary) - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function UpdateFile(Val Token, Val Identifier, Val File, Val NewName = "") Export
|
Function UpdateFile(Val Token, Val Identifier, Val File, Val NewName = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
OPI_TypeConversion.GetLine(NewName);
|
OPI_TypeConversion.GetLine(NewName);
|
||||||
OPI_TypeConversion.GetBinaryData(File);
|
OPI_TypeConversion.GetBinaryData(File);
|
||||||
|
|
||||||
If ValueIsFilled(NewName) Then
|
If ValueIsFilled(NewName) Then
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
Description.Insert("Name", NewName);
|
Description.Insert("Name", NewName);
|
||||||
Else
|
Else
|
||||||
Description = "";
|
Description = "";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return FileManagement(Token, File, Description, Identifier);
|
Return FileManagement(Token, File, Description, Identifier);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete object
|
// Delete object
|
||||||
// Deletes file or directory by ID
|
// Deletes file or directory by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the object to delete - object
|
// Identifier - String - Identifier of the object to delete - object
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteObject(Val Token, Val Identifier) Export
|
Function DeleteObject(Val Token, Val Identifier) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier;
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get file description !NOCLI
|
// Get file description !NOCLI
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - File description
|
// Map Of KeyAndValue - File description
|
||||||
Function GetFileDescription() Export
|
Function GetFileDescription() Export
|
||||||
|
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
Description.Insert("MIME" , "image/jpeg"); // MIME-type uploading file
|
Description.Insert("MIME" , "image/jpeg"); // MIME-type uploading file
|
||||||
Description.Insert("Name" , "New file.jpg"); // File name with extension
|
Description.Insert("Name" , "New file.jpg"); // File name with extension
|
||||||
Description.Insert("Description" , "This is a new file"); // File description
|
Description.Insert("Description" , "This is a new file"); // File description
|
||||||
Description.Insert("Parent" , "root"); // ID directory upload or "root" for upload in root
|
Description.Insert("Parent" , "root"); // ID directory upload or "root" for upload in root
|
||||||
|
|
||||||
Return Description;
|
Return Description;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -322,107 +322,107 @@ EndFunction
|
|||||||
|
|
||||||
// Create comment
|
// Create comment
|
||||||
// Creates a comment for a file or directory
|
// Creates a comment for a file or directory
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Identifier of the object that needs a comment - object
|
// Identifier - String - Identifier of the object that needs a comment - object
|
||||||
// Comment - String - Comment text - text
|
// Comment - String - Comment text - text
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateComment(Val Token, Val Identifier, Val Comment) Export
|
Function CreateComment(Val Token, Val Identifier, Val Comment) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
OPI_TypeConversion.GetLine(Comment);
|
OPI_TypeConversion.GetLine(Comment);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields=*";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Identifier + "/comments?fields =*";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("content", Comment);
|
Parameters.Insert("content", Comment);
|
||||||
|
|
||||||
Response = OPI_Tools.POST(URL, Parameters, Headers);
|
Response = OPI_Tools.POST(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get comment
|
// Get comment
|
||||||
// Gets comment by ID
|
// Gets comment by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
||||||
// CommentID - String - Comment identifier - comment
|
// CommentID - String - Comment identifier - comment
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetComment(Val Token, Val ObjectID, Val CommentID) Export
|
Function GetComment(Val Token, Val ObjectID, Val CommentID) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(ObjectID);
|
OPI_TypeConversion.GetLine(ObjectID);
|
||||||
OPI_TypeConversion.GetLine(CommentID);
|
OPI_TypeConversion.GetLine(CommentID);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of comments
|
// Get list of comments
|
||||||
// Gets the list of all comments of the object
|
// Gets the list of all comments of the object
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ObjectID - String - Object identifier - object
|
// ObjectID - String - Object identifier - object
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetCommentList(Val Token, Val ObjectID) Export
|
Function GetCommentList(Val Token, Val ObjectID) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(ObjectID);
|
OPI_TypeConversion.GetLine(ObjectID);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments";
|
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
Response = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete comment
|
// Delete comment
|
||||||
// Deletes comment by ID
|
// Deletes comment by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
// ObjectID - String - Identifier of the file or directory where the comment is located - object
|
||||||
// CommentID - String - Comment identifier - comment
|
// CommentID - String - Comment identifier - comment
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteComment(Val Token, Val ObjectID, Val CommentID) Export
|
Function DeleteComment(Val Token, Val ObjectID, Val CommentID) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(ObjectID);
|
OPI_TypeConversion.GetLine(ObjectID);
|
||||||
OPI_TypeConversion.GetLine(CommentID);
|
OPI_TypeConversion.GetLine(CommentID);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ObjectID + "/comments/" + CommentID;
|
||||||
|
|
||||||
Response = OPI_Tools.Delete(URL, , Headers);
|
Response = OPI_Tools.Delete(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -433,294 +433,294 @@ EndFunction
|
|||||||
|
|
||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Procedure GetObjectsListRecursively(Val Headers, ArrayOfObjects, Detailed = False, Filter = "", Page = "")
|
Procedure GetObjectsListRecursively(Val Headers, ArrayOfObjects, Detailed = False, Filter = "", Page = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/drive/v3/files";
|
URL = "https://www.googleapis.com/drive/v3/files";
|
||||||
Files = "files";
|
Files = "files";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("fields", "*");
|
Parameters.Insert("fields", "*");
|
||||||
|
|
||||||
If ValueIsFilled(Page) Then
|
If ValueIsFilled(Page) Then
|
||||||
Parameters.Insert("pageToken", Page);
|
Parameters.Insert("pageToken", Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Filter) And TypeOf(Filter) = Type("Array") Then
|
If ValueIsFilled(Filter) And TypeOf(Filter) = Type("Array") Then
|
||||||
FilterString = StrConcat(Filter, " and ");
|
FilterString = StrConcat(Filter, " and ");
|
||||||
Parameters.Insert("q", FilterString);
|
Parameters.Insert("q", FilterString);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Result = OPI_Tools.Get(URL, Parameters, Headers);
|
Result = OPI_Tools.Get(URL, Parameters, Headers);
|
||||||
|
|
||||||
Objects = Result[Files];
|
Objects = Result[Files];
|
||||||
Page = Result[NPT];
|
Page = Result[NPT];
|
||||||
|
|
||||||
For Each CurrentObject In Objects Do
|
For Each CurrentObject In Objects Do
|
||||||
ArrayOfObjects.Add(CurrentObject);
|
ArrayOfObjects.Add(CurrentObject);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If Objects.Count() > 0 And ValueIsFilled(Page) Then
|
If Objects.Count() > 0 And ValueIsFilled(Page) Then
|
||||||
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter, Page);
|
GetObjectsListRecursively(Headers, ArrayOfObjects, Detailed, Filter, Page);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure BreakDownObjectsInDetail(Val Token, ArrayOfObjects)
|
Procedure BreakDownObjectsInDetail(Val Token, ArrayOfObjects)
|
||||||
|
|
||||||
For Each CurrentObject In ArrayOfObjects Do
|
For Each CurrentObject In ArrayOfObjects Do
|
||||||
|
|
||||||
ArrayOfFiles = New Array;
|
ArrayOfFiles = New Array;
|
||||||
CurrentID = CurrentObject["id"];
|
CurrentID = CurrentObject["id"];
|
||||||
|
|
||||||
Result = GetFilesList(Token, , CurrentID);
|
Result = GetFilesList(Token, , CurrentID);
|
||||||
|
|
||||||
For Each File In Result Do
|
For Each File In Result Do
|
||||||
ArrayOfFiles.Add(File);
|
ArrayOfFiles.Add(File);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
CurrentObject.Insert("files", ArrayOfFiles);
|
CurrentObject.Insert("files", ArrayOfFiles);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure FormFileUploadParameters(Description)
|
Procedure FormFileUploadParameters(Description)
|
||||||
|
|
||||||
FormedDescription = New Map;
|
FormedDescription = New Map;
|
||||||
OPI_Tools.RemoveEmptyCollectionFields(Description);
|
OPI_Tools.RemoveEmptyCollectionFields(Description);
|
||||||
|
|
||||||
FieldMapping = New Map;
|
FieldMapping = New Map;
|
||||||
FieldMapping.Insert("MIME" , "mimeType");
|
FieldMapping.Insert("MIME" , "mimeType");
|
||||||
FieldMapping.Insert("Name" , "name");
|
FieldMapping.Insert("Name" , "name");
|
||||||
FieldMapping.Insert("Description" , "description");
|
FieldMapping.Insert("Description" , "description");
|
||||||
FieldMapping.Insert("Parent" , "parents");
|
FieldMapping.Insert("Parent" , "parents");
|
||||||
FieldMapping.Insert("Extension", "fileExtension");
|
FieldMapping.Insert("Extension" , "fileExtension");
|
||||||
|
|
||||||
For Each Element In Description Do
|
For Each Element In Description Do
|
||||||
|
|
||||||
If Element.Key = "Parent" Then
|
If Element.Key = "Parent" Then
|
||||||
|
|
||||||
CurrentValue = New Array;
|
CurrentValue = New Array;
|
||||||
CurrentValue.Add(Element.Value);
|
CurrentValue.Add(Element.Value);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
CurrentValue = Element.Value;
|
CurrentValue = Element.Value;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
FieldName = FieldMapping.Get(Element.Key);
|
FieldName = FieldMapping.Get(Element.Key);
|
||||||
FormedDescription.Insert(FieldName, CurrentValue);
|
FormedDescription.Insert(FieldName, CurrentValue);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Description = FormedDescription;
|
Description = FormedDescription;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Function FileManagement(Val Token, Val File = "", Val Description = "", Val Identifier = "")
|
Function FileManagement(Val Token, Val File = "", Val Description = "", Val Identifier = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
If ValueIsFilled(Description) Then
|
If ValueIsFilled(Description) Then
|
||||||
OPI_TypeConversion.GetCollection(Description);
|
OPI_TypeConversion.GetCollection(Description);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
MimeType = "mimeType";
|
MimeType = "mimeType";
|
||||||
|
|
||||||
If ValueIsFilled(Identifier) Then
|
If ValueIsFilled(Identifier) Then
|
||||||
MIME = GetObjectInformation(Token, Identifier)[MimeType];
|
MIME = GetObjectInformation(Token, Identifier)[MimeType];
|
||||||
Else
|
Else
|
||||||
MIME = Description["MIME"];
|
MIME = Description["MIME"];
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Not ValueIsFilled(Description) Then
|
If Not ValueIsFilled(Description) Then
|
||||||
Description = New Map;
|
Description = New Map;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
FormFileUploadParameters(Description);
|
FormFileUploadParameters(Description);
|
||||||
JSONDescription = OPI_Tools.JSONString(Description);
|
JSONDescription = OPI_Tools.JSONString(Description);
|
||||||
|
|
||||||
FileMapping = New Map;
|
FileMapping = New Map;
|
||||||
|
|
||||||
If ValueIsFilled(File) Then
|
If ValueIsFilled(File) Then
|
||||||
|
|
||||||
ChunkSize = 268435457;
|
ChunkSize = 268435457;
|
||||||
Size = OPI_Tools.ConvertDataWithSizeRetrieval(File, ChunkSize);
|
Size = OPI_Tools.ConvertDataWithSizeRetrieval(File, ChunkSize);
|
||||||
|
|
||||||
FileMapping.Insert(File, MIME);
|
FileMapping.Insert(File, MIME);
|
||||||
|
|
||||||
If Size < ChunkSize And TypeOf(File) = Type("BinaryData") Then
|
If Size < ChunkSize And TypeOf(File) = Type("BinaryData") Then
|
||||||
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
||||||
Else
|
Else
|
||||||
Response = UploadLargeFile(Description, FileMapping, Headers, Identifier);
|
Response = UploadLargeFile(Description, FileMapping, Headers, Identifier);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
Response = UploadSmallFile(JSONDescription, FileMapping, Headers, Identifier);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadSmallFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
Function UploadSmallFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
||||||
|
|
||||||
If ValueIsFilled(Identifier) Then
|
If ValueIsFilled(Identifier) Then
|
||||||
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
||||||
Response = OPI_Tools.PatchMultipartRelated(URL, Description, FileMapping, Headers);
|
Response = OPI_Tools.PatchMultipartRelated(URL, Description, FileMapping, Headers);
|
||||||
Else
|
Else
|
||||||
Response = OPI_Tools.PostMultipartRelated(URL, Description, FileMapping, Headers);
|
Response = OPI_Tools.PostMultipartRelated(URL, Description, FileMapping, Headers);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadLargeFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
Function UploadLargeFile(Val Description, Val FileMapping, Val Headers, Val Identifier = "")
|
||||||
|
|
||||||
For Each File In FileMapping Do
|
For Each File In FileMapping Do
|
||||||
Binary = File.Key;
|
Binary = File.Key;
|
||||||
Break;
|
Break;
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
||||||
|
|
||||||
If ValueIsFilled(Identifier) Then
|
If ValueIsFilled(Identifier) Then
|
||||||
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
URL = StrReplace(URL, "/files", "/files/" + Identifier);
|
||||||
Response = OPI_Tools.Patch(URL, Description, Headers, True, True);
|
Response = OPI_Tools.Patch(URL, Description, Headers, True, True);
|
||||||
Else
|
Else
|
||||||
Response = OPI_Tools.Post(URL, Description, Headers, True, True);
|
Response = OPI_Tools.Post(URL, Description, Headers, True, True);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
UploadURL = Response.Headers["Location"];
|
UploadURL = Response.Headers["Location"];
|
||||||
|
|
||||||
If Not ValueIsFilled(UploadURL) Then
|
If Not ValueIsFilled(UploadURL) Then
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
UploadResponse = UploadFileInParts(Binary, UploadURL);
|
UploadResponse = UploadFileInParts(Binary, UploadURL);
|
||||||
Response = ?(ValueIsFilled(UploadResponse), UploadResponse, Response);
|
Response = ?(ValueIsFilled(UploadResponse), UploadResponse, Response);
|
||||||
|
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadFileInParts(Val Binary, Val UploadURL)
|
Function UploadFileInParts(Val Binary, Val UploadURL)
|
||||||
|
|
||||||
Response = "";
|
Response = "";
|
||||||
ChunkSize = 268435456;
|
ChunkSize = 268435456;
|
||||||
BytesRead = 0;
|
BytesRead = 0;
|
||||||
CurrentPosition = 0;
|
CurrentPosition = 0;
|
||||||
TotalSize = Binary.Size();
|
TotalSize = Binary.Size();
|
||||||
StrTotalSize = OPI_Tools.NumberToString(TotalSize);
|
StrTotalSize = OPI_Tools.NumberToString(TotalSize);
|
||||||
DataReader = New DataReader(Binary);
|
DataReader = New DataReader(Binary);
|
||||||
SourceStream = DataReader.SourceStream();
|
SourceStream = DataReader.SourceStream();
|
||||||
|
|
||||||
WHile BytesRead < TotalSize Do
|
WHile BytesRead < TotalSize Do
|
||||||
|
|
||||||
BytesRead = SourceStream.CurrentPosition();
|
BytesRead = SourceStream.CurrentPosition();
|
||||||
Result = DataReader.Read(ChunkSize);
|
Result = DataReader.Read(ChunkSize);
|
||||||
CurrentData = Result.GetBinaryData();
|
CurrentData = Result.GetBinaryData();
|
||||||
CurrentSize = CurrentData.Size();
|
CurrentSize = CurrentData.Size();
|
||||||
NextPosition = CurrentPosition + CurrentSize - 1;
|
NextPosition = CurrentPosition + CurrentSize - 1;
|
||||||
|
|
||||||
If Not ValueIsFilled(CurrentData) Then
|
If Not ValueIsFilled(CurrentData) Then
|
||||||
Break;
|
Break;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
StreamHeader = "bytes "
|
StreamHeader = "bytes "
|
||||||
+ OPI_Tools.NumberToString(CurrentPosition)
|
+ OPI_Tools.NumberToString(CurrentPosition)
|
||||||
+ "-"
|
+ "-"
|
||||||
+ OPI_Tools.NumberToString(NextPosition)
|
+ OPI_Tools.NumberToString(NextPosition)
|
||||||
+ "/"
|
+ "/"
|
||||||
+ StrTotalSize;
|
+ StrTotalSize;
|
||||||
|
|
||||||
AdditionalHeaders = New Map;
|
AdditionalHeaders = New Map;
|
||||||
AdditionalHeaders.Insert("Content-Length", OPI_Tools.NumberToString(CurrentSize));
|
AdditionalHeaders.Insert("Content-Length", OPI_Tools.NumberToString(CurrentSize));
|
||||||
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
||||||
AdditionalHeaders.Insert("Content-Type" , "application/octet-stream");
|
AdditionalHeaders.Insert("Content-Type" , "application/octet-stream");
|
||||||
|
|
||||||
Response = OPI_Tools.Put(UploadURL, CurrentData, AdditionalHeaders, False, True);
|
Response = OPI_Tools.Put(UploadURL, CurrentData, AdditionalHeaders, False, True);
|
||||||
|
|
||||||
CheckResult = CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition);
|
CheckResult = CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition);
|
||||||
|
|
||||||
If ValueIsFilled(CheckResult) Then
|
If ValueIsFilled(CheckResult) Then
|
||||||
Return CheckResult;
|
Return CheckResult;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
// !OInt KB = 1024;
|
// !OInt KB = 1024;
|
||||||
// !OInt MB = KB * KB;
|
// !OInt MB = KB * KB;
|
||||||
// !OInt Message(OPI_Tools.ProgressInfo(CurrentPosition, TotalSize, "MB", MB));
|
// !OInt Message(OPI_Tools.ProgressInfo(CurrentPosition, TotalSize, "MB", MB));
|
||||||
|
|
||||||
// !OInt RunGarbageCollection();
|
// !OInt RunGarbageCollection();
|
||||||
// !OInt FreeObject(CurrentData);
|
// !OInt FreeObject(CurrentData);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition)
|
Function CheckPartUpload(Response, StrTotalSize, AdditionalHeaders, UploadURL, CurrentPosition)
|
||||||
|
|
||||||
StartOfErrorCodes = 400;
|
StartOfErrorCodes = 400;
|
||||||
EndOfFailureCodes = 600;
|
EndOfFailureCodes = 600;
|
||||||
StartOfSuccessCodes = 200;
|
StartOfSuccessCodes = 200;
|
||||||
EndOfSuccessCodes = 300;
|
EndOfSuccessCodes = 300;
|
||||||
Redirection = 308;
|
Redirection = 308;
|
||||||
|
|
||||||
If Response.StatusCode >= StartOfErrorCodes And Response.StatusCode < EndOfFailureCodes Then
|
If Response.StatusCode >= StartOfErrorCodes And Response.StatusCode < EndOfFailureCodes Then
|
||||||
|
|
||||||
StreamHeader = "bytes */" + StrTotalSize;
|
StreamHeader = "bytes */" + StrTotalSize;
|
||||||
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
AdditionalHeaders.Insert("Content-Range" , StreamHeader);
|
||||||
|
|
||||||
CheckResponse = OPI_Tools.Put(UploadURL, "", AdditionalHeaders, False, True);
|
CheckResponse = OPI_Tools.Put(UploadURL, "", AdditionalHeaders, False, True);
|
||||||
|
|
||||||
If CheckResponse.StatusCode >= StartOfSuccessCodes And CheckResponse.StatusCode < EndOfSuccessCodes Then
|
If CheckResponse.StatusCode >= StartOfSuccessCodes And CheckResponse.StatusCode < EndOfSuccessCodes Then
|
||||||
|
|
||||||
OPI_Tools.ProcessResponse(CheckResponse);
|
OPI_Tools.ProcessResponse(CheckResponse);
|
||||||
Return CheckResponse;
|
Return CheckResponse;
|
||||||
|
|
||||||
ElsIf CheckResponse.StatusCode = Redirection Then
|
ElsIf CheckResponse.StatusCode = Redirection Then
|
||||||
|
|
||||||
UploadedData = Response.Headers["Range"];
|
UploadedData = Response.Headers["Range"];
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
UploadedData = Response.Headers["Range"];
|
UploadedData = Response.Headers["Range"];
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Not ValueIsFilled(UploadedData) Then
|
If Not ValueIsFilled(UploadedData) Then
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
UploadedData = StrReplace(UploadedData, "bytes=", "");
|
UploadedData = StrReplace(UploadedData, "bytes =", "");
|
||||||
ArrayOfInformation = StrSplit(UploadedData, "-", False);
|
ArrayOfInformation = StrSplit(UploadedData, "-", False);
|
||||||
PartsRequired = 2;
|
PartsRequired = 2;
|
||||||
|
|
||||||
If Not ArrayOfInformation.Count() = PartsRequired Then
|
If Not ArrayOfInformation.Count() = PartsRequired Then
|
||||||
OPI_Tools.ProcessResponse(Response);
|
OPI_Tools.ProcessResponse(Response);
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
CurrentPosition = Number(ArrayOfInformation[1]) + 1;
|
CurrentPosition = Number(ArrayOfInformation[1]) + 1;
|
||||||
|
|
||||||
Return "";
|
Return "";
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -43,90 +43,90 @@
|
|||||||
|
|
||||||
// Create spreadsheet
|
// Create spreadsheet
|
||||||
// Creates a new spreadsheet
|
// Creates a new spreadsheet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Name - String - Name - title
|
// Name - String - Name - title
|
||||||
// ArrayOfSheetNames - Array of String - Array of names to add new sheets to the spreadsheet - sheets
|
// ArrayOfSheetNames - Array of String - Array of names to add new sheets to the spreadsheet - sheets
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CreateSpreadsheet(Val Token, Val Name, Val ArrayOfSheetNames) Export
|
Function CreateSpreadsheet(Val Token, Val Name, Val ArrayOfSheetNames) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
OPI_TypeConversion.GetCollection(ArrayOfSheetNames);
|
OPI_TypeConversion.GetCollection(ArrayOfSheetNames);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
||||||
|
|
||||||
Properties = New Structure("title" , Name);
|
Properties = New Structure("title" , Name);
|
||||||
Sheets = New Array;
|
Sheets = New Array;
|
||||||
|
|
||||||
FillSheetArray(ArrayOfSheetNames, Sheets);
|
FillSheetArray(ArrayOfSheetNames, Sheets);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("properties", Properties, "Collection", Parameters);
|
OPI_Tools.AddField("properties", Properties, "Collection", Parameters);
|
||||||
OPI_Tools.AddField("sheets" , Sheets , "Collection", Parameters);
|
OPI_Tools.AddField("sheets" , Sheets , "Collection", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get spreadsheet
|
// Get spreadsheet
|
||||||
// Gets information about the spreadsheet by ID
|
// Gets information about the spreadsheet by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Identifier - String - Spreadsheet identifier - spreadsheet
|
// Identifier - String - Spreadsheet identifier - spreadsheet
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetSpreadsheet(Val Token, Val Identifier) Export
|
Function GetSpreadsheet(Val Token, Val Identifier) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Identifier);
|
OPI_TypeConversion.GetLine(Identifier);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Identifier;
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Identifier;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Change spreadsheet name
|
// Change spreadsheet name
|
||||||
// Changes the name of the existing spreadsheet
|
// Changes the name of the existing spreadsheet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// Name - String - New name - title
|
// Name - String - New name - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function EditSpreadsheetTitle(Val Token, Val Spreadsheet, Val Name) Export
|
Function EditSpreadsheetTitle(Val Token, Val Spreadsheet, Val Name) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
||||||
|
|
||||||
Change = New Structure("title", Name);
|
Change = New Structure("title", Name);
|
||||||
ChangeRequest = New Structure("properties,fields", Change, "title");
|
ChangeRequest = New Structure("properties,fields", Change, "title");
|
||||||
Request = New Structure("updateSpreadsheetProperties", ChangeRequest);
|
Request = New Structure("updateSpreadsheetProperties", ChangeRequest);
|
||||||
|
|
||||||
ArrayOfRequests = New Array;
|
ArrayOfRequests = New Array;
|
||||||
ArrayOfRequests.Add(Request);
|
ArrayOfRequests.Add(Request);
|
||||||
|
|
||||||
Parameters = New Structure("requests", ArrayOfRequests);
|
Parameters = New Structure("requests", ArrayOfRequests);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -135,95 +135,95 @@ EndFunction
|
|||||||
|
|
||||||
// Add sheet
|
// Add sheet
|
||||||
// Adds a new sheet to the spreadsheet
|
// Adds a new sheet to the spreadsheet
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
||||||
// Name - String - NewSheetName - title
|
// Name - String - NewSheetName - title
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function AddSheet(Val Token, Val Spreadsheet, Val Name) Export
|
Function AddSheet(Val Token, Val Spreadsheet, Val Name) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
||||||
Sheet = CreateSheet(Name);
|
Sheet = CreateSheet(Name);
|
||||||
|
|
||||||
Requests = New Array;
|
Requests = New Array;
|
||||||
Change = New Structure("addSheet", Sheet);
|
Change = New Structure("addSheet", Sheet);
|
||||||
Requests.Add(Change);
|
Requests.Add(Change);
|
||||||
|
|
||||||
Parameters = New Structure("requests", Requests);
|
Parameters = New Structure("requests", Requests);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete sheet
|
// Delete sheet
|
||||||
// Deletes a sheet from the spreadsheet
|
// Deletes a sheet from the spreadsheet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
// Spreadsheet - String - Spreadsheet identifier - spreadsheet
|
||||||
// Sheet - String - IdentifierOfSheetToDelete - sheet
|
// Sheet - String - IdentifierOfSheetToDelete - sheet
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function DeleteSheet(Val Token, Val Spreadsheet, Val Sheet) Export
|
Function DeleteSheet(Val Token, Val Spreadsheet, Val Sheet) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + ":batchUpdate";
|
||||||
|
|
||||||
Requests = New Array;
|
Requests = New Array;
|
||||||
Sheet = New Structure("sheetId" , Sheet);
|
Sheet = New Structure("sheetId" , Sheet);
|
||||||
Change = New Structure("deleteSheet", Sheet);
|
Change = New Structure("deleteSheet", Sheet);
|
||||||
Requests.Add(Change);
|
Requests.Add(Change);
|
||||||
|
|
||||||
Parameters = New Structure("requests", Requests);
|
Parameters = New Structure("requests", Requests);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Copy sheet
|
// Copy sheet
|
||||||
// Copies a sheet from one spreadsheet to another
|
// Copies a sheet from one spreadsheet to another
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// From - String - Source spreadsheet ID - from
|
// From - String - Source spreadsheet ID - from
|
||||||
// Target - String - Destination spreadsheet ID - to
|
// Target - String - Destination spreadsheet ID - to
|
||||||
// Sheet - String - CopiedSheetID - sheet
|
// Sheet - String - CopiedSheetID - sheet
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function CopySheet(Val Token, Val From, Val Target, Val Sheet) Export
|
Function CopySheet(Val Token, Val From, Val Target, Val Sheet) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(From);
|
OPI_TypeConversion.GetLine(From);
|
||||||
OPI_TypeConversion.GetLine(Target);
|
OPI_TypeConversion.GetLine(Target);
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
||||||
+ From
|
+ From
|
||||||
+ "/sheets/"
|
+ "/sheets/"
|
||||||
+ Sheet
|
+ Sheet
|
||||||
+ ":copyTo";
|
+ ":copyTo";
|
||||||
|
|
||||||
Parameters = New Structure("destinationSpreadsheetId", Target);
|
Parameters = New Structure("destinationSpreadsheetId", Target);
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -232,14 +232,14 @@ EndFunction
|
|||||||
|
|
||||||
// Set cell values
|
// Set cell values
|
||||||
// Sets sheet cell values
|
// Sets sheet cell values
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// ValueMapping - Map Of KeyAndValue - Fill data where the key is the cell name like A1 - data
|
// ValueMapping - Map Of KeyAndValue - Fill data where the key is the cell name like A1 - data
|
||||||
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
||||||
// MajorDimension - String - Main dimension when filling the array range - dim
|
// MajorDimension - String - Main dimension when filling the array range - dim
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function SetCellValues(Val Token
|
Function SetCellValues(Val Token
|
||||||
@ -247,90 +247,90 @@ Function SetCellValues(Val Token
|
|||||||
, Val ValueMapping
|
, Val ValueMapping
|
||||||
, Val Sheet = ""
|
, Val Sheet = ""
|
||||||
, Val MajorDimension = "COLUMNS") Export
|
, Val MajorDimension = "COLUMNS") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetCollection(ValueMapping);
|
OPI_TypeConversion.GetCollection(ValueMapping);
|
||||||
|
|
||||||
If Not TypeOf(ValueMapping) = Type("Structure")
|
If Not TypeOf(ValueMapping) = Type("Structure")
|
||||||
And Not TypeOf(ValueMapping) = Type("Map") Then
|
And Not TypeOf(ValueMapping) = Type("Map") Then
|
||||||
Return "Failed to convert the structure of values to a collection";
|
Return "Failed to convert the structure of values to a collection";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchUpdate";
|
||||||
DataArray = FormCellDataArray(ValueMapping, MajorDimension, Sheet);
|
DataArray = FormCellDataArray(ValueMapping, MajorDimension, Sheet);
|
||||||
|
|
||||||
Parameters = New Structure("data,valueInputOption", DataArray, "USER_ENTERED");
|
Parameters = New Structure("data,valueInputOption", DataArray, "USER_ENTERED");
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Clear cells
|
// Clear cells
|
||||||
// Clears the value in cells
|
// Clears the value in cells
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// CellsArray - Array of String - Array of cells like A1 to be cleared - cells
|
// CellsArray - Array of String - Array of cells like A1 to be cleared - cells
|
||||||
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function ClearCells(Val Token, Val Spreadsheet, Val CellsArray, Val Sheet = "") Export
|
Function ClearCells(Val Token, Val Spreadsheet, Val CellsArray, Val Sheet = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
OPI_TypeConversion.GetCollection(CellsArray);
|
OPI_TypeConversion.GetCollection(CellsArray);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchClear";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchClear";
|
||||||
|
|
||||||
FormCellNameArray(CellsArray, Sheet);
|
FormCellNameArray(CellsArray, Sheet);
|
||||||
|
|
||||||
Parameters = New Structure("ranges", CellsArray);
|
Parameters = New Structure("ranges", CellsArray);
|
||||||
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
Response = OPI_Tools.Post(URL, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get cell values
|
// Get cell values
|
||||||
// Gets cell values of the table
|
// Gets cell values of the table
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
// Spreadsheet - String - SpreadsheetID - spreadsheet
|
||||||
// CellsArray - Array of String - Array of A1 type cells to get (whole sheet if not filled) - cells
|
// CellsArray - Array of String - Array of A1 type cells to get (whole sheet if not filled) - cells
|
||||||
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
// Sheet - String - Sheet name (first sheet by default) - sheetname
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Sheet = "") Export
|
Function GetCellValues(Val Token, Val Spreadsheet, Val CellsArray = "", Val Sheet = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Spreadsheet);
|
OPI_TypeConversion.GetLine(Spreadsheet);
|
||||||
|
|
||||||
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
Headers = OPI_GoogleWorkspace.GetAuthorizationHeader(Token);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchGet";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Spreadsheet + "/values:batchGet";
|
||||||
|
|
||||||
If ValueIsFilled(CellsArray) Then
|
If ValueIsFilled(CellsArray) Then
|
||||||
OPI_TypeConversion.GetCollection(CellsArray);
|
OPI_TypeConversion.GetCollection(CellsArray);
|
||||||
FormCellNameArray(CellsArray, Sheet);
|
FormCellNameArray(CellsArray, Sheet);
|
||||||
|
|
||||||
First = True;
|
First = True;
|
||||||
For Each Cell In CellsArray Do
|
For Each Cell In CellsArray Do
|
||||||
Delimiter = ?(First, "?", "&");
|
Delimiter = ?(First, "?", "&");
|
||||||
URL = URL + Delimiter + "ranges=" + Cell;
|
URL = URL + Delimiter + "ranges =" + Cell;
|
||||||
First = False;
|
First = False;
|
||||||
EndDo;
|
EndDo;
|
||||||
Else
|
Else
|
||||||
URL = URL + "?ranges='" + Sheet + "'";
|
URL = URL + "?ranges ='" + Sheet + "'";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , Headers);
|
Response = OPI_Tools.Get(URL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -340,75 +340,75 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Procedure FillSheetArray(Val ArrayOfNames, SheetArray)
|
Procedure FillSheetArray(Val ArrayOfNames, SheetArray)
|
||||||
|
|
||||||
For Each SheetName In ArrayOfNames Do
|
For Each SheetName In ArrayOfNames Do
|
||||||
|
|
||||||
Sheet = CreateSheet(SheetName);
|
Sheet = CreateSheet(SheetName);
|
||||||
SheetArray.Add(Sheet);
|
SheetArray.Add(Sheet);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure AddSheetName(Cell, Val Sheet)
|
Procedure AddSheetName(Cell, Val Sheet)
|
||||||
|
|
||||||
If ValueIsFilled(Sheet) Then
|
If ValueIsFilled(Sheet) Then
|
||||||
Cell = "'" + Sheet + "'!" + Cell;
|
Cell = "'" + Sheet + "'!" + Cell;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Function CreateSheet(Val Name)
|
Function CreateSheet(Val Name)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Name);
|
OPI_TypeConversion.GetLine(Name);
|
||||||
|
|
||||||
SheetProperties = New Structure("title" , Name);
|
SheetProperties = New Structure("title" , Name);
|
||||||
Sheet = New Structure("properties", SheetProperties);
|
Sheet = New Structure("properties", SheetProperties);
|
||||||
|
|
||||||
Return Sheet;
|
Return Sheet;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function FormCellDataArray(Val ValueStructure, Val MajorDimension, Val Sheet)
|
Function FormCellDataArray(Val ValueStructure, Val MajorDimension, Val Sheet)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
DataArray = New Array;
|
DataArray = New Array;
|
||||||
|
|
||||||
For Each CellData In ValueStructure Do
|
For Each CellData In ValueStructure Do
|
||||||
|
|
||||||
CurrentValue = CellData.Value;
|
CurrentValue = CellData.Value;
|
||||||
CurrentKey = CellData.Key;
|
CurrentKey = CellData.Key;
|
||||||
|
|
||||||
AddSheetName(CurrentKey, Sheet);
|
AddSheetName(CurrentKey, Sheet);
|
||||||
|
|
||||||
OPI_TypeConversion.GetArray(CurrentValue);
|
OPI_TypeConversion.GetArray(CurrentValue);
|
||||||
|
|
||||||
CurrentData = New Map;
|
CurrentData = New Map;
|
||||||
CurrentArray = New Array;
|
CurrentArray = New Array;
|
||||||
|
|
||||||
CurrentArray.Add(CurrentValue);
|
CurrentArray.Add(CurrentValue);
|
||||||
|
|
||||||
OPI_Tools.AddField("range" , CurrentKey , "String", CurrentData);
|
OPI_Tools.AddField("range" , CurrentKey , "String", CurrentData);
|
||||||
OPI_Tools.AddField("values" , CurrentArray , "Array", CurrentData);
|
OPI_Tools.AddField("values" , CurrentArray , "Array" , CurrentData);
|
||||||
OPI_Tools.AddField("majorDimension", MajorDimension, "String", CurrentData);
|
OPI_Tools.AddField("majorDimension", MajorDimension, "String", CurrentData);
|
||||||
|
|
||||||
DataArray.Add(CurrentData);
|
DataArray.Add(CurrentData);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return DataArray;
|
Return DataArray;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure FormCellNameArray(Val ArrayOfNames, Val Sheet)
|
Procedure FormCellNameArray(Val ArrayOfNames, Val Sheet)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Sheet);
|
OPI_TypeConversion.GetLine(Sheet);
|
||||||
|
|
||||||
For N = 0 To ArrayOfNames.UBound() Do
|
For N = 0 To ArrayOfNames.UBound() Do
|
||||||
AddSheetName(ArrayOfNames[N], Sheet);
|
AddSheetName(ArrayOfNames[N], Sheet);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -41,97 +41,97 @@
|
|||||||
|
|
||||||
// Generate code retrieval link
|
// Generate code retrieval link
|
||||||
// Returns URL for browser authorization
|
// Returns URL for browser authorization
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientID - String - Client ID - id
|
// ClientID - String - Client ID - id
|
||||||
// Calendar - Boolean - Calendar methods permission - calendar
|
// Calendar - Boolean - Calendar methods permission - calendar
|
||||||
// Drive - Boolean - Drive methods permission - drive
|
// Drive - Boolean - Drive methods permission - drive
|
||||||
// Sheets - Boolean - Sheets methods permission - sheets
|
// Sheets - Boolean - Sheets methods permission - sheets
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// String - Code retrieval link
|
// String - Code retrieval link
|
||||||
Function FormCodeRetrievalLink(Val ClientID
|
Function FormCodeRetrievalLink(Val ClientID
|
||||||
, Val Calendar = True
|
, Val Calendar = True
|
||||||
, Val Drive = True
|
, Val Drive = True
|
||||||
, Val Sheets = True) Export
|
, Val Sheets = True) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientID);
|
OPI_TypeConversion.GetLine(ClientID);
|
||||||
OPI_TypeConversion.GetBoolean(Calendar);
|
OPI_TypeConversion.GetBoolean(Calendar);
|
||||||
OPI_TypeConversion.GetBoolean(Sheets);
|
OPI_TypeConversion.GetBoolean(Sheets);
|
||||||
OPI_TypeConversion.GetBoolean(Drive);
|
OPI_TypeConversion.GetBoolean(Drive);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/auth";
|
URL = "https://accounts.google.com/o/oauth2/auth";
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("response_type", "code");
|
URLParameters.Insert("response_type", "code");
|
||||||
URLParameters.Insert("client_id" , ClientID);
|
URLParameters.Insert("client_id" , ClientID);
|
||||||
URLParameters.Insert("redirect_uri" , "http://localhost");
|
URLParameters.Insert("redirect_uri" , "http://localhost");
|
||||||
URLParameters.Insert("access_type" , "offline");
|
URLParameters.Insert("access_type" , "offline");
|
||||||
URLParameters.Insert("scope" , GetPermissionsList(Calendar, Drive, Sheets));
|
URLParameters.Insert("scope" , GetPermissionsList(Calendar, Drive, Sheets));
|
||||||
|
|
||||||
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
URL = URL + OPI_Tools.RequestParametersToString(URLParameters);
|
||||||
|
|
||||||
Return URL;
|
Return URL;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get token by code
|
// Get token by code
|
||||||
// Gets token by code from browser authorization
|
// Gets token by code from browser authorization
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientID - String - Client ID - id
|
// ClientID - String - Client ID - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// Code - String - Code from browser - code
|
// Code - String - Code from browser - code
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function GetTokenByCode(Val ClientID, Val ClientSecret, Val Code) Export
|
Function GetTokenByCode(Val ClientID, Val ClientSecret, Val Code) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientID);
|
OPI_TypeConversion.GetLine(ClientID);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(Code);
|
OPI_TypeConversion.GetLine(Code);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("grant_type" , "authorization_code");
|
URLParameters.Insert("grant_type" , "authorization_code");
|
||||||
URLParameters.Insert("client_id" , ClientID);
|
URLParameters.Insert("client_id" , ClientID);
|
||||||
URLParameters.Insert("client_secret", ClientSecret);
|
URLParameters.Insert("client_secret", ClientSecret);
|
||||||
URLParameters.Insert("redirect_uri" , "http://localhost");
|
URLParameters.Insert("redirect_uri" , "http://localhost");
|
||||||
URLParameters.Insert("code" , Code);
|
URLParameters.Insert("code" , Code);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Refresh token
|
// Refresh token
|
||||||
// Updates token by Refresh token
|
// Updates token by Refresh token
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientID - String - Client ID - id
|
// ClientID - String - Client ID - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// RefreshToken - String - Refresh token - refresh
|
// RefreshToken - String - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Google
|
// Map Of KeyAndValue - serialized JSON response from Google
|
||||||
Function RefreshToken(Val ClientID, Val ClientSecret, Val RefreshToken) Export
|
Function RefreshToken(Val ClientID, Val ClientSecret, Val RefreshToken) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientID);
|
OPI_TypeConversion.GetLine(ClientID);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(RefreshToken);
|
OPI_TypeConversion.GetLine(RefreshToken);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
URLParameters.Insert("grant_type" , "refresh_token");
|
URLParameters.Insert("grant_type" , "refresh_token");
|
||||||
URLParameters.Insert("client_id" , ClientID);
|
URLParameters.Insert("client_id" , ClientID);
|
||||||
URLParameters.Insert("client_secret", ClientSecret);
|
URLParameters.Insert("client_secret", ClientSecret);
|
||||||
URLParameters.Insert("refresh_token", RefreshToken);
|
URLParameters.Insert("refresh_token", RefreshToken);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
Response = OPI_Tools.Post(URL, URLParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -141,14 +141,14 @@ EndFunction
|
|||||||
#Region Internal
|
#Region Internal
|
||||||
|
|
||||||
Function GetAuthorizationHeader(Val Token) Export
|
Function GetAuthorizationHeader(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = New Map;
|
Headers = New Map;
|
||||||
Headers.Insert("Authorization", "Bearer " + Token);
|
Headers.Insert("Authorization", "Bearer " + Token);
|
||||||
|
|
||||||
Return Headers;
|
Return Headers;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -156,23 +156,23 @@ EndFunction
|
|||||||
#Region ServiceProceduresAndFunctions
|
#Region ServiceProceduresAndFunctions
|
||||||
|
|
||||||
Function GetPermissionsList(Calendar, Drive, Sheets)
|
Function GetPermissionsList(Calendar, Drive, Sheets)
|
||||||
|
|
||||||
PermissionsArray = New Array;
|
PermissionsArray = New Array;
|
||||||
|
|
||||||
If Calendar Then
|
If Calendar Then
|
||||||
PermissionsArray.Add("https://www.googleapis.com/auth/calendar");
|
PermissionsArray.Add("https://www.googleapis.com/auth/calendar");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Drive Then
|
If Drive Then
|
||||||
PermissionsArray.Add("https://www.googleapis.com/auth/drive");
|
PermissionsArray.Add("https://www.googleapis.com/auth/drive");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If Sheets Then
|
If Sheets Then
|
||||||
PermissionsArray.Add("https://www.googleapis.com/auth/spreadsheets");
|
PermissionsArray.Add("https://www.googleapis.com/auth/spreadsheets");
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return StrConcat(PermissionsArray, " ");
|
Return StrConcat(PermissionsArray, " ");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -46,404 +46,404 @@
|
|||||||
#Region Internal
|
#Region Internal
|
||||||
|
|
||||||
Function GetTestingSectionMapping() Export
|
Function GetTestingSectionMapping() Export
|
||||||
|
|
||||||
StandardDependencies = "[Decode, Build]";
|
StandardDependencies = "[Decode, Build]";
|
||||||
GoogleDependencies = "Testing-GoogleWorkspace";
|
GoogleDependencies = "Testing-GoogleWorkspace";
|
||||||
|
|
||||||
Sections = New Structure;
|
Sections = New Structure;
|
||||||
Sections.Insert("Telegram" , StandardDependencies);
|
Sections.Insert("Telegram" , StandardDependencies);
|
||||||
Sections.Insert("VK" , StandardDependencies);
|
Sections.Insert("VK" , StandardDependencies);
|
||||||
Sections.Insert("Viber" , StandardDependencies);
|
Sections.Insert("Viber" , StandardDependencies);
|
||||||
Sections.Insert("Twitter" , StandardDependencies);
|
Sections.Insert("Twitter" , StandardDependencies);
|
||||||
Sections.Insert("YandexDisk" , StandardDependencies);
|
Sections.Insert("YandexDisk" , StandardDependencies);
|
||||||
Sections.Insert("GoogleWorkspace", StandardDependencies);
|
Sections.Insert("GoogleWorkspace", StandardDependencies);
|
||||||
Sections.Insert("GoogleCalendar" , GoogleDependencies);
|
Sections.Insert("GoogleCalendar" , GoogleDependencies);
|
||||||
Sections.Insert("GoogleDrive" , GoogleDependencies);
|
Sections.Insert("GoogleDrive" , GoogleDependencies);
|
||||||
Sections.Insert("GoogleSheets" , GoogleDependencies);
|
Sections.Insert("GoogleSheets" , GoogleDependencies);
|
||||||
Sections.Insert("Notion" , StandardDependencies);
|
Sections.Insert("Notion" , StandardDependencies);
|
||||||
Sections.Insert("Slack" , StandardDependencies);
|
Sections.Insert("Slack" , StandardDependencies);
|
||||||
Sections.Insert("Airtable" , StandardDependencies);
|
Sections.Insert("Airtable" , StandardDependencies);
|
||||||
Sections.Insert("Dropbox" , StandardDependencies);
|
Sections.Insert("Dropbox" , StandardDependencies);
|
||||||
Sections.Insert("Bitrix24" , StandardDependencies);
|
Sections.Insert("Bitrix24" , StandardDependencies);
|
||||||
|
|
||||||
Return Sections;
|
Return Sections;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetTestTable() Export
|
Function GetTestTable() Export
|
||||||
|
|
||||||
Telegram = "Telegram";
|
Telegram = "Telegram";
|
||||||
VKontakte = "VK";
|
VKontakte = "VK";
|
||||||
YDisk = "YandexDisk";
|
YDisk = "YandexDisk";
|
||||||
Calendar = "GoogleCalendar";
|
Calendar = "GoogleCalendar";
|
||||||
Twitter = "Twitter";
|
Twitter = "Twitter";
|
||||||
Viber = "Viber";
|
Viber = "Viber";
|
||||||
Drive = "GoogleDrive";
|
Drive = "GoogleDrive";
|
||||||
VSpace = "GoogleWorkspace";
|
VSpace = "GoogleWorkspace";
|
||||||
Notion = "Notion";
|
Notion = "Notion";
|
||||||
Slack = "Slack";
|
Slack = "Slack";
|
||||||
Tables = "GoogleSheets";
|
Tables = "GoogleSheets";
|
||||||
AirT = "Airtable";
|
AirT = "Airtable";
|
||||||
Dropbox = "Dropbox";
|
Dropbox = "Dropbox";
|
||||||
Bitrix = "Bitrix24";
|
Bitrix = "Bitrix24";
|
||||||
|
|
||||||
TestTable = New ValueTable;
|
TestTable = New ValueTable;
|
||||||
TestTable.Columns.Add("Method");
|
TestTable.Columns.Add("Method");
|
||||||
TestTable.Columns.Add("Synonym");
|
TestTable.Columns.Add("Synonym");
|
||||||
TestTable.Columns.Add("Section");
|
TestTable.Columns.Add("Section");
|
||||||
|
|
||||||
NewTest(TestTable, "TelegramAPI_GetBotInfo" , "Get bot information" , Telegram);
|
NewTest(TestTable, "TelegramAPI_GetBotInfo" , "Get bot information" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_GetUpdates" , "Get updates" , Telegram);
|
NewTest(TestTable, "TelegramAPI_GetUpdates" , "Get updates" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SetWebhook" , "Set Webhook" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SetWebhook" , "Set Webhook" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendTextMessage" , "Send text message" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendTextMessage" , "Send text message" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendImage" , "Send image" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendImage" , "Send image" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendVideo" , "Send video" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendVideo" , "Send video" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendAudio" , "Send audio" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendAudio" , "Send audio" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendDocument" , "Send document" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendDocument" , "Send document" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendGIF" , "Send GIF" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendGIF" , "Send GIF" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendMediaGroup" , "Send mediagroup" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendMediaGroup" , "Send mediagroup" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendLocation" , "Send location" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendLocation" , "Send location" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendContact" , "Send contact" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendContact" , "Send contact" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_SendPoll" , "Send poll" , Telegram);
|
NewTest(TestTable, "TelegramAPI_SendPoll" , "Send poll" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_ForwardMessage" , "Forward message" , Telegram);
|
NewTest(TestTable, "TelegramAPI_ForwardMessage" , "Forward message" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_BanUnban" , "Ban/Unban" , Telegram);
|
NewTest(TestTable, "TelegramAPI_BanUnban" , "Ban/Unban" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_CreateInvitationLink" , "Create invitation link" , Telegram);
|
NewTest(TestTable, "TelegramAPI_CreateInvitationLink" , "Create invitation link" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_PinUnpinMessage" , "Pin/Unpin message" , Telegram);
|
NewTest(TestTable, "TelegramAPI_PinUnpinMessage" , "Pin/Unpin message" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_GetMemberCount" , "Get participant count" , Telegram);
|
NewTest(TestTable, "TelegramAPI_GetMemberCount" , "Get participant count" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_GetForumAvatarsList", "Get forum avatars list", Telegram);
|
NewTest(TestTable, "TelegramAPI_GetForumAvatarsList" , "Get forum avatars list" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_CreateDeleteForumTopic" , "Create/Delete forum topic" , Telegram);
|
NewTest(TestTable, "TelegramAPI_CreateDeleteForumTopic" , "Create/Delete forum topic" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_ChangeMainTopicName" , "Change main topic name" , Telegram);
|
NewTest(TestTable, "TelegramAPI_ChangeMainTopicName" , "Change main topic name" , Telegram);
|
||||||
NewTest(TestTable, "TelegramAPI_HideShowMainTopic" , "Hide/Show main topic" , Telegram);
|
NewTest(TestTable, "TelegramAPI_HideShowMainTopic" , "Hide/Show main topic" , Telegram);
|
||||||
|
|
||||||
NewTest(TestTable, "VKAPI_CreateTokenLink" , "Create token retrieval link", VKontakte);
|
NewTest(TestTable, "VKAPI_CreateTokenLink" , "Create token retrieval link" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateDeletePost" , "Create/Delete post" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateDeletePost" , "Create/Delete post" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateCompositePost" , "Create/Delete composite post" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateCompositePost" , "Create/Delete composite post" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreatePoll" , "Create poll" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreatePoll" , "Create poll" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_SaveDeleteImage" , "Add/Delete image" , VKontakte);
|
NewTest(TestTable, "VKAPI_SaveDeleteImage" , "Add/Delete image" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateStory" , "Create story" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateStory" , "Create story" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_DiscussionMethods" , "Actions with discussions" , VKontakte);
|
NewTest(TestTable, "VKAPI_DiscussionMethods" , "Actions with discussions" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_LikeRepostComment" , "Like/Repost/Comment" , VKontakte);
|
NewTest(TestTable, "VKAPI_LikeRepostComment" , "Like/Repost/Comment" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetStatistics" , "Get statistics" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetStatistics" , "Get statistics" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetPostStatistics" , "Get post statistics" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetPostStatistics" , "Get post statistics" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateAdCampaign" , "Create advertising campaign" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateAdCampaign" , "Create advertising campaign" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_SendMessage" , "Send message" , VKontakte);
|
NewTest(TestTable, "VKAPI_SendMessage" , "Send message" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetProductCategories" , "Get product categories" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetProductCategories" , "Get product categories" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateProductSelection" , "Create product and selection" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateProductSelection" , "Create product and selection" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_CreateProductWithProperties" , "Create product with properties" , VKontakte);
|
NewTest(TestTable, "VKAPI_CreateProductWithProperties" , "Create product with properties" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetProductList" , "Get product list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetProductList" , "Get product list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetSelectionList" , "Get selection list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetSelectionList" , "Get selection list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetPropertyList" , "Get property list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetPropertyList" , "Get property list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_GetOrderList" , "Get order list" , VKontakte);
|
NewTest(TestTable, "VKAPI_GetOrderList" , "Get order list" , VKontakte);
|
||||||
NewTest(TestTable, "VKAPI_UploadVideo" , "Upload video" , VKontakte);
|
NewTest(TestTable, "VKAPI_UploadVideo" , "Upload video" , VKontakte);
|
||||||
|
|
||||||
NewTest(TestTable, "YDisk_GetDiskInfo" , "Get disk information" , YDisk);
|
NewTest(TestTable, "YDisk_GetDiskInfo" , "Get disk information" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_CreateFolder" , "Create folder" , YDisk);
|
NewTest(TestTable, "YDisk_CreateFolder" , "Create folder" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_UploadByUrlAndGetObject", "Upload by URL and get" , YDisk);
|
NewTest(TestTable, "YDisk_UploadByUrlAndGetObject", "Upload by URL and get" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_UploadDeleteFile" , "Upload/Delete file" , YDisk);
|
NewTest(TestTable, "YDisk_UploadDeleteFile" , "Upload/Delete file" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_CreateObjectCopy" , "Create object copy" , YDisk);
|
NewTest(TestTable, "YDisk_CreateObjectCopy" , "Create object copy" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_GetDownloadLink" , "Get download link" , YDisk);
|
NewTest(TestTable, "YDisk_GetDownloadLink" , "Get download link" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_GetFileList" , "Get list of files" , YDisk);
|
NewTest(TestTable, "YDisk_GetFileList" , "Get list of files" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_MoveObject" , "Move object" , YDisk);
|
NewTest(TestTable, "YDisk_MoveObject" , "Move object" , YDisk);
|
||||||
NewTest(TestTable, "YDisk_PublicObjectActions" , "Actions with public objects", YDisk);
|
NewTest(TestTable, "YDisk_PublicObjectActions" , "Actions with public objects", YDisk);
|
||||||
NewTest(TestTable, "YDisk_GetPublishedList" , "Get published list" , YDisk);
|
NewTest(TestTable, "YDisk_GetPublishedList" , "Get published list" , YDisk);
|
||||||
|
|
||||||
NewTest(TestTable, "GV_GetAuthorizationLink" , "Get authorization link" , VSpace);
|
NewTest(TestTable, "GV_GetAuthorizationLink" , "Get authorization link" , VSpace);
|
||||||
NewTest(TestTable, "GV_GetToken" , "Get token" , VSpace);
|
NewTest(TestTable, "GV_GetToken" , "Get token" , VSpace);
|
||||||
NewTest(TestTable, "GV_UpdateToken" , "Refresh token" , VSpace);
|
NewTest(TestTable, "GV_UpdateToken" , "Refresh token" , VSpace);
|
||||||
|
|
||||||
NewTest(TestTable, "GC_GetCalendarList" , "Get list of calendars" , Calendar);
|
NewTest(TestTable, "GC_GetCalendarList" , "Get list of calendars" , Calendar);
|
||||||
NewTest(TestTable, "GC_CreateDeleteCalendar" , "Create/Delete calendar" , Calendar);
|
NewTest(TestTable, "GC_CreateDeleteCalendar" , "Create/Delete calendar" , Calendar);
|
||||||
NewTest(TestTable, "GC_CreateDeleteEvent" , "Create/Delete event" , Calendar);
|
NewTest(TestTable, "GC_CreateDeleteEvent" , "Create/Delete event" , Calendar);
|
||||||
NewTest(TestTable, "GC_GetEventList" , "Get list of events" , Calendar);
|
NewTest(TestTable, "GC_GetEventList" , "Get list of events" , Calendar);
|
||||||
|
|
||||||
NewTest(TestTable, "GD_GetCatalogList" , "Get list of directories" , Drive);
|
NewTest(TestTable, "GD_GetCatalogList" , "Get list of directories" , Drive);
|
||||||
NewTest(TestTable, "GD_UploadDeleteFile" , "Upload/Delete file" , Drive);
|
NewTest(TestTable, "GD_UploadDeleteFile" , "Upload/Delete file" , Drive);
|
||||||
NewTest(TestTable, "GD_CreateDeleteComment" , "Create/Delete Comment" , Drive);
|
NewTest(TestTable, "GD_CreateDeleteComment" , "Create/Delete Comment" , Drive);
|
||||||
NewTest(TestTable, "GD_CreateCatalog" , "Create/Delete catalog" , Drive);
|
NewTest(TestTable, "GD_CreateCatalog" , "Create/Delete catalog" , Drive);
|
||||||
|
|
||||||
NewTest(TestTable, "GT_CreateTable" , "Create table" , Tables);
|
NewTest(TestTable, "GT_CreateTable" , "Create table" , Tables);
|
||||||
NewTest(TestTable, "GT_GetTable" , "Get table" , Tables);
|
NewTest(TestTable, "GT_GetTable" , "Get table" , Tables);
|
||||||
NewTest(TestTable, "GT_FillClearCells" , "Fill/Clear cells" , Tables);
|
NewTest(TestTable, "GT_FillClearCells" , "Fill/Clear cells" , Tables);
|
||||||
|
|
||||||
NewTest(TestTable, "Twitter_GetAuthorizationLink" , "Get authorization link" , Twitter);
|
NewTest(TestTable, "Twitter_GetAuthorizationLink" , "Get authorization link" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_UpdateToken" , "Refresh token" , Twitter);
|
NewTest(TestTable, "Twitter_UpdateToken" , "Refresh token" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTextTweet" , "Text tweet" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTextTweet" , "Text tweet" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithImage" , "Tweet with image" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithImage" , "Tweet with image" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithVideo" , "Tweet with video" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithVideo" , "Tweet with video" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithGif" , "Tweet with gif" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithGif" , "Tweet with gif" , Twitter);
|
||||||
NewTest(TestTable, "Twitter_CreateTweetWithPoll" , "Tweet with poll" , Twitter);
|
NewTest(TestTable, "Twitter_CreateTweetWithPoll" , "Tweet with poll" , Twitter);
|
||||||
|
|
||||||
NewTest(TestTable, "Viber_GetChannelInfo" , "Get channel info" , Viber);
|
NewTest(TestTable, "Viber_GetChannelInfo" , "Get channel info" , Viber);
|
||||||
NewTest(TestTable, "Viber_GetUserData" , "Get user data" , Viber);
|
NewTest(TestTable, "Viber_GetUserData" , "Get user data" , Viber);
|
||||||
NewTest(TestTable, "Viber_GetOnlineUsers" , "Get online users" , Viber);
|
NewTest(TestTable, "Viber_GetOnlineUsers" , "Get online users" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendTextMessage" , "Send text message" , Viber);
|
NewTest(TestTable, "Viber_SendTextMessage" , "Send text message" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendImage" , "Send image" , Viber);
|
NewTest(TestTable, "Viber_SendImage" , "Send image" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendFile" , "SendFile" , Viber);
|
NewTest(TestTable, "Viber_SendFile" , "SendFile" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendContact" , "Send contact" , Viber);
|
NewTest(TestTable, "Viber_SendContact" , "Send contact" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendLocation" , "Send location" , Viber);
|
NewTest(TestTable, "Viber_SendLocation" , "Send location" , Viber);
|
||||||
NewTest(TestTable, "Viber_SendLink" , "Send link" , Viber);
|
NewTest(TestTable, "Viber_SendLink" , "Send link" , Viber);
|
||||||
|
|
||||||
NewTest(TestTable, "Notion_CreatePage" , "Create page" , Notion);
|
NewTest(TestTable, "Notion_CreatePage" , "Create page" , Notion);
|
||||||
NewTest(TestTable, "Notion_CreateEditDatabase" , "Create/Edit database" , Notion);
|
NewTest(TestTable, "Notion_CreateEditDatabase" , "Create/Edit database" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetPageInfo" , "Get page info" , Notion);
|
NewTest(TestTable, "Notion_GetPageInfo" , "Get page info" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetDatabaseInfo" , "Get database info" , Notion);
|
NewTest(TestTable, "Notion_GetDatabaseInfo" , "Get database info" , Notion);
|
||||||
NewTest(TestTable, "Notion_CreatePageInDatabase" , "Create page in database" , Notion);
|
NewTest(TestTable, "Notion_CreatePageInDatabase" , "Create page in database" , Notion);
|
||||||
NewTest(TestTable, "Notion_EditPageProperties" , "Edit page properties" , Notion);
|
NewTest(TestTable, "Notion_EditPageProperties" , "Edit page properties" , Notion);
|
||||||
NewTest(TestTable, "Notion_CreateDeleteBlock" , "Create/Delete block" , Notion);
|
NewTest(TestTable, "Notion_CreateDeleteBlock" , "Create/Delete block" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetUsers" , "Get users" , Notion);
|
NewTest(TestTable, "Notion_GetUsers" , "Get users" , Notion);
|
||||||
NewTest(TestTable, "Notion_GetUserData" , "Get user data" , Notion);
|
NewTest(TestTable, "Notion_GetUserData" , "Get user data" , Notion);
|
||||||
|
|
||||||
NewTest(TestTable, "Slack_GetBotInfo" , "Get bot information" , Slack);
|
NewTest(TestTable, "Slack_GetBotInfo" , "Get bot information" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetUserList" , "Get user list" , Slack);
|
NewTest(TestTable, "Slack_GetUserList" , "Get user list" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetRegionList" , "Get region list" , Slack);
|
NewTest(TestTable, "Slack_GetRegionList" , "Get region list" , Slack);
|
||||||
NewTest(TestTable, "Slack_SendDeleteMessage" , "Send/Delete message" , Slack);
|
NewTest(TestTable, "Slack_SendDeleteMessage" , "Send/Delete message" , Slack);
|
||||||
NewTest(TestTable, "Slack_SendDeleteEphemeral" , "Send/Delete ephemeral" , Slack);
|
NewTest(TestTable, "Slack_SendDeleteEphemeral" , "Send/Delete ephemeral" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetScheduledMessages" , "Get scheduled messages" , Slack);
|
NewTest(TestTable, "Slack_GetScheduledMessages" , "Get scheduled messages" , Slack);
|
||||||
NewTest(TestTable, "Slack_CreateArchiveChannel" , "Create/Archive channel" , Slack);
|
NewTest(TestTable, "Slack_CreateArchiveChannel" , "Create/Archive channel" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetChannelList" , "Get channel list" , Slack);
|
NewTest(TestTable, "Slack_GetChannelList" , "Get channel list" , Slack);
|
||||||
NewTest(TestTable, "Slack_OpenCloseDialog" , "Open/Close dialog" , Slack);
|
NewTest(TestTable, "Slack_OpenCloseDialog" , "Open/Close dialog" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetFileList" , "Get list of files" , Slack);
|
NewTest(TestTable, "Slack_GetFileList" , "Get list of files" , Slack);
|
||||||
NewTest(TestTable, "Slack_UploadDeleteFile" , "Upload/Delete file" , Slack);
|
NewTest(TestTable, "Slack_UploadDeleteFile" , "Upload/Delete file" , Slack);
|
||||||
NewTest(TestTable, "Slack_GetExternalFileList" , "Get external file list" , Slack);
|
NewTest(TestTable, "Slack_GetExternalFileList" , "Get external file list" , Slack);
|
||||||
NewTest(TestTable, "Slack_UploadDeleteExternalFile" , "Upload/Delete external file" , Slack);
|
NewTest(TestTable, "Slack_UploadDeleteExternalFile" , "Upload/Delete external file" , Slack);
|
||||||
|
|
||||||
NewTest(TestTable, "AT_CreateDatabase" , "Create/Edit database" , AirT);
|
NewTest(TestTable, "AT_CreateDatabase" , "Create/Edit database" , AirT);
|
||||||
NewTest(TestTable, "AT_CreateTable" , "Create/Edit table" , AirT);
|
NewTest(TestTable, "AT_CreateTable" , "Create/Edit table" , AirT);
|
||||||
NewTest(TestTable, "AT_CreateField" , "Create/Edit field" , AirT);
|
NewTest(TestTable, "AT_CreateField" , "Create/Edit field" , AirT);
|
||||||
NewTest(TestTable, "AT_CreateDeleteRecords" , "Create/Delete records" , AirT);
|
NewTest(TestTable, "AT_CreateDeleteRecords" , "Create/Delete records" , AirT);
|
||||||
|
|
||||||
NewTest(TestTable, "DropboxAPI_GetUpdateToken" , "Get/Update token" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_GetUpdateToken" , "Get/Update token" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_UploadFile" , "Upload file" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_UploadFile" , "Upload file" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_UploadFileByURL" , "Upload file by URL" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_UploadFileByURL" , "Upload file by URL" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_CreateFolder" , "Create folder" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_CreateFolder" , "Create folder" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_CreateDeleteTag" , "Create/Delete tag" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_CreateDeleteTag" , "Create/Delete tag" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_GetAccount" , "Get account data" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_GetAccount" , "Get account data" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_AccessManagement" , "Access management" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_AccessManagement" , "Access management" , Dropbox);
|
||||||
NewTest(TestTable, "DropboxAPI_GetFolderFileList" , "Get list of folder files" , Dropbox);
|
NewTest(TestTable, "DropboxAPI_GetFolderFileList" , "Get list of folder files" , Dropbox);
|
||||||
|
|
||||||
NewTest(TestTable, "B24_TokenManagment" , "Token management" , Bitrix);
|
NewTest(TestTable, "B24_TokenManagment" , "Token management" , Bitrix);
|
||||||
NewTest(TestTable, "B24_ServerTime" , "Server time" , Bitrix);
|
NewTest(TestTable, "B24_ServerTime" , "Server time" , Bitrix);
|
||||||
NewTest(TestTable, "B24_PostsManagment" , "Posts managment" , Bitrix);
|
NewTest(TestTable, "B24_PostsManagment" , "Posts managment" , Bitrix);
|
||||||
NewTest(TestTable, "B24_TaskManagment" , "Tasks managment" , Bitrix);
|
NewTest(TestTable, "B24_TaskManagment" , "Tasks managment" , Bitrix);
|
||||||
NewTest(TestTable, "B24_CommentsManagment" , "Comments managment" , Bitrix);
|
NewTest(TestTable, "B24_CommentsManagment" , "Comments managment" , Bitrix);
|
||||||
NewTest(TestTable, "B24_WorkingWithDrive" , "Working with drive" , Bitrix);
|
NewTest(TestTable, "B24_WorkingWithDrive" , "Working with drive" , Bitrix);
|
||||||
NewTest(TestTable, "B24_Kanban" , "Kanban" , Bitrix);
|
NewTest(TestTable, "B24_Kanban" , "Kanban" , Bitrix);
|
||||||
NewTest(TestTable, "B24_Timekeeping" , "Timekeeping" , Bitrix);
|
NewTest(TestTable, "B24_Timekeeping" , "Timekeeping" , Bitrix);
|
||||||
NewTest(TestTable, "B24_ChatManagment" , "Chats works" , Bitrix);
|
NewTest(TestTable, "B24_ChatManagment" , "Chats works" , Bitrix);
|
||||||
NewTest(TestTable, "B24_NotificationsManagment" , "Notifications managment" , Bitrix);
|
NewTest(TestTable, "B24_NotificationsManagment" , "Notifications managment" , Bitrix);
|
||||||
|
|
||||||
Return TestTable;
|
Return TestTable;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ExpectsThat(Value) Export
|
Function ExpectsThat(Value) Export
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
Module = GetCommonModule("ЮТест");
|
Module = GetCommonModule("ЮТест");
|
||||||
Ожидаем = TypeOf(Module) = Type("CommonModule");
|
Ожидаем = TypeOf(Module) = Type("CommonModule");
|
||||||
Return Module.ОжидаетЧто(Value);
|
Return Module.ОжидаетЧто(Value);
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Return Ожидаем.Что(Value);
|
Return Ожидаем.Что(Value);
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function FormYAXTests() Export
|
Function FormYAXTests() Export
|
||||||
|
|
||||||
Module = GetCommonModule("ЮТТесты");
|
Module = GetCommonModule("ЮТТесты");
|
||||||
Sections = GetTestingSectionMapping();
|
Sections = GetTestingSectionMapping();
|
||||||
TestTable = GetTestTable();
|
TestTable = GetTestTable();
|
||||||
|
|
||||||
For Each Section In Sections Do
|
For Each Section In Sections Do
|
||||||
|
|
||||||
CurrentSection = Section.Key;
|
CurrentSection = Section.Key;
|
||||||
Filter = New Structure("Section", CurrentSection);
|
Filter = New Structure("Section", CurrentSection);
|
||||||
SectionTests = TestTable.FindRows(Filter);
|
SectionTests = TestTable.FindRows(Filter);
|
||||||
|
|
||||||
Set = Module.ДобавитьТестовыйНабор(CurrentSection);
|
Set = Module.ДобавитьТестовыйНабор(CurrentSection);
|
||||||
|
|
||||||
For Each Test In SectionTests Do
|
For Each Test In SectionTests Do
|
||||||
Set.ДобавитьСерверныйТест(Test.Method, Test.Synonym);
|
Set.ДобавитьСерверныйТест(Test.Method, Test.Synonym);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return "";
|
Return "";
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function FormAssertsTests() Export
|
Function FormAssertsTests() Export
|
||||||
|
|
||||||
TestTable = GetTestTable();
|
TestTable = GetTestTable();
|
||||||
ArrayOfTests = New Array;
|
ArrayOfTests = New Array;
|
||||||
|
|
||||||
For Each Test In TestTable Do
|
For Each Test In TestTable Do
|
||||||
ArrayOfTests.Add(Test.Method);
|
ArrayOfTests.Add(Test.Method);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return ArrayOfTests;
|
Return ArrayOfTests;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetParameter(Parameter) Export
|
Function GetParameter(Parameter) Export
|
||||||
|
|
||||||
Path = DataFilePath();
|
Path = DataFilePath();
|
||||||
Return GetValueFromFile(Parameter, Path);
|
Return GetValueFromFile(Parameter, Path);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetBinary(Parameter) Export
|
Function GetBinary(Parameter) Export
|
||||||
|
|
||||||
Path = DataFilePath();
|
Path = DataFilePath();
|
||||||
LocalParameter = Parameter + "Local";
|
LocalParameter = Parameter + "Local";
|
||||||
MainValue = GetValueFromFile(Parameter , Path);
|
MainValue = GetValueFromFile(Parameter , Path);
|
||||||
LocalValue = GetValueFromFile(LocalParameter, Path);
|
LocalValue = GetValueFromFile(LocalParameter, Path);
|
||||||
|
|
||||||
LocalFile = New File(LocalValue);
|
LocalFile = New File(LocalValue);
|
||||||
|
|
||||||
If LocalFile.Exists() Then
|
If LocalFile.Exists() Then
|
||||||
Value = New BinaryData(LocalValue);
|
Value = New BinaryData(LocalValue);
|
||||||
Else
|
Else
|
||||||
Value = MainValue;
|
Value = MainValue;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Value) = Type("String") Then
|
If TypeOf(Value) = Type("String") Then
|
||||||
Value = GetFilePath(Value, LocalParameter);
|
Value = GetFilePath(Value, LocalParameter);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Value;
|
Return Value;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetFilePath(Val Path, LocalParameter, Val SaveLocally = True) Export
|
Function GetFilePath(Val Path, LocalParameter, Val SaveLocally = True) Export
|
||||||
|
|
||||||
If StrFind(Path, "http") > 0
|
If StrFind(Path, "http") > 0
|
||||||
Or StrFind(Path, "www") > 0 Then
|
Or StrFind(Path, "www") > 0 Then
|
||||||
|
|
||||||
TFN = GetTempFileName();
|
TFN = GetTempFileName();
|
||||||
FileCopy(Path, TFN);
|
FileCopy(Path, TFN);
|
||||||
Path = TFN;
|
Path = TFN;
|
||||||
Binary = New BinaryData(Path);
|
Binary = New BinaryData(Path);
|
||||||
|
|
||||||
If SaveLocally Then
|
If SaveLocally Then
|
||||||
WriteParameter(LocalParameter, TFN);
|
WriteParameter(LocalParameter, TFN);
|
||||||
Else
|
Else
|
||||||
DeleteFiles(TFN);
|
DeleteFiles(TFN);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Binary = New BinaryData(Path);
|
Binary = New BinaryData(Path);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Binary;
|
Return Binary;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure ParameterToCollection(Parameter, Collection) Export
|
Procedure ParameterToCollection(Parameter, Collection) Export
|
||||||
|
|
||||||
Value = GetParameter(Parameter);
|
Value = GetParameter(Parameter);
|
||||||
Collection.Insert(Parameter, Value);
|
Collection.Insert(Parameter, Value);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure BinaryToCollection(Parameter, Collection) Export
|
Procedure BinaryToCollection(Parameter, Collection) Export
|
||||||
|
|
||||||
Value = GetBinary(Parameter);
|
Value = GetBinary(Parameter);
|
||||||
Collection.Insert(Parameter, Value);
|
Collection.Insert(Parameter, Value);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteParameter(Parameter, Value) Export
|
Procedure WriteParameter(Parameter, Value) Export
|
||||||
|
|
||||||
Path = DataFilePath();
|
Path = DataFilePath();
|
||||||
WriteParameterToFile(Parameter, Value, Path);
|
WriteParameterToFile(Parameter, Value, Path);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteLog(Val Result, Val Method, Val Library = "") Export
|
Procedure WriteLog(Val Result, Val Method, Val Library = "") Export
|
||||||
|
|
||||||
Header = String(OPI_Tools.GetCurrentDate()) + " | " + Method;
|
Header = String(OPI_Tools.GetCurrentDate()) + " | " + Method;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
Data = OPI_Tools.JSONString(Result);
|
Data = OPI_Tools.JSONString(Result);
|
||||||
Except
|
Except
|
||||||
Data = "Not JSON: " + String(Result);
|
Data = "Not JSON: " + String(Result);
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
Data = " " + Data;
|
Data = " " + Data;
|
||||||
|
|
||||||
Message(Header);
|
Message(Header);
|
||||||
Message(Chars.LF);
|
Message(Chars.LF);
|
||||||
Message(Data);
|
Message(Data);
|
||||||
Message(Chars.LF);
|
Message(Chars.LF);
|
||||||
Message("---------------------------------");
|
Message("---------------------------------");
|
||||||
Message(Chars.LF);
|
Message(Chars.LF);
|
||||||
|
|
||||||
If ValueIsFilled(Library) Then
|
If ValueIsFilled(Library) Then
|
||||||
WriteLogFile(Data, Method, Library);
|
WriteLogFile(Data, Method, Library);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function GetValueFromFile(Parameter, Path)
|
Function GetValueFromFile(Parameter, Path)
|
||||||
|
|
||||||
Values = OPI_Tools.ReadJSONFile(Path);
|
Values = OPI_Tools.ReadJSONFile(Path);
|
||||||
Return ?(Values.Property(Parameter), Values[Parameter], "");
|
Return ?(Values.Property(Parameter), Values[Parameter], "");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function DataFilePath()
|
Function DataFilePath()
|
||||||
|
|
||||||
Path = "";
|
Path = "";
|
||||||
PossiblePaths = New Array;
|
PossiblePaths = New Array;
|
||||||
PossiblePaths.Add("./data.json");
|
PossiblePaths.Add("./data.json");
|
||||||
PossiblePaths.Add("C:\GDrive\Мой Диск\data.json");
|
PossiblePaths.Add("C:\GDrive\Мой Диск\data.json");
|
||||||
PossiblePaths.Add("D:\GD\Мой Диск\data.json");
|
PossiblePaths.Add("D:\GD\Мой Диск\data.json");
|
||||||
|
|
||||||
For Each PossiblePath In PossiblePaths Do
|
For Each PossiblePath In PossiblePaths Do
|
||||||
|
|
||||||
RepositoryFile = New File(PossiblePath);
|
RepositoryFile = New File(PossiblePath);
|
||||||
|
|
||||||
If RepositoryFile.Exists() Then
|
If RepositoryFile.Exists() Then
|
||||||
Path = PossiblePath;
|
Path = PossiblePath;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Return Path;
|
Return Path;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetCommonModule(Val Name)
|
Function GetCommonModule(Val Name)
|
||||||
SetSafeMode(True);
|
SetSafeMode(True);
|
||||||
Module = Eval(Name);
|
Module = Eval(Name);
|
||||||
SetSafeMode(False);
|
SetSafeMode(False);
|
||||||
Return Module;
|
Return Module;
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Procedure NewTest(ValueTable, Val Method, Val Synonym, Val Section)
|
Procedure NewTest(ValueTable, Val Method, Val Synonym, Val Section)
|
||||||
|
|
||||||
NewTest = ValueTable.Add();
|
NewTest = ValueTable.Add();
|
||||||
NewTest.Method = Method;
|
NewTest.Method = Method;
|
||||||
NewTest.Synonym = Synonym;
|
NewTest.Synonym = Synonym;
|
||||||
NewTest.Section = Section;
|
NewTest.Section = Section;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteParameterToFile(Val Parameter, Val Value, Val Path)
|
Procedure WriteParameterToFile(Val Parameter, Val Value, Val Path)
|
||||||
|
|
||||||
Values = OPI_Tools.ReadJSONFile(Path);
|
Values = OPI_Tools.ReadJSONFile(Path);
|
||||||
Values.Insert(Parameter, Value);
|
Values.Insert(Parameter, Value);
|
||||||
|
|
||||||
Record = New JSONWriter;
|
Record = New JSONWriter;
|
||||||
JSONWriterSettings = New JSONWriterSettings(JSONLineBreak.Auto, Chars.Tab);
|
JSONWriterSettings = New JSONWriterSettings(JSONLineBreak.Auto, Chars.Tab);
|
||||||
Record.OpenFile(Path, , , JSONWriterSettings);
|
Record.OpenFile(Path, , , JSONWriterSettings);
|
||||||
WriteJSON(Record, Values);
|
WriteJSON(Record, Values);
|
||||||
@ -452,37 +452,37 @@ Procedure WriteParameterToFile(Val Parameter, Val Value, Val Path)
|
|||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure WriteLogFile(Val Data, Val Method, Val Library)
|
Procedure WriteLogFile(Val Data, Val Method, Val Library)
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
LogPath = "./docs/ru/results";
|
LogPath = "./docs/ru/results";
|
||||||
LibraryLogPath = LogPath + "/" + Library;
|
LibraryLogPath = LogPath + "/" + Library;
|
||||||
|
|
||||||
LogDirectory = New File(LogPath);
|
LogDirectory = New File(LogPath);
|
||||||
|
|
||||||
If Not LogDirectory.Exists() Then
|
If Not LogDirectory.Exists() Then
|
||||||
CreateDirectory(LogPath);
|
CreateDirectory(LogPath);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
LibraryLogCatalog = New File(LibraryLogPath);
|
LibraryLogCatalog = New File(LibraryLogPath);
|
||||||
|
|
||||||
If Not LibraryLogCatalog.Exists() Then
|
If Not LibraryLogCatalog.Exists() Then
|
||||||
CreateDirectory(LibraryLogPath);
|
CreateDirectory(LibraryLogPath);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
FilePath = LibraryLogPath + "/" + Method + ".log";
|
FilePath = LibraryLogPath + "/" + Method + ".log";
|
||||||
LogFile = New File(FilePath);
|
LogFile = New File(FilePath);
|
||||||
|
|
||||||
If Not LogFile.Exists() Then
|
If Not LogFile.Exists() Then
|
||||||
LogDocument = New TextDocument;
|
LogDocument = New TextDocument;
|
||||||
LogDocument.SetText(Data);
|
LogDocument.SetText(Data);
|
||||||
LogDocument.Write(FilePath);
|
LogDocument.Write(FilePath);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Message("Failed to write log file!: " + ErrorDescription());
|
Message("Failed to write log file!: " + ErrorDescription());
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -48,83 +48,83 @@
|
|||||||
|
|
||||||
// Get authorization link
|
// Get authorization link
|
||||||
// Forms a link for authorization via the browser
|
// Forms a link for authorization via the browser
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// String - URL for browser transition
|
// String - URL for browser transition
|
||||||
Function GetAuthorizationLink(Parameters = "") Export
|
Function GetAuthorizationLink(Parameters = "") Export
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
|
|
||||||
URLParameters = New Structure;
|
URLParameters = New Structure;
|
||||||
|
|
||||||
URLParameters.Insert("response_type" , "code");
|
URLParameters.Insert("response_type" , "code");
|
||||||
URLParameters.Insert("client_id" , Parameters_["client_id"]);
|
URLParameters.Insert("client_id" , Parameters_["client_id"]);
|
||||||
URLParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
URLParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
||||||
URLParameters.Insert("scope" , Parameters_["scope"]);
|
URLParameters.Insert("scope" , Parameters_["scope"]);
|
||||||
URLParameters.Insert("state" , "state");
|
URLParameters.Insert("state" , "state");
|
||||||
URLParameters.Insert("code_challenge" , "challenge");
|
URLParameters.Insert("code_challenge" , "challenge");
|
||||||
URLParameters.Insert("code_challenge_method", "plain");
|
URLParameters.Insert("code_challenge_method", "plain");
|
||||||
|
|
||||||
URLParameters = OPI_Tools.RequestParametersToString(URLParameters);
|
URLParameters = OPI_Tools.RequestParametersToString(URLParameters);
|
||||||
Link = "https://twitter.com/i/oauth2/authorize" + URLParameters;
|
Link = "https://twitter.com/i/oauth2/authorize" + URLParameters;
|
||||||
|
|
||||||
Return Link;
|
Return Link;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get token
|
// Get token
|
||||||
// Gets the token by the code received when authorizing using the link from GetAuthorizationLink
|
// Gets the token by the code received when authorizing using the link from GetAuthorizationLink
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Code - String - Code obtained from authorization See GetAuthorizationLink - code
|
// Code - String - Code obtained from authorization See GetAuthorizationLink - code
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function GetToken(Val Code, Val Parameters = "") Export
|
Function GetToken(Val Code, Val Parameters = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Code);
|
OPI_TypeConversion.GetLine(Code);
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
|
|
||||||
RequestParameters = New Structure;
|
RequestParameters = New Structure;
|
||||||
RequestParameters.Insert("code" , Code);
|
RequestParameters.Insert("code" , Code);
|
||||||
RequestParameters.Insert("grant_type" , "authorization_code");
|
RequestParameters.Insert("grant_type" , "authorization_code");
|
||||||
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
||||||
RequestParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
RequestParameters.Insert("redirect_uri" , Parameters_["redirect_uri"]);
|
||||||
RequestParameters.Insert("code_verifier", "challenge");
|
RequestParameters.Insert("code_verifier", "challenge");
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, RequestParameters, , False);
|
, RequestParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Refresh token
|
// Refresh token
|
||||||
// Updates the v2 token using the refresh_token
|
// Updates the v2 token using the refresh_token
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function RefreshToken(Val Parameters = "") Export
|
Function RefreshToken(Val Parameters = "") Export
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
Refresh = "refresh_token";
|
Refresh = "refresh_token";
|
||||||
|
|
||||||
RequestParameters = New Structure;
|
RequestParameters = New Structure;
|
||||||
RequestParameters.Insert(Refresh , Parameters_[Refresh]);
|
RequestParameters.Insert(Refresh , Parameters_[Refresh]);
|
||||||
RequestParameters.Insert("grant_type" , Refresh);
|
RequestParameters.Insert("grant_type" , Refresh);
|
||||||
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
RequestParameters.Insert("client_id" , Parameters_["client_id"]);
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
Response = OPI_Tools.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, RequestParameters, , False);
|
, RequestParameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -133,23 +133,23 @@ EndFunction
|
|||||||
// Method for insertion into an http service, the address of which is specified in redirect_uri
|
// Method for insertion into an http service, the address of which is specified in redirect_uri
|
||||||
// Calls the token acquisition method, as for obtaining a token from the code received
|
// Calls the token acquisition method, as for obtaining a token from the code received
|
||||||
// on redirect_uri after authorization via the browser is only 30 seconds
|
// on redirect_uri after authorization via the browser is only 30 seconds
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Request - HTTPServiceRequest - Request coming to the http service
|
// Request - HTTPServiceRequest - Request coming to the http service
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// HTTPResponse, Arbitrary, BinaryData - Result of reading the JSON response from the server
|
// HTTPResponse, Arbitrary, BinaryData - Result of reading the JSON response from the server
|
||||||
Function HandleIncomingRequestAfterAuthorization(Request) Export
|
Function HandleIncomingRequestAfterAuthorization(Request) Export
|
||||||
|
|
||||||
Code = Request.RequestParameters["code"];
|
Code = Request.RequestParameters["code"];
|
||||||
TokenResponse = GetToken(Code);
|
TokenResponse = GetToken(Code);
|
||||||
|
|
||||||
// BSLLS:CommentedCode-off
|
// BSLLS:CommentedCode-off
|
||||||
// Preferred token storage
|
// Preferred token storage
|
||||||
// Constants.TwitterRefresh.Set(ResponseToken["refresh_token"]);
|
// Constants.TwitterRefresh.Set(ResponseToken["refresh_token"]);
|
||||||
// Constants.TwitterToken.Set(ResponseToken["access_token"]);
|
// Constants.TwitterToken.Set(ResponseToken["access_token"]);
|
||||||
// BSLLS:CommentedCode-on
|
// BSLLS:CommentedCode-on
|
||||||
|
|
||||||
Return TokenResponse;
|
Return TokenResponse;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -160,189 +160,189 @@ EndFunction
|
|||||||
|
|
||||||
// !NOCLI
|
// !NOCLI
|
||||||
// Create custom tweet
|
// Create custom tweet
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text
|
// Text - String - Tweet text
|
||||||
// MediaArray - Array of String, BinaryData - Array of binary data or file paths
|
// MediaArray - Array of String, BinaryData - Array of binary data or file paths
|
||||||
// PollOptionsArray - Array of String - Array of poll options, if necessary
|
// PollOptionsArray - Array of String - Array of poll options, if necessary
|
||||||
// PollDuration - String, Number - Poll duration if necessary (poll without duration is not created)
|
// PollDuration - String, Number - Poll duration if necessary (poll without duration is not created)
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateCustomTweet(Val Text = ""
|
Function CreateCustomTweet(Val Text = ""
|
||||||
, Val MediaArray = ""
|
, Val MediaArray = ""
|
||||||
, Val PollOptionsArray = ""
|
, Val PollOptionsArray = ""
|
||||||
, Val PollDuration = ""
|
, Val PollDuration = ""
|
||||||
, Val Parameters = "") Export
|
, Val Parameters = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Text);
|
OPI_TypeConversion.GetLine(Text);
|
||||||
OPI_TypeConversion.GetLine(PollDuration);
|
OPI_TypeConversion.GetLine(PollDuration);
|
||||||
|
|
||||||
If ValueIsFilled(MediaArray) Then
|
If ValueIsFilled(MediaArray) Then
|
||||||
OPI_TypeConversion.GetCollection(MediaArray);
|
OPI_TypeConversion.GetCollection(MediaArray);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(PollOptionsArray) Then
|
If ValueIsFilled(PollOptionsArray) Then
|
||||||
OPI_TypeConversion.GetCollection(PollOptionsArray);
|
OPI_TypeConversion.GetCollection(PollOptionsArray);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
URL = "https://api.twitter.com/2/tweets";
|
URL = "https://api.twitter.com/2/tweets";
|
||||||
Array = "Array";
|
Array = "Array";
|
||||||
Fields = New Map;
|
Fields = New Map;
|
||||||
|
|
||||||
If ValueIsFilled(Text) Then
|
If ValueIsFilled(Text) Then
|
||||||
Fields.Insert("text", Text);
|
Fields.Insert("text", Text);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(PollOptionsArray) = Type(Array) And ValueIsFilled(PollDuration) Then
|
If TypeOf(PollOptionsArray) = Type(Array) And ValueIsFilled(PollDuration) Then
|
||||||
|
|
||||||
PollDuration = Number(PollDuration);
|
PollDuration = Number(PollDuration);
|
||||||
|
|
||||||
If PollOptionsArray.Count() > 0 Then
|
If PollOptionsArray.Count() > 0 Then
|
||||||
|
|
||||||
OptionStructure = New Structure("options,duration_minutes", PollOptionsArray, PollDuration);
|
OptionStructure = New Structure("options,duration_minutes", PollOptionsArray, PollDuration);
|
||||||
Fields.Insert("poll", OptionStructure);
|
Fields.Insert("poll", OptionStructure);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(MediaArray) = Type(Array) Then
|
If TypeOf(MediaArray) = Type(Array) Then
|
||||||
If MediaArray.Count() > 0 Then
|
If MediaArray.Count() > 0 Then
|
||||||
Fields.Insert("media", New Structure("media_ids", MediaArray));
|
Fields.Insert("media", New Structure("media_ids", MediaArray));
|
||||||
EndIf;
|
EndIf;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV2(Parameters_);
|
Authorization = CreateAuthorizationHeaderV2(Parameters_);
|
||||||
Response = OPI_Tools.Post(URL, Fields, Authorization);
|
Response = OPI_Tools.Post(URL, Fields, Authorization);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create text tweet
|
// Create text tweet
|
||||||
// Creates a tweet without attachments
|
// Creates a tweet without attachments
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateTextTweet(Val Text, Val Parameters = "") Export
|
Function CreateTextTweet(Val Text, Val Parameters = "") Export
|
||||||
Return CreateCustomTweet(Text, , , , Parameters);
|
Return CreateCustomTweet(Text, , , , Parameters);
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create image tweet
|
// Create image tweet
|
||||||
// Creates a tweet with an image attachment
|
// Creates a tweet with an image attachment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// ImageArray - Array of String, BinaryData - Image files array - pictures
|
// ImageArray - Array of String, BinaryData - Image files array - pictures
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateImageTweet(Val Text, Val ImageArray, Val Parameters = "") Export
|
Function CreateImageTweet(Val Text, Val ImageArray, Val Parameters = "") Export
|
||||||
|
|
||||||
MediaArray = UploadAttachmentsArray(ImageArray, "photo", Parameters);
|
MediaArray = UploadAttachmentsArray(ImageArray, "photo", Parameters);
|
||||||
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create gif tweet
|
// Create gif tweet
|
||||||
// Creates a tweet with a gif attachment
|
// Creates a tweet with a gif attachment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// GifsArray - Array of String, BinaryData - Gif files array - gifs
|
// GifsArray - Array of String, BinaryData - Gif files array - gifs
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateGifTweet(Val Text, Val GifsArray, Val Parameters = "") Export
|
Function CreateGifTweet(Val Text, Val GifsArray, Val Parameters = "") Export
|
||||||
|
|
||||||
MediaArray = UploadAttachmentsArray(GifsArray, "animated_gif", Parameters);
|
MediaArray = UploadAttachmentsArray(GifsArray, "animated_gif", Parameters);
|
||||||
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create video tweet
|
// Create video tweet
|
||||||
// Creates a tweet with a video attachment
|
// Creates a tweet with a video attachment
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// VideosArray - Array of String, BinaryData - Video files array - videos
|
// VideosArray - Array of String, BinaryData - Video files array - videos
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreateVideoTweet(Val Text, Val VideosArray, Val Parameters = "") Export
|
Function CreateVideoTweet(Val Text, Val VideosArray, Val Parameters = "") Export
|
||||||
|
|
||||||
MediaArray = UploadAttachmentsArray(VideosArray, "video", Parameters);
|
MediaArray = UploadAttachmentsArray(VideosArray, "video", Parameters);
|
||||||
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
Return CreateCustomTweet(Text, MediaArray, , , Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create poll tweet
|
// Create poll tweet
|
||||||
// Creates a tweet with a poll
|
// Creates a tweet with a poll
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Text - String - Tweet text - text
|
// Text - String - Tweet text - text
|
||||||
// OptionArray - Array of String - Poll options array - options
|
// OptionArray - Array of String - Poll options array - options
|
||||||
// Duration - String, Number - Poll duration - duration
|
// Duration - String, Number - Poll duration - duration
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Twitter
|
// Map Of KeyAndValue - serialized JSON response from Twitter
|
||||||
Function CreatePollTweet(Val Text, Val OptionArray, Val Duration, Val Parameters = "") Export
|
Function CreatePollTweet(Val Text, Val OptionArray, Val Duration, Val Parameters = "") Export
|
||||||
|
|
||||||
Return CreateCustomTweet(Text, , OptionArray, Duration, Parameters);
|
Return CreateCustomTweet(Text, , OptionArray, Duration, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload attachments array !NOCLI
|
// Upload attachments array !NOCLI
|
||||||
// Uploads files to the server and returns their IDs
|
// Uploads files to the server and returns their IDs
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ArrayOfFiles - Array of String, BinaryData - Files array
|
// ArrayOfFiles - Array of String, BinaryData - Files array
|
||||||
// AttachmentsType - String - Attachments type
|
// AttachmentsType - String - Attachments type
|
||||||
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
// Parameters - Structure Of String - See GetStandardParameters - auth - Authorization JSON or path to .json
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Array Of String - Media ID array
|
// Array Of String - Media ID array
|
||||||
Function UploadAttachmentsArray(Val ArrayOfFiles, Val AttachmentsType, Val Parameters = "") Export
|
Function UploadAttachmentsArray(Val ArrayOfFiles, Val AttachmentsType, Val Parameters = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(AttachmentsType);
|
OPI_TypeConversion.GetLine(AttachmentsType);
|
||||||
OPI_TypeConversion.GetCollection(ArrayOfFiles);
|
OPI_TypeConversion.GetCollection(ArrayOfFiles);
|
||||||
|
|
||||||
MediaArray = New Array;
|
MediaArray = New Array;
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
|
|
||||||
If ValueIsFilled(ArrayOfFiles) Then
|
If ValueIsFilled(ArrayOfFiles) Then
|
||||||
|
|
||||||
For Each SendingFile In ArrayOfFiles Do
|
For Each SendingFile In ArrayOfFiles Do
|
||||||
|
|
||||||
OPI_TypeConversion.GetBinaryData(SendingFile);
|
OPI_TypeConversion.GetBinaryData(SendingFile);
|
||||||
|
|
||||||
Response = UploadMediaFile(SendingFile, AttachmentsType, Parameters_);
|
Response = UploadMediaFile(SendingFile, AttachmentsType, Parameters_);
|
||||||
MediaID = Response[MIS];
|
MediaID = Response[MIS];
|
||||||
|
|
||||||
If Not ValueIsFilled(MediaID) Then
|
If Not ValueIsFilled(MediaID) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
MediaArray.Add(MediaID);
|
MediaArray.Add(MediaID);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return MediaArray;
|
Return MediaArray;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -351,195 +351,195 @@ EndFunction
|
|||||||
|
|
||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function UploadMediaFile(Val File, Val Type, Val Parameters)
|
Function UploadMediaFile(Val File, Val Type, Val Parameters)
|
||||||
|
|
||||||
OPI_TypeConversion.GetBinaryData(File);
|
OPI_TypeConversion.GetBinaryData(File);
|
||||||
|
|
||||||
RequestType = "POST";
|
RequestType = "POST";
|
||||||
Parameters_ = GetStandardParameters(Parameters);
|
Parameters_ = GetStandardParameters(Parameters);
|
||||||
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
||||||
|
|
||||||
If Type = "photo" Then
|
If Type = "photo" Then
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert("media_data" , Base64String(File));
|
Fields.Insert("media_data" , Base64String(File));
|
||||||
Fields.Insert("media_category", Type);
|
Fields.Insert("media_category", Type);
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters_, Fields, RequestType, URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters_, Fields, RequestType, URL);
|
||||||
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Response = UploadMediaInParts(File, Type, RequestType, URL, Parameters_);
|
Response = UploadMediaInParts(File, Type, RequestType, URL, Parameters_);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function UploadMediaInParts(Val File, Val Type, Val RequestType, Val URL, Parameters)
|
Function UploadMediaInParts(Val File, Val Type, Val RequestType, Val URL, Parameters)
|
||||||
|
|
||||||
Unit = 1024;
|
Unit = 1024;
|
||||||
Count = 4;
|
Count = 4;
|
||||||
MediaKey = "media_key";
|
MediaKey = "media_key";
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Size = File.Size();
|
Size = File.Size();
|
||||||
|
|
||||||
MIMETypeMapping = New Map;
|
MIMETypeMapping = New Map;
|
||||||
MIMETypeMapping.Insert("photo" , "image/jpeg");
|
MIMETypeMapping.Insert("photo" , "image/jpeg");
|
||||||
MIMETypeMapping.Insert("video" , "video/mp4");
|
MIMETypeMapping.Insert("video" , "video/mp4");
|
||||||
MIMETypeMapping.Insert("animated_gif", "image/gif");
|
MIMETypeMapping.Insert("animated_gif", "image/gif");
|
||||||
|
|
||||||
ChunkSize = Count * Unit * Unit;
|
ChunkSize = Count * Unit * Unit;
|
||||||
ArrayReading = SplitBinaryData(File, ChunkSize);
|
ArrayReading = SplitBinaryData(File, ChunkSize);
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert(Command , "INIT");
|
Fields.Insert(Command , "INIT");
|
||||||
Fields.Insert("total_bytes" , OPI_Tools.NumberToString(Size));
|
Fields.Insert("total_bytes" , OPI_Tools.NumberToString(Size));
|
||||||
Fields.Insert("media_type" , MIMETypeMapping.Get(Type));
|
Fields.Insert("media_type" , MIMETypeMapping.Get(Type));
|
||||||
Fields.Insert("media_category" , Type);
|
Fields.Insert("media_category" , Type);
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, RequestType, URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, RequestType, URL);
|
||||||
|
|
||||||
InitializationResponse = OPI_Tools.Post(URL, Fields, Authorization, False);
|
InitializationResponse = OPI_Tools.Post(URL, Fields, Authorization, False);
|
||||||
InitializationKey = InitializationResponse[MediaKey];
|
InitializationKey = InitializationResponse[MediaKey];
|
||||||
InitializationID = InitializationResponse[MIS];
|
InitializationID = InitializationResponse[MIS];
|
||||||
|
|
||||||
If Not ValueIsFilled(InitializationKey) Or Not ValueIsFilled(InitializationID) Then
|
If Not ValueIsFilled(InitializationKey) Or Not ValueIsFilled(InitializationID) Then
|
||||||
Return InitializationResponse;
|
Return InitializationResponse;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Counter = 0;
|
Counter = 0;
|
||||||
|
|
||||||
For Each Part In ArrayReading Do
|
For Each Part In ArrayReading Do
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert(Command , "APPEND");
|
Fields.Insert(Command , "APPEND");
|
||||||
Fields.Insert("media_key" , InitializationKey);
|
Fields.Insert("media_key" , InitializationKey);
|
||||||
Fields.Insert("segment_index" , OPI_Tools.NumberToString(Counter));
|
Fields.Insert("segment_index" , OPI_Tools.NumberToString(Counter));
|
||||||
Fields.Insert("media" , Part);
|
Fields.Insert("media" , Part);
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, New Structure, RequestType, URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, New Structure, RequestType, URL);
|
||||||
|
|
||||||
OPI_Tools.PostMultipart(URL, Fields, , , Authorization);
|
OPI_Tools.PostMultipart(URL, Fields, , , Authorization);
|
||||||
|
|
||||||
Counter = Counter + 1;
|
Counter = Counter + 1;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
Fields.Insert(Command , "FINALIZE");
|
Fields.Insert(Command , "FINALIZE");
|
||||||
Fields.Insert("media_id", InitializationID);
|
Fields.Insert("media_id", InitializationID);
|
||||||
|
|
||||||
ProcessingStatus = GetProcessingStatus(Parameters, Fields, URL);
|
ProcessingStatus = GetProcessingStatus(Parameters, Fields, URL);
|
||||||
|
|
||||||
If Not TypeOf(ProcessingStatus) = Type("String") Then
|
If Not TypeOf(ProcessingStatus) = Type("String") Then
|
||||||
Return ProcessingStatus;
|
Return ProcessingStatus;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = WaitForProcessingCompletion(ProcessingStatus, InitializationID, URL, Parameters);
|
Response = WaitForProcessingCompletion(ProcessingStatus, InitializationID, URL, Parameters);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function WaitForProcessingCompletion(Val ProcessingStatus, Val InitializationID, Val URL, Val Parameters)
|
Function WaitForProcessingCompletion(Val ProcessingStatus, Val InitializationID, Val URL, Val Parameters)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Fields = New Structure;
|
Fields = New Structure;
|
||||||
|
|
||||||
Fields.Insert(Command , "STATUS");
|
Fields.Insert(Command , "STATUS");
|
||||||
Fields.Insert("media_id", InitializationID);
|
Fields.Insert("media_id", InitializationID);
|
||||||
|
|
||||||
WHile String(ProcessingStatus) = "pending" Or String(ProcessingStatus) = "in_progress" Do
|
WHile String(ProcessingStatus) = "pending" Or String(ProcessingStatus) = "in_progress" Do
|
||||||
|
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "GET", URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "GET", URL);
|
||||||
Response = OPI_Tools.Get(URL, Fields, Authorization);
|
Response = OPI_Tools.Get(URL, Fields, Authorization);
|
||||||
Information = Response[ProcessingInfo];
|
Information = Response[ProcessingInfo];
|
||||||
|
|
||||||
If Not ValueIsFilled(Information) Then
|
If Not ValueIsFilled(Information) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
ProcessingStatus = Information["state"];
|
ProcessingStatus = Information["state"];
|
||||||
|
|
||||||
If Not ValueIsFilled(ProcessingStatus) Then
|
If Not ValueIsFilled(ProcessingStatus) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
If ProcessingStatus = "failed" Then
|
If ProcessingStatus = "failed" Then
|
||||||
Raise "Twitter could not process the video you uploaded";
|
Raise "Twitter could not process the video you uploaded";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetStandardParameters(Val Parameters = "")
|
Function GetStandardParameters(Val Parameters = "")
|
||||||
|
|
||||||
// The definition of the data required for the work is collected here.
|
// The definition of the data required for the work is collected here.
|
||||||
// For Twitter, this is quite a significant set, which is due to the presence of 2 APIs at once,
|
// For Twitter, this is quite a significant set, which is due to the presence of 2 APIs at once,
|
||||||
// which, at the same time, are not created for different tasks, but are simply versions of each other.
|
// which, at the same time, are not created for different tasks, but are simply versions of each other.
|
||||||
// The current version of the API is v2 and it requires obtaining temporary tokens. Despite the fact,
|
// The current version of the API is v2 and it requires obtaining temporary tokens. Despite the fact,
|
||||||
// that Twitter insists on using this latest version, they somehow managed not to transfer
|
// that Twitter insists on using this latest version, they somehow managed not to transfer
|
||||||
// file upload mechanism and some others from the old version - v1.1. Therefore, something needs to be done
|
// file upload mechanism and some others from the old version - v1.1. Therefore, something needs to be done
|
||||||
// on version 1.1, and something on 2: up to the point that they removed the ability to post tweets from v1.1,
|
// on version 1.1, and something on 2: up to the point that they removed the ability to post tweets from v1.1,
|
||||||
// but only through it you can add a picture to the tweet. At the same time, their authentication methods and tokens are different
|
// but only through it you can add a picture to the tweet. At the same time, their authentication methods and tokens are different
|
||||||
|
|
||||||
// The world gigacorporation of Elon Musk, by the way, a reminder ;)
|
// The world gigacorporation of Elon Musk, by the way, a reminder ;)
|
||||||
|
|
||||||
// P.S The following is often referred to as the "Twitter Developer settings page" - this
|
// P.S The following is often referred to as the "Twitter Developer settings page" - this
|
||||||
// https://developer.twitter.com/en/portal/dashboard and chosing of project from list (key icon)
|
// https://developer.twitter.com/en/portal/dashboard and chosing of project from list (key icon)
|
||||||
|
|
||||||
Parameters_ = New Map;
|
Parameters_ = New Map;
|
||||||
Permissions = "tweet.read tweet.write tweet.moderate.write users.read "
|
Permissions = "tweet.read tweet.write tweet.moderate.write users.read "
|
||||||
+ "follows.read follows.write offline.access space.read mute.read "
|
+ "follows.read follows.write offline.access space.read mute.read "
|
||||||
+ "mute.write like.read like.write list.read list.write block.read "
|
+ "mute.write like.read like.write list.read list.write block.read "
|
||||||
+ "block.write bookmark.read bookmark.write";
|
+ "block.write bookmark.read bookmark.write";
|
||||||
|
|
||||||
// Data for API v2
|
// Data for API v2
|
||||||
|
|
||||||
// redirect_uri - URL of your http service (or other request handler) for authorization
|
// redirect_uri - URL of your http service (or other request handler) for authorization
|
||||||
// scope - a set of permissions for the received key. Can be any, but offline.access is mandatory
|
// scope - a set of permissions for the received key. Can be any, but offline.access is mandatory
|
||||||
// client_id - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
// client_id - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
||||||
// client_secret - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
// client_secret - From OAuth 2.0 Client ID and Client Secret settings page of Twitter Developer
|
||||||
// access_token - GetAuthorizationLink() -> Browser -> code will come to redirect_uri -> GetToken(code)
|
// access_token - GetAuthorizationLink() -> Browser -> code will come to redirect_uri -> GetToken(code)
|
||||||
// refresh_token - Comes together with access_token and is used to refresh it (access_token lifetime - 2 hr)
|
// refresh_token - Comes together with access_token and is used to refresh it (access_token lifetime - 2 hr)
|
||||||
// The update is done using the UpdateToken method with new access_token and refresh_token.
|
// The update is done using the UpdateToken method with new access_token and refresh_token.
|
||||||
// For the next update, you need to use a new refresh_token, so hardcode
|
// For the next update, you need to use a new refresh_token, so hardcode
|
||||||
// won't work (access_token won't work either)
|
// won't work (access_token won't work either)
|
||||||
|
|
||||||
// |--> RefreshToken() ->|access_token --> 2 hrs. lifetime
|
// |--> RefreshToken() ->|access_token --> 2 hrs. lifetime
|
||||||
// | |refresh_token --|
|
// | |refresh_token --|
|
||||||
// |--------[after 2 hrs.]-------------------|
|
// |--------[after 2 hrs.]-------------------|
|
||||||
|
|
||||||
// Data for API v1.1
|
// Data for API v1.1
|
||||||
|
|
||||||
// oauth_token - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
// oauth_token - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
||||||
// oauth_token_secret - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
// oauth_token_secret - From Authentication Tokens -> Access Token and Secret settings page of Twitter Developer
|
||||||
// oauth_consumer_key - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
// oauth_consumer_key - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
||||||
// oauth_consumer_secret - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
// oauth_consumer_secret - From Consumer Keys -> Access Token and Secret settings page of Twitter Developer
|
||||||
|
|
||||||
// These tokens do not need to be updated
|
// These tokens do not need to be updated
|
||||||
|
|
||||||
Parameters_.Insert("redirect_uri" , "");
|
Parameters_.Insert("redirect_uri" , "");
|
||||||
Parameters_.Insert("scope" , Permissions);
|
Parameters_.Insert("scope" , Permissions);
|
||||||
Parameters_.Insert("client_id" , "");
|
Parameters_.Insert("client_id" , "");
|
||||||
Parameters_.Insert("client_secret" , "");
|
Parameters_.Insert("client_secret" , "");
|
||||||
Parameters_.Insert("access_token" , ""); // Should be something like Constants.TwitterToken.Get()
|
Parameters_.Insert("access_token" , ""); // Should be something like Constants.TwitterToken.Get()
|
||||||
Parameters_.Insert("refresh_token" , ""); // Should be something like Constants.TwitterRefresh.Get()
|
Parameters_.Insert("refresh_token" , ""); // Should be something like Constants.TwitterRefresh.Get()
|
||||||
Parameters_.Insert("oauth_token" , "");
|
Parameters_.Insert("oauth_token" , "");
|
||||||
Parameters_.Insert("oauth_token_secret" , "");
|
Parameters_.Insert("oauth_token_secret" , "");
|
||||||
Parameters_.Insert("oauth_consumer_key" , "");
|
Parameters_.Insert("oauth_consumer_key" , "");
|
||||||
Parameters_.Insert("oauth_consumer_secret", "");
|
Parameters_.Insert("oauth_consumer_secret", "");
|
||||||
|
|
||||||
OPI_TypeConversion.GetCollection(Parameters);
|
OPI_TypeConversion.GetCollection(Parameters);
|
||||||
|
|
||||||
If TypeOf(Parameters) = Type("Structure") Or TypeOf(Parameters) = Type("Map") Then
|
If TypeOf(Parameters) = Type("Structure") Or TypeOf(Parameters) = Type("Map") Then
|
||||||
For Each PassedParameter In Parameters Do
|
For Each PassedParameter In Parameters Do
|
||||||
Parameters_.Insert(PassedParameter.Key, OPI_Tools.NumberToString(PassedParameter.Value));
|
Parameters_.Insert(PassedParameter.Key, OPI_Tools.NumberToString(PassedParameter.Value));
|
||||||
@ -551,137 +551,137 @@ Function GetStandardParameters(Val Parameters = "")
|
|||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType, Val URL)
|
Function CreateAuthorizationHeaderV1(Val Parameters, Val Fields, Val RequestType, Val URL)
|
||||||
|
|
||||||
CurrentDate = OPI_Tools.GetCurrentDate();
|
CurrentDate = OPI_Tools.GetCurrentDate();
|
||||||
AuthorizationHeader = "";
|
AuthorizationHeader = "";
|
||||||
HashingMethod = "HMAC-SHA1";
|
HashingMethod = "HMAC-SHA1";
|
||||||
APIVersion = "1.0";
|
APIVersion = "1.0";
|
||||||
SignatureString = "";
|
SignatureString = "";
|
||||||
Signature = "";
|
Signature = "";
|
||||||
OCK = "oauth_consumer_key";
|
OCK = "oauth_consumer_key";
|
||||||
OTK = "oauth_token";
|
OTK = "oauth_token";
|
||||||
CurrentUNIXDate = OPI_Tools.UNIXTime(CurrentDate);
|
CurrentUNIXDate = OPI_Tools.UNIXTime(CurrentDate);
|
||||||
CurrentUNIXDate = OPI_Tools.NumberToString(CurrentUNIXDate);
|
CurrentUNIXDate = OPI_Tools.NumberToString(CurrentUNIXDate);
|
||||||
ParametersTable = New ValueTable;
|
ParametersTable = New ValueTable;
|
||||||
ParametersTable.Columns.Add("Key");
|
ParametersTable.Columns.Add("Key");
|
||||||
ParametersTable.Columns.Add("Value");
|
ParametersTable.Columns.Add("Value");
|
||||||
|
|
||||||
For Each Field In Fields Do
|
For Each Field In Fields Do
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = Field.Key;
|
NewLine.Key = Field.Key;
|
||||||
NewLine.Value = Field.Value;
|
NewLine.Value = Field.Value;
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = OCK;
|
NewLine.Key = OCK;
|
||||||
NewLine.Value = Parameters[OCK];
|
NewLine.Value = Parameters[OCK];
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = OTK;
|
NewLine.Key = OTK;
|
||||||
NewLine.Value = Parameters[OTK];
|
NewLine.Value = Parameters[OTK];
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_version";
|
NewLine.Key = "oauth_version";
|
||||||
NewLine.Value = APIVersion;
|
NewLine.Value = APIVersion;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_signature_method";
|
NewLine.Key = "oauth_signature_method";
|
||||||
NewLine.Value = HashingMethod;
|
NewLine.Value = HashingMethod;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_timestamp";
|
NewLine.Key = "oauth_timestamp";
|
||||||
NewLine.Value = CurrentUNIXDate;
|
NewLine.Value = CurrentUNIXDate;
|
||||||
|
|
||||||
NewLine = ParametersTable.Add();
|
NewLine = ParametersTable.Add();
|
||||||
NewLine.Key = "oauth_nonce";
|
NewLine.Key = "oauth_nonce";
|
||||||
NewLine.Value = CurrentUNIXDate;
|
NewLine.Value = CurrentUNIXDate;
|
||||||
|
|
||||||
For Each TableRow In ParametersTable Do
|
For Each TableRow In ParametersTable Do
|
||||||
|
|
||||||
TableRow.Key = EncodeString(TableRow.Key, StringEncodingMethod.URLencoding);
|
TableRow.Key = EncodeString(TableRow.Key, StringEncodingMethod.URLencoding);
|
||||||
TableRow.Value = EncodeString(TableRow.Value, StringEncodingMethod.URLencoding);
|
TableRow.Value = EncodeString(TableRow.Value, StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
ParametersTable.Sort("Key");
|
ParametersTable.Sort("Key");
|
||||||
|
|
||||||
For Each TableRow In ParametersTable Do
|
For Each TableRow In ParametersTable Do
|
||||||
|
|
||||||
SignatureString = SignatureString
|
SignatureString = SignatureString
|
||||||
+ TableRow.Key
|
+ TableRow.Key
|
||||||
+ "="
|
+ " ="
|
||||||
+ TableRow.Value
|
+ TableRow.Value
|
||||||
+ "&";
|
+ "&";
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
SignatureString = Left(SignatureString, StrLen(SignatureString) - 1);
|
SignatureString = Left(SignatureString, StrLen(SignatureString) - 1);
|
||||||
SignatureString = Upper(RequestType)
|
SignatureString = Upper(RequestType)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ EncodeString(URL, StringEncodingMethod.URLencoding)
|
+ EncodeString(URL , StringEncodingMethod.URLencoding)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ EncodeString(SignatureString, StringEncodingMethod.URLencoding);
|
+ EncodeString(SignatureString, StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
Signature = EncodeString(Parameters["oauth_consumer_secret"], StringEncodingMethod.URLencoding)
|
Signature = EncodeString(Parameters["oauth_consumer_secret"], StringEncodingMethod.URLencoding)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ EncodeString(Parameters["oauth_token_secret"], StringEncodingMethod.URLencoding);
|
+ EncodeString(Parameters["oauth_token_secret"], StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
Signature = OPI_Cryptography.HMAC(GetBinaryDataFromString(Signature)
|
Signature = OPI_Cryptography.HMAC(GetBinaryDataFromString(Signature)
|
||||||
, GetBinaryDataFromString(SignatureString)
|
, GetBinaryDataFromString(SignatureString)
|
||||||
, HashFunction.SHA1
|
, HashFunction.SHA1
|
||||||
, 64);
|
, 64);
|
||||||
|
|
||||||
Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding);
|
Signature = EncodeString(Base64String(Signature), StringEncodingMethod.URLencoding);
|
||||||
|
|
||||||
Delimiter = """,";
|
Delimiter = """,";
|
||||||
AuthorizationHeader = AuthorizationHeader
|
AuthorizationHeader = AuthorizationHeader
|
||||||
+ "OAuth "
|
+ "OAuth "
|
||||||
+ "oauth_consumer_key=""" + Parameters[OCK] + Delimiter
|
+ "oauth_consumer_key =""" + Parameters[OCK] + Delimiter
|
||||||
+ "oauth_token=""" + Parameters[OTK] + Delimiter
|
+ "oauth_token =""" + Parameters[OTK] + Delimiter
|
||||||
+ "oauth_signature_method=""" + HashingMethod + Delimiter
|
+ "oauth_signature_method=""" + HashingMethod + Delimiter
|
||||||
+ "oauth_timestamp=""" + CurrentUNIXDate + Delimiter
|
+ "oauth_timestamp =""" + CurrentUNIXDate + Delimiter
|
||||||
+ "oauth_nonce=""" + CurrentUNIXDate + Delimiter
|
+ "oauth_nonce =""" + CurrentUNIXDate + Delimiter
|
||||||
+ "oauth_version=""" + APIVersion + Delimiter
|
+ "oauth_version =""" + APIVersion + Delimiter
|
||||||
+ "oauth_signature=""" + Signature;
|
+ "oauth_signature =""" + Signature;
|
||||||
|
|
||||||
HeaderMapping = New Map;
|
HeaderMapping = New Map;
|
||||||
HeaderMapping.Insert("authorization", AuthorizationHeader);
|
HeaderMapping.Insert("authorization", AuthorizationHeader);
|
||||||
|
|
||||||
Return HeaderMapping;
|
Return HeaderMapping;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function CreateAuthorizationHeaderV2(Val Parameters)
|
Function CreateAuthorizationHeaderV2(Val Parameters)
|
||||||
|
|
||||||
ReturnMapping = New Map;
|
ReturnMapping = New Map;
|
||||||
ReturnMapping.Insert("Authorization", "Bearer " + Parameters["access_token"]);
|
ReturnMapping.Insert("Authorization", "Bearer " + Parameters["access_token"]);
|
||||||
|
|
||||||
Return ReturnMapping;
|
Return ReturnMapping;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function GetProcessingStatus(Val Parameters, Val Fields, Val URL)
|
Function GetProcessingStatus(Val Parameters, Val Fields, Val URL)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "POST", URL);
|
Authorization = CreateAuthorizationHeaderV1(Parameters, Fields, "POST", URL);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
Response = OPI_Tools.Post(URL, Fields, Authorization, False);
|
||||||
Information = Response[ProcessingInfo];
|
Information = Response[ProcessingInfo];
|
||||||
|
|
||||||
If Not ValueIsFilled(Information) Then
|
If Not ValueIsFilled(Information) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
ProcessingStatus = Information["state"];
|
ProcessingStatus = Information["state"];
|
||||||
|
|
||||||
If Not ValueIsFilled(ProcessingStatus) Then
|
If Not ValueIsFilled(ProcessingStatus) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
Else
|
Else
|
||||||
Return ProcessingStatus;
|
Return ProcessingStatus;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -39,268 +39,268 @@
|
|||||||
#Region Internal
|
#Region Internal
|
||||||
|
|
||||||
Procedure GetBinaryData(Value) Export
|
Procedure GetBinaryData(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If TypeOf(Value) = Type("BinaryData") Then
|
If TypeOf(Value) = Type("BinaryData") Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
|
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
|
|
||||||
If File.Exists() Then
|
If File.Exists() Then
|
||||||
Value = New BinaryData(Value);
|
Value = New BinaryData(Value);
|
||||||
|
|
||||||
ElsIf StrFind(Value, "//") Then
|
ElsIf StrFind(Value, "//") Then
|
||||||
|
|
||||||
Value = OPI_Tools.Get(Value);
|
Value = OPI_Tools.Get(Value);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Value = Base64Value(Value);
|
Value = Base64Value(Value);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Raise "Error getting binary data from parameter: " + ErrorDescription();
|
Raise "Error getting binary data from parameter: " + ErrorDescription();
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetBinaryOrStream(Value) Export
|
Procedure GetBinaryOrStream(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Value) <> Type("String") Then
|
If TypeOf(Value) <> Type("String") Then
|
||||||
GetBinaryData(Value);
|
GetBinaryData(Value);
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
|
|
||||||
If File.Exists() Then
|
If File.Exists() Then
|
||||||
Value = New FileStream(Value, FileOpenMode.Open);
|
Value = New FileStream(Value, FileOpenMode.Open);
|
||||||
Else
|
Else
|
||||||
GetBinaryData(Value);
|
GetBinaryData(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetCollection(Value) Export
|
Procedure GetCollection(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
InitialValue = Value;
|
InitialValue = Value;
|
||||||
|
|
||||||
If ThisIsCollection(Value) Then
|
If ThisIsCollection(Value) Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
|
|
||||||
If TypeOf(Value) = Type("BinaryData") Then
|
If TypeOf(Value) = Type("BinaryData") Then
|
||||||
Value = GetStringFromBinaryData(Value);
|
Value = GetStringFromBinaryData(Value);
|
||||||
Else
|
Else
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
JSONReader = New JSONReader;
|
JSONReader = New JSONReader;
|
||||||
|
|
||||||
If File.Exists() Then
|
If File.Exists() Then
|
||||||
|
|
||||||
JSONReader.OpenFile(Value);
|
JSONReader.OpenFile(Value);
|
||||||
|
|
||||||
ElsIf StrStartsWith(Lower(Value), "http") Then
|
ElsIf StrStartsWith(Lower(Value), "http") Then
|
||||||
|
|
||||||
TFN = GetTempFileName();
|
TFN = GetTempFileName();
|
||||||
FileCopy(Value, TFN);
|
FileCopy(Value, TFN);
|
||||||
JSONReader.OpenFile(TFN);
|
JSONReader.OpenFile(TFN);
|
||||||
JSONReader.Read();
|
JSONReader.Read();
|
||||||
|
|
||||||
DeleteFiles(TFN);
|
DeleteFiles(TFN);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
JSONReader.SetString(TrimAll(Value));
|
JSONReader.SetString(TrimAll(Value));
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Value = ReadJSON(JSONReader, True, Undefined, JSONDateFormat.ISO);
|
Value = ReadJSON(JSONReader, True, Undefined, JSONDateFormat.ISO);
|
||||||
JSONReader.Close();
|
JSONReader.Close();
|
||||||
|
|
||||||
If (Not ThisIsCollection(Value)) Or Not ValueIsFilled(Value) Then
|
If (Not ThisIsCollection(Value)) Or Not ValueIsFilled(Value) Then
|
||||||
|
|
||||||
Value = InitialValue;
|
Value = InitialValue;
|
||||||
GetArray(Value);
|
GetArray(Value);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
|
|
||||||
Value = InitialValue;
|
Value = InitialValue;
|
||||||
GetArray(Value);
|
GetArray(Value);
|
||||||
|
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetArray(Value) Export
|
Procedure GetArray(Value) Export
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Array") Then
|
If TypeOf(Value) = Type("Array") Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Value) = Type("String")
|
If TypeOf(Value) = Type("String")
|
||||||
And StrStartsWith(Value, "[")
|
And StrStartsWith(Value, "[")
|
||||||
And StrEndsWith(Value, "]") Then
|
And StrEndsWith(Value, "]") Then
|
||||||
|
|
||||||
CommaInQuotes = "','";
|
CommaInQuotes = "','";
|
||||||
|
|
||||||
Value = StrReplace(Value, "['" , "");
|
Value = StrReplace(Value, "['" , "");
|
||||||
Value = StrReplace(Value, "']" , "");
|
Value = StrReplace(Value, "']" , "");
|
||||||
Value = StrReplace(Value, "', '" , CommaInQuotes);
|
Value = StrReplace(Value, "', '" , CommaInQuotes);
|
||||||
Value = StrReplace(Value, "' , '", CommaInQuotes);
|
Value = StrReplace(Value, "' , '", CommaInQuotes);
|
||||||
Value = StrReplace(Value, "' ,'" , CommaInQuotes);
|
Value = StrReplace(Value, "' ,'" , CommaInQuotes);
|
||||||
|
|
||||||
Value = StrSplit(Value, CommaInQuotes, False);
|
Value = StrSplit(Value, CommaInQuotes, False);
|
||||||
|
|
||||||
For N = 0 To Value.UBound() Do
|
For N = 0 To Value.UBound() Do
|
||||||
Value[N] = TrimAll(Value[N]);
|
Value[N] = TrimAll(Value[N]);
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Number") Then
|
If TypeOf(Value) = Type("Number") Then
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
OPI_Tools.ValueToArray(Value);
|
OPI_Tools.ValueToArray(Value);
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetBoolean(Value) Export
|
Procedure GetBoolean(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If TypeOf(Value) = Type("Boolean") Then
|
If TypeOf(Value) = Type("Boolean") Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
Value = Boolean(Value);
|
Value = Boolean(Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Raise "Error getting boolean data from parameter";
|
Raise "Error getting boolean data from parameter";
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetLine(Value, Val FromSource = False) Export
|
Procedure GetLine(Value, Val FromSource = False) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If ThisIsSymbolic(Value) Then
|
If ThisIsSymbolic(Value) Then
|
||||||
|
|
||||||
If Not FromSource Then
|
If Not FromSource Then
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Value = OPI_Tools.NumberToString(Value);
|
Value = OPI_Tools.NumberToString(Value);
|
||||||
File = New File(Value);
|
File = New File(Value);
|
||||||
|
|
||||||
If File.Exists() Then
|
If File.Exists() Then
|
||||||
|
|
||||||
TextReader = New TextReader(Value);
|
TextReader = New TextReader(Value);
|
||||||
Value = TextReader.Read();
|
Value = TextReader.Read();
|
||||||
TextReader.Close();
|
TextReader.Close();
|
||||||
|
|
||||||
ElsIf StrStartsWith(Lower(Value), "http") Then
|
ElsIf StrStartsWith(Lower(Value), "http") Then
|
||||||
|
|
||||||
TFN = GetTempFileName();
|
TFN = GetTempFileName();
|
||||||
FileCopy(Value, TFN);
|
FileCopy(Value, TFN);
|
||||||
|
|
||||||
TextReader = New TextReader(TFN);
|
TextReader = New TextReader(TFN);
|
||||||
Value = TextReader.Read();
|
Value = TextReader.Read();
|
||||||
TextReader.Close();
|
TextReader.Close();
|
||||||
|
|
||||||
DeleteFiles(TFN);
|
DeleteFiles(TFN);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
|
|
||||||
Return;
|
Return;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
ElsIf TypeOf(Value) = Type("BinaryData") Then
|
ElsIf TypeOf(Value) = Type("BinaryData") Then
|
||||||
|
|
||||||
Value = GetStringFromBinaryData(Value);
|
Value = GetStringFromBinaryData(Value);
|
||||||
|
|
||||||
ElsIf ThisIsCollection(Value) Then
|
ElsIf ThisIsCollection(Value) Then
|
||||||
|
|
||||||
Value = OPI_Tools.JSONString(Value);
|
Value = OPI_Tools.JSONString(Value);
|
||||||
|
|
||||||
Else
|
Else
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
Value = String(Value);
|
Value = String(Value);
|
||||||
Return;
|
Return;
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetDate(Value) Export
|
Procedure GetDate(Value) Export
|
||||||
|
|
||||||
If Value = Undefined Then
|
If Value = Undefined Then
|
||||||
Return;
|
Return;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Date = "Date";
|
Date = "Date";
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|
||||||
If TypeOf(Value) = Type(Date) Then
|
If TypeOf(Value) = Type(Date) Then
|
||||||
Return;
|
Return;
|
||||||
Else
|
Else
|
||||||
Value = XMLValue(Type(Date), Value);
|
Value = XMLValue(Type(Date), Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Except
|
Except
|
||||||
OOD = New TypeDescription(Date);
|
OOD = New TypeDescription(Date);
|
||||||
Value = OOD.AdjustValue(Value);
|
Value = OOD.AdjustValue(Value);
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure GetNumber(Value) Export
|
Procedure GetNumber(Value) Export
|
||||||
|
|
||||||
TypeDescription = New TypeDescription("Number");
|
TypeDescription = New TypeDescription("Number");
|
||||||
Value = TypeDescription.AdjustValue(Value);
|
Value = TypeDescription.AdjustValue(Value);
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -308,19 +308,19 @@ EndProcedure
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function ThisIsCollection(Val Value)
|
Function ThisIsCollection(Val Value)
|
||||||
|
|
||||||
Return TypeOf(Value) = Type("Array")
|
Return TypeOf(Value) = Type("Array")
|
||||||
Or TypeOf(Value) = Type("Structure")
|
Or TypeOf(Value) = Type("Structure")
|
||||||
Or TypeOf(Value) = Type("Map");
|
Or TypeOf(Value) = Type("Map");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ThisIsSymbolic(Val Value)
|
Function ThisIsSymbolic(Val Value)
|
||||||
|
|
||||||
Return TypeOf(Value) = Type("String")
|
Return TypeOf(Value) = Type("String")
|
||||||
Or TypeOf(Value) = Type("Number")
|
Or TypeOf(Value) = Type("Number")
|
||||||
Or TypeOf(Value) = Type("Date");
|
Or TypeOf(Value) = Type("Date");
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -23,7 +23,7 @@
|
|||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
// 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
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||||
@ -46,55 +46,55 @@
|
|||||||
// which will return 200 and a genuine SSL certificate. If there is a certificate and the database is published
|
// which will return 200 and a genuine SSL certificate. If there is a certificate and the database is published
|
||||||
// on the server - you can use an HTTP service. Information about new messages will also be sent there
|
// on the server - you can use an HTTP service. Information about new messages will also be sent there
|
||||||
// Viber periodically knocks on the Webhook address, so if it is inactive, everything will stop working
|
// Viber periodically knocks on the Webhook address, so if it is inactive, everything will stop working
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Viber Token - token
|
// Token - String - Viber Token - token
|
||||||
// URL - String - URL for setting up Webhook - url
|
// URL - String - URL for setting up Webhook - url
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SetWebhook(Val Token, Val URL) Export
|
Function SetWebhook(Val Token, Val URL) Export
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("url" , URL , "String", Parameters);
|
OPI_Tools.AddField("url" , URL , "String", Parameters);
|
||||||
OPI_Tools.AddField("auth_token" , Token, "String", Parameters);
|
OPI_Tools.AddField("auth_token" , Token, "String", Parameters);
|
||||||
|
|
||||||
Return OPI_Tools.Post("https://chatapi.viber.com/pa/set_webhook", Parameters);
|
Return OPI_Tools.Post("https://chatapi.viber.com/pa/set_webhook", Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get channel information
|
// Get channel information
|
||||||
// Here you can get the channel's user IDs. Bot IDs need to be obtained from the Webhook arrivals
|
// Here you can get the channel's user IDs. Bot IDs need to be obtained from the Webhook arrivals
|
||||||
// The user ID from channel information is not suitable for sending messages through the bot - they are different
|
// The user ID from channel information is not suitable for sending messages through the bot - they are different
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function GetChannelInformation(Val Token) Export
|
Function GetChannelInformation(Val Token) Export
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_account_info";
|
URL = "https://chatapi.viber.com/pa/get_account_info";
|
||||||
Return OPI_Tools.Get(URL, , TokenInHeaders(Token));
|
Return OPI_Tools.Get(URL, , TokenInHeaders(Token));
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get user data
|
// Get user data
|
||||||
// Gets user information by ID
|
// Gets user information by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// UserID - String, Number - Viber User ID - user
|
// UserID - String, Number - Viber User ID - user
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function GetUserData(Val Token, Val UserID) Export
|
Function GetUserData(Val Token, Val UserID) Export
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_user_details";
|
URL = "https://chatapi.viber.com/pa/get_user_details";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("id", UserID, "String", Parameters);
|
OPI_Tools.AddField("id", UserID, "String", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
@ -103,22 +103,22 @@ EndFunction
|
|||||||
|
|
||||||
// Get online users
|
// Get online users
|
||||||
// Gets the status of a user or multiple users by ID
|
// Gets the status of a user or multiple users by ID
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Viber Token - token
|
// Token - String - Viber Token - token
|
||||||
// UserIDs - String,Number,Array of String,Number - Viber User(s) ID - users
|
// UserIDs - String,Number,Array of String,Number - Viber User(s) ID - users
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function GetOnlineUsers(Val Token, Val UserIDs) Export
|
Function GetOnlineUsers(Val Token, Val UserIDs) Export
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_online";
|
URL = "https://chatapi.viber.com/pa/get_online";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("ids", UserIDs, "Collection", Parameters);
|
OPI_Tools.AddField("ids", UserIDs, "Collection", Parameters);
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
Response = OPI_Tools.Post(URL, Parameters, TokenInHeaders(Token));
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
@ -129,14 +129,14 @@ EndFunction
|
|||||||
|
|
||||||
// Send text message
|
// Send text message
|
||||||
// Sends a text message to a chat or channel
|
// Sends a text message to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Text - String - Message text - text
|
// Text - String - Message text - text
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
// Keyboard - Structure Of String - See CreateKeyboardFromArrayButton - keyboard
|
// Keyboard - Structure Of String - See CreateKeyboardFromArrayButton - keyboard
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendTextMessage(Val Token
|
Function SendTextMessage(Val Token
|
||||||
@ -144,40 +144,40 @@ Function SendTextMessage(Val Token
|
|||||||
, Val UserID
|
, Val UserID
|
||||||
, Val SendingToChannel
|
, Val SendingToChannel
|
||||||
, Val Keyboard = "") Export
|
, Val Keyboard = "") Export
|
||||||
|
|
||||||
Return SendMessage(Token, "text", UserID, SendingToChannel, , Text, Keyboard);
|
Return SendMessage(Token, "text", UserID, SendingToChannel, , Text, Keyboard);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send image
|
// Send image
|
||||||
// Sends an image to a chat or channel
|
// Sends an image to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Image URL - picture
|
// URL - String - Image URL - picture
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - boolean - Sending to channel or bot chat - ischannel
|
||||||
// Description - String - Image annotation - description
|
// Description - String - Image annotation - description
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendImage(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Description = "") Export
|
Function SendImage(Val Token, Val URL, Val UserID, Val SendingToChannel, Val Description = "") Export
|
||||||
|
|
||||||
Return SendMessage(Token, "picture", UserID, SendingToChannel, URL, Description);
|
Return SendMessage(Token, "picture", UserID, SendingToChannel, URL, Description);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// SendFile
|
// SendFile
|
||||||
// Sends a file (document) to a chat or channel
|
// Sends a file (document) to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - File URL - file
|
// URL - String - File URL - file
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
// Extension - String - File extension - ext
|
// Extension - String - File extension - ext
|
||||||
// Size - Number - File size. If not filled in > determined automatically by downloading the file - size
|
// Size - Number - File size. If not filled in > determined automatically by downloading the file - size
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendFile(Val Token
|
Function SendFile(Val Token
|
||||||
@ -186,36 +186,36 @@ Function SendFile(Val Token
|
|||||||
, Val SendingToChannel
|
, Val SendingToChannel
|
||||||
, Val Extension
|
, Val Extension
|
||||||
, Val Size = "") Export
|
, Val Size = "") Export
|
||||||
|
|
||||||
If Not ValueIsFilled(Size) Then
|
If Not ValueIsFilled(Size) Then
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL);
|
Response = OPI_Tools.Get(URL);
|
||||||
Size = Response.Size();
|
Size = Response.Size();
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
String_ = "String";
|
String_ = "String";
|
||||||
Extension = StrReplace(Extension, ".", "");
|
Extension = StrReplace(Extension, ".", "");
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("URL" , URL , String_, Parameters);
|
OPI_Tools.AddField("URL" , URL , String_, Parameters);
|
||||||
OPI_Tools.AddField("Size" , Size , String_, Parameters);
|
OPI_Tools.AddField("Size" , Size , String_, Parameters);
|
||||||
OPI_Tools.AddField("Extension", Extension, String_, Parameters);
|
OPI_Tools.AddField("Extension", Extension, String_, Parameters);
|
||||||
|
|
||||||
Return SendMessage(Token, "file", UserID, SendingToChannel, Parameters);
|
Return SendMessage(Token, "file", UserID, SendingToChannel, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send contact
|
// Send contact
|
||||||
// Sends a contact with a phone number to a chat or channel
|
// Sends a contact with a phone number to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// ContactName - String - Contact name - name
|
// ContactName - String - Contact name - name
|
||||||
// PhoneNumber - String - Phone number - phone
|
// PhoneNumber - String - Phone number - phone
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendContact(Val Token
|
Function SendContact(Val Token
|
||||||
@ -223,91 +223,91 @@ Function SendContact(Val Token
|
|||||||
, Val PhoneNumber
|
, Val PhoneNumber
|
||||||
, Val UserID
|
, Val UserID
|
||||||
, Val SendingToChannel) Export
|
, Val SendingToChannel) Export
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("name" , ContactName , "String", Parameters);
|
OPI_Tools.AddField("name" , ContactName , "String", Parameters);
|
||||||
OPI_Tools.AddField("phone_number", PhoneNumber, "String", Parameters);
|
OPI_Tools.AddField("phone_number", PhoneNumber , "String", Parameters);
|
||||||
|
|
||||||
Return SendMessage(Token, "contact", UserID, SendingToChannel, Parameters);
|
Return SendMessage(Token, "contact", UserID, SendingToChannel, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send location
|
// Send location
|
||||||
// Sends geographic coordinates to a chat or channel
|
// Sends geographic coordinates to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Latitude - String, Number - Geographic latitude - lat
|
// Latitude - String, Number - Geographic latitude - lat
|
||||||
// Longitude - String, Number - Geographic longitude - long
|
// Longitude - String, Number - Geographic longitude - long
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendLocation(Val Token, Val Latitude, Val Longitude, Val UserID, Val SendingToChannel) Export
|
Function SendLocation(Val Token, Val Latitude, Val Longitude, Val UserID, Val SendingToChannel) Export
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
OPI_Tools.AddField("lat", Latitude , "String", Parameters);
|
OPI_Tools.AddField("lat", Latitude , "String", Parameters);
|
||||||
OPI_Tools.AddField("lon", Longitude, "String", Parameters);
|
OPI_Tools.AddField("lon", Longitude, "String", Parameters);
|
||||||
|
|
||||||
Return SendMessage(Token, "location", UserID, SendingToChannel, Parameters);
|
Return SendMessage(Token, "location", UserID, SendingToChannel, Parameters);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Send link
|
// Send link
|
||||||
// Sends a URL with a preview to a chat or channel
|
// Sends a URL with a preview to a chat or channel
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - SentLink - url
|
// URL - String - SentLink - url
|
||||||
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
// UserID - String, Number - User ID. For channel > administrator, for bot > recipient - user
|
||||||
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
// SendingToChannel - Boolean - Sending to channel or bot chat - ischannel
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Viber
|
// Map Of KeyAndValue - serialized JSON response from Viber
|
||||||
Function SendLink(Val Token, Val URL, Val UserID, Val SendingToChannel) Export
|
Function SendLink(Val Token, Val URL, Val UserID, Val SendingToChannel) Export
|
||||||
|
|
||||||
Return SendMessage(Token, "url", UserID, SendingToChannel, URL);
|
Return SendMessage(Token, "url", UserID, SendingToChannel, URL);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create a keyboard from an array of buttons
|
// Create a keyboard from an array of buttons
|
||||||
// Returns a keyboard structure for messages
|
// Returns a keyboard structure for messages
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ButtonArray - Array of String - Array of buttons - buttons
|
// ButtonArray - Array of String - Array of buttons - buttons
|
||||||
// ButtonColor - String - HEX color of buttons with # at the beginning - color
|
// ButtonColor - String - HEX color of buttons with # at the beginning - color
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Structure - Create a keyboard from an array of buttons:
|
// Structure - Create a keyboard from an array of buttons:
|
||||||
// * Buttons - Array of Structure - Array of formed buttons
|
// * Buttons - Array of Structure - Array of formed buttons
|
||||||
// * Type - String - KeyboardType
|
// * Type - String - KeyboardType
|
||||||
Function CreateKeyboardFromArrayButton(Val ButtonArray, Val ButtonColor = "#2db9b9") Export
|
Function CreateKeyboardFromArrayButton(Val ButtonArray, Val ButtonColor = "#2db9b9") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ButtonColor);
|
OPI_TypeConversion.GetLine(ButtonColor);
|
||||||
OPI_TypeConversion.GetCollection(ButtonArray);
|
OPI_TypeConversion.GetCollection(ButtonArray);
|
||||||
|
|
||||||
ArrayOfButtonStructures = New Array;
|
ArrayOfButtonStructures = New Array;
|
||||||
KeyboardStructure = New Structure;
|
KeyboardStructure = New Structure;
|
||||||
|
|
||||||
For Each ButtonText In ButtonArray Do
|
For Each ButtonText In ButtonArray Do
|
||||||
|
|
||||||
ButtonStructure = New Structure;
|
ButtonStructure = New Structure;
|
||||||
ButtonStructure.Insert("ActionType", "reply");
|
ButtonStructure.Insert("ActionType", "reply");
|
||||||
ButtonStructure.Insert("ActionBody", ButtonText);
|
ButtonStructure.Insert("ActionBody", ButtonText);
|
||||||
ButtonStructure.Insert("Text" , ButtonText);
|
ButtonStructure.Insert("Text" , ButtonText);
|
||||||
ButtonStructure.Insert("BgColor" , ButtonColor);
|
ButtonStructure.Insert("BgColor" , ButtonColor);
|
||||||
ButtonStructure.Insert("Coloumns" , 3);
|
ButtonStructure.Insert("Coloumns" , 3);
|
||||||
|
|
||||||
ArrayOfButtonStructures.Add(ButtonStructure);
|
ArrayOfButtonStructures.Add(ButtonStructure);
|
||||||
|
|
||||||
EndDo;
|
EndDo;
|
||||||
|
|
||||||
KeyboardStructure.Insert("Buttons", ArrayOfButtonStructures);
|
KeyboardStructure.Insert("Buttons", ArrayOfButtonStructures);
|
||||||
KeyboardStructure.Insert("Type" , "keyboard");
|
KeyboardStructure.Insert("Type" , "keyboard");
|
||||||
|
|
||||||
Return KeyboardStructure;
|
Return KeyboardStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -317,7 +317,7 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
// Send message.
|
// Send message.
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token
|
// Token - String - Token
|
||||||
// Type - String - TypeOfSentMessage
|
// Type - String - TypeOfSentMessage
|
||||||
@ -328,8 +328,8 @@ EndFunction
|
|||||||
// * Size - Number, String - File size in case of sending
|
// * Size - Number, String - File size in case of sending
|
||||||
// * Extension - String - File extension in case of sending
|
// * Extension - String - File extension in case of sending
|
||||||
// Text - String - Message text
|
// Text - String - Message text
|
||||||
// Keyboard - Structure Of String - Keyboard, if needed, see CreateKeyboardFromArrayButton
|
// Keyboard - Structure Of String - Keyboard, if needed, see CreateKeyboardFromArrayButton
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Arbitrary, HTTPResponse - Send message
|
// Arbitrary, HTTPResponse - Send message
|
||||||
Function SendMessage(Val Token
|
Function SendMessage(Val Token
|
||||||
@ -339,81 +339,81 @@ Function SendMessage(Val Token
|
|||||||
, Val Value = ""
|
, Val Value = ""
|
||||||
, Val Text = ""
|
, Val Text = ""
|
||||||
, Val Keyboard = "")
|
, Val Keyboard = "")
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Type);
|
OPI_TypeConversion.GetLine(Type);
|
||||||
OPI_TypeConversion.GetLine(UserID);
|
OPI_TypeConversion.GetLine(UserID);
|
||||||
OPI_TypeConversion.GetLine(Text);
|
OPI_TypeConversion.GetLine(Text);
|
||||||
OPI_TypeConversion.GetBoolean(IsChannel);
|
OPI_TypeConversion.GetBoolean(IsChannel);
|
||||||
OPI_TypeConversion.GetCollection(Keyboard);
|
OPI_TypeConversion.GetCollection(Keyboard);
|
||||||
|
|
||||||
ParametersStructure = ReturnStandardParameters();
|
ParametersStructure = ReturnStandardParameters();
|
||||||
ParametersStructure.Insert("type", Type);
|
ParametersStructure.Insert("type", Type);
|
||||||
|
|
||||||
If (Type = "text" Or Type = "picture") And ValueIsFilled(Text) Then
|
If (Type = "text" Or Type = "picture") And ValueIsFilled(Text) Then
|
||||||
ParametersStructure.Insert("text", Text);
|
ParametersStructure.Insert("text", Text);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If TypeOf(Keyboard) = Type("Structure") Then
|
If TypeOf(Keyboard) = Type("Structure") Then
|
||||||
ParametersStructure.Insert("keyboard", Keyboard);
|
ParametersStructure.Insert("keyboard", Keyboard);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Value) Then
|
If ValueIsFilled(Value) Then
|
||||||
|
|
||||||
If Type = "file" Then
|
If Type = "file" Then
|
||||||
ParametersStructure.Insert("media" , Value["URL"]);
|
ParametersStructure.Insert("media" , Value["URL"]);
|
||||||
ParametersStructure.Insert("size" , Value["Size"]);
|
ParametersStructure.Insert("size" , Value["Size"]);
|
||||||
ParametersStructure.Insert("file_name", "File." + Value["Extension"]);
|
ParametersStructure.Insert("file_name", "File." + Value["Extension"]);
|
||||||
ElsIf Type = "contact" Then
|
ElsIf Type = "contact" Then
|
||||||
ParametersStructure.Insert("contact" , Value);
|
ParametersStructure.Insert("contact" , Value);
|
||||||
ElsIf Type = "location" Then
|
ElsIf Type = "location" Then
|
||||||
ParametersStructure.Insert("location" , Value);
|
ParametersStructure.Insert("location" , Value);
|
||||||
Else
|
Else
|
||||||
ParametersStructure.Insert("media" , Value);
|
ParametersStructure.Insert("media" , Value);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If IsChannel Then
|
If IsChannel Then
|
||||||
ParametersStructure.Insert("from", UserID);
|
ParametersStructure.Insert("from" , UserID);
|
||||||
URL = "https://chatapi.viber.com/pa/post";
|
URL = "https://chatapi.viber.com/pa/post";
|
||||||
Else
|
Else
|
||||||
ParametersStructure.Insert("receiver", UserID);
|
ParametersStructure.Insert("receiver", UserID);
|
||||||
URL = "https://chatapi.viber.com/pa/send_message";
|
URL = "https://chatapi.viber.com/pa/send_message";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Post(URL, ParametersStructure, TokenInHeaders(Token));
|
Response = OPI_Tools.Post(URL, ParametersStructure, TokenInHeaders(Token));
|
||||||
|
|
||||||
Try
|
Try
|
||||||
Return OPI_Tools.JsonToStructure(Response.GetBodyAsBinaryData());
|
Return OPI_Tools.JsonToStructure(Response.GetBodyAsBinaryData());
|
||||||
Except
|
Except
|
||||||
Return Response;
|
Return Response;
|
||||||
EndTry;
|
EndTry;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function ReturnStandardParameters()
|
Function ReturnStandardParameters()
|
||||||
|
|
||||||
SenderStructure = New Structure;
|
SenderStructure = New Structure;
|
||||||
SenderStructure.Insert("name" , "Bot");
|
SenderStructure.Insert("name" , "Bot");
|
||||||
SenderStructure.Insert("avatar", "");
|
SenderStructure.Insert("avatar", "");
|
||||||
|
|
||||||
ParametersStructure = New Structure;
|
ParametersStructure = New Structure;
|
||||||
ParametersStructure.Insert("sender", SenderStructure);
|
ParametersStructure.Insert("sender" , SenderStructure);
|
||||||
ParametersStructure.Insert("min_api_version", 1);
|
ParametersStructure.Insert("min_api_version", 1);
|
||||||
|
|
||||||
Return ParametersStructure;
|
Return ParametersStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function TokenInHeaders(Val Token)
|
Function TokenInHeaders(Val Token)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
HeadersStructure = New Map;
|
HeadersStructure = New Map;
|
||||||
HeadersStructure.Insert("X-Viber-Auth-Token", Token);
|
HeadersStructure.Insert("X-Viber-Auth-Token", Token);
|
||||||
Return HeadersStructure;
|
Return HeadersStructure;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
//@skip-check wrong-string-literal-content
|
//@skip-check wrong-string-literal-content
|
||||||
|
|
||||||
// Uncomment if OneScript is executed
|
// Uncomment if OneScript is executed
|
||||||
// #Use "../../tools"
|
// #Use "../../tools"
|
||||||
|
|
||||||
#Region Public
|
#Region Public
|
||||||
|
|
||||||
@ -45,217 +45,217 @@
|
|||||||
|
|
||||||
// Get disk information
|
// Get disk information
|
||||||
// Gets information about the current disk
|
// Gets information about the current disk
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetDiskInformation(Val Token) Export
|
Function GetDiskInformation(Val Token) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk", , Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk", , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create folder
|
// Create folder
|
||||||
// Creates a directory on the disk
|
// Creates a directory on the disk
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the created folder - path
|
// Path - String - Path to the created folder - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function CreateFolder(Val Token, Val Path) Export
|
Function CreateFolder(Val Token, Val Path) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get object
|
// Get object
|
||||||
// Gets information about a disk object at the specified path
|
// Gets information about a disk object at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to folder or file - path
|
// Path - String - Path to folder or file - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetObject(Val Token, Val Path) Export
|
Function GetObject(Val Token, Val Path) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Delete object
|
// Delete object
|
||||||
// Deletes an object at the specified path
|
// Deletes an object at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the folder or file to be deleted - path
|
// Path - String - Path to the folder or file to be deleted - path
|
||||||
// ToCart - Boolean - To cart - can
|
// ToCart - Boolean - To cart - can
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function DeleteObject(Val Token, Val Path, Val ToCart = True) Export
|
Function DeleteObject(Val Token, Val Path, Val ToCart = True) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(ToCart);
|
OPI_TypeConversion.GetBoolean(ToCart);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("permanently", Not ToCart);
|
Parameters.Insert("permanently", Not ToCart);
|
||||||
|
|
||||||
Response = OPI_Tools.Delete("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
Response = OPI_Tools.Delete("https://cloud-api.yandex.net/v1/disk/resources", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Create object copy
|
// Create object copy
|
||||||
// Creates a copy of the object at the specified path and path to the original
|
// Creates a copy of the object at the specified path and path to the original
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Original - String - Path to the original file or directory - from
|
// Original - String - Path to the original file or directory - from
|
||||||
// Path - String - Destination path for the copy - to
|
// Path - String - Destination path for the copy - to
|
||||||
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function CreateObjectCopy(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
Function CreateObjectCopy(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Original);
|
OPI_TypeConversion.GetLine(Original);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(Overwrite);
|
OPI_TypeConversion.GetBoolean(Overwrite);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("from" , Original);
|
Parameters.Insert("from" , Original);
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("overwrite" , Overwrite);
|
Parameters.Insert("overwrite" , Overwrite);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get download link
|
// Get download link
|
||||||
// Gets a download link for the file
|
// Gets a download link for the file
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the file for downloading - path
|
// Path - String - Path to the file for downloading - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetDownloadLink(Val Token, Val Path) Export
|
Function GetDownloadLink(Val Token, Val Path) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Download file
|
// Download file
|
||||||
// Downloads a file at the specified path
|
// Downloads a file at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the file for downloading - path
|
// Path - String - Path to the file for downloading - path
|
||||||
// SavePath - String - File save path - out
|
// SavePath - String - File save path - out
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
// BinaryData,String - Binary data or file path when SavePath parameter is specified
|
||||||
Function DownloadFile(Val Token, Val Path, Val SavePath = "") Export
|
Function DownloadFile(Val Token, Val Path, Val SavePath = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(SavePath);
|
OPI_TypeConversion.GetLine(SavePath);
|
||||||
Response = GetDownloadLink(Token, Path);
|
Response = GetDownloadLink(Token, Path);
|
||||||
URL = Response["href"];
|
URL = Response["href"];
|
||||||
|
|
||||||
If Not ValueIsFilled(URL) Then
|
If Not ValueIsFilled(URL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(URL, , , SavePath);
|
Response = OPI_Tools.Get(URL, , , SavePath);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of files
|
// Get list of files
|
||||||
// Gets a list of files with or without filtering by type
|
// Gets a list of files with or without filtering by type
|
||||||
// List of available types: audio, backup, book, compressed, data, development,
|
// List of available types: audio, backup, book, compressed, data, development,
|
||||||
// diskimage, document, encoded, executable, flash, font,
|
// diskimage, document, encoded, executable, flash, font,
|
||||||
// mage, settings, spreadsheet, text, unknown, video, web
|
// mage, settings, spreadsheet, text, unknown, video, web
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Count - Number, String - Number of returned objects - amount
|
// Count - Number, String - Number of returned objects - amount
|
||||||
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
||||||
// FilterByType - String - Filter by file type - type
|
// FilterByType - String - Filter by file type - type
|
||||||
// SortByDate - Boolean - True > sort by date, False > alphabetically - datesort
|
// SortByDate - Boolean - True > sort by date, False > alphabetically - datesort
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetFilesList(Val Token
|
Function GetFilesList(Val Token
|
||||||
@ -263,50 +263,50 @@ Function GetFilesList(Val Token
|
|||||||
, Val OffsetFromStart = 0
|
, Val OffsetFromStart = 0
|
||||||
, Val FilterByType = ""
|
, Val FilterByType = ""
|
||||||
, Val SortByDate = False) Export
|
, Val SortByDate = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Count);
|
OPI_TypeConversion.GetLine(Count);
|
||||||
OPI_TypeConversion.GetLine(OffsetFromStart);
|
OPI_TypeConversion.GetLine(OffsetFromStart);
|
||||||
OPI_TypeConversion.GetLine(FilterByType);
|
OPI_TypeConversion.GetLine(FilterByType);
|
||||||
OPI_TypeConversion.GetBoolean(SortByDate);
|
OPI_TypeConversion.GetBoolean(SortByDate);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Count) Then
|
If ValueIsFilled(Count) Then
|
||||||
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(OffsetFromStart) Then
|
If ValueIsFilled(OffsetFromStart) Then
|
||||||
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(FilterByType) Then
|
If ValueIsFilled(FilterByType) Then
|
||||||
Parameters.Insert("media_type", FilterByType);
|
Parameters.Insert("media_type", FilterByType);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If SortByDate Then
|
If SortByDate Then
|
||||||
Destination = "last-uploaded";
|
Destination = "last-uploaded";
|
||||||
Else
|
Else
|
||||||
Destination = "files";
|
Destination = "files";
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Destination, Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Destination, Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Move object
|
// Move object
|
||||||
// Moves the object to the specified path and path to the original
|
// Moves the object to the specified path and path to the original
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Original - String - Path to the original file or folder - from
|
// Original - String - Path to the original file or folder - from
|
||||||
// Path - String - Destination path for moving - to
|
// Path - String - Destination path for moving - to
|
||||||
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Export
|
||||||
@ -315,97 +315,97 @@ Function MoveObject(Val Token, Val Original, Val Path, Val Overwrite = False) Ex
|
|||||||
OPI_TypeConversion.GetLine(Original);
|
OPI_TypeConversion.GetLine(Original);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(Overwrite);
|
OPI_TypeConversion.GetBoolean(Overwrite);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("from" , Original);
|
Parameters.Insert("from" , Original);
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("overwrite" , Overwrite);
|
Parameters.Insert("overwrite" , Overwrite);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload file
|
// Upload file
|
||||||
// Uploads a file to disk at the specified path
|
// Uploads a file to disk at the specified path
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path for saving the file to disk - path
|
// Path - String - Path for saving the file to disk - path
|
||||||
// File - String, BinaryData - File for upload - file
|
// File - String, BinaryData - File for upload - file
|
||||||
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
// Overwrite - Boolean - Overwrite if a file with the same name already exists - rewrite
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function UploadFile(Val Token, Val Path, Val File, Val Overwrite = False) Export
|
Function UploadFile(Val Token, Val Path, Val File, Val Overwrite = False) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(Overwrite);
|
OPI_TypeConversion.GetBoolean(Overwrite);
|
||||||
OPI_TypeConversion.GetBinaryData(File);
|
OPI_TypeConversion.GetBinaryData(File);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Href = "href";
|
Href = "href";
|
||||||
File = New Structure("file", File);
|
File = New Structure("file", File);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path" , Path);
|
Parameters.Insert("path" , Path);
|
||||||
Parameters.Insert("overwrite" , Overwrite);
|
Parameters.Insert("overwrite" , Overwrite);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Parameters, Headers);
|
||||||
URL = Response[Href];
|
URL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(URL) Then
|
If Not ValueIsFilled(URL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.PutMultipart(URL, New Structure(), File, "multipart", Headers);
|
Response = OPI_Tools.PutMultipart(URL, New Structure(), File, "multipart", Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Upload file by URL
|
// Upload file by URL
|
||||||
// Downloads a file to disk from the specified URL
|
// Downloads a file to disk from the specified URL
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to place the downloaded file - path
|
// Path - String - Path to place the downloaded file - path
|
||||||
// Address - String - File URL - url
|
// Address - String - File URL - url
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function UploadFileByURL(Val Token, Val Path, Val Address) Export
|
Function UploadFileByURL(Val Token, Val Path, Val Address) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetLine(Address);
|
OPI_TypeConversion.GetLine(Address);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("url" , EncodeString(Address, StringEncodingMethod.URLencoding));
|
Parameters.Insert("url" , EncodeString(Address, StringEncodingMethod.URLencoding));
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -414,186 +414,186 @@ EndFunction
|
|||||||
|
|
||||||
// Publish object
|
// Publish object
|
||||||
// Publishes the disk object for public access
|
// Publishes the disk object for public access
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the object to be published - path
|
// Path - String - Path to the object to be published - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function PublishObject(Val Token, Val Path) Export
|
Function PublishObject(Val Token, Val Path) Export
|
||||||
|
|
||||||
Return TogglePublicAccess(Token, Path, True);
|
Return TogglePublicAccess(Token, Path, True);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Unpublish object
|
// Unpublish object
|
||||||
// Unpublishes a previously published object
|
// Unpublishes a previously published object
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Path - String - Path to the previously published object - path
|
// Path - String - Path to the previously published object - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function CancelObjectPublication(Val Token, Val Path) Export
|
Function CancelObjectPublication(Val Token, Val Path) Export
|
||||||
|
|
||||||
Return TogglePublicAccess(Token, Path, False);
|
Return TogglePublicAccess(Token, Path, False);
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get list of published objects.
|
// Get list of published objects.
|
||||||
// Gets a list of published objects
|
// Gets a list of published objects
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// Count - Number - Number of returned objects - amount
|
// Count - Number - Number of returned objects - amount
|
||||||
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
// OffsetFromStart - Number - Offset for getting objects not from the beginning of the list - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetPublishedObjectsList(Val Token, Val Count = 0, Val OffsetFromStart = 0) Export
|
Function GetPublishedObjectsList(Val Token, Val Count = 0, Val OffsetFromStart = 0) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Count);
|
OPI_TypeConversion.GetLine(Count);
|
||||||
OPI_TypeConversion.GetLine(OffsetFromStart);
|
OPI_TypeConversion.GetLine(OffsetFromStart);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Count) Then
|
If ValueIsFilled(Count) Then
|
||||||
Parameters.Insert("limit", Count);
|
Parameters.Insert("limit", Count);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(OffsetFromStart) Then
|
If ValueIsFilled(OffsetFromStart) Then
|
||||||
Parameters.Insert("offset", OffsetFromStart);
|
Parameters.Insert("offset", OffsetFromStart);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get public object
|
// Get public object
|
||||||
// Gets information about the published object by its URL
|
// Gets information about the published object by its URL
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Object address - url
|
// URL - String - Object address - url
|
||||||
// Count - Number - Number of returned nested objects (for catalog) - amount
|
// Count - Number - Number of returned nested objects (for catalog) - amount
|
||||||
// OffsetFromStart - Number - Offset for getting nested objects not from the beginning of the list - offset
|
// OffsetFromStart - Number - Offset for getting nested objects not from the beginning of the list - offset
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetPublicObject(Val Token, Val URL, Val Count = 0, Val OffsetFromStart = 0) Export
|
Function GetPublicObject(Val Token, Val URL, Val Count = 0, Val OffsetFromStart = 0) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(URL);
|
OPI_TypeConversion.GetLine(URL);
|
||||||
OPI_TypeConversion.GetLine(Count);
|
OPI_TypeConversion.GetLine(Count);
|
||||||
OPI_TypeConversion.GetLine(OffsetFromStart);
|
OPI_TypeConversion.GetLine(OffsetFromStart);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Count) Then
|
If ValueIsFilled(Count) Then
|
||||||
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
Parameters.Insert("limit", OPI_Tools.NumberToString(Count));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(OffsetFromStart) Then
|
If ValueIsFilled(OffsetFromStart) Then
|
||||||
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
Parameters.Insert("offset", OPI_Tools.NumberToString(OffsetFromStart));
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters.Insert("public_key", URL);
|
Parameters.Insert("public_key", URL);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Get download link for public object
|
// Get download link for public object
|
||||||
// Gets a direct link to download the public object
|
// Gets a direct link to download the public object
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Object address - url
|
// URL - String - Object address - url
|
||||||
// Path - String - Path inside the object - path
|
// Path - String - Path inside the object - path
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetDownloadLinkForPublicObject(Val Token, Val URL, Val Path = "") Export
|
Function GetDownloadLinkForPublicObject(Val Token, Val URL, Val Path = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(URL);
|
OPI_TypeConversion.GetLine(URL);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
|
|
||||||
If ValueIsFilled(Path) Then
|
If ValueIsFilled(Path) Then
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters.Insert("public_key", URL);
|
Parameters.Insert("public_key", URL);
|
||||||
|
|
||||||
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Parameters, Headers);
|
Response = OPI_Tools.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Parameters, Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Save public object to disk
|
// Save public object to disk
|
||||||
// Saves the public object to your disk
|
// Saves the public object to your disk
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// Token - String - Token - token
|
// Token - String - Token - token
|
||||||
// URL - String - Object address - url
|
// URL - String - Object address - url
|
||||||
// From - String - Path within public catalog (folders only) - from
|
// From - String - Path within public catalog (folders only) - from
|
||||||
// Target - String - File save path - to
|
// Target - String - File save path - to
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function SavePublicObjectToDisk(Val Token, Val URL, From = "", Target = "") Export
|
Function SavePublicObjectToDisk(Val Token, Val URL, From = "", Target = "") Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(URL);
|
OPI_TypeConversion.GetLine(URL);
|
||||||
OPI_TypeConversion.GetLine(From);
|
OPI_TypeConversion.GetLine(From);
|
||||||
OPI_TypeConversion.GetLine(Target);
|
OPI_TypeConversion.GetLine(Target);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Address = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
Address = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("public_key", EncodeString(URL, StringEncodingMethod.URLencoding));
|
Parameters.Insert("public_key", EncodeString(URL, StringEncodingMethod.URLencoding));
|
||||||
|
|
||||||
If ValueIsFilled(From) Then
|
If ValueIsFilled(From) Then
|
||||||
Parameters.Insert("path", From);
|
Parameters.Insert("path", From);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
If ValueIsFilled(Target) Then
|
If ValueIsFilled(Target) Then
|
||||||
Parameters.Insert("save_path", Target);
|
Parameters.Insert("save_path", Target);
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Post(Address + Parameters, , Headers, False);
|
Response = OPI_Tools.Post(Address + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
@ -601,42 +601,42 @@ EndFunction
|
|||||||
#Region Private
|
#Region Private
|
||||||
|
|
||||||
Function AuthorizationHeader(Val Token)
|
Function AuthorizationHeader(Val Token)
|
||||||
|
|
||||||
Headers = New Map;
|
Headers = New Map;
|
||||||
Headers.Insert("Authorization", "OAuth " + Token);
|
Headers.Insert("Authorization", "OAuth " + Token);
|
||||||
|
|
||||||
Return Headers;
|
Return Headers;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
Function TogglePublicAccess(Val Token, Val Path, Val PublicAccess)
|
Function TogglePublicAccess(Val Token, Val Path, Val PublicAccess)
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(Token);
|
OPI_TypeConversion.GetLine(Token);
|
||||||
OPI_TypeConversion.GetLine(Path);
|
OPI_TypeConversion.GetLine(Path);
|
||||||
OPI_TypeConversion.GetBoolean(PublicAccess);
|
OPI_TypeConversion.GetBoolean(PublicAccess);
|
||||||
|
|
||||||
Headers = AuthorizationHeader(Token);
|
Headers = AuthorizationHeader(Token);
|
||||||
Destination = ?(PublicAccess, "publish", "unpublish");
|
Destination = ?(PublicAccess, "publish", "unpublish");
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Destination;
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Destination;
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("path", Path);
|
Parameters.Insert("path", Path);
|
||||||
|
|
||||||
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
Parameters = OPI_Tools.RequestParametersToString(Parameters);
|
||||||
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
Response = OPI_Tools.Put(URL + Parameters, , Headers, False);
|
||||||
|
|
||||||
ResponseURL = Response[Href];
|
ResponseURL = Response[Href];
|
||||||
|
|
||||||
If Not ValueIsFilled(ResponseURL) Then
|
If Not ValueIsFilled(ResponseURL) Then
|
||||||
Return Response;
|
Return Response;
|
||||||
EndIf;
|
EndIf;
|
||||||
|
|
||||||
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
Response = OPI_Tools.Get(ResponseURL, , Headers);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -41,77 +41,77 @@
|
|||||||
|
|
||||||
// Get confirmation code
|
// Get confirmation code
|
||||||
// Gets the confirmation code and the address of the page where it needs to be entered
|
// Gets the confirmation code and the address of the page where it needs to be entered
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientId - String - Client id - id
|
// ClientId - String - Client id - id
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function GetConfirmationCode(Val ClientId) Export
|
Function GetConfirmationCode(Val ClientId) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientId);
|
OPI_TypeConversion.GetLine(ClientId);
|
||||||
|
|
||||||
Parameters = New Structure("client_id", ClientId);
|
Parameters = New Structure("client_id", ClientId);
|
||||||
Response = OPI_Tools.Post("https://oauth.yandex.ru/device/code", Parameters, , False);
|
Response = OPI_Tools.Post("https://oauth.yandex.ru/device/code", Parameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Convert code to token
|
// Convert code to token
|
||||||
// Converts the code to a token after entering the code when executing GetConfirmationCode
|
// Converts the code to a token after entering the code when executing GetConfirmationCode
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientId - String - Client id - id
|
// ClientId - String - Client id - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// DeviceCode - String - device_code from GetConfirmationCode() - device
|
// DeviceCode - String - device_code from GetConfirmationCode() - device
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function ConvertCodeToToken(Val ClientId, Val ClientSecret, Val DeviceCode) Export
|
Function ConvertCodeToToken(Val ClientId, Val ClientSecret, Val DeviceCode) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientId);
|
OPI_TypeConversion.GetLine(ClientId);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(DeviceCode);
|
OPI_TypeConversion.GetLine(DeviceCode);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("grant_type" , "device_code");
|
Parameters.Insert("grant_type" , "device_code");
|
||||||
Parameters.Insert("code" , DeviceCode);
|
Parameters.Insert("code" , DeviceCode);
|
||||||
Parameters.Insert("client_id" , ClientId);
|
Parameters.Insert("client_id" , ClientId);
|
||||||
Parameters.Insert("client_secret" , ClientSecret);
|
Parameters.Insert("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
// Refresh token
|
// Refresh token
|
||||||
// Updates token by Refresh token
|
// Updates token by Refresh token
|
||||||
//
|
//
|
||||||
// Parameters:
|
// Parameters:
|
||||||
// ClientId - String - Client id - id
|
// ClientId - String - Client id - id
|
||||||
// ClientSecret - String - Client secret - secret
|
// ClientSecret - String - Client secret - secret
|
||||||
// RefreshToken - String - Refresh token - refresh
|
// RefreshToken - String - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Returns:
|
// Returns:
|
||||||
// Map Of KeyAndValue - serialized JSON response from Yandex
|
// Map Of KeyAndValue - serialized JSON response from Yandex
|
||||||
Function RefreshToken(Val ClientId, Val ClientSecret, Val RefreshToken) Export
|
Function RefreshToken(Val ClientId, Val ClientSecret, Val RefreshToken) Export
|
||||||
|
|
||||||
OPI_TypeConversion.GetLine(ClientId);
|
OPI_TypeConversion.GetLine(ClientId);
|
||||||
OPI_TypeConversion.GetLine(ClientSecret);
|
OPI_TypeConversion.GetLine(ClientSecret);
|
||||||
OPI_TypeConversion.GetLine(RefreshToken);
|
OPI_TypeConversion.GetLine(RefreshToken);
|
||||||
|
|
||||||
Parameters = New Structure;
|
Parameters = New Structure;
|
||||||
Parameters.Insert("grant_type" , "refresh_token");
|
Parameters.Insert("grant_type" , "refresh_token");
|
||||||
Parameters.Insert("refresh_token" , RefreshToken);
|
Parameters.Insert("refresh_token" , RefreshToken);
|
||||||
Parameters.Insert("client_id" , ClientId);
|
Parameters.Insert("client_id" , ClientId);
|
||||||
Parameters.Insert("client_secret" , ClientSecret);
|
Parameters.Insert("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
Response = OPI_Tools.Post("https://oauth.yandex.ru/token", Parameters, , False);
|
||||||
|
|
||||||
Return Response;
|
Return Response;
|
||||||
|
|
||||||
EndFunction
|
EndFunction
|
||||||
|
|
||||||
#EndRegion
|
#EndRegion
|
||||||
|
@ -42,91 +42,91 @@
|
|||||||
|
|
||||||
// Получить список баз
|
// Получить список баз
|
||||||
// Получает список доступных баз
|
// Получает список доступных баз
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Отступ - Строка - Идентификатор следующей страницы списка баз из перыдудщего запроса - offset
|
// Отступ - Строка - Идентификатор следующей страницы списка баз из перыдудщего запроса - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьСписокБаз(Знач Токен, Знач Отступ = "") Экспорт
|
Функция ПолучитьСписокБаз(Знач Токен, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Отступ);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Отступ);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить таблицы базы
|
// Получить таблицы базы
|
||||||
// Получает схему таблиц базы
|
// Получает схему таблиц базы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьТаблицыБазы(Знач Токен, Знач База) Экспорт
|
Функция ПолучитьТаблицыБазы(Знач Токен, Знач База) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать базу
|
// Создать базу
|
||||||
// Создает новую базу данных
|
// Создает новую базу данных
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// РабочееПространство - Строка - Идентификатор рабочего пространства - ws
|
// РабочееПространство - Строка - Идентификатор рабочего пространства - ws
|
||||||
// Наименование - Строка - Наименование новой базы - title
|
// Наименование - Строка - Наименование новой базы - title
|
||||||
// КоллекцияТаблиц - Соответствие Из КлючИЗначение - Описание таблиц: Ключ > имя, Значение > массив полей - tablesdata
|
// КоллекцияТаблиц - Соответствие Из КлючИЗначение - Описание таблиц: Ключ > имя, Значение > массив полей - tablesdata
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
||||||
|
|
||||||
Если Не ТипЗнч(КоллекцияТаблиц) = Тип("Структура")
|
Если Не ТипЗнч(КоллекцияТаблиц) = Тип("Структура")
|
||||||
И Не ТипЗнч(КоллекцияТаблиц) = Тип("Соответствие") Тогда
|
И Не ТипЗнч(КоллекцияТаблиц) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
ВызватьИсключение "Ошибка в данных коллекции таблиц";
|
ВызватьИсключение "Ошибка в данных коллекции таблиц";
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивТаблиц = Новый Массив;
|
МассивТаблиц = Новый Массив;
|
||||||
|
|
||||||
Для Каждого Таблица Из КоллекцияТаблиц Цикл
|
Для Каждого Таблица Из КоллекцияТаблиц Цикл
|
||||||
|
|
||||||
Описание = СформироватьОписаниеТаблицы(Таблица.Ключ, Таблица.Значение);
|
Описание = СформироватьОписаниеТаблицы(Таблица.Ключ, Таблица.Значение);
|
||||||
МассивТаблиц.Добавить(Описание);
|
МассивТаблиц.Добавить(Описание);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("tables" , МассивТаблиц , "Массив", Параметры);
|
OPI_Инструменты.ДобавитьПоле("tables" , МассивТаблиц , "Массив", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("workspaceId", РабочееПространство, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("workspaceId", РабочееПространство, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -137,56 +137,56 @@
|
|||||||
|
|
||||||
// Создать таблицу
|
// Создать таблицу
|
||||||
// Создает новую таблицу в базе
|
// Создает новую таблицу в базе
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
// Наименование - Строка - Наименование новой таблицы - title
|
// Наименование - Строка - Наименование новой таблицы - title
|
||||||
// МассивПолей - Массив Из Структура - Массив описаний полей - fieldsdata
|
// МассивПолей - Массив Из Структура - Массив описаний полей - fieldsdata
|
||||||
// Описание - Строка - Описание таблицы - description
|
// Описание - Строка - Описание таблицы - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьТаблицу(Знач Токен, Знач База, Знач Наименование, Знач МассивПолей, Знач Описание = "") Экспорт
|
Функция СоздатьТаблицу(Знач Токен, Знач База, Знач Наименование, Знач МассивПолей, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Параметры = СформироватьОписаниеТаблицы(Наименование, МассивПолей, Описание);
|
Параметры = СформироватьОписаниеТаблицы(Наименование, МассивПолей, Описание);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить таблицу
|
// Изменить таблицу
|
||||||
// Изменяет наименование и|или описание базы
|
// Изменяет наименование и|или описание базы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
// Описание - Строка - Новое описание - description
|
// Описание - Строка - Новое описание - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ИзменитьТаблицу(Знач Токен, Знач База, Знач Таблица, Знач Наименование = "", Знач Описание = "") Экспорт
|
Функция ИзменитьТаблицу(Знач Токен, Знач База, Знач Таблица, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица;
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -197,40 +197,40 @@
|
|||||||
|
|
||||||
// Создать поле
|
// Создать поле
|
||||||
// Создет новое поле в таблице
|
// Создет новое поле в таблице
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// СтруктураПоля - Структура Из КлючИЗначение - Описание нового поля - fielddata
|
// СтруктураПоля - Структура Из КлючИЗначение - Описание нового поля - fielddata
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьПоле(Знач Токен, Знач База, Знач Таблица, Знач СтруктураПоля) Экспорт
|
Функция СоздатьПоле(Знач Токен, Знач База, Знач Таблица, Знач СтруктураПоля) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураПоля);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураПоля);
|
||||||
|
|
||||||
Если Не ТипЗнч(СтруктураПоля) = Тип("Структура")
|
Если Не ТипЗнч(СтруктураПоля) = Тип("Структура")
|
||||||
И Не ТипЗнч(СтруктураПоля) = Тип("Соответствие") Тогда
|
И Не ТипЗнч(СтруктураПоля) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
ВызватьИсключение "Ошибка в данных описания поля";
|
ВызватьИсключение "Ошибка в данных описания поля";
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица + "/fields";
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица + "/fields";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, СтруктураПоля, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, СтруктураПоля, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить поле
|
// Изменить поле
|
||||||
// Изменяет имя и|или описание существующего поля таблицы
|
// Изменяет имя и|или описание существующего поля таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы База - base
|
// База - Строка - Идентификатор базы База - base
|
||||||
@ -238,152 +238,152 @@
|
|||||||
// Поле - Строка - Идентификатор поля - field
|
// Поле - Строка - Идентификатор поля - field
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
// Описание - Строка - Новое описание - description
|
// Описание - Строка - Новое описание - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ИзменитьПоле(Знач Токен, Знач База, Знач Таблица, Знач Поле, Знач Наименование = "", Знач Описание = "") Экспорт
|
Функция ИзменитьПоле(Знач Токен, Знач База, Знач Таблица, Знач Поле, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/"
|
URL = "https://api.airtable.com/v0/meta/bases/"
|
||||||
+ База
|
+ База
|
||||||
+ "/tables/"
|
+ "/tables/"
|
||||||
+ Таблица
|
+ Таблица
|
||||||
+ "/fields/"
|
+ "/fields/"
|
||||||
+ Поле;
|
+ Поле;
|
||||||
|
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (строковое)
|
// Получить поле (строковое)
|
||||||
// Получает описание поля строкового типа
|
// Получает описание поля строкового типа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование нового поля - title
|
// Наименование - Строка - Наименование нового поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "richText");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "richText");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (числовое)
|
// Получить поле (числовое)
|
||||||
// Получает описание поля числового типа
|
// Получает описание поля числового типа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование нового поля - title
|
// Наименование - Строка - Наименование нового поля - title
|
||||||
// Точность - Число,Строка - Число знаков после запятой - precision
|
// Точность - Число,Строка - Число знаков после запятой - precision
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеНомера(Знач Наименование, Знач Точность = 0) Экспорт
|
Функция ПолучитьПолеНомера(Знач Наименование, Знач Точность = 0) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Точность);
|
OPI_ПреобразованиеТипов.ПолучитьЧисло(Точность);
|
||||||
|
|
||||||
СтруктураОпций = Новый Структура("precision", Точность);
|
СтруктураОпций = Новый Структура("precision", Точность);
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "number", СтруктураОпций);
|
Возврат ОписаниеПримитивногоПоля(Наименование, "number", СтруктураОпций);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (файл)
|
// Получить поле (файл)
|
||||||
// Получает описание поля файлового типа
|
// Получает описание поля файлового типа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеВложения(Знач Наименование) Экспорт
|
Функция ПолучитьПолеВложения(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "multipleAttachments");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "multipleAttachments");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (флажок)
|
// Получить поле (флажок)
|
||||||
// Получает описание поля типа булево
|
// Получает описание поля типа булево
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеФлажка(Знач Наименование) Экспорт
|
Функция ПолучитьПолеФлажка(Знач Наименование) Экспорт
|
||||||
|
|
||||||
СтруктураОпций = Новый Структура("icon,color", "check", "yellowBright");
|
СтруктураОпций = Новый Структура("icon,color", "check", "yellowBright");
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "checkbox", СтруктураОпций);
|
Возврат ОписаниеПримитивногоПоля(Наименование, "checkbox", СтруктураОпций);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (дата)
|
// Получить поле (дата)
|
||||||
// Получает описание поля типа дата
|
// Получает описание поля типа дата
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеДаты(Знач Наименование) Экспорт
|
Функция ПолучитьПолеДаты(Знач Наименование) Экспорт
|
||||||
|
|
||||||
СтруктураФормата = Новый Структура("format,name", "YYYY-MM-DD", "iso");
|
СтруктураФормата = Новый Структура("format,name", "YYYY-MM-DD", "iso");
|
||||||
СтруктураОпций = Новый Структура("dateFormat", СтруктураФормата);
|
СтруктураОпций = Новый Структура("dateFormat", СтруктураФормата);
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "date", СтруктураОпций);
|
Возврат ОписаниеПримитивногоПоля(Наименование, "date", СтруктураОпций);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (email)
|
// Получить поле (email)
|
||||||
// Получает описание поля с электронной почтой
|
// Получает описание поля с электронной почтой
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеПочты(Знач Наименование) Экспорт
|
Функция ПолучитьПолеПочты(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "email");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "email");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (телефон)
|
// Получить поле (телефон)
|
||||||
// Получает описание поля с номером телефона
|
// Получает описание поля с номером телефона
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеТелефона(Знач Наименование) Экспорт
|
Функция ПолучитьПолеТелефона(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "phoneNumber");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "phoneNumber");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (url)
|
// Получить поле (url)
|
||||||
// Получает описание поля с URL
|
// Получает описание поля с URL
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеСсылки(Знач Наименование) Экспорт
|
Функция ПолучитьПолеСсылки(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "url");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "url");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -392,67 +392,67 @@
|
|||||||
|
|
||||||
// Получить список записей
|
// Получить список записей
|
||||||
// Получает список записей выбранной таблицы
|
// Получает список записей выбранной таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьСписокЗаписей(Знач Токен, Знач База, Знач Таблица, Знач Отступ = "") Экспорт
|
Функция ПолучитьСписокЗаписей(Знач Токен, Знач База, Знач Таблица, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить запись
|
// Получить запись
|
||||||
// Получает данные строки таблицы по идентификатору
|
// Получает данные строки таблицы по идентификатору
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьЗапись(Знач Токен, Знач База, Знач Таблица, Знач Запись) Экспорт
|
Функция ПолучитьЗапись(Знач Токен, Знач База, Знач Таблица, Знач Запись) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать записи
|
// Создать записи
|
||||||
// Создает одну или массив записей по описанию или массиву описаний значений полей
|
// Создает одну или массив записей по описанию или массиву описаний значений полей
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Данные - Структура, Массив из Структура - Набор или массив наборов пар Ключ : Значение > Поле : Показатель - data
|
// Данные - Структура, Массив из Структура - Набор или массив наборов пар Ключ : Значение > Поле : Показатель - data
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Данные) Экспорт
|
Функция СоздатьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Данные) Экспорт
|
||||||
@ -460,52 +460,52 @@
|
|||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
ДобавитьОписаниеДанных(Данные, Параметры);
|
ДобавитьОписаниеДанных(Данные, Параметры);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить записи
|
// Удалить записи
|
||||||
// Удаляет одну или массив записей по идентификаторам
|
// Удаляет одну или массив записей по идентификаторам
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Записи - Строка, Массив из Строка - Идентификатор или массив индентификаторов записей - records
|
// Записи - Строка, Массив из Строка - Идентификатор или массив индентификаторов записей - records
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция УдалитьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Записи) Экспорт
|
Функция УдалитьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Записи) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьМассив(Записи);
|
OPI_ПреобразованиеТипов.ПолучитьМассив(Записи);
|
||||||
|
|
||||||
СтрокаЗаписей = "";
|
СтрокаЗаписей = "";
|
||||||
|
|
||||||
Для Каждого Запись Из Записи Цикл
|
Для Каждого Запись Из Записи Цикл
|
||||||
СтрокаЗаписей = СтрокаЗаписей
|
СтрокаЗаписей = СтрокаЗаписей
|
||||||
+ ?(ЗначениеЗаполнено(СтрокаЗаписей), "&", "?")
|
+ ?(ЗначениеЗаполнено(СтрокаЗаписей), "&", "?")
|
||||||
+ "records[]="
|
+ "records[]="
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(Запись);
|
+ OPI_Инструменты.ЧислоВСтроку(Запись);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + СтрокаЗаписей;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + СтрокаЗаписей;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -514,67 +514,67 @@
|
|||||||
|
|
||||||
// Получить комментарии
|
// Получить комментарии
|
||||||
// Получает список комментариев к записи в таблице
|
// Получает список комментариев к записи в таблице
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьКомментарии(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Отступ = "") Экспорт
|
Функция ПолучитьКомментарии(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать комментарий
|
// Создать комментарий
|
||||||
// Создает комментарий к записи в таблице
|
// Создает комментарий к записи в таблице
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Текст - Строка - Текст комментария - text
|
// Текст - Строка - Текст комментария - text
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Текст) Экспорт
|
Функция СоздатьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Текст) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить комментарий
|
// Изменить комментарий
|
||||||
// Изменяет текст существующего комментария
|
// Изменяет текст существующего комментария
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
@ -582,54 +582,54 @@
|
|||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Комментарий - Строка - Идентификатор комментария - comment
|
// Комментарий - Строка - Идентификатор комментария - comment
|
||||||
// Текст - Строка - Новый текст комментария - text
|
// Текст - Строка - Новый текст комментария - text
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ИзменитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий, Знач Текст) Экспорт
|
Функция ИзменитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий, Знач Текст) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить комментарий
|
// Удалить комментарий
|
||||||
// Удаляет комментарий к записи таблицы
|
// Удаляет комментарий к записи таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Комментарий - Строка - Идентификатор комментария - comment
|
// Комментарий - Строка - Идентификатор комментария - comment
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция УдалитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий) Экспорт
|
Функция УдалитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -639,58 +639,58 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
|
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
||||||
|
|
||||||
Возврат Заголовки;
|
Возврат Заголовки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей, Знач Описание = "")
|
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей, Знач Описание = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
||||||
|
|
||||||
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("description", Описание, "Строка", ОписаниеТаблицы);
|
OPI_Инструменты.ДобавитьПоле("description", Описание, "Строка", ОписаниеТаблицы);
|
||||||
|
|
||||||
Возврат ОписаниеТаблицы;
|
Возврат ОписаниеТаблицы;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ОписаниеПримитивногоПоля(Знач Наименование, Знач Тип, Знач Опции = "")
|
Функция ОписаниеПримитивногоПоля(Знач Наименование, Знач Тип, Знач Опции = "")
|
||||||
|
|
||||||
СтруктураПоля = Новый Структура();
|
СтруктураПоля = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка" , СтруктураПоля);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка" , СтруктураПоля);
|
||||||
OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка" , СтруктураПоля);
|
OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка" , СтруктураПоля);
|
||||||
OPI_Инструменты.ДобавитьПоле("options", Опции , "Коллекция", СтруктураПоля);
|
OPI_Инструменты.ДобавитьПоле("options", Опции , "Коллекция", СтруктураПоля);
|
||||||
|
|
||||||
Возврат СтруктураПоля;
|
Возврат СтруктураПоля;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ДобавитьОписаниеДанных(Знач Данные, Параметры)
|
Процедура ДобавитьОписаниеДанных(Знач Данные, Параметры)
|
||||||
|
|
||||||
Если ТипЗнч(Данные) = Тип("Массив") Тогда
|
Если ТипЗнч(Данные) = Тип("Массив") Тогда
|
||||||
|
|
||||||
МассивОтправки = Новый Массив;
|
МассивОтправки = Новый Массив;
|
||||||
|
|
||||||
Для Каждого ОписаниеЗаписи Из Данные Цикл
|
Для Каждого ОписаниеЗаписи Из Данные Цикл
|
||||||
МассивОтправки.Добавить(Новый Структура("fields", ОписаниеЗаписи));
|
МассивОтправки.Добавить(Новый Структура("fields", ОписаниеЗаписи));
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("records", МассивОтправки, "Массив", Параметры);
|
OPI_Инструменты.ДобавитьПоле("records", МассивОтправки, "Массив", Параметры);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("fields", Данные, "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("fields", Данные, "Коллекция", Параметры);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -43,131 +43,131 @@
|
|||||||
|
|
||||||
// Создать календарь
|
// Создать календарь
|
||||||
// Создает пустой календарь
|
// Создает пустой календарь
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Наименование - Строка - Наименование создаваемого календаря - title
|
// Наименование - Строка - Наименование создаваемого календаря - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт
|
Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("summary" , Наименование);
|
Параметры.Вставить("summary" , Наименование);
|
||||||
Параметры.Вставить("timeZone", "Europe/Moscow");
|
Параметры.Вставить("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить календарь
|
// Получить календарь
|
||||||
// Получает информацию о календаре по ID
|
// Получает информацию о календаре по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить календарь
|
// Изменить календарь
|
||||||
// Изменяет свойства существуещего календаря
|
// Изменяет свойства существуещего календаря
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
// Описание - Строка - Новое описание календаря - description
|
// Описание - Строка - Новое описание календаря - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьМетаданныеКалендаря(Знач Токен
|
Функция ИзменитьМетаданныеКалендаря(Знач Токен
|
||||||
, Знач Календарь
|
, Знач Календарь
|
||||||
, Знач Наименование = ""
|
, Знач Наименование = ""
|
||||||
, Знач Описание = "") Экспорт
|
, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Наименование) Тогда
|
Если ЗначениеЗаполнено(Наименование) Тогда
|
||||||
Параметры.Вставить("summary", Наименование);
|
Параметры.Вставить("summary", Наименование);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Описание) Тогда
|
Если ЗначениеЗаполнено(Описание) Тогда
|
||||||
Параметры.Вставить("description", Описание);
|
Параметры.Вставить("description", Описание);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Очистить основной календарь
|
// Очистить основной календарь
|
||||||
// Очищает список событий основного календаря
|
// Очищает список событий основного календаря
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт
|
Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
||||||
Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить календарь
|
// Удалить календарь
|
||||||
// Удаляет календарь по ID
|
// Удаляет календарь по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт
|
Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -178,105 +178,105 @@
|
|||||||
|
|
||||||
// Получить список календарей
|
// Получить список календарей
|
||||||
// Получает массив календарей аккаунта
|
// Получает массив календарей аккаунта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий данных календарей
|
// Соответствие Из КлючИЗначение - Массив соответствий данных календарей
|
||||||
Функция ПолучитьСписокКалендарей(Знач Токен) Экспорт
|
Функция ПолучитьСписокКалендарей(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивКалендарей = Новый Массив;
|
МассивКалендарей = Новый Массив;
|
||||||
|
|
||||||
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей);
|
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей);
|
||||||
|
|
||||||
Возврат МассивКалендарей;
|
Возврат МассивКалендарей;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Добавить календарь в список
|
// Добавить календарь в список
|
||||||
// Добавляет существующий календарь в список пользователя
|
// Добавляет существующий календарь в список пользователя
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ДобавитьКалендарьВСписок(Знач Токен, Знач Календарь) Экспорт
|
Функция ДобавитьКалендарьВСписок(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("id", Календарь);
|
Параметры.Вставить("id", Календарь);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить календарь списка
|
// Получить календарь списка
|
||||||
// Получает календарь из списка пользователя по ID
|
// Получает календарь из списка пользователя по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить календарь из списка
|
// Удалить календарь из списка
|
||||||
// Удаляет календарь из списка пользователя
|
// Удаляет календарь из списка пользователя
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт
|
Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить календарь списка
|
// Изменить календарь списка
|
||||||
// Изменяет свойства календаря из списка пользователей
|
// Изменяет свойства календаря из списка пользователей
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// ОсновнойЦвет - Строка - HEX основного цвета (#ffffff) - primary
|
// ОсновнойЦвет - Строка - HEX основного цвета (#ffffff) - primary
|
||||||
// ДополнительныйЦвет - Строка - HEX дополнительного цвета (#ffffff) - secondary
|
// ДополнительныйЦвет - Строка - HEX дополнительного цвета (#ffffff) - secondary
|
||||||
// Скрытый - Булево - Скрытый календарь - hidden
|
// Скрытый - Булево - Скрытый календарь - hidden
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьКалендарьСписка(Знач Токен
|
Функция ИзменитьКалендарьСписка(Знач Токен
|
||||||
@ -284,23 +284,23 @@
|
|||||||
, Знач ОсновнойЦвет
|
, Знач ОсновнойЦвет
|
||||||
, Знач ДополнительныйЦвет
|
, Знач ДополнительныйЦвет
|
||||||
, Знач Скрытый = Ложь) Экспорт
|
, Знач Скрытый = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОсновнойЦвет);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОсновнойЦвет);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДополнительныйЦвет);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДополнительныйЦвет);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Скрытый);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Скрытый);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true";
|
||||||
|
|
||||||
Параметры = Новый Соответствие;
|
Параметры = Новый Соответствие;
|
||||||
Параметры.Вставить("hidden" , Скрытый);
|
Параметры.Вставить("hidden" , Скрытый);
|
||||||
Параметры.Вставить("foregroundColor", ОсновнойЦвет);
|
Параметры.Вставить("foregroundColor", ОсновнойЦвет);
|
||||||
Параметры.Вставить("backgroundColor", ДополнительныйЦвет);
|
Параметры.Вставить("backgroundColor", ДополнительныйЦвет);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Put(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Put(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -310,15 +310,15 @@
|
|||||||
#Область РаботаССобытиями
|
#Область РаботаССобытиями
|
||||||
|
|
||||||
// Получить описание события !NOCLI
|
// Получить описание события !NOCLI
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Пустой макет события
|
// Соответствие Из КлючИЗначение - Пустой макет события
|
||||||
Функция ПолучитьОписаниеСобытия() Экспорт
|
Функция ПолучитьОписаниеСобытия() Экспорт
|
||||||
|
|
||||||
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||||
Час = 3600;
|
Час = 3600;
|
||||||
Событие = Новый Соответствие;
|
Событие = Новый Соответствие;
|
||||||
|
|
||||||
Событие.Вставить("Описание" , ""); // Описание события
|
Событие.Вставить("Описание" , ""); // Описание события
|
||||||
Событие.Вставить("Заголовок" , "Новое событие"); // Заголовок события
|
Событие.Вставить("Заголовок" , "Новое событие"); // Заголовок события
|
||||||
Событие.Вставить("МестоПроведения" , ""); // Строка описание места проведения
|
Событие.Вставить("МестоПроведения" , ""); // Строка описание места проведения
|
||||||
@ -328,149 +328,149 @@
|
|||||||
Событие.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам
|
Событие.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам
|
||||||
|
|
||||||
Возврат Событие;
|
Возврат Событие;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список событий
|
// Получить список событий
|
||||||
// Получает список всех событий календаря
|
// Получает список всех событий календаря
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий событий
|
// Соответствие Из КлючИЗначение - Массив соответствий событий
|
||||||
Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивСобытий = Новый Массив;
|
МассивСобытий = Новый Массив;
|
||||||
|
|
||||||
ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий);
|
ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий);
|
||||||
|
|
||||||
Возврат МассивСобытий;
|
Возврат МассивСобытий;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить событие
|
// Получить событие
|
||||||
// Получает событие по ID
|
// Получает событие по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// Событие - Строка - ID события - event
|
// Событие - Строка - ID события - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Календарь
|
+ Календарь
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Событие;
|
+ Событие;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать событие
|
// Создать событие
|
||||||
// Создает новое событие
|
// Создает новое событие
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// ОписаниеСобытия - Соответствие Из КлючИЗначение - Описание события - props
|
// ОписаниеСобытия - Соответствие Из КлючИЗначение - Описание события - props
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
Функция СоздатьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия) Экспорт
|
Функция СоздатьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия) Экспорт
|
||||||
|
|
||||||
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия);
|
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Переместить событие
|
// Переместить событие
|
||||||
// Перемещает событие в другой календарь
|
// Перемещает событие в другой календарь
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// КалендарьИсточник - Строка - ID календаря источника - from
|
// КалендарьИсточник - Строка - ID календаря источника - from
|
||||||
// КалендарьПриемник - Строка - ID календаря приемника - to
|
// КалендарьПриемник - Строка - ID календаря приемника - to
|
||||||
// Событие - Строка - ID события календаря источника - event
|
// Событие - Строка - ID события календаря источника - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт
|
Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьИсточник);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьИсточник);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьПриемник);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьПриемник);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ КалендарьИсточник
|
+ КалендарьИсточник
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Событие
|
+ Событие
|
||||||
+ "/move?destination="
|
+ "/move?destination="
|
||||||
+ КалендарьПриемник;
|
+ КалендарьПриемник;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить событие
|
// Изменить событие
|
||||||
// Изменяет существующее событие
|
// Изменяет существующее событие
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// ОписаниеСобытия - Строка - Новое описание события - props
|
// ОписаниеСобытия - Строка - Новое описание события - props
|
||||||
// Событие - Строка - ID события - event
|
// Событие - Строка - ID события - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие) Экспорт
|
Функция ИзменитьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие) Экспорт
|
||||||
|
|
||||||
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия, Событие);
|
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия, Событие);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить событие
|
// Удалить событие
|
||||||
// Удаляет событие по ID
|
// Удаляет событие по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// Событие - Строка - ID события - event
|
// Событие - Строка - ID события - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Календарь
|
+ Календарь
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Событие;
|
+ Событие;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -482,51 +482,51 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ПреобразоватьДату(Знач Дата)
|
Функция ПреобразоватьДату(Знач Дата)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДату(Дата);
|
OPI_ПреобразованиеТипов.ПолучитьДату(Дата);
|
||||||
|
|
||||||
СтруктураДаты = Новый Структура;
|
СтруктураДаты = Новый Структура;
|
||||||
|
|
||||||
Если Не ТипЗнч(Дата) = Тип("Дата") Тогда
|
Если Не ТипЗнч(Дата) = Тип("Дата") Тогда
|
||||||
Возврат Неопределено;
|
Возврат Неопределено;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Дата = НачалоДня(Дата) Тогда
|
Если Дата = НачалоДня(Дата) Тогда
|
||||||
ФорматДаты = "ДФ=yyyy-MM-dd";
|
ФорматДаты = "ДФ=yyyy-MM-dd";
|
||||||
Поле = "date";
|
Поле = "date";
|
||||||
Иначе
|
Иначе
|
||||||
ФорматДаты = "ДФ=yyyy-MM-ddTHH:mm:ssZ";
|
ФорматДаты = "ДФ=yyyy-MM-ddTHH:mm:ssZ";
|
||||||
Поле = "dateTime";
|
Поле = "dateTime";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Дата = Формат(Дата, ФорматДаты);
|
Дата = Формат(Дата, ФорматДаты);
|
||||||
СтруктураДаты.Вставить(Поле , Дата);
|
СтруктураДаты.Вставить(Поле , Дата);
|
||||||
СтруктураДаты.Вставить("timeZone", "Europe/Moscow");
|
СтруктураДаты.Вставить("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Возврат СтруктураДаты;
|
Возврат СтруктураДаты;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПреобразоватьВложения(Знач Вложения)
|
Функция ПреобразоватьВложения(Знач Вложения)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Вложения);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Вложения);
|
||||||
|
|
||||||
МассивВложений = Новый Массив;
|
МассивВложений = Новый Массив;
|
||||||
|
|
||||||
Если ТипЗнч(Вложения) = Тип("Соответствие") Или ТипЗнч(Вложения) = Тип("Структура") Тогда
|
Если ТипЗнч(Вложения) = Тип("Соответствие") Или ТипЗнч(Вложения) = Тип("Структура") Тогда
|
||||||
|
|
||||||
Для Каждого Вложение Из Вложения Цикл
|
Для Каждого Вложение Из Вложения Цикл
|
||||||
|
|
||||||
ТекущеВложение = Новый Структура;
|
ТекущеВложение = Новый Структура;
|
||||||
ТекущеВложение.Вставить("title" , Вложение.Ключ);
|
ТекущеВложение.Вставить("title" , Вложение.Ключ);
|
||||||
ТекущеВложение.Вставить("fileUrl", Вложение.Значение);
|
ТекущеВложение.Вставить("fileUrl", Вложение.Значение);
|
||||||
|
|
||||||
МассивВложений.Добавить(ТекущеВложение);
|
МассивВложений.Добавить(ТекущеВложение);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если МассивВложений.Количество() > 0 Тогда
|
Если МассивВложений.Количество() > 0 Тогда
|
||||||
Возврат МассивВложений;
|
Возврат МассивВложений;
|
||||||
Иначе
|
Иначе
|
||||||
@ -536,19 +536,19 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "")
|
Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеСобытия);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеСобытия);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Существующее = ЗначениеЗаполнено(Событие);
|
Существующее = ЗначениеЗаполнено(Событие);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Календарь
|
+ Календарь
|
||||||
+ "/events"
|
+ "/events"
|
||||||
+ ?(Существующее, "/" + Событие, "");
|
+ ?(Существующее, "/" + Событие, "");
|
||||||
|
|
||||||
Дата0 = ОписаниеСобытия["ДатаНачала"];
|
Дата0 = ОписаниеСобытия["ДатаНачала"];
|
||||||
Дата1 = ОписаниеСобытия["ДатаОкончания"];
|
Дата1 = ОписаниеСобытия["ДатаОкончания"];
|
||||||
Вложения = ОписаниеСобытия["МассивURLФайловВложений"];
|
Вложения = ОписаниеСобытия["МассивURLФайловВложений"];
|
||||||
@ -556,85 +556,85 @@
|
|||||||
Уведомления = ?(ОписаниеСобытия["ОтправлятьУведомления"] = Неопределено
|
Уведомления = ?(ОписаниеСобытия["ОтправлятьУведомления"] = Неопределено
|
||||||
, Ложь
|
, Ложь
|
||||||
, ОписаниеСобытия["ОтправлятьУведомления"]);
|
, ОписаниеСобытия["ОтправлятьУведомления"]);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("summary" , ОписаниеСобытия["Заголовок"]);
|
Параметры.Вставить("summary" , ОписаниеСобытия["Заголовок"]);
|
||||||
Параметры.Вставить("description", ОписаниеСобытия["Описание"]);
|
Параметры.Вставить("description", ОписаниеСобытия["Описание"]);
|
||||||
Параметры.Вставить("location" , ОписаниеСобытия["МестоПроведения"]);
|
Параметры.Вставить("location" , ОписаниеСобытия["МестоПроведения"]);
|
||||||
Параметры.Вставить("start" , ПреобразоватьДату(Дата0));
|
Параметры.Вставить("start" , ПреобразоватьДату(Дата0));
|
||||||
Параметры.Вставить("end" , ПреобразоватьДату(Дата1));
|
Параметры.Вставить("end" , ПреобразоватьДату(Дата1));
|
||||||
Параметры.Вставить("attachments", Вложения);
|
Параметры.Вставить("attachments", Вложения);
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("sendUpdates" , ?(Уведомления, "all", "none"));
|
ПараметрыURL.Вставить("sendUpdates" , ?(Уведомления , "all" , "none"));
|
||||||
ПараметрыURL.Вставить("supportsAttachments" , ?(ЗначениеЗаполнено(Вложения), "true", "false"));
|
ПараметрыURL.Вставить("supportsAttachments" , ?(ЗначениеЗаполнено(Вложения), "true", "false"));
|
||||||
|
|
||||||
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
||||||
|
|
||||||
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры);
|
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры);
|
||||||
|
|
||||||
Если Существующее Тогда
|
Если Существующее Тогда
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки, Истина);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки, Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПолучитьСписокКалендарейРекурсивно(Знач Заголовки, МассивКалендарей, Страница = "")
|
Процедура ПолучитьСписокКалендарейРекурсивно(Знач Заголовки, МассивКалендарей, Страница = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
Параметры.Вставить("pageToken", Страница);
|
Параметры.Вставить("pageToken", Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
||||||
, Параметры
|
, Параметры
|
||||||
, Заголовки);
|
, Заголовки);
|
||||||
|
|
||||||
Календари = Результат[Items];
|
Календари = Результат[Items];
|
||||||
Страница = Результат[NPT];
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
Для Каждого Календарь Из Календари Цикл
|
Для Каждого Календарь Из Календари Цикл
|
||||||
МассивКалендарей.Добавить(Календарь);
|
МассивКалендарей.Добавить(Календарь);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если Календари.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
Если Календари.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
||||||
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей, Страница);
|
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей, Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьСписокСобытийРекурсивно(Знач Заголовки, Знач Календарь, МассивСобытий, Страница = "")
|
Процедура ПолучитьСписокСобытийРекурсивно(Знач Заголовки, Знач Календарь, МассивСобытий, Страница = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
Параметры.Вставить("pageToken", Страница);
|
Параметры.Вставить("pageToken", Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events"
|
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events"
|
||||||
, Параметры
|
, Параметры
|
||||||
, Заголовки);
|
, Заголовки);
|
||||||
|
|
||||||
События = Результат[Items];
|
События = Результат[Items];
|
||||||
Страница = Результат[NPT];
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
Для Каждого Событие Из События Цикл
|
Для Каждого Событие Из События Цикл
|
||||||
МассивСобытий.Добавить(Событие);
|
МассивСобытий.Добавить(Событие);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если События.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
Если События.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
||||||
ПолучитьСписокСобытийРекурсивно(Заголовки, МассивСобытий, Страница);
|
ПолучитьСписокСобытийРекурсивно(Заголовки, МассивСобытий, Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -43,277 +43,277 @@
|
|||||||
|
|
||||||
// Получить информацию об объекте
|
// Получить информацию об объекте
|
||||||
// Получает информацию о папке или файле по ID
|
// Получает информацию о папке или файле по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор файла или каталога - object
|
// Идентификатор - Строка - Идентификатор файла или каталога - object
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
|
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список каталогов
|
// Получить список каталогов
|
||||||
// Получает список каталогов диска
|
// Получает список каталогов диска
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИмяСодержит - Строка - Отбор по имени - querry
|
// ИмяСодержит - Строка - Отбор по имени - querry
|
||||||
// Подробно - Булево - Добавляет список файлов к полям каталога - depth
|
// Подробно - Булево - Добавляет список файлов к полям каталога - depth
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий каталогов
|
// Соответствие Из КлючИЗначение - Массив соответствий каталогов
|
||||||
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
|
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Подробно);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Подробно);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивОбъектов = Новый Массив;
|
МассивОбъектов = Новый Массив;
|
||||||
Отбор = Новый Массив;
|
Отбор = Новый Массив;
|
||||||
|
|
||||||
Отбор.Добавить("mimeType = 'application/vnd.google-apps.folder'");
|
Отбор.Добавить("mimeType = 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
||||||
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор);
|
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор);
|
||||||
|
|
||||||
Если Подробно Тогда
|
Если Подробно Тогда
|
||||||
РазложитьОбъектыПодробно(Токен, МассивОбъектов);
|
РазложитьОбъектыПодробно(Токен, МассивОбъектов);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат МассивОбъектов;
|
Возврат МассивОбъектов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список файлов
|
// Получить список файлов
|
||||||
// Получает список файлов
|
// Получает список файлов
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИмяСодержит - Строка - Отбор по имени - querry
|
// ИмяСодержит - Строка - Отбор по имени - querry
|
||||||
// Каталог - Строка - Отбор по ID каталога родителя - catalog
|
// Каталог - Строка - Отбор по ID каталога родителя - catalog
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий файлов
|
// Соответствие Из КлючИЗначение - Массив соответствий файлов
|
||||||
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
|
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Каталог);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Каталог);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивОбъектов = Новый Массив;
|
МассивОбъектов = Новый Массив;
|
||||||
Отбор = Новый Массив;
|
Отбор = Новый Массив;
|
||||||
|
|
||||||
Отбор.Добавить("mimeType != 'application/vnd.google-apps.folder'");
|
Отбор.Добавить("mimeType != 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
||||||
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Каталог) Тогда
|
Если ЗначениеЗаполнено(Каталог) Тогда
|
||||||
Отбор.Добавить("'" + Каталог + "' in parents");
|
Отбор.Добавить("'" + Каталог + "' in parents");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, , Отбор);
|
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, , Отбор);
|
||||||
|
|
||||||
Возврат МассивОбъектов;
|
Возврат МассивОбъектов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить файл
|
// Загрузить файл
|
||||||
// Загружает файл на диск
|
// Загружает файл на диск
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Файл - ДвоичныеДанные,Строка - Загружаемый файл - file
|
// Файл - ДвоичныеДанные,Строка - Загружаемый файл - file
|
||||||
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла - props - JSON описания или путь к .json
|
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла - props - JSON описания или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Описание) Экспорт
|
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Описание) Экспорт
|
||||||
|
|
||||||
Возврат УправлениеФайлом(Токен, Файл, Описание);
|
Возврат УправлениеФайлом(Токен, Файл, Описание);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать папку
|
// Создать папку
|
||||||
// Создает пустой каталог на диске
|
// Создает пустой каталог на диске
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Имя - Строка - Имя папки - title
|
// Имя - Строка - Имя папки - title
|
||||||
// Родитель - Строка - Родитель - catalog
|
// Родитель - Строка - Родитель - catalog
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьПапку(Знач Токен, Знач Имя, Знач Родитель = "") Экспорт
|
Функция СоздатьПапку(Знач Токен, Знач Имя, Знач Родитель = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Родитель);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Родитель);
|
||||||
|
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
Описание.Вставить("MIME" , "application/vnd.google-apps.folder");
|
Описание.Вставить("MIME" , "application/vnd.google-apps.folder");
|
||||||
Описание.Вставить("Имя" , Имя);
|
Описание.Вставить("Имя" , Имя);
|
||||||
Описание.Вставить("Описание", "");
|
Описание.Вставить("Описание", "");
|
||||||
Описание.Вставить("Родитель", ?(ЗначениеЗаполнено(Родитель), Родитель, "root"));
|
Описание.Вставить("Родитель", ?(ЗначениеЗаполнено(Родитель), Родитель, "root"));
|
||||||
|
|
||||||
Возврат УправлениеФайлом(Токен, , Описание);
|
Возврат УправлениеФайлом(Токен, , Описание);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Скачать файл
|
// Скачать файл
|
||||||
// Получает файл по ID
|
// Получает файл по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор файла - object
|
// Идентификатор - Строка - Идентификатор файла - object
|
||||||
// ПутьСохранения - Строка - Путь сохранения файла - out
|
// ПутьСохранения - Строка - Путь сохранения файла - out
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
||||||
Функция СкачатьФайл(Знач Токен, Знач Идентификатор, Знач ПутьСохранения = "") Экспорт
|
Функция СкачатьФайл(Знач Токен, Знач Идентификатор, Знач ПутьСохранения = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
|
|
||||||
Параметры = Новый Соответствие;
|
Параметры = Новый Соответствие;
|
||||||
Параметры.Вставить("alt", "media");
|
Параметры.Вставить("alt", "media");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры , Заголовки, ПутьСохранения);
|
Ответ = OPI_Инструменты.Get(URL, Параметры , Заголовки, ПутьСохранения);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Скоприровать объект
|
// Скоприровать объект
|
||||||
// Копирует файл или каталог
|
// Копирует файл или каталог
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор объекта - object
|
// Идентификатор - Строка - Идентификатор объекта - object
|
||||||
// НовоеИмя - Строка - Новое имя объекта - title
|
// НовоеИмя - Строка - Новое имя объекта - title
|
||||||
// НовыйРодитель - Строка - Новый каталог размещения - catalog
|
// НовыйРодитель - Строка - Новый каталог размещения - catalog
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СкопироватьОбъект(Знач Токен, Знач Идентификатор, Знач НовоеИмя = "", Знач НовыйРодитель = "") Экспорт
|
Функция СкопироватьОбъект(Знач Токен, Знач Идентификатор, Знач НовоеИмя = "", Знач НовыйРодитель = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовыйРодитель);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовыйРодитель);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/copy";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/copy";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
||||||
Параметры.Вставить("name", НовоеИмя);
|
Параметры.Вставить("name", НовоеИмя);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(НовыйРодитель) Тогда
|
Если ЗначениеЗаполнено(НовыйРодитель) Тогда
|
||||||
|
|
||||||
МассивРодителей = Новый Массив;
|
МассивРодителей = Новый Массив;
|
||||||
МассивРодителей.Добавить(НовыйРодитель);
|
МассивРодителей.Добавить(НовыйРодитель);
|
||||||
Параметры.Вставить("parents", МассивРодителей);
|
Параметры.Вставить("parents", МассивРодителей);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры , Заголовки, Истина);
|
Ответ = OPI_Инструменты.Post(URL, Параметры , Заголовки, Истина);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить файл
|
// Обновить файл
|
||||||
// Обновляет двоичные данные файла
|
// Обновляет двоичные данные файла
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор обновляемого объекта - object
|
// Идентификатор - Строка - Идентификатор обновляемого объекта - object
|
||||||
// Файл - ДвоичныеДанные,Строка - Файл источник обновления - file
|
// Файл - ДвоичныеДанные,Строка - Файл источник обновления - file
|
||||||
// НовоеИмя - Строка - Новое имя файла (если необходимо) - title
|
// НовоеИмя - Строка - Новое имя файла (если необходимо) - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОбновитьФайл(Знач Токен, Знач Идентификатор, Знач Файл, Знач НовоеИмя = "") Экспорт
|
Функция ОбновитьФайл(Знач Токен, Знач Идентификатор, Знач Файл, Знач НовоеИмя = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
Описание.Вставить("Имя", НовоеИмя);
|
Описание.Вставить("Имя", НовоеИмя);
|
||||||
Иначе
|
Иначе
|
||||||
Описание = "";
|
Описание = "";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат УправлениеФайлом(Токен, Файл, Описание, Идентификатор);
|
Возврат УправлениеФайлом(Токен, Файл, Описание, Идентификатор);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить объект
|
// Удалить объект
|
||||||
// Удаляет файл или каталог по ID
|
// Удаляет файл или каталог по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор объекта для удаления - object
|
// Идентификатор - Строка - Идентификатор объекта для удаления - object
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт
|
Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить описание файла !NOCLI
|
// Получить описание файла !NOCLI
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Описание файла
|
// Соответствие Из КлючИЗначение - Описание файла
|
||||||
Функция ПолучитьОписаниеФайла() Экспорт
|
Функция ПолучитьОписаниеФайла() Экспорт
|
||||||
|
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
Описание.Вставить("MIME" , "image/jpeg"); // MIME-тип загружаемого файла
|
Описание.Вставить("MIME" , "image/jpeg"); // MIME-тип загружаемого файла
|
||||||
Описание.Вставить("Имя" , "Новый файл.jpg"); // Имя файла с расширением
|
Описание.Вставить("Имя" , "Новый файл.jpg"); // Имя файла с расширением
|
||||||
Описание.Вставить("Описание" , "Это новый файл"); // Описание файла
|
Описание.Вставить("Описание" , "Это новый файл"); // Описание файла
|
||||||
Описание.Вставить("Родитель" , "root"); // ID каталога загрузки или "root" для загрузки в корень
|
Описание.Вставить("Родитель" , "root"); // ID каталога загрузки или "root" для загрузки в корень
|
||||||
|
|
||||||
Возврат Описание;
|
Возврат Описание;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -322,107 +322,107 @@
|
|||||||
|
|
||||||
// Создать комментарий
|
// Создать комментарий
|
||||||
// Создает комментарий к файлу или каталогу
|
// Создает комментарий к файлу или каталогу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор объекта, для которого необходим комментарий - object
|
// Идентификатор - Строка - Идентификатор объекта, для которого необходим комментарий - object
|
||||||
// Комментарий - Строка - Текст комментария - text
|
// Комментарий - Строка - Текст комментария - text
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьКомментарий(Знач Токен, Знач Идентификатор, Знач Комментарий) Экспорт
|
Функция СоздатьКомментарий(Знач Токен, Знач Идентификатор, Знач Комментарий) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/comments?fields=*";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/comments?fields=*";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("content", Комментарий);
|
Параметры.Вставить("content", Комментарий);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.POST(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.POST(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить комментарий
|
// Получить комментарий
|
||||||
// Получает комментарий по ID
|
// Получает комментарий по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
||||||
// ИДКомментария - Строка - Идентификатор комментария - comment
|
// ИДКомментария - Строка - Идентификатор комментария - comment
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
Функция ПолучитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список комментариев
|
// Получить список комментариев
|
||||||
// Получает список всех комментариев объекта
|
// Получает список всех комментариев объекта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИДОбъекта - Строка - Идентификатор объекта - object
|
// ИДОбъекта - Строка - Идентификатор объекта - object
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьСписокКомментариев(Знач Токен, Знач ИДОбъекта) Экспорт
|
Функция ПолучитьСписокКомментариев(Знач Токен, Знач ИДОбъекта) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments";
|
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить комментарий
|
// Удалить комментарий
|
||||||
// Удаляет комментарий по ID
|
// Удаляет комментарий по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
||||||
// ИДКомментария - Строка - Идентификатор комментария - comment
|
// ИДКомментария - Строка - Идентификатор комментария - comment
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
Функция УдалитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -433,59 +433,59 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Процедура ПолучитьСписокОбъектовРекурсивно(Знач Заголовки, МассивОбъектов, Подробно = Ложь, Отбор = "", Страница = "")
|
Процедура ПолучитьСписокОбъектовРекурсивно(Знач Заголовки, МассивОбъектов, Подробно = Ложь, Отбор = "", Страница = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/drive/v3/files";
|
URL = "https://www.googleapis.com/drive/v3/files";
|
||||||
Files = "files";
|
Files = "files";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
Параметры.Вставить("pageToken", Страница);
|
Параметры.Вставить("pageToken", Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Отбор) И ТипЗнч(Отбор) = Тип("Массив") Тогда
|
Если ЗначениеЗаполнено(Отбор) И ТипЗнч(Отбор) = Тип("Массив") Тогда
|
||||||
ОтборСтрока = СтрСоединить(Отбор, " and ");
|
ОтборСтрока = СтрСоединить(Отбор, " and ");
|
||||||
Параметры.Вставить("q", ОтборСтрока);
|
Параметры.Вставить("q", ОтборСтрока);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Результат = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Результат = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Объекты = Результат[Files];
|
Объекты = Результат[Files];
|
||||||
Страница = Результат[NPT];
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
Для Каждого ТекущийОбъект Из Объекты Цикл
|
Для Каждого ТекущийОбъект Из Объекты Цикл
|
||||||
МассивОбъектов.Добавить(ТекущийОбъект);
|
МассивОбъектов.Добавить(ТекущийОбъект);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если Объекты.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
Если Объекты.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
||||||
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор, Страница);
|
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор, Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура РазложитьОбъектыПодробно(Знач Токен, МассивОбъектов)
|
Процедура РазложитьОбъектыПодробно(Знач Токен, МассивОбъектов)
|
||||||
|
|
||||||
Для Каждого ТекущийОбъект Из МассивОбъектов Цикл
|
Для Каждого ТекущийОбъект Из МассивОбъектов Цикл
|
||||||
|
|
||||||
МассивФайлов = Новый Массив;
|
МассивФайлов = Новый Массив;
|
||||||
ТекущийИД = ТекущийОбъект["id"];
|
ТекущийИД = ТекущийОбъект["id"];
|
||||||
|
|
||||||
Результат = ПолучитьСписокФайлов(Токен, , ТекущийИД);
|
Результат = ПолучитьСписокФайлов(Токен, , ТекущийИД);
|
||||||
|
|
||||||
Для Каждого Файл Из Результат Цикл
|
Для Каждого Файл Из Результат Цикл
|
||||||
МассивФайлов.Добавить(Файл);
|
МассивФайлов.Добавить(Файл);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ТекущийОбъект.Вставить("files", МассивФайлов);
|
ТекущийОбъект.Вставить("files", МассивФайлов);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура СформироватьПараметрыЗагрузкиФайла(Описание)
|
Процедура СформироватьПараметрыЗагрузкиФайла(Описание)
|
||||||
|
|
||||||
СформированноеОписание = Новый Соответствие;
|
СформированноеОписание = Новый Соответствие;
|
||||||
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Описание);
|
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Описание);
|
||||||
|
|
||||||
@ -495,81 +495,81 @@
|
|||||||
СоответствиеПолей.Вставить("Описание" , "description");
|
СоответствиеПолей.Вставить("Описание" , "description");
|
||||||
СоответствиеПолей.Вставить("Родитель" , "parents");
|
СоответствиеПолей.Вставить("Родитель" , "parents");
|
||||||
СоответствиеПолей.Вставить("Расширение", "fileExtension");
|
СоответствиеПолей.Вставить("Расширение", "fileExtension");
|
||||||
|
|
||||||
Для Каждого Элемент Из Описание Цикл
|
Для Каждого Элемент Из Описание Цикл
|
||||||
|
|
||||||
Если Элемент.Ключ = "Родитель" Тогда
|
Если Элемент.Ключ = "Родитель" Тогда
|
||||||
|
|
||||||
ТекущееЗначение = Новый Массив;
|
ТекущееЗначение = Новый Массив;
|
||||||
ТекущееЗначение.Добавить(Элемент.Значение);
|
ТекущееЗначение.Добавить(Элемент.Значение);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
ТекущееЗначение = Элемент.Значение;
|
ТекущееЗначение = Элемент.Значение;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ИмяПоля = СоответствиеПолей.Получить(Элемент.Ключ);
|
ИмяПоля = СоответствиеПолей.Получить(Элемент.Ключ);
|
||||||
СформированноеОписание.Вставить(ИмяПоля, ТекущееЗначение);
|
СформированноеОписание.Вставить(ИмяПоля, ТекущееЗначение);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Описание = СформированноеОписание;
|
Описание = СформированноеОписание;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Функция УправлениеФайлом(Знач Токен, Знач Файл = "", Знач Описание = "", Знач Идентификатор = "")
|
Функция УправлениеФайлом(Знач Токен, Знач Файл = "", Знач Описание = "", Знач Идентификатор = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Описание) Тогда
|
Если ЗначениеЗаполнено(Описание) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Описание);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Описание);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
MimeType = "mimeType";
|
MimeType = "mimeType";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
||||||
MIME = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор)[MimeType];
|
MIME = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор)[MimeType];
|
||||||
Иначе
|
Иначе
|
||||||
MIME = Описание["MIME"];
|
MIME = Описание["MIME"];
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Описание) Тогда
|
Если Не ЗначениеЗаполнено(Описание) Тогда
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
СформироватьПараметрыЗагрузкиФайла(Описание);
|
СформироватьПараметрыЗагрузкиФайла(Описание);
|
||||||
ОписаниеJSON = OPI_Инструменты.JSONСтрокой(Описание);
|
ОписаниеJSON = OPI_Инструменты.JSONСтрокой(Описание);
|
||||||
|
|
||||||
СоответствиеФайла = Новый Соответствие;
|
СоответствиеФайла = Новый Соответствие;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Файл) Тогда
|
Если ЗначениеЗаполнено(Файл) Тогда
|
||||||
|
|
||||||
РазмерЧасти = 268435457;
|
РазмерЧасти = 268435457;
|
||||||
Размер = OPI_Инструменты.ПреобразоватьДанныеСПолучениемРазмера(Файл, РазмерЧасти);
|
Размер = OPI_Инструменты.ПреобразоватьДанныеСПолучениемРазмера(Файл, РазмерЧасти);
|
||||||
|
|
||||||
СоответствиеФайла.Вставить(Файл, MIME);
|
СоответствиеФайла.Вставить(Файл, MIME);
|
||||||
|
|
||||||
Если Размер < РазмерЧасти И ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
Если Размер < РазмерЧасти И ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||||
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = ЗагрузитьБольшойФайл(Описание, СоответствиеФайла, Заголовки, Идентификатор);
|
Ответ = ЗагрузитьБольшойФайл(Описание, СоответствиеФайла, Заголовки, Идентификатор);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьМалыйФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
Функция ЗагрузитьМалыйФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
||||||
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
||||||
Ответ = OPI_Инструменты.PatchMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
|
Ответ = OPI_Инструменты.PatchMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
|
||||||
@ -578,149 +578,149 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьБольшойФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
Функция ЗагрузитьБольшойФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
||||||
|
|
||||||
Для Каждого Файл Из СоответствиеФайла Цикл
|
Для Каждого Файл Из СоответствиеФайла Цикл
|
||||||
Двоичные = Файл.Ключ;
|
Двоичные = Файл.Ключ;
|
||||||
Прервать;
|
Прервать;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
||||||
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Описание, Заголовки, Истина, Истина);
|
Ответ = OPI_Инструменты.Patch(URL, Описание, Заголовки, Истина, Истина);
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = OPI_Инструменты.Post(URL, Описание, Заголовки, Истина, Истина);
|
Ответ = OPI_Инструменты.Post(URL, Описание, Заголовки, Истина, Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
АдресЗагрузки = Ответ.Заголовки["Location"];
|
АдресЗагрузки = Ответ.Заголовки["Location"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(АдресЗагрузки) Тогда
|
Если Не ЗначениеЗаполнено(АдресЗагрузки) Тогда
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОтветЗагрузки = ЗагрузитьФайлЧастями(Двоичные, АдресЗагрузки);
|
ОтветЗагрузки = ЗагрузитьФайлЧастями(Двоичные, АдресЗагрузки);
|
||||||
Ответ = ?(ЗначениеЗаполнено(ОтветЗагрузки), ОтветЗагрузки, Ответ);
|
Ответ = ?(ЗначениеЗаполнено(ОтветЗагрузки), ОтветЗагрузки, Ответ);
|
||||||
|
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьФайлЧастями(Знач Двоичные, Знач АдресЗагрузки)
|
Функция ЗагрузитьФайлЧастями(Знач Двоичные, Знач АдресЗагрузки)
|
||||||
|
|
||||||
Ответ = "";
|
Ответ = "";
|
||||||
РазмерЧасти = 268435456;
|
РазмерЧасти = 268435456;
|
||||||
ПрочитаноБайт = 0;
|
ПрочитаноБайт = 0;
|
||||||
ТекущаяПозиция = 0;
|
ТекущаяПозиция = 0;
|
||||||
ОбщийРазмер = Двоичные.Размер();
|
ОбщийРазмер = Двоичные.Размер();
|
||||||
СтрОбщийРазмер = OPI_Инструменты.ЧислоВСтроку(ОбщийРазмер);
|
СтрОбщийРазмер = OPI_Инструменты.ЧислоВСтроку(ОбщийРазмер);
|
||||||
ЧтениеДанных = Новый ЧтениеДанных(Двоичные);
|
ЧтениеДанных = Новый ЧтениеДанных(Двоичные);
|
||||||
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
|
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
|
||||||
|
|
||||||
Пока ПрочитаноБайт < ОбщийРазмер Цикл
|
Пока ПрочитаноБайт < ОбщийРазмер Цикл
|
||||||
|
|
||||||
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
|
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
|
||||||
Результат = ЧтениеДанных.Прочитать(РазмерЧасти);
|
Результат = ЧтениеДанных.Прочитать(РазмерЧасти);
|
||||||
ТекущиеДанные = Результат.ПолучитьДвоичныеДанные();
|
ТекущиеДанные = Результат.ПолучитьДвоичныеДанные();
|
||||||
РазмерТекущих = ТекущиеДанные.Размер();
|
РазмерТекущих = ТекущиеДанные.Размер();
|
||||||
СледующаяПозиция = ТекущаяПозиция + РазмерТекущих - 1;
|
СледующаяПозиция = ТекущаяПозиция + РазмерТекущих - 1;
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда
|
Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда
|
||||||
Прервать;
|
Прервать;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаголовокПотока = "bytes "
|
ЗаголовокПотока = "bytes "
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(ТекущаяПозиция)
|
+ OPI_Инструменты.ЧислоВСтроку(ТекущаяПозиция)
|
||||||
+ "-"
|
+ "-"
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(СледующаяПозиция)
|
+ OPI_Инструменты.ЧислоВСтроку(СледующаяПозиция)
|
||||||
+ "/"
|
+ "/"
|
||||||
+ СтрОбщийРазмер;
|
+ СтрОбщийРазмер;
|
||||||
|
|
||||||
ДопЗаголовки = Новый Соответствие;
|
ДопЗаголовки = Новый Соответствие;
|
||||||
ДопЗаголовки.Вставить("Content-Length", OPI_Инструменты.ЧислоВСтроку(РазмерТекущих));
|
ДопЗаголовки.Вставить("Content-Length", OPI_Инструменты.ЧислоВСтроку(РазмерТекущих));
|
||||||
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
||||||
ДопЗаголовки.Вставить("Content-Type" , "application/octet-stream");
|
ДопЗаголовки.Вставить("Content-Type" , "application/octet-stream");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Put(АдресЗагрузки, ТекущиеДанные, ДопЗаголовки, Ложь, Истина);
|
Ответ = OPI_Инструменты.Put(АдресЗагрузки, ТекущиеДанные, ДопЗаголовки, Ложь, Истина);
|
||||||
|
|
||||||
РезультатПроверки = ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция);
|
РезультатПроверки = ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(РезультатПроверки) Тогда
|
Если ЗначениеЗаполнено(РезультатПроверки) Тогда
|
||||||
Возврат РезультатПроверки;
|
Возврат РезультатПроверки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КБайт = 1024;
|
КБайт = 1024;
|
||||||
МБайт = КБайт * КБайт;
|
МБайт = КБайт * КБайт;
|
||||||
Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт));
|
Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт));
|
||||||
|
|
||||||
ВыполнитьСборкуМусора();
|
ВыполнитьСборкуМусора();
|
||||||
ОсвободитьОбъект(ТекущиеДанные);
|
ОсвободитьОбъект(ТекущиеДанные);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция)
|
Функция ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция)
|
||||||
|
|
||||||
НачалоКодовОшибок = 400;
|
НачалоКодовОшибок = 400;
|
||||||
КонецКодовПадений = 600;
|
КонецКодовПадений = 600;
|
||||||
НачалоКодовУспеха = 200;
|
НачалоКодовУспеха = 200;
|
||||||
КонецКодовУспеха = 300;
|
КонецКодовУспеха = 300;
|
||||||
Перенаправление = 308;
|
Перенаправление = 308;
|
||||||
|
|
||||||
Если Ответ.КодСостояния >= НачалоКодовОшибок И Ответ.КодСостояния < КонецКодовПадений Тогда
|
Если Ответ.КодСостояния >= НачалоКодовОшибок И Ответ.КодСостояния < КонецКодовПадений Тогда
|
||||||
|
|
||||||
ЗаголовокПотока = "bytes */" + СтрОбщийРазмер;
|
ЗаголовокПотока = "bytes */" + СтрОбщийРазмер;
|
||||||
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
||||||
|
|
||||||
ОтветПроверки = OPI_Инструменты.Put(АдресЗагрузки, "", ДопЗаголовки, Ложь, Истина);
|
ОтветПроверки = OPI_Инструменты.Put(АдресЗагрузки, "", ДопЗаголовки, Ложь, Истина);
|
||||||
|
|
||||||
Если ОтветПроверки.КодСостояния >= НачалоКодовУспеха И ОтветПроверки.КодСостояния < КонецКодовУспеха Тогда
|
Если ОтветПроверки.КодСостояния >= НачалоКодовУспеха И ОтветПроверки.КодСостояния < КонецКодовУспеха Тогда
|
||||||
|
|
||||||
OPI_Инструменты.ОбработатьОтвет(ОтветПроверки);
|
OPI_Инструменты.ОбработатьОтвет(ОтветПроверки);
|
||||||
Возврат ОтветПроверки;
|
Возврат ОтветПроверки;
|
||||||
|
|
||||||
ИначеЕсли ОтветПроверки.КодСостояния = Перенаправление Тогда
|
ИначеЕсли ОтветПроверки.КодСостояния = Перенаправление Тогда
|
||||||
|
|
||||||
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(ЗагруженныеДанные) Тогда
|
Если Не ЗначениеЗаполнено(ЗагруженныеДанные) Тогда
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗагруженныеДанные = СтрЗаменить(ЗагруженныеДанные, "bytes=", "");
|
ЗагруженныеДанные = СтрЗаменить(ЗагруженныеДанные, "bytes=", "");
|
||||||
МассивИнформации = СтрРазделить(ЗагруженныеДанные, "-", Ложь);
|
МассивИнформации = СтрРазделить(ЗагруженныеДанные, "-", Ложь);
|
||||||
НеобходимоЧастей = 2;
|
НеобходимоЧастей = 2;
|
||||||
|
|
||||||
Если Не МассивИнформации.Количество() = НеобходимоЧастей Тогда
|
Если Не МассивИнформации.Количество() = НеобходимоЧастей Тогда
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТекущаяПозиция = Число(МассивИнформации[1]) + 1;
|
ТекущаяПозиция = Число(МассивИнформации[1]) + 1;
|
||||||
|
|
||||||
Возврат "";
|
Возврат "";
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -43,90 +43,90 @@
|
|||||||
|
|
||||||
// Создать книгу
|
// Создать книгу
|
||||||
// Создает новую книгу
|
// Создает новую книгу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Наименование - Строка - Наименование - title
|
// Наименование - Строка - Наименование - title
|
||||||
// МассивИменЛистов - Массив из Строка - Массив имен для добавления новых листов в книгу - sheets
|
// МассивИменЛистов - Массив из Строка - Массив имен для добавления новых листов в книгу - sheets
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьКнигу(Знач Токен, Знач Наименование, Знач МассивИменЛистов) Экспорт
|
Функция СоздатьКнигу(Знач Токен, Знач Наименование, Знач МассивИменЛистов) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивИменЛистов);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивИменЛистов);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
||||||
|
|
||||||
Свойства = Новый Структура("title" , Наименование);
|
Свойства = Новый Структура("title" , Наименование);
|
||||||
Листы = Новый Массив;
|
Листы = Новый Массив;
|
||||||
|
|
||||||
ЗаполнитьМассивЛистов(МассивИменЛистов, Листы);
|
ЗаполнитьМассивЛистов(МассивИменЛистов, Листы);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("properties", Свойства, "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("properties", Свойства, "Коллекция", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("sheets" , Листы , "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("sheets" , Листы , "Коллекция", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить книгу
|
// Получить книгу
|
||||||
// Получает информацию о книге по ID
|
// Получает информацию о книге по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор книги - spreadsheet
|
// Идентификатор - Строка - Идентификатор книги - spreadsheet
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьКнигу(Знач Токен, Знач Идентификатор) Экспорт
|
Функция ПолучитьКнигу(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Идентификатор;
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Идентификатор;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить наименование книги
|
// Изменить наименование книги
|
||||||
// Изменяет наименование существующей книги
|
// Изменяет наименование существующей книги
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьНаименованиеКниги(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
Функция ИзменитьНаименованиеКниги(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
||||||
|
|
||||||
Изменение = Новый Структура("title", Наименование);
|
Изменение = Новый Структура("title", Наименование);
|
||||||
ЗапросИзменения = Новый Структура("properties,fields", Изменение, "title");
|
ЗапросИзменения = Новый Структура("properties,fields", Изменение, "title");
|
||||||
Запрос = Новый Структура("updateSpreadsheetProperties", ЗапросИзменения);
|
Запрос = Новый Структура("updateSpreadsheetProperties", ЗапросИзменения);
|
||||||
|
|
||||||
МассивЗапросов = Новый Массив;
|
МассивЗапросов = Новый Массив;
|
||||||
МассивЗапросов.Добавить(Запрос);
|
МассивЗапросов.Добавить(Запрос);
|
||||||
|
|
||||||
Параметры = Новый Структура("requests", МассивЗапросов);
|
Параметры = Новый Структура("requests", МассивЗапросов);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -135,95 +135,95 @@
|
|||||||
|
|
||||||
// Добавить лист
|
// Добавить лист
|
||||||
// Добавляет новый лист в книгу
|
// Добавляет новый лист в книгу
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - Идентификатор книги - spreadsheet
|
// Книга - Строка - Идентификатор книги - spreadsheet
|
||||||
// Наименование - Строка - Наименование нового листа - title
|
// Наименование - Строка - Наименование нового листа - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ДобавитьЛист(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
Функция ДобавитьЛист(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
||||||
Лист = СоздатьЛист(Наименование);
|
Лист = СоздатьЛист(Наименование);
|
||||||
|
|
||||||
Запросы = Новый Массив;
|
Запросы = Новый Массив;
|
||||||
Изменение = Новый Структура("addSheet", Лист);
|
Изменение = Новый Структура("addSheet", Лист);
|
||||||
Запросы.Добавить(Изменение);
|
Запросы.Добавить(Изменение);
|
||||||
|
|
||||||
Параметры = Новый Структура("requests", Запросы);
|
Параметры = Новый Структура("requests", Запросы);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить лист
|
// Удалить лист
|
||||||
// Удаляет лист из книги
|
// Удаляет лист из книги
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - Идентификатор книги - spreadsheet
|
// Книга - Строка - Идентификатор книги - spreadsheet
|
||||||
// Лист - Строка - Идентификатор удаляемого листа - sheet
|
// Лист - Строка - Идентификатор удаляемого листа - sheet
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьЛист(Знач Токен, Знач Книга, Знач Лист) Экспорт
|
Функция УдалитьЛист(Знач Токен, Знач Книга, Знач Лист) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
||||||
|
|
||||||
Запросы = Новый Массив;
|
Запросы = Новый Массив;
|
||||||
Лист = Новый Структура("sheetId" , Лист);
|
Лист = Новый Структура("sheetId" , Лист);
|
||||||
Изменение = Новый Структура("deleteSheet", Лист);
|
Изменение = Новый Структура("deleteSheet", Лист);
|
||||||
Запросы.Добавить(Изменение);
|
Запросы.Добавить(Изменение);
|
||||||
|
|
||||||
Параметры = Новый Структура("requests", Запросы);
|
Параметры = Новый Структура("requests", Запросы);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Копировать лист
|
// Копировать лист
|
||||||
// Копирует лист из одной книги в другую
|
// Копирует лист из одной книги в другую
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Откуда - Строка - ID книги источника - from
|
// Откуда - Строка - ID книги источника - from
|
||||||
// Куда - Строка - ID книги приемника - to
|
// Куда - Строка - ID книги приемника - to
|
||||||
// Лист - Строка - ID копируемого листа - sheet
|
// Лист - Строка - ID копируемого листа - sheet
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция КопироватьЛист(Знач Токен, Знач Откуда, Знач Куда, Знач Лист) Экспорт
|
Функция КопироватьЛист(Знач Токен, Знач Откуда, Знач Куда, Знач Лист) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
||||||
+ Откуда
|
+ Откуда
|
||||||
+ "/sheets/"
|
+ "/sheets/"
|
||||||
+ Лист
|
+ Лист
|
||||||
+ ":copyTo";
|
+ ":copyTo";
|
||||||
|
|
||||||
Параметры = Новый Структура("destinationSpreadsheetId", Куда);
|
Параметры = Новый Структура("destinationSpreadsheetId", Куда);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -232,14 +232,14 @@
|
|||||||
|
|
||||||
// Установить значения ячеек
|
// Установить значения ячеек
|
||||||
// Устанавливает значения ячеек листа
|
// Устанавливает значения ячеек листа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// СоответствиеЗначений - Соответствие Из КлючИЗначение - Данные заполнения, где ключ это имя ячейки вида A1 - data
|
// СоответствиеЗначений - Соответствие Из КлючИЗначение - Данные заполнения, где ключ это имя ячейки вида A1 - data
|
||||||
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
||||||
// ОсновноеИзмерение - Строка - Основное измерение при заполнении диапазона массивом - dim
|
// ОсновноеИзмерение - Строка - Основное измерение при заполнении диапазона массивом - dim
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УстановитьЗначенияЯчеек(Знач Токен
|
Функция УстановитьЗначенияЯчеек(Знач Токен
|
||||||
@ -247,90 +247,90 @@
|
|||||||
, Знач СоответствиеЗначений
|
, Знач СоответствиеЗначений
|
||||||
, Знач Лист = ""
|
, Знач Лист = ""
|
||||||
, Знач ОсновноеИзмерение = "COLUMNS") Экспорт
|
, Знач ОсновноеИзмерение = "COLUMNS") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеЗначений);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеЗначений);
|
||||||
|
|
||||||
Если Не ТипЗнч(СоответствиеЗначений) = Тип("Структура")
|
Если Не ТипЗнч(СоответствиеЗначений) = Тип("Структура")
|
||||||
И Не ТипЗнч(СоответствиеЗначений) = Тип("Соответствие") Тогда
|
И Не ТипЗнч(СоответствиеЗначений) = Тип("Соответствие") Тогда
|
||||||
Возврат "Не удалось привести структуру значений к коллекции";
|
Возврат "Не удалось привести структуру значений к коллекции";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchUpdate";
|
||||||
МассивДанных = СформироватьМассивДанныхЯчеек(СоответствиеЗначений, ОсновноеИзмерение, Лист);
|
МассивДанных = СформироватьМассивДанныхЯчеек(СоответствиеЗначений, ОсновноеИзмерение, Лист);
|
||||||
|
|
||||||
Параметры = Новый Структура("data,valueInputOption", МассивДанных, "USER_ENTERED");
|
Параметры = Новый Структура("data,valueInputOption", МассивДанных, "USER_ENTERED");
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Очистить ячейки
|
// Очистить ячейки
|
||||||
// Очищает значение в ячейках
|
// Очищает значение в ячейках
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для очистки - cells
|
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для очистки - cells
|
||||||
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОчиститьЯчейки(Знач Токен, Знач Книга, Знач МассивЯчеек, Знач Лист = "") Экспорт
|
Функция ОчиститьЯчейки(Знач Токен, Знач Книга, Знач МассивЯчеек, Знач Лист = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchClear";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchClear";
|
||||||
|
|
||||||
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
||||||
|
|
||||||
Параметры = Новый Структура("ranges", МассивЯчеек);
|
Параметры = Новый Структура("ranges", МассивЯчеек);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить значения ячеек
|
// Получить значения ячеек
|
||||||
// Получает значения ячеек таблицы
|
// Получает значения ячеек таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для получения (весь лист, если не заполнено) - cells
|
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для получения (весь лист, если не заполнено) - cells
|
||||||
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьЗначенияЯчеек(Знач Токен, Знач Книга, Знач МассивЯчеек = "", Знач Лист = "") Экспорт
|
Функция ПолучитьЗначенияЯчеек(Знач Токен, Знач Книга, Знач МассивЯчеек = "", Знач Лист = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchGet";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchGet";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивЯчеек) Тогда
|
Если ЗначениеЗаполнено(МассивЯчеек) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
||||||
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
||||||
|
|
||||||
Первый = Истина;
|
Первый = Истина;
|
||||||
Для Каждого Ячейка Из МассивЯчеек Цикл
|
Для Каждого Ячейка Из МассивЯчеек Цикл
|
||||||
Разделитель = ?(Первый, "?", "&");
|
Разделитель = ?(Первый, "?", "&");
|
||||||
URL = URL + Разделитель + "ranges=" + Ячейка;
|
URL = URL + Разделитель + "ranges=" + Ячейка;
|
||||||
Первый = Ложь;
|
Первый = Ложь;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
Иначе
|
Иначе
|
||||||
URL = URL + "?ranges='" + Лист + "'";
|
URL = URL + "?ranges ='" + Лист + "'";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -340,75 +340,75 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Процедура ЗаполнитьМассивЛистов(Знач МассивИмен, МассивЛистов)
|
Процедура ЗаполнитьМассивЛистов(Знач МассивИмен, МассивЛистов)
|
||||||
|
|
||||||
Для Каждого ИмяЛиста Из МассивИмен Цикл
|
Для Каждого ИмяЛиста Из МассивИмен Цикл
|
||||||
|
|
||||||
Лист = СоздатьЛист(ИмяЛиста);
|
Лист = СоздатьЛист(ИмяЛиста);
|
||||||
МассивЛистов.Добавить(Лист);
|
МассивЛистов.Добавить(Лист);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ДобавитьИмяЛиста(Ячейка, Знач Лист)
|
Процедура ДобавитьИмяЛиста(Ячейка, Знач Лист)
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Лист) Тогда
|
Если ЗначениеЗаполнено(Лист) Тогда
|
||||||
Ячейка = "'" + Лист + "'!" + Ячейка;
|
Ячейка = "'" + Лист + "'!" + Ячейка;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Функция СоздатьЛист(Знач Наименование)
|
Функция СоздатьЛист(Знач Наименование)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
|
|
||||||
СвойстваЛиста = Новый Структура("title" , Наименование);
|
СвойстваЛиста = Новый Структура("title" , Наименование);
|
||||||
Лист = Новый Структура("properties", СвойстваЛиста);
|
Лист = Новый Структура("properties", СвойстваЛиста);
|
||||||
|
|
||||||
Возврат Лист;
|
Возврат Лист;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьМассивДанныхЯчеек(Знач СтруктураЗначений, Знач ОсновноеИзмерение, Знач Лист)
|
Функция СформироватьМассивДанныхЯчеек(Знач СтруктураЗначений, Знач ОсновноеИзмерение, Знач Лист)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
МассивДанных = Новый Массив;
|
МассивДанных = Новый Массив;
|
||||||
|
|
||||||
Для Каждого ДанныеЯчейки Из СтруктураЗначений Цикл
|
Для Каждого ДанныеЯчейки Из СтруктураЗначений Цикл
|
||||||
|
|
||||||
ТекущееЗначение = ДанныеЯчейки.Значение;
|
ТекущееЗначение = ДанныеЯчейки.Значение;
|
||||||
ТекущийКлюч = ДанныеЯчейки.Ключ;
|
ТекущийКлюч = ДанныеЯчейки.Ключ;
|
||||||
|
|
||||||
ДобавитьИмяЛиста(ТекущийКлюч, Лист);
|
ДобавитьИмяЛиста(ТекущийКлюч, Лист);
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьМассив(ТекущееЗначение);
|
OPI_ПреобразованиеТипов.ПолучитьМассив(ТекущееЗначение);
|
||||||
|
|
||||||
ТекущиеДанные = Новый Соответствие;
|
ТекущиеДанные = Новый Соответствие;
|
||||||
ТекущийМассив = Новый Массив;
|
ТекущийМассив = Новый Массив;
|
||||||
|
|
||||||
ТекущийМассив.Добавить(ТекущееЗначение);
|
ТекущийМассив.Добавить(ТекущееЗначение);
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("range" , ТекущийКлюч , "Строка", ТекущиеДанные);
|
OPI_Инструменты.ДобавитьПоле("range" , ТекущийКлюч , "Строка", ТекущиеДанные);
|
||||||
OPI_Инструменты.ДобавитьПоле("values" , ТекущийМассив , "Массив", ТекущиеДанные);
|
OPI_Инструменты.ДобавитьПоле("values" , ТекущийМассив , "Массив", ТекущиеДанные);
|
||||||
OPI_Инструменты.ДобавитьПоле("majorDimension", ОсновноеИзмерение, "Строка", ТекущиеДанные);
|
OPI_Инструменты.ДобавитьПоле("majorDimension", ОсновноеИзмерение, "Строка", ТекущиеДанные);
|
||||||
|
|
||||||
МассивДанных.Добавить(ТекущиеДанные);
|
МассивДанных.Добавить(ТекущиеДанные);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат МассивДанных;
|
Возврат МассивДанных;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура СформироватьМассивИменЯчеек(Знач МассивИмен, Знач Лист)
|
Процедура СформироватьМассивИменЯчеек(Знач МассивИмен, Знач Лист)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
Для Н = 0 По МассивИмен.ВГраница() Цикл
|
Для Н = 0 По МассивИмен.ВГраница() Цикл
|
||||||
ДобавитьИмяЛиста(МассивИмен[Н], Лист);
|
ДобавитьИмяЛиста(МассивИмен[Н], Лист);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -41,97 +41,97 @@
|
|||||||
|
|
||||||
// Сформировать ссылку получения кода
|
// Сформировать ссылку получения кода
|
||||||
// Возвращает URL для авторизации в браузере
|
// Возвращает URL для авторизации в браузере
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientID - Строка - Client ID - id
|
// ClientID - Строка - Client ID - id
|
||||||
// Calendar - Булево - разрешение на методы Calendar - calendar
|
// Calendar - Булево - разрешение на методы Calendar - calendar
|
||||||
// Drive - Булево - разрешение на методы Drive - drive
|
// Drive - Булево - разрешение на методы Drive - drive
|
||||||
// Sheets - Булево - разрешение на методы Sheets - sheets
|
// Sheets - Булево - разрешение на методы Sheets - sheets
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка - Ссылка получения кода
|
// Строка - Ссылка получения кода
|
||||||
Функция СформироватьСсылкуПолученияКода(Знач ClientID
|
Функция СформироватьСсылкуПолученияКода(Знач ClientID
|
||||||
, Знач Calendar = Истина
|
, Знач Calendar = Истина
|
||||||
, Знач Drive = Истина
|
, Знач Drive = Истина
|
||||||
, Знач Sheets = Истина) Экспорт
|
, Знач Sheets = Истина) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Calendar);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Calendar);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Sheets);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Sheets);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Drive);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Drive);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/auth";
|
URL = "https://accounts.google.com/o/oauth2/auth";
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("response_type", "code");
|
ПараметрыURL.Вставить("response_type", "code");
|
||||||
ПараметрыURL.Вставить("client_id" , ClientID);
|
ПараметрыURL.Вставить("client_id" , ClientID);
|
||||||
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
||||||
ПараметрыURL.Вставить("access_type" , "offline");
|
ПараметрыURL.Вставить("access_type" , "offline");
|
||||||
ПараметрыURL.Вставить("scope" , ПолучитьСписокРазрешений(Calendar, Drive, Sheets));
|
ПараметрыURL.Вставить("scope" , ПолучитьСписокРазрешений(Calendar, Drive, Sheets));
|
||||||
|
|
||||||
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
||||||
|
|
||||||
Возврат URL;
|
Возврат URL;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить токен по коду
|
// Получить токен по коду
|
||||||
// Получает токен по коду из авторизации в бразуере
|
// Получает токен по коду из авторизации в бразуере
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientID - Строка - Client ID - id
|
// ClientID - Строка - Client ID - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// Code - Строка - Code из браузера - code
|
// Code - Строка - Code из браузера - code
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьТокенПоКоду(Знач ClientID, Знач ClientSecret, Знач Code) Экспорт
|
Функция ПолучитьТокенПоКоду(Знач ClientID, Знач ClientSecret, Знач Code) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Code);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Code);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("grant_type" , "authorization_code");
|
ПараметрыURL.Вставить("grant_type" , "authorization_code");
|
||||||
ПараметрыURL.Вставить("client_id" , ClientID);
|
ПараметрыURL.Вставить("client_id" , ClientID);
|
||||||
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
||||||
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
||||||
ПараметрыURL.Вставить("code" , Code);
|
ПараметрыURL.Вставить("code" , Code);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить токен
|
// Обновить токен
|
||||||
// Обновляет токен по Refresh token
|
// Обновляет токен по Refresh token
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientID - Строка - Client ID - id
|
// ClientID - Строка - Client ID - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// RefreshToken - Строка - Refresh token - refresh
|
// RefreshToken - Строка - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОбновитьТокен(Знач ClientID, Знач ClientSecret, Знач RefreshToken) Экспорт
|
Функция ОбновитьТокен(Знач ClientID, Знач ClientSecret, Знач RefreshToken) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("grant_type" , "refresh_token");
|
ПараметрыURL.Вставить("grant_type" , "refresh_token");
|
||||||
ПараметрыURL.Вставить("client_id" , ClientID);
|
ПараметрыURL.Вставить("client_id" , ClientID);
|
||||||
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
||||||
ПараметрыURL.Вставить("refresh_token", RefreshToken);
|
ПараметрыURL.Вставить("refresh_token", RefreshToken);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -141,14 +141,14 @@
|
|||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
|
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
||||||
|
|
||||||
Возврат Заголовки;
|
Возврат Заголовки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -156,23 +156,23 @@
|
|||||||
#Область СлужебныеПроцедурыИфункции
|
#Область СлужебныеПроцедурыИфункции
|
||||||
|
|
||||||
Функция ПолучитьСписокРазрешений(Calendar, Drive, Sheets)
|
Функция ПолучитьСписокРазрешений(Calendar, Drive, Sheets)
|
||||||
|
|
||||||
МассивРазрешений = Новый Массив;
|
МассивРазрешений = Новый Массив;
|
||||||
|
|
||||||
Если Calendar Тогда
|
Если Calendar Тогда
|
||||||
МассивРазрешений.Добавить("https://www.googleapis.com/auth/calendar");
|
МассивРазрешений.Добавить("https://www.googleapis.com/auth/calendar");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Drive Тогда
|
Если Drive Тогда
|
||||||
МассивРазрешений.Добавить("https://www.googleapis.com/auth/drive");
|
МассивРазрешений.Добавить("https://www.googleapis.com/auth/drive");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Sheets Тогда
|
Если Sheets Тогда
|
||||||
МассивРазрешений.Добавить("https://www.googleapis.com/auth/spreadsheets");
|
МассивРазрешений.Добавить("https://www.googleapis.com/auth/spreadsheets");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат СтрСоединить(МассивРазрешений, " ");
|
Возврат СтрСоединить(МассивРазрешений, " ");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -48,18 +48,18 @@
|
|||||||
|
|
||||||
// Получить ссылку для авторизации
|
// Получить ссылку для авторизации
|
||||||
// Формирует ссылку для авторизации через браузер
|
// Формирует ссылку для авторизации через браузер
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка - URL для перехода в браузере
|
// Строка - URL для перехода в браузере
|
||||||
Функция ПолучитьСсылкуАвторизации(Параметры = "") Экспорт
|
Функция ПолучитьСсылкуАвторизации(Параметры = "") Экспорт
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
|
|
||||||
ПараметрыURL.Вставить("response_type" , "code");
|
ПараметрыURL.Вставить("response_type" , "code");
|
||||||
ПараметрыURL.Вставить("client_id" , Параметры_["client_id"]);
|
ПараметрыURL.Вставить("client_id" , Параметры_["client_id"]);
|
||||||
ПараметрыURL.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
ПараметрыURL.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
||||||
@ -67,27 +67,27 @@
|
|||||||
ПараметрыURL.Вставить("state" , "state");
|
ПараметрыURL.Вставить("state" , "state");
|
||||||
ПараметрыURL.Вставить("code_challenge" , "challenge");
|
ПараметрыURL.Вставить("code_challenge" , "challenge");
|
||||||
ПараметрыURL.Вставить("code_challenge_method", "plain");
|
ПараметрыURL.Вставить("code_challenge_method", "plain");
|
||||||
|
|
||||||
ПараметрыURL = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
ПараметрыURL = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
||||||
Линк = "https://twitter.com/i/oauth2/authorize" + ПараметрыURL;
|
Линк = "https://twitter.com/i/oauth2/authorize" + ПараметрыURL;
|
||||||
|
|
||||||
Возврат Линк;
|
Возврат Линк;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить токен
|
// Получить токен
|
||||||
// Получает токен по коду, полученному при авторизации по ссылке из ПолучитьСсылкуАвторизации
|
// Получает токен по коду, полученному при авторизации по ссылке из ПолучитьСсылкуАвторизации
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Код - Строка - Код, полученный из авторизации См.ПолучитьСсылкуАвторизации - code
|
// Код - Строка - Код, полученный из авторизации См.ПолучитьСсылкуАвторизации - code
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция ПолучитьТокен(Знач Код, Знач Параметры = "") Экспорт
|
Функция ПолучитьТокен(Знач Код, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Код);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Код);
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
|
||||||
ПараметрыЗапроса = Новый Структура;
|
ПараметрыЗапроса = Новый Структура;
|
||||||
@ -96,35 +96,35 @@
|
|||||||
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
||||||
ПараметрыЗапроса.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
ПараметрыЗапроса.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
||||||
ПараметрыЗапроса.Вставить("code_verifier", "challenge");
|
ПараметрыЗапроса.Вставить("code_verifier", "challenge");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, ПараметрыЗапроса, , Ложь);
|
, ПараметрыЗапроса, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить токен
|
// Обновить токен
|
||||||
// Обновляет v2 токен при помощи refresh_token
|
// Обновляет v2 токен при помощи refresh_token
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция ОбновитьТокен(Знач Параметры = "") Экспорт
|
Функция ОбновитьТокен(Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Refresh = "refresh_token";
|
Refresh = "refresh_token";
|
||||||
|
|
||||||
ПараметрыЗапроса = Новый Структура;
|
ПараметрыЗапроса = Новый Структура;
|
||||||
ПараметрыЗапроса.Вставить(Refresh , Параметры_[Refresh]);
|
ПараметрыЗапроса.Вставить(Refresh , Параметры_[Refresh]);
|
||||||
ПараметрыЗапроса.Вставить("grant_type" , Refresh);
|
ПараметрыЗапроса.Вставить("grant_type" , Refresh);
|
||||||
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, ПараметрыЗапроса, , Ложь);
|
, ПараметрыЗапроса, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -133,23 +133,23 @@
|
|||||||
// Метод для вставки в http-сервис, адрес которого указывается в redirect_uri
|
// Метод для вставки в http-сервис, адрес которого указывается в redirect_uri
|
||||||
// Вызывает метод получения токена, так как для получения токена из кода, приходящего
|
// Вызывает метод получения токена, так как для получения токена из кода, приходящего
|
||||||
// на redirect_uri после авторизации через браузер есть всего 30 секунд
|
// на redirect_uri после авторизации через браузер есть всего 30 секунд
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Запрос - HTTPСервисЗапрос - Запрос, приходящий на http-сервис
|
// Запрос - HTTPСервисЗапрос - Запрос, приходящий на http-сервис
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// HTTPОтвет, Произвольный, ДвоичныеДанные - Результат чтения JSON ответа сервера
|
// HTTPОтвет, Произвольный, ДвоичныеДанные - Результат чтения JSON ответа сервера
|
||||||
Функция ОбработкаВходящегоЗапросаПослеАвторизации(Запрос) Экспорт
|
Функция ОбработкаВходящегоЗапросаПослеАвторизации(Запрос) Экспорт
|
||||||
|
|
||||||
Код = Запрос.ПараметрыЗапроса["code"];
|
Код = Запрос.ПараметрыЗапроса["code"];
|
||||||
ОтветТокен = ПолучитьТокен(Код);
|
ОтветТокен = ПолучитьТокен(Код);
|
||||||
|
|
||||||
// BSLLS:CommentedCode-off
|
// BSLLS:CommentedCode-off
|
||||||
// Предпочтительное хранение токенов
|
// Предпочтительное хранение токенов
|
||||||
// Константы.TwitterRefresh.Установить(ОтветТокен["refresh_token"]);
|
// Константы.TwitterRefresh.Установить(ОтветТокен["refresh_token"]);
|
||||||
// Константы.TwitterToken.Установить(ОтветТокен["access_token"]);
|
// Константы.TwitterToken.Установить(ОтветТокен["access_token"]);
|
||||||
// BSLLS:CommentedCode-on
|
// BSLLS:CommentedCode-on
|
||||||
|
|
||||||
Возврат ОтветТокен;
|
Возврат ОтветТокен;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -160,189 +160,189 @@
|
|||||||
|
|
||||||
// !NOCLI
|
// !NOCLI
|
||||||
// Создать произвольный твит
|
// Создать произвольный твит
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита
|
// Текст - Строка - Текст твита
|
||||||
// МассивМедиа - Массив из Строка,ДвоичныеДанные - Массив двоичных данных или путей к файлам
|
// МассивМедиа - Массив из Строка,ДвоичныеДанные - Массив двоичных данных или путей к файлам
|
||||||
// МассивВариантовОпроса - Массив из Строка - Массив вариантов опроса, если необходимо
|
// МассивВариантовОпроса - Массив из Строка - Массив вариантов опроса, если необходимо
|
||||||
// ДлительностьОпроса - Строка,Число - Длительность опроса, если необходимо (опрос без длительности не создается)
|
// ДлительностьОпроса - Строка,Число - Длительность опроса, если необходимо (опрос без длительности не создается)
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьПроизвольныйТвит(Знач Текст = ""
|
Функция СоздатьПроизвольныйТвит(Знач Текст = ""
|
||||||
, Знач МассивМедиа = ""
|
, Знач МассивМедиа = ""
|
||||||
, Знач МассивВариантовОпроса = ""
|
, Знач МассивВариантовОпроса = ""
|
||||||
, Знач ДлительностьОпроса = ""
|
, Знач ДлительностьОпроса = ""
|
||||||
, Знач Параметры = "") Экспорт
|
, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДлительностьОпроса);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДлительностьОпроса);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивМедиа) Тогда
|
Если ЗначениеЗаполнено(МассивМедиа) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивМедиа);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивМедиа);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивВариантовОпроса) Тогда
|
Если ЗначениеЗаполнено(МассивВариантовОпроса) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивВариантовОпроса);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивВариантовОпроса);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
URL = "https://api.twitter.com/2/tweets";
|
URL = "https://api.twitter.com/2/tweets";
|
||||||
Массив = "Массив";
|
Массив = "Массив";
|
||||||
Поля = Новый Соответствие;
|
Поля = Новый Соответствие;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Текст) Тогда
|
Если ЗначениеЗаполнено(Текст) Тогда
|
||||||
Поля.Вставить("text", Текст);
|
Поля.Вставить("text", Текст);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(МассивВариантовОпроса) = Тип(Массив) И ЗначениеЗаполнено(ДлительностьОпроса) Тогда
|
Если ТипЗнч(МассивВариантовОпроса) = Тип(Массив) И ЗначениеЗаполнено(ДлительностьОпроса) Тогда
|
||||||
|
|
||||||
ДлительностьОпроса = Число(ДлительностьОпроса);
|
ДлительностьОпроса = Число(ДлительностьОпроса);
|
||||||
|
|
||||||
Если МассивВариантовОпроса.Количество() > 0 Тогда
|
Если МассивВариантовОпроса.Количество() > 0 Тогда
|
||||||
|
|
||||||
СтруктураВарианта = Новый Структура("options,duration_minutes", МассивВариантовОпроса, ДлительностьОпроса);
|
СтруктураВарианта = Новый Структура("options,duration_minutes", МассивВариантовОпроса, ДлительностьОпроса);
|
||||||
Поля.Вставить("poll", СтруктураВарианта);
|
Поля.Вставить("poll", СтруктураВарианта);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(МассивМедиа) = Тип(Массив) Тогда
|
Если ТипЗнч(МассивМедиа) = Тип(Массив) Тогда
|
||||||
Если МассивМедиа.Количество() > 0 Тогда
|
Если МассивМедиа.Количество() > 0 Тогда
|
||||||
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать текстовый твит
|
// Создать текстовый твит
|
||||||
// Создает твит без вложений
|
// Создает твит без вложений
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТекстовыйТвит(Знач Текст, Знач Параметры = "") Экспорт
|
Функция СоздатьТекстовыйТвит(Знач Текст, Знач Параметры = "") Экспорт
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, , , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, , , , Параметры);
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит картинки
|
// Создать твит картинки
|
||||||
// Создает твит с картинкой вложением
|
// Создает твит с картинкой вложением
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивКартинок - Массив из Строка,ДвоичныеДанные - Массив файлов картинок - pictures
|
// МассивКартинок - Массив из Строка,ДвоичныеДанные - Массив файлов картинок - pictures
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитКартинки(Знач Текст, Знач МассивКартинок, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитКартинки(Знач Текст, Знач МассивКартинок, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
МассивМедиа = ЗагрузитьМассивВложений(МассивКартинок, "photo", Параметры);
|
МассивМедиа = ЗагрузитьМассивВложений(МассивКартинок, "photo", Параметры);
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит гифки
|
// Создать твит гифки
|
||||||
// Создает твит с вложением-гифкой
|
// Создает твит с вложением-гифкой
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивГифок - Массив из Строка,ДвоичныеДанные - Массив файлов гифок - gifs
|
// МассивГифок - Массив из Строка,ДвоичныеДанные - Массив файлов гифок - gifs
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитГифки(Знач Текст, Знач МассивГифок, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитГифки(Знач Текст, Знач МассивГифок, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
МассивМедиа = ЗагрузитьМассивВложений(МассивГифок, "animated_gif", Параметры);
|
МассивМедиа = ЗагрузитьМассивВложений(МассивГифок, "animated_gif", Параметры);
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит видео
|
// Создать твит видео
|
||||||
// Создает твит с видеовложением
|
// Создает твит с видеовложением
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивВидео - Массив из Строка,ДвоичныеДанные - Массив файлов видео - videos
|
// МассивВидео - Массив из Строка,ДвоичныеДанные - Массив файлов видео - videos
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитВидео(Знач Текст, Знач МассивВидео, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитВидео(Знач Текст, Знач МассивВидео, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
МассивМедиа = ЗагрузитьМассивВложений(МассивВидео, "video", Параметры);
|
МассивМедиа = ЗагрузитьМассивВложений(МассивВидео, "video", Параметры);
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит опрос
|
// Создать твит опрос
|
||||||
// Создает твит с опросом
|
// Создает твит с опросом
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивВариантов - Массив из Строка - Массив вариантов опроса - options
|
// МассивВариантов - Массив из Строка - Массив вариантов опроса - options
|
||||||
// Длительность - Строка,Число - Длительность опроса - duration
|
// Длительность - Строка,Число - Длительность опроса - duration
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитОпрос(Знач Текст, Знач МассивВариантов, Знач Длительность, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитОпрос(Знач Текст, Знач МассивВариантов, Знач Длительность, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, , МассивВариантов, Длительность, Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, , МассивВариантов, Длительность, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить массив вложений !NOCLI
|
// Загрузить массив вложений !NOCLI
|
||||||
// Загружает файлы на сервер и возвращает их ID
|
// Загружает файлы на сервер и возвращает их ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// МассивФайлов - Массив из Строка, ДвоичныеДанные - Массив файлов
|
// МассивФайлов - Массив из Строка, ДвоичныеДанные - Массив файлов
|
||||||
// ТипВложений - Строка - Тип вложений
|
// ТипВложений - Строка - Тип вложений
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Массив Из Строка - Массив ID медиа
|
// Массив Из Строка - Массив ID медиа
|
||||||
Функция ЗагрузитьМассивВложений(Знач МассивФайлов, Знач ТипВложений, Знач Параметры = "") Экспорт
|
Функция ЗагрузитьМассивВложений(Знач МассивФайлов, Знач ТипВложений, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТипВложений);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТипВложений);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивФайлов);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивФайлов);
|
||||||
|
|
||||||
МассивМедиа = Новый Массив;
|
МассивМедиа = Новый Массив;
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
||||||
|
|
||||||
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ФайлОтправки);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ФайлОтправки);
|
||||||
|
|
||||||
Ответ = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_);
|
Ответ = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_);
|
||||||
IDМедиа = Ответ[MIS];
|
IDМедиа = Ответ[MIS];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(IDМедиа) Тогда
|
Если Не ЗначениеЗаполнено(IDМедиа) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
МассивМедиа.Добавить(IDМедиа);
|
МассивМедиа.Добавить(IDМедиа);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат МассивМедиа;
|
Возврат МассивМедиа;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -351,70 +351,70 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||||
|
|
||||||
ВидЗапроса = "POST";
|
ВидЗапроса = "POST";
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
||||||
|
|
||||||
Если Тип = "photo" Тогда
|
Если Тип = "photo" Тогда
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить("media_data" , Base64Строка(Файл));
|
Поля.Вставить("media_data" , Base64Строка(Файл));
|
||||||
Поля.Вставить("media_category", Тип);
|
Поля.Вставить("media_category", Тип);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Ответ = ЗагрузитьМедиаЧастями(Файл, Тип, ВидЗапроса, URL, Параметры_);
|
Ответ = ЗагрузитьМедиаЧастями(Файл, Тип, ВидЗапроса, URL, Параметры_);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьМедиаЧастями(Знач Файл, Знач Тип, Знач ВидЗапроса, Знач URL, Параметры)
|
Функция ЗагрузитьМедиаЧастями(Знач Файл, Знач Тип, Знач ВидЗапроса, Знач URL, Параметры)
|
||||||
|
|
||||||
Единица = 1024;
|
Единица = 1024;
|
||||||
Количество = 4;
|
Количество = 4;
|
||||||
MediaKey = "media_key";
|
MediaKey = "media_key";
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Размер = Файл.Размер();
|
Размер = Файл.Размер();
|
||||||
|
|
||||||
СоответствиеMIME = Новый Соответствие;
|
СоответствиеMIME = Новый Соответствие;
|
||||||
СоответствиеMIME.Вставить("photo" , "image/jpeg");
|
СоответствиеMIME.Вставить("photo" , "image/jpeg");
|
||||||
СоответствиеMIME.Вставить("video" , "video/mp4");
|
СоответствиеMIME.Вставить("video" , "video/mp4");
|
||||||
СоответствиеMIME.Вставить("animated_gif", "image/gif");
|
СоответствиеMIME.Вставить("animated_gif", "image/gif");
|
||||||
|
|
||||||
РазмерЧасти = Количество * Единица * Единица;
|
РазмерЧасти = Количество * Единица * Единица;
|
||||||
МассивЧтения = РазделитьДвоичныеДанные(Файл, РазмерЧасти);
|
МассивЧтения = РазделитьДвоичныеДанные(Файл, РазмерЧасти);
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить(Command , "INIT");
|
Поля.Вставить(Command , "INIT");
|
||||||
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
||||||
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
||||||
Поля.Вставить("media_category" , Тип);
|
Поля.Вставить("media_category" , Тип);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, ВидЗапроса, URL);
|
||||||
|
|
||||||
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
KeyИнициализации = ОтветИнициализации[MediaKey];
|
KeyИнициализации = ОтветИнициализации[MediaKey];
|
||||||
IDИнициализации = ОтветИнициализации[MIS];
|
IDИнициализации = ОтветИнициализации[MIS];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(KeyИнициализации) Или Не ЗначениеЗаполнено(IDИнициализации) Тогда
|
Если Не ЗначениеЗаполнено(KeyИнициализации) Или Не ЗначениеЗаполнено(IDИнициализации) Тогда
|
||||||
Возврат ОтветИнициализации;
|
Возврат ОтветИнициализации;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Счетчик = 0;
|
Счетчик = 0;
|
||||||
|
|
||||||
Для Каждого Часть Из МассивЧтения Цикл
|
Для Каждого Часть Из МассивЧтения Цикл
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить(Command , "APPEND");
|
Поля.Вставить(Command , "APPEND");
|
||||||
Поля.Вставить("media_key" , KeyИнициализации);
|
Поля.Вставить("media_key" , KeyИнициализации);
|
||||||
@ -422,111 +422,111 @@
|
|||||||
Поля.Вставить("media" , Часть);
|
Поля.Вставить("media" , Часть);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Новый Структура, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Новый Структура, ВидЗапроса, URL);
|
||||||
|
|
||||||
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
|
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
|
||||||
|
|
||||||
Счетчик = Счетчик + 1;
|
Счетчик = Счетчик + 1;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить(Command , "FINALIZE");
|
Поля.Вставить(Command , "FINALIZE");
|
||||||
Поля.Вставить("media_id", IDИнициализации);
|
Поля.Вставить("media_id", IDИнициализации);
|
||||||
|
|
||||||
СтатусОбработки = ПолучитьСтатусОбработки(Параметры, Поля, URL);
|
СтатусОбработки = ПолучитьСтатусОбработки(Параметры, Поля, URL);
|
||||||
|
|
||||||
Если Не ТипЗнч(СтатусОбработки) = Тип("Строка") Тогда
|
Если Не ТипЗнч(СтатусОбработки) = Тип("Строка") Тогда
|
||||||
Возврат СтатусОбработки;
|
Возврат СтатусОбработки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = ОжидатьЗавершенияОбработки(СтатусОбработки, IDИнициализации, URL, Параметры);
|
Ответ = ОжидатьЗавершенияОбработки(СтатусОбработки, IDИнициализации, URL, Параметры);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ОжидатьЗавершенияОбработки(Знач СтатусОбработки, Знач IDИнициализации, Знач URL, Знач Параметры)
|
Функция ОжидатьЗавершенияОбработки(Знач СтатусОбработки, Знач IDИнициализации, Знач URL, Знач Параметры)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
|
|
||||||
Поля.Вставить(Command , "STATUS");
|
Поля.Вставить(Command , "STATUS");
|
||||||
Поля.Вставить("media_id", IDИнициализации);
|
Поля.Вставить("media_id", IDИнициализации);
|
||||||
|
|
||||||
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
|
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "GET", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "GET", URL);
|
||||||
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
|
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
|
||||||
Информация = Ответ[ProcessingInfo];
|
Информация = Ответ[ProcessingInfo];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Информация) Тогда
|
Если Не ЗначениеЗаполнено(Информация) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
СтатусОбработки = Информация["state"];
|
СтатусОбработки = Информация["state"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если СтатусОбработки = "failed" Тогда
|
Если СтатусОбработки = "failed" Тогда
|
||||||
ВызватьИсключение "Твиттер не смог обработать загруженное вами видео";
|
ВызватьИсключение "Твиттер не смог обработать загруженное вами видео";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
|
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
|
||||||
|
|
||||||
// Здесь собрано определение данных, необходимых для работы.
|
// Здесь собрано определение данных, необходимых для работы.
|
||||||
// Для Twitter это довольно значительный набор, что обсуловлено наличием сразу 2-х API,
|
// Для Twitter это довольно значительный набор, что обсуловлено наличием сразу 2-х API,
|
||||||
// которые, при этом, созданы не для разныз задач, но просто являются версиями друг друга.
|
// которые, при этом, созданы не для разныз задач, но просто являются версиями друг друга.
|
||||||
// Актуальной версией API является v2 и она требует получения временных токенов. Несмотря на то,
|
// Актуальной версией API является v2 и она требует получения временных токенов. Несмотря на то,
|
||||||
// что Twitter настаивает на использовании этой актуальной версии, они как-то умудрились не перенести
|
// что Twitter настаивает на использовании этой актуальной версии, они как-то умудрились не перенести
|
||||||
// механизм загрузки файлов и некоторые другие из старой версии - v1.1. Поэтому что-то нужно делать
|
// механизм загрузки файлов и некоторые другие из старой версии - v1.1. Поэтому что-то нужно делать
|
||||||
// на версии 1.1, а что-то на 2: вплоть до того что они убрали возможность постить твиты из v1.1,
|
// на версии 1.1, а что-то на 2: вплоть до того что они убрали возможность постить твиты из v1.1,
|
||||||
// но только через нее в твит можно добавить картинку. При этом способы авторизации и токены у них разные
|
// но только через нее в твит можно добавить картинку. При этом способы авторизации и токены у них разные
|
||||||
|
|
||||||
// Мировая гигокорпорация Илона Маска, кстати, напоминаю ;)
|
// Мировая гигокорпорация Илона Маска, кстати, напоминаю ;)
|
||||||
|
|
||||||
// P.S Далее часто упоминается "страница настроек Twitter Developer" - это
|
// P.S Далее часто упоминается "страница настроек Twitter Developer" - это
|
||||||
// https://developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем)
|
// https://developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем)
|
||||||
|
|
||||||
Параметры_ = Новый Соответствие;
|
Параметры_ = Новый Соответствие;
|
||||||
Разрешения = "tweet.read tweet.write tweet.moderate.write users.read "
|
Разрешения = "tweet.read tweet.write tweet.moderate.write users.read "
|
||||||
+ "follows.read follows.write offline.access space.read mute.read "
|
+ "follows.read follows.write offline.access space.read mute.read "
|
||||||
+ "mute.write like.read like.write list.read list.write block.read "
|
+ "mute.write like.read like.write list.read list.write block.read "
|
||||||
+ "block.write bookmark.read bookmark.write";
|
+ "block.write bookmark.read bookmark.write";
|
||||||
|
|
||||||
// Данные для API v2
|
// Данные для API v2
|
||||||
|
|
||||||
// redirect_uri - URL вашего http-сервиса (или другого обработчика запросов) для авторизации
|
// redirect_uri - URL вашего http-сервиса (или другого обработчика запросов) для авторизации
|
||||||
// scope - набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен
|
// scope - набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен
|
||||||
// client_id - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
// client_id - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
||||||
// client_secret - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
// client_secret - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
||||||
// access_token - ПолучитьСсылкуАвторизации() -> Браузер -> code придет на redirect_uri -> ПолучитьТокен(code)
|
// access_token - ПолучитьСсылкуАвторизации() -> Браузер -> code придет на redirect_uri -> ПолучитьТокен(code)
|
||||||
// refresh_token - Приходит вместе с access_token и используется для его обновления (время жизни access_token - 2 ч)
|
// refresh_token - Приходит вместе с access_token и используется для его обновления (время жизни access_token - 2 ч)
|
||||||
// Обновление происходит методом ОбновитьТокен с новыми access_token и refresh_token.
|
// Обновление происходит методом ОбновитьТокен с новыми access_token и refresh_token.
|
||||||
// При следующем обновлении нужно использовать уже новый refresh_token, так что захардкодить
|
// При следующем обновлении нужно использовать уже новый refresh_token, так что захардкодить
|
||||||
// не получится (access_token тоже не получится)
|
// не получится (access_token тоже не получится)
|
||||||
|
|
||||||
// |--> ОбновитьТокен() ->|access_token --> Используется в т-нии 2-х часов для запросов
|
// |--> ОбновитьТокен() ->|access_token --> Используется в т-нии 2-х часов для запросов
|
||||||
// | |refresh_token --|
|
// | |refresh_token --|
|
||||||
// |--------[через 2 ч.]-------------------|
|
// |--------[через 2 ч.]-------------------|
|
||||||
|
|
||||||
// Данные для API v1.1
|
// Данные для API v1.1
|
||||||
|
|
||||||
// oauth_token - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_token - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
// oauth_token_secret - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_token_secret - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
// oauth_consumer_key - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_consumer_key - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
// oauth_consumer_secret - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_consumer_secret - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
|
|
||||||
// Эти токены обновлять не надо
|
// Эти токены обновлять не надо
|
||||||
|
|
||||||
Параметры_.Вставить("redirect_uri" , "");
|
Параметры_.Вставить("redirect_uri" , "");
|
||||||
Параметры_.Вставить("scope" , Разрешения);
|
Параметры_.Вставить("scope" , Разрешения);
|
||||||
Параметры_.Вставить("client_id" , "");
|
Параметры_.Вставить("client_id" , "");
|
||||||
@ -537,9 +537,9 @@
|
|||||||
Параметры_.Вставить("oauth_token_secret" , "");
|
Параметры_.Вставить("oauth_token_secret" , "");
|
||||||
Параметры_.Вставить("oauth_consumer_key" , "");
|
Параметры_.Вставить("oauth_consumer_key" , "");
|
||||||
Параметры_.Вставить("oauth_consumer_secret", "");
|
Параметры_.Вставить("oauth_consumer_secret", "");
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Параметры);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Параметры);
|
||||||
|
|
||||||
Если ТипЗнч(Параметры) = Тип("Структура") Или ТипЗнч(Параметры) = Тип("Соответствие") Тогда
|
Если ТипЗнч(Параметры) = Тип("Структура") Или ТипЗнч(Параметры) = Тип("Соответствие") Тогда
|
||||||
Для Каждого ПереданныйПараметр Из Параметры Цикл
|
Для Каждого ПереданныйПараметр Из Параметры Цикл
|
||||||
Параметры_.Вставить(ПереданныйПараметр.Ключ, OPI_Инструменты.ЧислоВСтроку(ПереданныйПараметр.Значение));
|
Параметры_.Вставить(ПереданныйПараметр.Ключ, OPI_Инструменты.ЧислоВСтроку(ПереданныйПараметр.Значение));
|
||||||
@ -551,7 +551,7 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьЗаголовокАвторизацииV1(Знач Параметры, Знач Поля, Знач ВидЗапроса, Знач URL)
|
Функция СоздатьЗаголовокАвторизацииV1(Знач Параметры, Знач Поля, Знач ВидЗапроса, Знач URL)
|
||||||
|
|
||||||
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||||
ЗаголовокАвторизации = "";
|
ЗаголовокАвторизации = "";
|
||||||
МетодХэширования = "HMAC-SHA1";
|
МетодХэширования = "HMAC-SHA1";
|
||||||
@ -565,123 +565,123 @@
|
|||||||
ТаблицаПараметров = Новый ТаблицаЗначений;
|
ТаблицаПараметров = Новый ТаблицаЗначений;
|
||||||
ТаблицаПараметров.Колонки.Добавить("Ключ");
|
ТаблицаПараметров.Колонки.Добавить("Ключ");
|
||||||
ТаблицаПараметров.Колонки.Добавить("Значение");
|
ТаблицаПараметров.Колонки.Добавить("Значение");
|
||||||
|
|
||||||
Для Каждого Поле Из Поля Цикл
|
Для Каждого Поле Из Поля Цикл
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = Поле.Ключ;
|
НоваяСтрока.Ключ = Поле.Ключ;
|
||||||
НоваяСтрока.Значение = Поле.Значение;
|
НоваяСтрока.Значение = Поле.Значение;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = OCK;
|
НоваяСтрока.Ключ = OCK;
|
||||||
НоваяСтрока.Значение = Параметры[OCK];
|
НоваяСтрока.Значение = Параметры[OCK];
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = OTK;
|
НоваяСтрока.Ключ = OTK;
|
||||||
НоваяСтрока.Значение = Параметры[OTK];
|
НоваяСтрока.Значение = Параметры[OTK];
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_version";
|
НоваяСтрока.Ключ = "oauth_version";
|
||||||
НоваяСтрока.Значение = ВерсияАпи;
|
НоваяСтрока.Значение = ВерсияАпи;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_signature_method";
|
НоваяСтрока.Ключ = "oauth_signature_method";
|
||||||
НоваяСтрока.Значение = МетодХэширования;
|
НоваяСтрока.Значение = МетодХэширования;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_timestamp";
|
НоваяСтрока.Ключ = "oauth_timestamp";
|
||||||
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_nonce";
|
НоваяСтрока.Ключ = "oauth_nonce";
|
||||||
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
||||||
|
|
||||||
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
||||||
|
|
||||||
СтрокаТаблицы.Ключ = КодироватьСтроку(СтрокаТаблицы.Ключ, СпособКодированияСтроки.КодировкаURL);
|
СтрокаТаблицы.Ключ = КодироватьСтроку(СтрокаТаблицы.Ключ, СпособКодированияСтроки.КодировкаURL);
|
||||||
СтрокаТаблицы.Значение = КодироватьСтроку(СтрокаТаблицы.Значение, СпособКодированияСтроки.КодировкаURL);
|
СтрокаТаблицы.Значение = КодироватьСтроку(СтрокаТаблицы.Значение, СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ТаблицаПараметров.Сортировать("Ключ");
|
ТаблицаПараметров.Сортировать("Ключ");
|
||||||
|
|
||||||
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
||||||
|
|
||||||
СтрокаСигнатуры = СтрокаСигнатуры
|
СтрокаСигнатуры = СтрокаСигнатуры
|
||||||
+ СтрокаТаблицы.Ключ
|
+ СтрокаТаблицы.Ключ
|
||||||
+ "="
|
+ " ="
|
||||||
+ СтрокаТаблицы.Значение
|
+ СтрокаТаблицы.Значение
|
||||||
+ "&";
|
+ "&";
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтрокаСигнатуры = Лев(СтрокаСигнатуры, СтрДлина(СтрокаСигнатуры) - 1);
|
СтрокаСигнатуры = Лев(СтрокаСигнатуры, СтрДлина(СтрокаСигнатуры) - 1);
|
||||||
СтрокаСигнатуры = вРег(ВидЗапроса)
|
СтрокаСигнатуры = вРег(ВидЗапроса)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ КодироватьСтроку(URL, СпособКодированияСтроки.КодировкаURL)
|
+ КодироватьСтроку(URL , СпособКодированияСтроки.КодировкаURL)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ КодироватьСтроку(СтрокаСигнатуры, СпособКодированияСтроки.КодировкаURL);
|
+ КодироватьСтроку(СтрокаСигнатуры, СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
Подпись = КодироватьСтроку(Параметры["oauth_consumer_secret"], СпособКодированияСтроки.КодировкаURL)
|
Подпись = КодироватьСтроку(Параметры["oauth_consumer_secret"], СпособКодированияСтроки.КодировкаURL)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ КодироватьСтроку(Параметры["oauth_token_secret"], СпособКодированияСтроки.КодировкаURL);
|
+ КодироватьСтроку(Параметры["oauth_token_secret"], СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
Сигнатура = OPI_Криптография.HMAC(ПолучитьДвоичныеДанныеИзСтроки(Подпись)
|
Сигнатура = OPI_Криптография.HMAC(ПолучитьДвоичныеДанныеИзСтроки(Подпись)
|
||||||
, ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры)
|
, ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры)
|
||||||
, ХешФункция.SHA1
|
, ХешФункция.SHA1
|
||||||
, 64);
|
, 64);
|
||||||
|
|
||||||
Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL);
|
Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
Разделитель = """,";
|
Разделитель = """,";
|
||||||
ЗаголовокАвторизации = ЗаголовокАвторизации
|
ЗаголовокАвторизации = ЗаголовокАвторизации
|
||||||
+ "OAuth "
|
+ "OAuth "
|
||||||
+ "oauth_consumer_key=""" + Параметры[OCK] + Разделитель
|
+ "oauth_consumer_key =""" + Параметры[OCK] + Разделитель
|
||||||
+ "oauth_token=""" + Параметры[OTK] + Разделитель
|
+ "oauth_token =""" + Параметры[OTK] + Разделитель
|
||||||
+ "oauth_signature_method=""" + МетодХэширования + Разделитель
|
+ "oauth_signature_method=""" + МетодХэширования + Разделитель
|
||||||
+ "oauth_timestamp=""" + ТекущаяДатаUNIX + Разделитель
|
+ "oauth_timestamp =""" + ТекущаяДатаUNIX + Разделитель
|
||||||
+ "oauth_nonce=""" + ТекущаяДатаUNIX + Разделитель
|
+ "oauth_nonce =""" + ТекущаяДатаUNIX + Разделитель
|
||||||
+ "oauth_version=""" + ВерсияАпи + Разделитель
|
+ "oauth_version =""" + ВерсияАпи + Разделитель
|
||||||
+ "oauth_signature=""" + Сигнатура;
|
+ "oauth_signature =""" + Сигнатура;
|
||||||
|
|
||||||
СоответствиеЗаголовка = Новый Соответствие;
|
СоответствиеЗаголовка = Новый Соответствие;
|
||||||
СоответствиеЗаголовка.Вставить("authorization", ЗаголовокАвторизации);
|
СоответствиеЗаголовка.Вставить("authorization", ЗаголовокАвторизации);
|
||||||
|
|
||||||
Возврат СоответствиеЗаголовка;
|
Возврат СоответствиеЗаголовка;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьЗаголовокАвторизацииV2(Знач Параметры)
|
Функция СоздатьЗаголовокАвторизацииV2(Знач Параметры)
|
||||||
|
|
||||||
СоответствиеВозврата = Новый Соответствие;
|
СоответствиеВозврата = Новый Соответствие;
|
||||||
СоответствиеВозврата.Вставить("Authorization", "Bearer " + Параметры["access_token"]);
|
СоответствиеВозврата.Вставить("Authorization", "Bearer " + Параметры["access_token"]);
|
||||||
|
|
||||||
Возврат СоответствиеВозврата;
|
Возврат СоответствиеВозврата;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьСтатусОбработки(Знач Параметры, Знач Поля, Знач URL)
|
Функция ПолучитьСтатусОбработки(Знач Параметры, Знач Поля, Знач URL)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "POST", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "POST", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
Информация = Ответ[ProcessingInfo];
|
Информация = Ответ[ProcessingInfo];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Информация) Тогда
|
Если Не ЗначениеЗаполнено(Информация) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
СтатусОбработки = Информация["state"];
|
СтатусОбработки = Информация["state"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
Иначе
|
Иначе
|
||||||
Возврат СтатусОбработки;
|
Возврат СтатусОбработки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -23,7 +23,7 @@
|
|||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
// 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
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||||
@ -46,55 +46,55 @@
|
|||||||
// который будет возвращать 200 и подлинный SSL сертификат. Если есть сертификат и база опубликована
|
// который будет возвращать 200 и подлинный SSL сертификат. Если есть сертификат и база опубликована
|
||||||
// на сервере - можно использовать http-сервис. Туда же будет приходить и информация о новых сообщениях
|
// на сервере - можно использовать http-сервис. Туда же будет приходить и информация о новых сообщениях
|
||||||
// Viber периодически стучит по адресу Webhook, так что если он будет неактивен, то все перестанет работать
|
// Viber периодически стучит по адресу Webhook, так что если он будет неактивен, то все перестанет работать
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен Viber - token
|
// Токен - Строка - Токен Viber - token
|
||||||
// URL - Строка - URL для установки Webhook - url
|
// URL - Строка - URL для установки Webhook - url
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("auth_token" , Токен, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("auth_token" , Токен, "Строка", Параметры);
|
||||||
|
|
||||||
Возврат OPI_Инструменты.Post("https://chatapi.viber.com/pa/set_webhook", Параметры);
|
Возврат OPI_Инструменты.Post("https://chatapi.viber.com/pa/set_webhook", Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить информацию о канале
|
// Получить информацию о канале
|
||||||
// Тут можно получить ID пользователей канала. ID для бота необходимо получать из прилетов на Webhook
|
// Тут можно получить ID пользователей канала. ID для бота необходимо получать из прилетов на Webhook
|
||||||
// ID пользователя из информации о канале не подойдет для отправки сообщений через бота - они разные
|
// ID пользователя из информации о канале не подойдет для отправки сообщений через бота - они разные
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ПолучитьИнформациюОКанале(Знач Токен) Экспорт
|
Функция ПолучитьИнформациюОКанале(Знач Токен) Экспорт
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_account_info";
|
URL = "https://chatapi.viber.com/pa/get_account_info";
|
||||||
Возврат OPI_Инструменты.Get(URL, , ТокенВЗаголовки(Токен));
|
Возврат OPI_Инструменты.Get(URL, , ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить данные пользователя
|
// Получить данные пользователя
|
||||||
// Получает информацию о пользователе по ID
|
// Получает информацию о пользователе по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// IDПользователя - Строка, Число - ID пользователя Viber - user
|
// IDПользователя - Строка, Число - ID пользователя Viber - user
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ПолучитьДанныеПользователя(Знач Токен, Знач IDПользователя) Экспорт
|
Функция ПолучитьДанныеПользователя(Знач Токен, Знач IDПользователя) Экспорт
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_user_details";
|
URL = "https://chatapi.viber.com/pa/get_user_details";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("id", IDПользователя, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("id", IDПользователя, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@ -103,22 +103,22 @@
|
|||||||
|
|
||||||
// Получить онлайн пользователей
|
// Получить онлайн пользователей
|
||||||
// Получает статус пользователя или нескольких пользователей по ID
|
// Получает статус пользователя или нескольких пользователей по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен Viber - token
|
// Токен - Строка - Токен Viber - token
|
||||||
// IDПользователей - Строка,Число,Массив из Строка,Число - ID пользователей(я) Viber - users
|
// IDПользователей - Строка,Число,Массив из Строка,Число - ID пользователей(я) Viber - users
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ПолучитьОнлайнПользователей(Знач Токен, Знач IDПользователей) Экспорт
|
Функция ПолучитьОнлайнПользователей(Знач Токен, Знач IDПользователей) Экспорт
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_online";
|
URL = "https://chatapi.viber.com/pa/get_online";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("ids", IDПользователей, "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("ids", IDПользователей, "Коллекция", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -129,14 +129,14 @@
|
|||||||
|
|
||||||
// Отправить текстовое сообщение
|
// Отправить текстовое сообщение
|
||||||
// Отправляет текстовое сообщение в чат или канал
|
// Отправляет текстовое сообщение в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Текст - Строка - Текст сообщения - text
|
// Текст - Строка - Текст сообщения - text
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
// Клавиатура - Структура из Строка - См. СформироватьКлавиатуруИзМассиваКнопок - keyboard
|
// Клавиатура - Структура из Строка - См. СформироватьКлавиатуруИзМассиваКнопок - keyboard
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьТекстовоеСообщение(Знач Токен
|
Функция ОтправитьТекстовоеСообщение(Знач Токен
|
||||||
@ -144,40 +144,40 @@
|
|||||||
, Знач IDПользователя
|
, Знач IDПользователя
|
||||||
, Знач ОтправкаВКанал
|
, Знач ОтправкаВКанал
|
||||||
, Знач Клавиатура = "") Экспорт
|
, Знач Клавиатура = "") Экспорт
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "text", IDПользователя, ОтправкаВКанал, , Текст, Клавиатура);
|
Возврат ОтправитьСообщение(Токен, "text", IDПользователя, ОтправкаВКанал, , Текст, Клавиатура);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить картинку
|
// Отправить картинку
|
||||||
// Отправляет картинку в чат или канал
|
// Отправляет картинку в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - URL картинки - picture
|
// URL - Строка - URL картинки - picture
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - булево - Отправка в канал или в чат бота - ischannel
|
||||||
// Описание - Строка - Аннотация к картинке - description
|
// Описание - Строка - Аннотация к картинке - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьКартинку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал, Знач Описание = "") Экспорт
|
Функция ОтправитьКартинку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "picture", IDПользователя, ОтправкаВКанал, URL, Описание);
|
Возврат ОтправитьСообщение(Токен, "picture", IDПользователя, ОтправкаВКанал, URL, Описание);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить файл
|
// Отправить файл
|
||||||
// Отправляет файл (документ) в чат или канал
|
// Отправляет файл (документ) в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - URL файла - file
|
// URL - Строка - URL файла - file
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
// Расширение - Строка - Расширение файла - ext
|
// Расширение - Строка - Расширение файла - ext
|
||||||
// Размер - Число - Размер файла. Если не заполнен > определяется автоматически скачиванием файла - size
|
// Размер - Число - Размер файла. Если не заполнен > определяется автоматически скачиванием файла - size
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьФайл(Знач Токен
|
Функция ОтправитьФайл(Знач Токен
|
||||||
@ -186,36 +186,36 @@
|
|||||||
, Знач ОтправкаВКанал
|
, Знач ОтправкаВКанал
|
||||||
, Знач Расширение
|
, Знач Расширение
|
||||||
, Знач Размер = "") Экспорт
|
, Знач Размер = "") Экспорт
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Размер) Тогда
|
Если Не ЗначениеЗаполнено(Размер) Тогда
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL);
|
Ответ = OPI_Инструменты.Get(URL);
|
||||||
Размер = Ответ.Размер();
|
Размер = Ответ.Размер();
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Строка_ = "Строка";
|
Строка_ = "Строка";
|
||||||
Расширение = СтрЗаменить(Расширение, ".", "");
|
Расширение = СтрЗаменить(Расширение, ".", "");
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("URL" , URL , Строка_, Параметры);
|
OPI_Инструменты.ДобавитьПоле("URL" , URL , Строка_, Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("Размер" , Размер , Строка_, Параметры);
|
OPI_Инструменты.ДобавитьПоле("Размер" , Размер , Строка_, Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("Расширение", Расширение, Строка_, Параметры);
|
OPI_Инструменты.ДобавитьПоле("Расширение", Расширение, Строка_, Параметры);
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "file", IDПользователя, ОтправкаВКанал, Параметры);
|
Возврат ОтправитьСообщение(Токен, "file", IDПользователя, ОтправкаВКанал, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить контакт
|
// Отправить контакт
|
||||||
// Отправляет контакт с номером телефона в чат или канал
|
// Отправляет контакт с номером телефона в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИмяКонтакта - Строка - Имя контакта - name
|
// ИмяКонтакта - Строка - Имя контакта - name
|
||||||
// НомерТелефона - Строка - Номер телефона - phone
|
// НомерТелефона - Строка - Номер телефона - phone
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьКонтакт(Знач Токен
|
Функция ОтправитьКонтакт(Знач Токен
|
||||||
@ -223,91 +223,91 @@
|
|||||||
, Знач НомерТелефона
|
, Знач НомерТелефона
|
||||||
, Знач IDПользователя
|
, Знач IDПользователя
|
||||||
, Знач ОтправкаВКанал) Экспорт
|
, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , ИмяКонтакта , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , ИмяКонтакта , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("phone_number", НомерТелефона, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("phone_number", НомерТелефона, "Строка", Параметры);
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "contact", IDПользователя, ОтправкаВКанал, Параметры);
|
Возврат ОтправитьСообщение(Токен, "contact", IDПользователя, ОтправкаВКанал, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить локацию
|
// Отправить локацию
|
||||||
// Отправляет географические координаты в чат или канал
|
// Отправляет географические координаты в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Широта - Строка,Число - Географическая широта - lat
|
// Широта - Строка,Число - Географическая широта - lat
|
||||||
// Долгота - Строка,Число - Географическая долгота - long
|
// Долгота - Строка,Число - Географическая долгота - long
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("lat", Широта , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("lat", Широта , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("lon", Долгота, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("lon", Долгота, "Строка", Параметры);
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, Параметры);
|
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить ссылку
|
// Отправить ссылку
|
||||||
// Отправляет URL с предпросмотром в чат или канал
|
// Отправляет URL с предпросмотром в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Отправляемая ссылка - url
|
// URL - Строка - Отправляемая ссылка - url
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьСсылку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
Функция ОтправитьСсылку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "url", IDПользователя, ОтправкаВКанал, URL);
|
Возврат ОтправитьСообщение(Токен, "url", IDПользователя, ОтправкаВКанал, URL);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Сформировать клавиатуру из массива кнопок
|
// Сформировать клавиатуру из массива кнопок
|
||||||
// Возвращает структура клавиатуры для сообщений
|
// Возвращает структура клавиатуры для сообщений
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// МассивКнопок - Массив из Строка - Массив кнопок - buttons
|
// МассивКнопок - Массив из Строка - Массив кнопок - buttons
|
||||||
// ЦветКнопок - Строка - HEX цвет кнопок с # в начале - color
|
// ЦветКнопок - Строка - HEX цвет кнопок с # в начале - color
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Сформировать клавиатуру из массива кнопок:
|
// Структура - Сформировать клавиатуру из массива кнопок:
|
||||||
// * Buttons - Массив из Структура - Массив сформированных кнопок
|
// * Buttons - Массив из Структура - Массив сформированных кнопок
|
||||||
// * Type - Строка - Тип клавиатуры
|
// * Type - Строка - Тип клавиатуры
|
||||||
Функция СформироватьКлавиатуруИзМассиваКнопок(Знач МассивКнопок, Знач ЦветКнопок = "#2db9b9") Экспорт
|
Функция СформироватьКлавиатуруИзМассиваКнопок(Знач МассивКнопок, Знач ЦветКнопок = "#2db9b9") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ЦветКнопок);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ЦветКнопок);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКнопок);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКнопок);
|
||||||
|
|
||||||
МассивСтруктурКнопок = Новый Массив;
|
МассивСтруктурКнопок = Новый Массив;
|
||||||
СтруктураКлавиатуры = Новый Структура;
|
СтруктураКлавиатуры = Новый Структура;
|
||||||
|
|
||||||
Для Каждого ТекстКнопки Из МассивКнопок Цикл
|
Для Каждого ТекстКнопки Из МассивКнопок Цикл
|
||||||
|
|
||||||
СтруктураКнопки = Новый Структура;
|
СтруктураКнопки = Новый Структура;
|
||||||
СтруктураКнопки.Вставить("ActionType", "reply");
|
СтруктураКнопки.Вставить("ActionType", "reply");
|
||||||
СтруктураКнопки.Вставить("ActionBody", ТекстКнопки);
|
СтруктураКнопки.Вставить("ActionBody", ТекстКнопки);
|
||||||
СтруктураКнопки.Вставить("Text" , ТекстКнопки);
|
СтруктураКнопки.Вставить("Text" , ТекстКнопки);
|
||||||
СтруктураКнопки.Вставить("BgColor" , ЦветКнопок);
|
СтруктураКнопки.Вставить("BgColor" , ЦветКнопок);
|
||||||
СтруктураКнопки.Вставить("Coloumns" , 3);
|
СтруктураКнопки.Вставить("Coloumns" , 3);
|
||||||
|
|
||||||
МассивСтруктурКнопок.Добавить(СтруктураКнопки);
|
МассивСтруктурКнопок.Добавить(СтруктураКнопки);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтруктураКлавиатуры.Вставить("Buttons", МассивСтруктурКнопок);
|
СтруктураКлавиатуры.Вставить("Buttons", МассивСтруктурКнопок);
|
||||||
СтруктураКлавиатуры.Вставить("Type" , "keyboard");
|
СтруктураКлавиатуры.Вставить("Type" , "keyboard");
|
||||||
|
|
||||||
Возврат СтруктураКлавиатуры;
|
Возврат СтруктураКлавиатуры;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -317,7 +317,7 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
// Отправить сообщение.
|
// Отправить сообщение.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен
|
// Токен - Строка - Токен
|
||||||
// Тип - Строка - Тип отправляемого сообщения
|
// Тип - Строка - Тип отправляемого сообщения
|
||||||
@ -328,8 +328,8 @@
|
|||||||
// * Размер - Число, Строка - Размер файла в случае отправке
|
// * Размер - Число, Строка - Размер файла в случае отправке
|
||||||
// * Расширение - Строка - Расширение файла в случае отправки
|
// * Расширение - Строка - Расширение файла в случае отправки
|
||||||
// Текст - Строка - Текст сообщения
|
// Текст - Строка - Текст сообщения
|
||||||
// Клавиатура - Структура из Строка - Клавиатура, если нужна, см. СформироватьКлавиатуруИзМассиваКнопок
|
// Клавиатура - Структура из Строка - Клавиатура, если нужна, см. СформироватьКлавиатуруИзМассиваКнопок
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Произвольный, HTTPОтвет - Отправить сообщение
|
// Произвольный, HTTPОтвет - Отправить сообщение
|
||||||
Функция ОтправитьСообщение(Знач Токен
|
Функция ОтправитьСообщение(Знач Токен
|
||||||
@ -339,28 +339,28 @@
|
|||||||
, Знач Значение = ""
|
, Знач Значение = ""
|
||||||
, Знач Текст = ""
|
, Знач Текст = ""
|
||||||
, Знач Клавиатура = "")
|
, Знач Клавиатура = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ЭтоКанал);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(ЭтоКанал);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Клавиатура);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Клавиатура);
|
||||||
|
|
||||||
СтруктураПараметров = ВернутьСтандартныеПараметры();
|
СтруктураПараметров = ВернутьСтандартныеПараметры();
|
||||||
СтруктураПараметров.Вставить("type", Тип);
|
СтруктураПараметров.Вставить("type", Тип);
|
||||||
|
|
||||||
Если (Тип = "text" Или Тип = "picture") И ЗначениеЗаполнено(Текст) Тогда
|
Если (Тип = "text" Или Тип = "picture") И ЗначениеЗаполнено(Текст) Тогда
|
||||||
СтруктураПараметров.Вставить("text", Текст);
|
СтруктураПараметров.Вставить("text", Текст);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Клавиатура) = Тип("Структура") Тогда
|
Если ТипЗнч(Клавиатура) = Тип("Структура") Тогда
|
||||||
СтруктураПараметров.Вставить("keyboard", Клавиатура);
|
СтруктураПараметров.Вставить("keyboard", Клавиатура);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Значение) Тогда
|
Если ЗначениеЗаполнено(Значение) Тогда
|
||||||
|
|
||||||
Если Тип = "file" Тогда
|
Если Тип = "file" Тогда
|
||||||
СтруктураПараметров.Вставить("media" , Значение["URL"]);
|
СтруктураПараметров.Вставить("media" , Значение["URL"]);
|
||||||
СтруктураПараметров.Вставить("size" , Значение["Размер"]);
|
СтруктураПараметров.Вставить("size" , Значение["Размер"]);
|
||||||
СтруктураПараметров.Вставить("file_name", "Файл." + Значение["Расширение"]);
|
СтруктураПараметров.Вставить("file_name", "Файл." + Значение["Расширение"]);
|
||||||
@ -371,49 +371,49 @@
|
|||||||
Иначе
|
Иначе
|
||||||
СтруктураПараметров.Вставить("media" , Значение);
|
СтруктураПараметров.Вставить("media" , Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЭтоКанал Тогда
|
Если ЭтоКанал Тогда
|
||||||
СтруктураПараметров.Вставить("from", IDПользователя);
|
СтруктураПараметров.Вставить("from" , IDПользователя);
|
||||||
URL = "https://chatapi.viber.com/pa/post";
|
URL = "https://chatapi.viber.com/pa/post";
|
||||||
Иначе
|
Иначе
|
||||||
СтруктураПараметров.Вставить("receiver", IDПользователя);
|
СтруктураПараметров.Вставить("receiver", IDПользователя);
|
||||||
URL = "https://chatapi.viber.com/pa/send_message";
|
URL = "https://chatapi.viber.com/pa/send_message";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
|
Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
|
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
|
||||||
Исключение
|
Исключение
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ВернутьСтандартныеПараметры()
|
Функция ВернутьСтандартныеПараметры()
|
||||||
|
|
||||||
СтруктураОтправителя = Новый Структура;
|
СтруктураОтправителя = Новый Структура;
|
||||||
СтруктураОтправителя.Вставить("name" , "Bot");
|
СтруктураОтправителя.Вставить("name" , "Bot");
|
||||||
СтруктураОтправителя.Вставить("avatar", "");
|
СтруктураОтправителя.Вставить("avatar", "");
|
||||||
|
|
||||||
СтруктураПараметров = Новый Структура;
|
СтруктураПараметров = Новый Структура;
|
||||||
СтруктураПараметров.Вставить("sender", СтруктураОтправителя);
|
СтруктураПараметров.Вставить("sender" , СтруктураОтправителя);
|
||||||
СтруктураПараметров.Вставить("min_api_version", 1);
|
СтруктураПараметров.Вставить("min_api_version", 1);
|
||||||
|
|
||||||
Возврат СтруктураПараметров;
|
Возврат СтруктураПараметров;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ТокенВЗаголовки(Знач Токен)
|
Функция ТокенВЗаголовки(Знач Токен)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
СтруктураЗаголовков = Новый Соответствие;
|
СтруктураЗаголовков = Новый Соответствие;
|
||||||
СтруктураЗаголовков.Вставить("X-Viber-Auth-Token", Токен);
|
СтруктураЗаголовков.Вставить("X-Viber-Auth-Token", Токен);
|
||||||
Возврат СтруктураЗаголовков;
|
Возврат СтруктураЗаголовков;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
//@skip-check wrong-string-literal-content
|
//@skip-check wrong-string-literal-content
|
||||||
|
|
||||||
// Раскомментировать, если выполняется OneScript
|
// Раскомментировать, если выполняется OneScript
|
||||||
#Использовать "../../tools"
|
#Использовать "../../tools"
|
||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
@ -45,217 +45,217 @@
|
|||||||
|
|
||||||
// Получить информацию о диске
|
// Получить информацию о диске
|
||||||
// Получает информацию о текущем диске
|
// Получает информацию о текущем диске
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьИнформациюОДиске(Знач Токен) Экспорт
|
Функция ПолучитьИнформациюОДиске(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk", , Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk", , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать папку
|
// Создать папку
|
||||||
// Создает каталог на диске
|
// Создает каталог на диске
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к созаваемой папке - path
|
// Путь - Строка - Путь к созаваемой папке - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт
|
Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить объект
|
// Получить объект
|
||||||
// Получает информацию об объекте диска по заданному пути
|
// Получает информацию об объекте диска по заданному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к папке или файлу - path
|
// Путь - Строка - Путь к папке или файлу - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьОбъект(Знач Токен, Знач Путь) Экспорт
|
Функция ПолучитьОбъект(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить объект
|
// Удалить объект
|
||||||
// Удаляет объект по заданному пути
|
// Удаляет объект по заданному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к удаляемой папке или файлу - path
|
// Путь - Строка - Путь к удаляемой папке или файлу - path
|
||||||
// ВКорзину - Булево - В корзину - can
|
// ВКорзину - Булево - В корзину - can
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач ВКорзину = Истина) Экспорт
|
Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач ВКорзину = Истина) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ВКорзину);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(ВКорзину);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("permanently", Не ВКорзину);
|
Параметры.Вставить("permanently", Не ВКорзину);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Delete("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать копию объекта
|
// Создать копию объекта
|
||||||
// Создает копию объекта по заданному пути и пути к оригиналу
|
// Создает копию объекта по заданному пути и пути к оригиналу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Оригинал - Строка - Путь к оригинальному файлу или каталогу - from
|
// Оригинал - Строка - Путь к оригинальному файлу или каталогу - from
|
||||||
// Путь - Строка - Путь назначения для копии - to
|
// Путь - Строка - Путь назначения для копии - to
|
||||||
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция СоздатьКопиюОбъекта(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
Функция СоздатьКопиюОбъекта(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("from" , Оригинал);
|
Параметры.Вставить("from" , Оригинал);
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("overwrite" , Перезаписывать);
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить ссылку для скачивания
|
// Получить ссылку для скачивания
|
||||||
// Получает ссылку для скачивания файла
|
// Получает ссылку для скачивания файла
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к файлу для скачивания - path
|
// Путь - Строка - Путь к файлу для скачивания - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСсылкуДляСкачивания(Знач Токен, Знач Путь) Экспорт
|
Функция ПолучитьСсылкуДляСкачивания(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Скачать файл
|
// Скачать файл
|
||||||
// Скачивает файл по указанному пути
|
// Скачивает файл по указанному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к файлу для скачивания - path
|
// Путь - Строка - Путь к файлу для скачивания - path
|
||||||
// ПутьСохранения - Строка - Путь сохранения файла - out
|
// ПутьСохранения - Строка - Путь сохранения файла - out
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
||||||
Функция СкачатьФайл(Знач Токен, Знач Путь, Знач ПутьСохранения = "") Экспорт
|
Функция СкачатьФайл(Знач Токен, Знач Путь, Знач ПутьСохранения = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьСохранения);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьСохранения);
|
||||||
Ответ = ПолучитьСсылкуДляСкачивания(Токен, Путь);
|
Ответ = ПолучитьСсылкуДляСкачивания(Токен, Путь);
|
||||||
URL = Ответ["href"];
|
URL = Ответ["href"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URL) Тогда
|
Если Не ЗначениеЗаполнено(URL) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , , ПутьСохранения);
|
Ответ = OPI_Инструменты.Get(URL, , , ПутьСохранения);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список файлов
|
// Получить список файлов
|
||||||
// Получает список файлов с или без отбора по типу
|
// Получает список файлов с или без отбора по типу
|
||||||
// Список доступных типов: audio, backup, book, compressed, data, development,
|
// Список доступных типов: audio, backup, book, compressed, data, development,
|
||||||
// diskimage, document, encoded, executable, flash, font,
|
// diskimage, document, encoded, executable, flash, font,
|
||||||
// mage, settings, spreadsheet, text, unknown, video, web
|
// mage, settings, spreadsheet, text, unknown, video, web
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Количество - Число,Строка - Количество возвращаемых объектов - amount
|
// Количество - Число,Строка - Количество возвращаемых объектов - amount
|
||||||
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
||||||
// ОтборПоТипу - Строка - Отбор по типу файла - type
|
// ОтборПоТипу - Строка - Отбор по типу файла - type
|
||||||
// СортироватьПоДате - Булево - Истина > сортировать по дате, Ложь > по алфавиту - datesort
|
// СортироватьПоДате - Булево - Истина > сортировать по дате, Ложь > по алфавиту - datesort
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСписокФайлов(Знач Токен
|
Функция ПолучитьСписокФайлов(Знач Токен
|
||||||
@ -263,50 +263,50 @@
|
|||||||
, Знач СмещениеОтНачала = 0
|
, Знач СмещениеОтНачала = 0
|
||||||
, Знач ОтборПоТипу = ""
|
, Знач ОтборПоТипу = ""
|
||||||
, Знач СортироватьПоДате = Ложь) Экспорт
|
, Знач СортироватьПоДате = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОтборПоТипу);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОтборПоТипу);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(СортироватьПоДате);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(СортироватьПоДате);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Количество) Тогда
|
Если ЗначениеЗаполнено(Количество) Тогда
|
||||||
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
||||||
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ОтборПоТипу) Тогда
|
Если ЗначениеЗаполнено(ОтборПоТипу) Тогда
|
||||||
Параметры.Вставить("media_type", ОтборПоТипу);
|
Параметры.Вставить("media_type", ОтборПоТипу);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если СортироватьПоДате Тогда
|
Если СортироватьПоДате Тогда
|
||||||
Назначение = "last-uploaded";
|
Назначение = "last-uploaded";
|
||||||
Иначе
|
Иначе
|
||||||
Назначение = "files";
|
Назначение = "files";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Назначение, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Назначение, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Переместить объект
|
// Переместить объект
|
||||||
// Перемещает объект по заданному пути и пути к оригиналу
|
// Перемещает объект по заданному пути и пути к оригиналу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Оригинал - Строка - Путь к оригинальному файлу или папке - from
|
// Оригинал - Строка - Путь к оригинальному файлу или папке - from
|
||||||
// Путь - Строка - Путь назначение для перемещения - to
|
// Путь - Строка - Путь назначение для перемещения - to
|
||||||
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПереместитьОбъект(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
Функция ПереместитьОбъект(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
||||||
@ -315,97 +315,97 @@
|
|||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("from" , Оригинал);
|
Параметры.Вставить("from" , Оригинал);
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("overwrite" , Перезаписывать);
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить файл
|
// Загрузить файл
|
||||||
// Загружает файл на диск по заданному пути
|
// Загружает файл на диск по заданному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь для сохранение файла на Диске - path
|
// Путь - Строка - Путь для сохранение файла на Диске - path
|
||||||
// Файл - Строка,ДвоичныеДанные - Файл для загрузки - file
|
// Файл - Строка,ДвоичныеДанные - Файл для загрузки - file
|
||||||
// Перезаписывать - Булево - Перезаписывать, если файл с таким именем уже существует - rewrite
|
// Перезаписывать - Булево - Перезаписывать, если файл с таким именем уже существует - rewrite
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Файл, Знач Перезаписывать = Ложь) Экспорт
|
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Файл, Знач Перезаписывать = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Href = "href";
|
Href = "href";
|
||||||
Файл = Новый Структура("file", Файл);
|
Файл = Новый Структура("file", Файл);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("overwrite" , Перезаписывать);
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Параметры, Заголовки);
|
||||||
URL = Ответ[Href];
|
URL = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URL) Тогда
|
Если Не ЗначениеЗаполнено(URL) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.PutMultipart(URL, Новый Структура(), Файл, "multipart", Заголовки);
|
Ответ = OPI_Инструменты.PutMultipart(URL, Новый Структура(), Файл, "multipart", Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить файл по URL
|
// Загрузить файл по URL
|
||||||
// Загружает файл на диск, забирая его по заданному URL
|
// Загружает файл на диск, забирая его по заданному URL
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь помещения загруженного файла - path
|
// Путь - Строка - Путь помещения загруженного файла - path
|
||||||
// Адрес - Строка - URL файла - url
|
// Адрес - Строка - URL файла - url
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ЗагрузитьФайлПоURL(Знач Токен, Знач Путь, Знач Адрес) Экспорт
|
Функция ЗагрузитьФайлПоURL(Знач Токен, Знач Путь, Знач Адрес) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("url" , КодироватьСтроку(Адрес, СпособКодированияСтроки.КодировкаURL));
|
Параметры.Вставить("url" , КодироватьСтроку(Адрес, СпособКодированияСтроки.КодировкаURL));
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -414,186 +414,186 @@
|
|||||||
|
|
||||||
// Опубликовать объект
|
// Опубликовать объект
|
||||||
// Публикует объект диска в публичный доступ
|
// Публикует объект диска в публичный доступ
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к публикуемому объекту - path
|
// Путь - Строка - Путь к публикуемому объекту - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ОпубликоватьОбъект(Знач Токен, Знач Путь) Экспорт
|
Функция ОпубликоватьОбъект(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Истина);
|
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Истина);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отменить публикацию объекта
|
// Отменить публикацию объекта
|
||||||
// Отменяет публикацию ранее опубликованного объекта
|
// Отменяет публикацию ранее опубликованного объекта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к опубликованному ранее объекту - path
|
// Путь - Строка - Путь к опубликованному ранее объекту - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ОтменитьПубликациюОбъекта(Знач Токен, Знач Путь) Экспорт
|
Функция ОтменитьПубликациюОбъекта(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Ложь);
|
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Ложь);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список опубликованных объектов.
|
// Получить список опубликованных объектов.
|
||||||
// Получает список опубликованных объектов
|
// Получает список опубликованных объектов
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Количество - Число - Количество возвращаемых объектов - amount
|
// Количество - Число - Количество возвращаемых объектов - amount
|
||||||
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСписокОпубликованныхОбъектов(Знач Токен, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
Функция ПолучитьСписокОпубликованныхОбъектов(Знач Токен, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Количество) Тогда
|
Если ЗначениеЗаполнено(Количество) Тогда
|
||||||
Параметры.Вставить("limit", Количество);
|
Параметры.Вставить("limit", Количество);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
||||||
Параметры.Вставить("offset", СмещениеОтНачала);
|
Параметры.Вставить("offset", СмещениеОтНачала);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить публичный объект
|
// Получить публичный объект
|
||||||
// Получает информацию об опубликованном объекте по его URL
|
// Получает информацию об опубликованном объекте по его URL
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Адрес объекта - url
|
// URL - Строка - Адрес объекта - url
|
||||||
// Количество - Число - Количество возвращаемых вложенных объектов (для каталога) - amount
|
// Количество - Число - Количество возвращаемых вложенных объектов (для каталога) - amount
|
||||||
// СмещениеОтНачала - Число - Смещение для получение вложенных объектов не из начала списка - offset
|
// СмещениеОтНачала - Число - Смещение для получение вложенных объектов не из начала списка - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьПубличныйОбъект(Знач Токен, Знач URL, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
Функция ПолучитьПубличныйОбъект(Знач Токен, Знач URL, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Количество) Тогда
|
Если ЗначениеЗаполнено(Количество) Тогда
|
||||||
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
||||||
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры.Вставить("public_key", URL);
|
Параметры.Вставить("public_key", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить ссылку скачивания публичного объекта
|
// Получить ссылку скачивания публичного объекта
|
||||||
// Получает прямую ссылку для скачивания публичного объекта
|
// Получает прямую ссылку для скачивания публичного объекта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Адрес объекта - url
|
// URL - Строка - Адрес объекта - url
|
||||||
// Путь - Строка - Путь внутри объекта - path
|
// Путь - Строка - Путь внутри объекта - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСсылкуСкачиванияПубличногоОбъекта(Знач Токен, Знач URL, Знач Путь = "") Экспорт
|
Функция ПолучитьСсылкуСкачиванияПубличногоОбъекта(Знач Токен, Знач URL, Знач Путь = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Путь) Тогда
|
Если ЗначениеЗаполнено(Путь) Тогда
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры.Вставить("public_key", URL);
|
Параметры.Вставить("public_key", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Сохранить публичный объект на диск
|
// Сохранить публичный объект на диск
|
||||||
// Сохраняет публичный объект на ваш диск
|
// Сохраняет публичный объект на ваш диск
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Адрес объекта - url
|
// URL - Строка - Адрес объекта - url
|
||||||
// Откуда - Строка - Путь внутри публичного каталога (только для папок) - from
|
// Откуда - Строка - Путь внутри публичного каталога (только для папок) - from
|
||||||
// Куда - Строка - Путь сохранения файла - to
|
// Куда - Строка - Путь сохранения файла - to
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция СохранитьПубличныйОбъектНаДиск(Знач Токен, Знач URL, Откуда = "", Куда = "") Экспорт
|
Функция СохранитьПубличныйОбъектНаДиск(Знач Токен, Знач URL, Откуда = "", Куда = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Адрес = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
Адрес = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("public_key", КодироватьСтроку(URL, СпособКодированияСтроки.КодировкаURL));
|
Параметры.Вставить("public_key", КодироватьСтроку(URL, СпособКодированияСтроки.КодировкаURL));
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Откуда) Тогда
|
Если ЗначениеЗаполнено(Откуда) Тогда
|
||||||
Параметры.Вставить("path", Откуда);
|
Параметры.Вставить("path", Откуда);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Куда) Тогда
|
Если ЗначениеЗаполнено(Куда) Тогда
|
||||||
Параметры.Вставить("save_path", Куда);
|
Параметры.Вставить("save_path", Куда);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(Адрес + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(Адрес + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -601,42 +601,42 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ЗаголовокАвторизации(Знач Токен)
|
Функция ЗаголовокАвторизации(Знач Токен)
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Authorization", "OAuth " + Токен);
|
Заголовки.Вставить("Authorization", "OAuth " + Токен);
|
||||||
|
|
||||||
Возврат Заголовки;
|
Возврат Заголовки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПереключениеОбщегоДоступа(Знач Токен, Знач Путь, Знач ОбщийДоступ)
|
Функция ПереключениеОбщегоДоступа(Знач Токен, Знач Путь, Знач ОбщийДоступ)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ОбщийДоступ);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(ОбщийДоступ);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Назначение = ?(ОбщийДоступ, "publish", "unpublish");
|
Назначение = ?(ОбщийДоступ, "publish", "unpublish");
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Назначение;
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Назначение;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -41,77 +41,77 @@
|
|||||||
|
|
||||||
// Получить код подтверждения
|
// Получить код подтверждения
|
||||||
// Получает код подтверждения и адрес страницы, на которой его необходимо ввести
|
// Получает код подтверждения и адрес страницы, на которой его необходимо ввести
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientId - Строка - Client id - id
|
// ClientId - Строка - Client id - id
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьКодПодтверждения(Знач ClientId) Экспорт
|
Функция ПолучитьКодПодтверждения(Знач ClientId) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
||||||
|
|
||||||
Параметры = Новый Структура("client_id", ClientId);
|
Параметры = Новый Структура("client_id", ClientId);
|
||||||
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/device/code", Параметры, , Ложь);
|
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/device/code", Параметры, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Преобразовать код в токен
|
// Преобразовать код в токен
|
||||||
// Преобразовывает код в токен после ввода кода при выполнении ПолучитьКодПодтверждения
|
// Преобразовывает код в токен после ввода кода при выполнении ПолучитьКодПодтверждения
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientId - Строка - Client id - id
|
// ClientId - Строка - Client id - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// КодУстройства - Строка - device_code из ПолучитьКодПодтверждения() - device
|
// КодУстройства - Строка - device_code из ПолучитьКодПодтверждения() - device
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПреобразоватьКодВТокен(Знач ClientId, Знач ClientSecret, Знач КодУстройства) Экспорт
|
Функция ПреобразоватьКодВТокен(Знач ClientId, Знач ClientSecret, Знач КодУстройства) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КодУстройства);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КодУстройства);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("grant_type" , "device_code");
|
Параметры.Вставить("grant_type" , "device_code");
|
||||||
Параметры.Вставить("code" , КодУстройства);
|
Параметры.Вставить("code" , КодУстройства);
|
||||||
Параметры.Вставить("client_id" , ClientId);
|
Параметры.Вставить("client_id" , ClientId);
|
||||||
Параметры.Вставить("client_secret" , ClientSecret);
|
Параметры.Вставить("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить токен
|
// Обновить токен
|
||||||
// Обновляет токен по Refresh token
|
// Обновляет токен по Refresh token
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientId - Строка - Client id - id
|
// ClientId - Строка - Client id - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// RefreshToken - Строка - Refresh token - refresh
|
// RefreshToken - Строка - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ОбновитьТокен(Знач ClientId, Знач ClientSecret, Знач RefreshToken) Экспорт
|
Функция ОбновитьТокен(Знач ClientId, Знач ClientSecret, Знач RefreshToken) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("grant_type" , "refresh_token");
|
Параметры.Вставить("grant_type" , "refresh_token");
|
||||||
Параметры.Вставить("refresh_token" , RefreshToken);
|
Параметры.Вставить("refresh_token" , RefreshToken);
|
||||||
Параметры.Вставить("client_id" , ClientId);
|
Параметры.Вставить("client_id" , ClientId);
|
||||||
Параметры.Вставить("client_secret" , ClientSecret);
|
Параметры.Вставить("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#Использовать "./internal"
|
#Использовать "./internal"
|
||||||
#Использовать "../../tools"
|
#Использовать "../../tools"
|
||||||
|
|
||||||
Тесты = OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс();
|
Тесты = OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс();
|
||||||
|
|
||||||
Для Каждого Тест Из Тесты Цикл
|
Для Каждого Тест Из Тесты Цикл
|
||||||
Выполнить("OPI_Тесты." + Тест + "()");
|
Выполнить("OPI_Тесты." + Тест + "()");
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -46,10 +46,10 @@
|
|||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Функция ПолучитьСоответствиеРазделовТестирования() Экспорт
|
Функция ПолучитьСоответствиеРазделовТестирования() Экспорт
|
||||||
|
|
||||||
СтандартныеЗависимости = "[Decode, Build]";
|
СтандартныеЗависимости = "[Decode, Build]";
|
||||||
ЗависимостиГугл = "Testing-GoogleWorkspace";
|
ЗависимостиГугл = "Testing-GoogleWorkspace";
|
||||||
|
|
||||||
Разделы = Новый Структура;
|
Разделы = Новый Структура;
|
||||||
Разделы.Вставить("Telegram" , СтандартныеЗависимости);
|
Разделы.Вставить("Telegram" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("VK" , СтандартныеЗависимости);
|
Разделы.Вставить("VK" , СтандартныеЗависимости);
|
||||||
@ -57,7 +57,7 @@
|
|||||||
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
|
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("YandexDisk" , СтандартныеЗависимости);
|
Разделы.Вставить("YandexDisk" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
||||||
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
||||||
@ -65,13 +65,13 @@
|
|||||||
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("Dropbox" , СтандартныеЗависимости);
|
Разделы.Вставить("Dropbox" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("Bitrix24" , СтандартныеЗависимости);
|
Разделы.Вставить("Bitrix24" , СтандартныеЗависимости);
|
||||||
|
|
||||||
Возврат Разделы;
|
Возврат Разделы;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьТаблицуТестов() Экспорт
|
Функция ПолучитьТаблицуТестов() Экспорт
|
||||||
|
|
||||||
Телеграм = "Telegram";
|
Телеграм = "Telegram";
|
||||||
ВКонтакте = "VK";
|
ВКонтакте = "VK";
|
||||||
ЯДиск = "YandexDisk";
|
ЯДиск = "YandexDisk";
|
||||||
@ -86,13 +86,13 @@
|
|||||||
АирТ = "Airtable";
|
АирТ = "Airtable";
|
||||||
ДропБокс = "Dropbox";
|
ДропБокс = "Dropbox";
|
||||||
Битрикс = "Bitrix24";
|
Битрикс = "Bitrix24";
|
||||||
|
|
||||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||||
ТаблицаТестов.Колонки.Добавить("Синоним");
|
ТаблицаТестов.Колонки.Добавить("Синоним");
|
||||||
ТаблицаТестов.Колонки.Добавить("Раздел");
|
ТаблицаТестов.Колонки.Добавить("Раздел");
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм);
|
||||||
@ -114,7 +114,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_СоздатьСоставнойПост" , "Создать/Удалить составной пост" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_СоздатьСоставнойПост" , "Создать/Удалить составной пост" , ВКонтакте);
|
||||||
@ -135,7 +135,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокСвойств" , "Получить список свойств" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокСвойств" , "Получить список свойств" , ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокЗаказов" , "Получить список заказов" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокЗаказов" , "Получить список заказов" , ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_ЗагрузитьВидео" , "Загрузить видео" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_ЗагрузитьВидео" , "Загрузить видео" , ВКонтакте);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске" , ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьПапку" , "Создать папку" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьПапку" , "Создать папку" , ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект", "Загрузить по URL и получить" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект", "Загрузить по URL и получить" , ЯДиск);
|
||||||
@ -146,25 +146,25 @@
|
|||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ПереместитьОбъект" , "Переместить объект" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ПереместитьОбъект" , "Переместить объект" , ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс);
|
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс);
|
||||||
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс);
|
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс);
|
||||||
НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс);
|
НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь);
|
||||||
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь);
|
||||||
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь);
|
||||||
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
|
||||||
НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв);
|
||||||
НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв);
|
||||||
НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГТ_СоздатьТаблицу" , "Создать таблицу" , Таблицы);
|
НовыйТест(ТаблицаТестов, "ГТ_СоздатьТаблицу" , "Создать таблицу" , Таблицы);
|
||||||
НовыйТест(ТаблицаТестов, "ГТ_ПолучитьТаблицу" , "Получить таблицу" , Таблицы);
|
НовыйТест(ТаблицаТестов, "ГТ_ПолучитьТаблицу" , "Получить таблицу" , Таблицы);
|
||||||
НовыйТест(ТаблицаТестов, "ГТ_ЗаполнитьОчиститьЯчейки" , "Заполнить/Очистить ячейки" , Таблицы);
|
НовыйТест(ТаблицаТестов, "ГТ_ЗаполнитьОчиститьЯчейки" , "Заполнить/Очистить ячейки" , Таблицы);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер);
|
||||||
@ -172,7 +172,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСВидео" , "Твит с видео" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСВидео" , "Твит с видео" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСГиф" , "Твит с гиф" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСГиф" , "Твит с гиф" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСОпросом" , "Твит с опросом" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСОпросом" , "Твит с опросом" , Твиттер);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьИнформациюОКанале" , "Получить информацию канала" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьИнформациюОКанале" , "Получить информацию канала" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьОнлайнПользователей" , "Получить онлайн пользователей" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьОнлайнПользователей" , "Получить онлайн пользователей" , Вайбер);
|
||||||
@ -182,7 +182,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКонтакт" , "Отправить контакт" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКонтакт" , "Отправить контакт" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн);
|
||||||
@ -192,7 +192,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокПользователей" , "Получить список пользователей" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокПользователей" , "Получить список пользователей" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак);
|
||||||
@ -206,12 +206,12 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьОбновитьТокен" , "Получить/Обновить токен" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьОбновитьТокен" , "Получить/Обновить токен" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайл" , "Загрузить файл" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайл" , "Загрузить файл" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайлПоURL" , "Загрузить файл по URL" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайлПоURL" , "Загрузить файл по URL" , ДропБокс);
|
||||||
@ -220,7 +220,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьАккаунт" , "Получить данные аккаунта" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьАккаунт" , "Получить данные аккаунта" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_РаботаСДоступами" , "Работа с доступами" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_РаботаСДоступами" , "Работа с доступами" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьСписокФайловПапки" , "Получить список файлов папки" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьСписокФайловПапки" , "Получить список файлов папки" , ДропБокс);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСТокеном" , "Работа с токеном" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСТокеном" , "Работа с токеном" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_СерверноеВремя" , "Серверное время" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_СерверноеВремя" , "Серверное время" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСНовостями" , "Работа с новостями" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСНовостями" , "Работа с новостями" , Битрикс);
|
||||||
@ -231,215 +231,215 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Б24_УчетРабочегоВремени" , "Учет рабочего времени" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_УчетРабочегоВремени" , "Учет рабочего времени" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСЧатами" , "Работа с чатами" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСЧатами" , "Работа с чатами" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСУведомлениями" , "Работа с уведомлениями" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСУведомлениями" , "Работа с уведомлениями" , Битрикс);
|
||||||
|
|
||||||
Возврат ТаблицаТестов;
|
Возврат ТаблицаТестов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ОжидаетЧто(Значение) Экспорт
|
Функция ОжидаетЧто(Значение) Экспорт
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Модуль = ПолучитьОбщийМодуль("ЮТест");
|
Модуль = ПолучитьОбщийМодуль("ЮТест");
|
||||||
Ожидаем = ТипЗнч(Модуль) = Тип("ОбщийМодуль");
|
Ожидаем = ТипЗнч(Модуль) = Тип("ОбщийМодуль");
|
||||||
Возврат Модуль.ОжидаетЧто(Значение);
|
Возврат Модуль.ОжидаетЧто(Значение);
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
Возврат Ожидаем.Что(Значение);
|
Возврат Ожидаем.Что(Значение);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьТестыЯкс() Экспорт
|
Функция СформироватьТестыЯкс() Экспорт
|
||||||
|
|
||||||
Модуль = ПолучитьОбщийМодуль("ЮТТесты");
|
Модуль = ПолучитьОбщийМодуль("ЮТТесты");
|
||||||
Разделы = ПолучитьСоответствиеРазделовТестирования();
|
Разделы = ПолучитьСоответствиеРазделовТестирования();
|
||||||
ТаблицаТестов = ПолучитьТаблицуТестов();
|
ТаблицаТестов = ПолучитьТаблицуТестов();
|
||||||
|
|
||||||
Для Каждого Раздел Из Разделы Цикл
|
Для Каждого Раздел Из Разделы Цикл
|
||||||
|
|
||||||
ТекущийРаздел = Раздел.Ключ;
|
ТекущийРаздел = Раздел.Ключ;
|
||||||
Отбор = Новый Структура("Раздел", ТекущийРаздел);
|
Отбор = Новый Структура("Раздел", ТекущийРаздел);
|
||||||
ТестыРаздела = ТаблицаТестов.НайтиСтроки(Отбор);
|
ТестыРаздела = ТаблицаТестов.НайтиСтроки(Отбор);
|
||||||
|
|
||||||
Набор = Модуль.ДобавитьТестовыйНабор(ТекущийРаздел);
|
Набор = Модуль.ДобавитьТестовыйНабор(ТекущийРаздел);
|
||||||
|
|
||||||
Для Каждого Тест Из ТестыРаздела Цикл
|
Для Каждого Тест Из ТестыРаздела Цикл
|
||||||
Набор.ДобавитьСерверныйТест(Тест.Метод, Тест.Синоним);
|
Набор.ДобавитьСерверныйТест(Тест.Метод, Тест.Синоним);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат "";
|
Возврат "";
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьТестыАссертс() Экспорт
|
Функция СформироватьТестыАссертс() Экспорт
|
||||||
|
|
||||||
ТаблицаТестов = ПолучитьТаблицуТестов();
|
ТаблицаТестов = ПолучитьТаблицуТестов();
|
||||||
МассивТестов = Новый Массив;
|
МассивТестов = Новый Массив;
|
||||||
|
|
||||||
Для Каждого Тест Из ТаблицаТестов Цикл
|
Для Каждого Тест Из ТаблицаТестов Цикл
|
||||||
МассивТестов.Добавить(Тест.Метод);
|
МассивТестов.Добавить(Тест.Метод);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат МассивТестов;
|
Возврат МассивТестов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьПараметр(Параметр) Экспорт
|
Функция ПолучитьПараметр(Параметр) Экспорт
|
||||||
|
|
||||||
Путь = ПутьКФайлуДанных();
|
Путь = ПутьКФайлуДанных();
|
||||||
Возврат ПолучитьЗначениеИзФайла(Параметр, Путь);
|
Возврат ПолучитьЗначениеИзФайла(Параметр, Путь);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьДвоичные(Параметр) Экспорт
|
Функция ПолучитьДвоичные(Параметр) Экспорт
|
||||||
|
|
||||||
Путь = ПутьКФайлуДанных();
|
Путь = ПутьКФайлуДанных();
|
||||||
ПараметрЛокальный = Параметр + "Local";
|
ПараметрЛокальный = Параметр + "Local";
|
||||||
ЗначениеОсновной = ПолучитьЗначениеИзФайла(Параметр , Путь);
|
ЗначениеОсновной = ПолучитьЗначениеИзФайла(Параметр , Путь);
|
||||||
ЗначениеЛокальный = ПолучитьЗначениеИзФайла(ПараметрЛокальный, Путь);
|
ЗначениеЛокальный = ПолучитьЗначениеИзФайла(ПараметрЛокальный, Путь);
|
||||||
|
|
||||||
ФайлЛокальный = Новый Файл(ЗначениеЛокальный);
|
ФайлЛокальный = Новый Файл(ЗначениеЛокальный);
|
||||||
|
|
||||||
Если ФайлЛокальный.Существует() Тогда
|
Если ФайлЛокальный.Существует() Тогда
|
||||||
Значение = Новый ДвоичныеДанные(ЗначениеЛокальный);
|
Значение = Новый ДвоичныеДанные(ЗначениеЛокальный);
|
||||||
Иначе
|
Иначе
|
||||||
Значение = ЗначениеОсновной;
|
Значение = ЗначениеОсновной;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Строка") Тогда
|
Если ТипЗнч(Значение) = Тип("Строка") Тогда
|
||||||
Значение = ПолучитьФайлПути(Значение, ПараметрЛокальный);
|
Значение = ПолучитьФайлПути(Значение, ПараметрЛокальный);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Значение;
|
Возврат Значение;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьФайлПути(Знач Путь, ПараметрЛокальный, Знач СохранятьЛокально = Истина) Экспорт
|
Функция ПолучитьФайлПути(Знач Путь, ПараметрЛокальный, Знач СохранятьЛокально = Истина) Экспорт
|
||||||
|
|
||||||
Если СтрНайти(Путь, "http") > 0
|
Если СтрНайти(Путь, "http") > 0
|
||||||
Или СтрНайти(Путь, "www") > 0 Тогда
|
Или СтрНайти(Путь, "www") > 0 Тогда
|
||||||
|
|
||||||
ИВФ = ПолучитьИмяВременногоФайла();
|
ИВФ = ПолучитьИмяВременногоФайла();
|
||||||
КопироватьФайл(Путь, ИВФ);
|
КопироватьФайл(Путь, ИВФ);
|
||||||
Путь = ИВФ;
|
Путь = ИВФ;
|
||||||
Двоичные = Новый ДвоичныеДанные(Путь);
|
Двоичные = Новый ДвоичныеДанные(Путь);
|
||||||
|
|
||||||
Если СохранятьЛокально Тогда
|
Если СохранятьЛокально Тогда
|
||||||
ЗаписатьПараметр(ПараметрЛокальный, ИВФ);
|
ЗаписатьПараметр(ПараметрЛокальный, ИВФ);
|
||||||
Иначе
|
Иначе
|
||||||
УдалитьФайлы(ИВФ);
|
УдалитьФайлы(ИВФ);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Двоичные = Новый ДвоичныеДанные(Путь);
|
Двоичные = Новый ДвоичныеДанные(Путь);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Двоичные;
|
Возврат Двоичные;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПараметрВКоллекцию(Параметр, Коллекция) Экспорт
|
Процедура ПараметрВКоллекцию(Параметр, Коллекция) Экспорт
|
||||||
|
|
||||||
Значение = ПолучитьПараметр(Параметр);
|
Значение = ПолучитьПараметр(Параметр);
|
||||||
Коллекция.Вставить(Параметр, Значение);
|
Коллекция.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ДвоичныеВКоллекцию(Параметр, Коллекция) Экспорт
|
Процедура ДвоичныеВКоллекцию(Параметр, Коллекция) Экспорт
|
||||||
|
|
||||||
Значение = ПолучитьДвоичные(Параметр);
|
Значение = ПолучитьДвоичные(Параметр);
|
||||||
Коллекция.Вставить(Параметр, Значение);
|
Коллекция.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьПараметр(Параметр, Значение) Экспорт
|
Процедура ЗаписатьПараметр(Параметр, Значение) Экспорт
|
||||||
|
|
||||||
Путь = ПутьКФайлуДанных();
|
Путь = ПутьКФайлуДанных();
|
||||||
ЗаписатьПараметрВФайл(Параметр, Значение, Путь);
|
ЗаписатьПараметрВФайл(Параметр, Значение, Путь);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьЛог(Знач Результат, Знач Метод, Знач Библиотека = "") Экспорт
|
Процедура ЗаписатьЛог(Знач Результат, Знач Метод, Знач Библиотека = "") Экспорт
|
||||||
|
|
||||||
Шапка = Строка(OPI_Инструменты.ПолучитьТекущуюДату()) + " | " + Метод;
|
Шапка = Строка(OPI_Инструменты.ПолучитьТекущуюДату()) + " | " + Метод;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
Данные = OPI_Инструменты.JSONСтрокой(Результат);
|
Данные = OPI_Инструменты.JSONСтрокой(Результат);
|
||||||
Исключение
|
Исключение
|
||||||
Данные = "Не JSON: " + Строка(Результат);
|
Данные = "Не JSON: " + Строка(Результат);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
Данные = " " + Данные;
|
Данные = " " + Данные;
|
||||||
|
|
||||||
Сообщить(Шапка);
|
Сообщить(Шапка);
|
||||||
Сообщить(Символы.ПС);
|
Сообщить(Символы.ПС);
|
||||||
Сообщить(Данные);
|
Сообщить(Данные);
|
||||||
Сообщить(Символы.ПС);
|
Сообщить(Символы.ПС);
|
||||||
Сообщить("---------------------------------");
|
Сообщить("---------------------------------");
|
||||||
Сообщить(Символы.ПС);
|
Сообщить(Символы.ПС);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Библиотека) Тогда
|
Если ЗначениеЗаполнено(Библиотека) Тогда
|
||||||
ЗаписатьФайлЛога(Данные, Метод, Библиотека);
|
ЗаписатьФайлЛога(Данные, Метод, Библиотека);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ПолучитьЗначениеИзФайла(Параметр, Путь)
|
Функция ПолучитьЗначениеИзФайла(Параметр, Путь)
|
||||||
|
|
||||||
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
||||||
Возврат ?(Значения.Свойство(Параметр), Значения[Параметр], "");
|
Возврат ?(Значения.Свойство(Параметр), Значения[Параметр], "");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПутьКФайлуДанных()
|
Функция ПутьКФайлуДанных()
|
||||||
|
|
||||||
Путь = "";
|
Путь = "";
|
||||||
ВозможныеПути = Новый Массив;
|
ВозможныеПути = Новый Массив;
|
||||||
ВозможныеПути.Добавить("./data.json");
|
ВозможныеПути.Добавить("./data.json");
|
||||||
ВозможныеПути.Добавить("C:\GDrive\Мой диск\data.json");
|
ВозможныеПути.Добавить("C:\GDrive\Мой диск\data.json");
|
||||||
ВозможныеПути.Добавить("D:\GD\Мой диск\data.json");
|
ВозможныеПути.Добавить("D:\GD\Мой диск\data.json");
|
||||||
|
|
||||||
Для Каждого ВозможныйПуть Из ВозможныеПути Цикл
|
Для Каждого ВозможныйПуть Из ВозможныеПути Цикл
|
||||||
|
|
||||||
ФайлРепозитория = Новый Файл(ВозможныйПуть);
|
ФайлРепозитория = Новый Файл(ВозможныйПуть);
|
||||||
|
|
||||||
Если ФайлРепозитория.Существует() Тогда
|
Если ФайлРепозитория.Существует() Тогда
|
||||||
Путь = ВозможныйПуть;
|
Путь = ВозможныйПуть;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат Путь;
|
Возврат Путь;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||||
|
|
||||||
Модуль = Вычислить(Имя);
|
Модуль = Вычислить(Имя);
|
||||||
|
|
||||||
Возврат Модуль;
|
Возврат Модуль;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура НовыйТест(ТаблицаЗначений, Знач Метод, Знач Синоним, Знач Раздел)
|
Процедура НовыйТест(ТаблицаЗначений, Знач Метод, Знач Синоним, Знач Раздел)
|
||||||
|
|
||||||
НовыйТест = ТаблицаЗначений.Добавить();
|
НовыйТест = ТаблицаЗначений.Добавить();
|
||||||
НовыйТест.Метод = Метод;
|
НовыйТест.Метод = Метод;
|
||||||
НовыйТест.Синоним = Синоним;
|
НовыйТест.Синоним = Синоним;
|
||||||
НовыйТест.Раздел = Раздел;
|
НовыйТест.Раздел = Раздел;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьПараметрВФайл(Знач Параметр, Знач Значение, Знач Путь)
|
Процедура ЗаписатьПараметрВФайл(Знач Параметр, Знач Значение, Знач Путь)
|
||||||
|
|
||||||
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
||||||
Значения.Вставить(Параметр, Значение);
|
Значения.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
@ -452,37 +452,37 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьФайлЛога(Знач Данные, Знач Метод, Знач Библиотека)
|
Процедура ЗаписатьФайлЛога(Знач Данные, Знач Метод, Знач Библиотека)
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
ПутьЛогов = "./docs/ru/results";
|
ПутьЛогов = "./docs/ru/results";
|
||||||
ПутьЛоговБиблиотеки = ПутьЛогов + "/" + Библиотека;
|
ПутьЛоговБиблиотеки = ПутьЛогов + "/" + Библиотека;
|
||||||
|
|
||||||
КаталогЛогов = Новый Файл(ПутьЛогов);
|
КаталогЛогов = Новый Файл(ПутьЛогов);
|
||||||
|
|
||||||
Если Не КаталогЛогов.Существует() Тогда
|
Если Не КаталогЛогов.Существует() Тогда
|
||||||
СоздатьКаталог(ПутьЛогов);
|
СоздатьКаталог(ПутьЛогов);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КаталогЛоговБиблиотеки = Новый Файл(ПутьЛоговБиблиотеки);
|
КаталогЛоговБиблиотеки = Новый Файл(ПутьЛоговБиблиотеки);
|
||||||
|
|
||||||
Если Не КаталогЛоговБиблиотеки.Существует() Тогда
|
Если Не КаталогЛоговБиблиотеки.Существует() Тогда
|
||||||
СоздатьКаталог(ПутьЛоговБиблиотеки);
|
СоздатьКаталог(ПутьЛоговБиблиотеки);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПутьКФайлу = ПутьЛоговБиблиотеки + "/" + Метод + ".log";
|
ПутьКФайлу = ПутьЛоговБиблиотеки + "/" + Метод + ".log";
|
||||||
ФайлЛога = Новый Файл(ПутьКФайлу);
|
ФайлЛога = Новый Файл(ПутьКФайлу);
|
||||||
|
|
||||||
Если Не ФайлЛога.Существует() Тогда
|
Если Не ФайлЛога.Существует() Тогда
|
||||||
ДокументЛога = Новый ТекстовыйДокумент;
|
ДокументЛога = Новый ТекстовыйДокумент;
|
||||||
ДокументЛога.УстановитьТекст(Данные);
|
ДокументЛога.УстановитьТекст(Данные);
|
||||||
ДокументЛога.Записать(ПутьКФайлу);
|
ДокументЛога.Записать(ПутьКФайлу);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
Сообщить("Не удалось записать файл лога!: " + ОписаниеОшибки());
|
Сообщить("Не удалось записать файл лога!: " + ОписаниеОшибки());
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -39,268 +39,268 @@
|
|||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Процедура ПолучитьДвоичныеДанные(Значение) Экспорт
|
Процедура ПолучитьДвоичныеДанные(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
Значение = Новый ДвоичныеДанные(Значение);
|
Значение = Новый ДвоичныеДанные(Значение);
|
||||||
|
|
||||||
ИначеЕсли СтрНайти(Значение, "//") Тогда
|
ИначеЕсли СтрНайти(Значение, "//") Тогда
|
||||||
|
|
||||||
Значение = OPI_Инструменты.Get(Значение);
|
Значение = OPI_Инструменты.Get(Значение);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Значение = Base64Значение(Значение);
|
Значение = Base64Значение(Значение);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
ВызватьИсключение "Ошибка получения двоичных данных из параметра: " + ОписаниеОшибки();
|
ВызватьИсключение "Ошибка получения двоичных данных из параметра: " + ОписаниеОшибки();
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьДвоичныеИлиПоток(Значение) Экспорт
|
Процедура ПолучитьДвоичныеИлиПоток(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
|
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
|
||||||
ПолучитьДвоичныеДанные(Значение);
|
ПолучитьДвоичныеДанные(Значение);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
Значение = Новый ФайловыйПоток(Значение, РежимОткрытияФайла.Открыть);
|
Значение = Новый ФайловыйПоток(Значение, РежимОткрытияФайла.Открыть);
|
||||||
Иначе
|
Иначе
|
||||||
ПолучитьДвоичныеДанные(Значение);
|
ПолучитьДвоичныеДанные(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьКоллекцию(Значение) Экспорт
|
Процедура ПолучитьКоллекцию(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
ИсходноеЗначение = Значение;
|
ИсходноеЗначение = Значение;
|
||||||
|
|
||||||
Если ЭтоКоллекция(Значение) Тогда
|
Если ЭтоКоллекция(Значение) Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
||||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||||
Иначе
|
Иначе
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
ЧтениеJSON = Новый ЧтениеJSON;
|
ЧтениеJSON = Новый ЧтениеJSON;
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
|
|
||||||
ЧтениеJSON.ОткрытьФайл(Значение);
|
ЧтениеJSON.ОткрытьФайл(Значение);
|
||||||
|
|
||||||
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
||||||
|
|
||||||
ИВФ = ПолучитьИмяВременногоФайла();
|
ИВФ = ПолучитьИмяВременногоФайла();
|
||||||
КопироватьФайл(Значение, ИВФ);
|
КопироватьФайл(Значение, ИВФ);
|
||||||
ЧтениеJSON.ОткрытьФайл(ИВФ);
|
ЧтениеJSON.ОткрытьФайл(ИВФ);
|
||||||
ЧтениеJSON.Прочитать();
|
ЧтениеJSON.Прочитать();
|
||||||
|
|
||||||
УдалитьФайлы(ИВФ);
|
УдалитьФайлы(ИВФ);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
ЧтениеJSON.УстановитьСтроку(СокрЛП(Значение));
|
ЧтениеJSON.УстановитьСтроку(СокрЛП(Значение));
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Значение = ПрочитатьJSON(ЧтениеJSON, Истина, Неопределено, ФорматДатыJSON.ISO);
|
Значение = ПрочитатьJSON(ЧтениеJSON, Истина, Неопределено, ФорматДатыJSON.ISO);
|
||||||
ЧтениеJSON.Закрыть();
|
ЧтениеJSON.Закрыть();
|
||||||
|
|
||||||
Если (Не ЭтоКоллекция(Значение)) Или Не ЗначениеЗаполнено(Значение) Тогда
|
Если (Не ЭтоКоллекция(Значение)) Или Не ЗначениеЗаполнено(Значение) Тогда
|
||||||
|
|
||||||
Значение = ИсходноеЗначение;
|
Значение = ИсходноеЗначение;
|
||||||
ПолучитьМассив(Значение);
|
ПолучитьМассив(Значение);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
|
|
||||||
Значение = ИсходноеЗначение;
|
Значение = ИсходноеЗначение;
|
||||||
ПолучитьМассив(Значение);
|
ПолучитьМассив(Значение);
|
||||||
|
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьМассив(Значение) Экспорт
|
Процедура ПолучитьМассив(Значение) Экспорт
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Строка")
|
Если ТипЗнч(Значение) = Тип("Строка")
|
||||||
И СтрНачинаетсяС(Значение, "[")
|
И СтрНачинаетсяС(Значение, "[")
|
||||||
И СтрЗаканчиваетсяНа(Значение, "]") Тогда
|
И СтрЗаканчиваетсяНа(Значение, "]") Тогда
|
||||||
|
|
||||||
ЗапятаяВКавычках = "','";
|
ЗапятаяВКавычках = "','";
|
||||||
|
|
||||||
Значение = СтрЗаменить(Значение, "['" , "");
|
Значение = СтрЗаменить(Значение, "['" , "");
|
||||||
Значение = СтрЗаменить(Значение, "']" , "");
|
Значение = СтрЗаменить(Значение, "']" , "");
|
||||||
Значение = СтрЗаменить(Значение, "', '" , ЗапятаяВКавычках);
|
Значение = СтрЗаменить(Значение, "', '" , ЗапятаяВКавычках);
|
||||||
Значение = СтрЗаменить(Значение, "' , '", ЗапятаяВКавычках);
|
Значение = СтрЗаменить(Значение, "' , '", ЗапятаяВКавычках);
|
||||||
Значение = СтрЗаменить(Значение, "' ,'" , ЗапятаяВКавычках);
|
Значение = СтрЗаменить(Значение, "' ,'" , ЗапятаяВКавычках);
|
||||||
|
|
||||||
Значение = СтрРазделить(Значение, ЗапятаяВКавычках, Ложь);
|
Значение = СтрРазделить(Значение, ЗапятаяВКавычках, Ложь);
|
||||||
|
|
||||||
Для Н = 0 По Значение.ВГраница() Цикл
|
Для Н = 0 По Значение.ВГраница() Цикл
|
||||||
Значение[Н] = СокрЛП(Значение[Н]);
|
Значение[Н] = СокрЛП(Значение[Н]);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Число") Тогда
|
Если ТипЗнч(Значение) = Тип("Число") Тогда
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
OPI_Инструменты.ЗначениеВМассив(Значение);
|
OPI_Инструменты.ЗначениеВМассив(Значение);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьБулево(Значение) Экспорт
|
Процедура ПолучитьБулево(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Булево") Тогда
|
Если ТипЗнч(Значение) = Тип("Булево") Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
Значение = Булево(Значение);
|
Значение = Булево(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
ВызватьИсключение "Ошибка получения данных булево из параметра";
|
ВызватьИсключение "Ошибка получения данных булево из параметра";
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьСтроку(Значение, Знач ИзИсточника = Ложь) Экспорт
|
Процедура ПолучитьСтроку(Значение, Знач ИзИсточника = Ложь) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ЭтоСимвольное(Значение) Тогда
|
Если ЭтоСимвольное(Значение) Тогда
|
||||||
|
|
||||||
Если Не ИзИсточника Тогда
|
Если Не ИзИсточника Тогда
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
|
|
||||||
ЧтениеТекста = Новый ЧтениеТекста(Значение);
|
ЧтениеТекста = Новый ЧтениеТекста(Значение);
|
||||||
Значение = ЧтениеТекста.Прочитать();
|
Значение = ЧтениеТекста.Прочитать();
|
||||||
ЧтениеТекста.Закрыть();
|
ЧтениеТекста.Закрыть();
|
||||||
|
|
||||||
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
||||||
|
|
||||||
ИВФ = ПолучитьИмяВременногоФайла();
|
ИВФ = ПолучитьИмяВременногоФайла();
|
||||||
КопироватьФайл(Значение, ИВФ);
|
КопироватьФайл(Значение, ИВФ);
|
||||||
|
|
||||||
ЧтениеТекста = Новый ЧтениеТекста(ИВФ);
|
ЧтениеТекста = Новый ЧтениеТекста(ИВФ);
|
||||||
Значение = ЧтениеТекста.Прочитать();
|
Значение = ЧтениеТекста.Прочитать();
|
||||||
ЧтениеТекста.Закрыть();
|
ЧтениеТекста.Закрыть();
|
||||||
|
|
||||||
УдалитьФайлы(ИВФ);
|
УдалитьФайлы(ИВФ);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Возврат;
|
Возврат;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ИначеЕсли ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
ИначеЕсли ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
||||||
|
|
||||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||||
|
|
||||||
ИначеЕсли ЭтоКоллекция(Значение) Тогда
|
ИначеЕсли ЭтоКоллекция(Значение) Тогда
|
||||||
|
|
||||||
Значение = OPI_Инструменты.JSONСтрокой(Значение);
|
Значение = OPI_Инструменты.JSONСтрокой(Значение);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
Значение = Строка(Значение);
|
Значение = Строка(Значение);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьДату(Значение) Экспорт
|
Процедура ПолучитьДату(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Дата = "Дата";
|
Дата = "Дата";
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип(Дата) Тогда
|
Если ТипЗнч(Значение) = Тип(Дата) Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
Значение = XMLЗначение(Тип(Дата), Значение);
|
Значение = XMLЗначение(Тип(Дата), Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
ООД = Новый ОписаниеТипов(Дата);
|
ООД = Новый ОписаниеТипов(Дата);
|
||||||
Значение = ООД.ПривестиЗначение(Значение);
|
Значение = ООД.ПривестиЗначение(Значение);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьЧисло(Значение) Экспорт
|
Процедура ПолучитьЧисло(Значение) Экспорт
|
||||||
|
|
||||||
ОписаниеТипа = Новый ОписаниеТипов("Число");
|
ОписаниеТипа = Новый ОписаниеТипов("Число");
|
||||||
Значение = ОписаниеТипа.ПривестиЗначение(Значение);
|
Значение = ОписаниеТипа.ПривестиЗначение(Значение);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -308,19 +308,19 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ЭтоКоллекция(Знач Значение)
|
Функция ЭтоКоллекция(Знач Значение)
|
||||||
|
|
||||||
Возврат ТипЗнч(Значение) = Тип("Массив")
|
Возврат ТипЗнч(Значение) = Тип("Массив")
|
||||||
Или ТипЗнч(Значение) = Тип("Структура")
|
Или ТипЗнч(Значение) = Тип("Структура")
|
||||||
Или ТипЗнч(Значение) = Тип("Соответствие");
|
Или ТипЗнч(Значение) = Тип("Соответствие");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЭтоСимвольное(Знач Значение)
|
Функция ЭтоСимвольное(Знач Значение)
|
||||||
|
|
||||||
Возврат ТипЗнч(Значение) = Тип("Строка")
|
Возврат ТипЗнч(Значение) = Тип("Строка")
|
||||||
Или ТипЗнч(Значение) = Тип("Число")
|
Или ТипЗнч(Значение) = Тип("Число")
|
||||||
Или ТипЗнч(Значение) = Тип("Дата");
|
Или ТипЗнч(Значение) = Тип("Дата");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -39,75 +39,75 @@
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Copyright (c) 2019, ООО 1С-Софт
|
// Copyright (c) 2019, ООО 1С-Софт
|
||||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||||
// Текст лицензии доступен по ссылке:
|
// Текст лицензии доступен по ссылке:
|
||||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Функция HMACSHA256(Знач Ключ, Знач Данные) Экспорт
|
Функция HMACSHA256(Знач Ключ, Знач Данные) Экспорт
|
||||||
|
|
||||||
Возврат HMAC(Ключ, Данные, ХешФункция.SHA256, 64);
|
Возврат HMAC(Ключ, Данные, ХешФункция.SHA256, 64);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция Хеш(ДвоичныеДанные, Тип) Экспорт
|
Функция Хеш(ДвоичныеДанные, Тип) Экспорт
|
||||||
|
|
||||||
Хеширование = Новый ХешированиеДанных(Тип);
|
Хеширование = Новый ХешированиеДанных(Тип);
|
||||||
Хеширование.Добавить(ДвоичныеДанные);
|
Хеширование.Добавить(ДвоичныеДанные);
|
||||||
|
|
||||||
Возврат Хеширование.ХешСумма;
|
Возврат Хеширование.ХешСумма;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция HMAC(Знач Ключ, Знач Данные, Тип, РазмерБлока) Экспорт
|
Функция HMAC(Знач Ключ, Знач Данные, Тип, РазмерБлока) Экспорт
|
||||||
|
|
||||||
Дважды = 2;
|
Дважды = 2;
|
||||||
|
|
||||||
Если Ключ.Размер() > РазмерБлока Тогда
|
Если Ключ.Размер() > РазмерБлока Тогда
|
||||||
Ключ = Хеш(Ключ, Тип);
|
Ключ = Хеш(Ключ, Тип);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Ключ.Размер() <= РазмерБлока Тогда
|
Если Ключ.Размер() <= РазмерБлока Тогда
|
||||||
Ключ = ПолучитьHexСтрокуИзДвоичныхДанных(Ключ);
|
Ключ = ПолучитьHexСтрокуИзДвоичныхДанных(Ключ);
|
||||||
Ключ = Лев(Ключ + ПовторитьСтроку("00", РазмерБлока), РазмерБлока * Дважды);
|
Ключ = Лев(Ключ + ПовторитьСтроку("00", РазмерБлока), РазмерБлока * Дважды);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ключ = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзHexСтроки(Ключ));
|
Ключ = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзHexСтроки(Ключ));
|
||||||
|
|
||||||
Ipad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("36", РазмерБлока));
|
Ipad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("36", РазмерБлока));
|
||||||
Opad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("5c", РазмерБлока));
|
Opad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("5c", РазмерБлока));
|
||||||
|
|
||||||
Ipad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
Ipad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
||||||
Ikeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ipad);
|
Ikeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ipad);
|
||||||
|
|
||||||
Opad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
Opad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
||||||
Okeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(opad);
|
Okeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(opad);
|
||||||
|
|
||||||
Возврат Хеш(СклеитьДвоичныеДанные(okeypad, Хеш(СклеитьДвоичныеДанные(ikeypad, Данные), Тип)), Тип);
|
Возврат Хеш(СклеитьДвоичныеДанные(okeypad, Хеш(СклеитьДвоичныеДанные(ikeypad, Данные), Тип)), Тип);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СклеитьДвоичныеДанные(ДвоичныеДанные1, ДвоичныеДанные2) Экспорт
|
Функция СклеитьДвоичныеДанные(ДвоичныеДанные1, ДвоичныеДанные2) Экспорт
|
||||||
|
|
||||||
МассивДвоичныхДанных = Новый Массив;
|
МассивДвоичныхДанных = Новый Массив;
|
||||||
МассивДвоичныхДанных.Добавить(ДвоичныеДанные1);
|
МассивДвоичныхДанных.Добавить(ДвоичныеДанные1);
|
||||||
МассивДвоичныхДанных.Добавить(ДвоичныеДанные2);
|
МассивДвоичныхДанных.Добавить(ДвоичныеДанные2);
|
||||||
|
|
||||||
Возврат СоединитьДвоичныеДанные(МассивДвоичныхДанных);
|
Возврат СоединитьДвоичныеДанные(МассивДвоичныхДанных);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПовторитьСтроку(Строка, Количество) Экспорт
|
Функция ПовторитьСтроку(Строка, Количество) Экспорт
|
||||||
|
|
||||||
Части = Новый Массив(Количество);
|
Части = Новый Массив(Количество);
|
||||||
|
|
||||||
Для К = 1 По Количество Цикл
|
Для К = 1 По Количество Цикл
|
||||||
Части.Добавить(Строка);
|
Части.Добавить(Строка);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат СтрСоединить(Части, "");
|
Возврат СтрСоединить(Части, "");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_Airtable.os
|
// OneScript: ./OInt/core/Modules/OPI_Airtable.os
|
||||||
// Lib: Airtable
|
// Lib: Airtable
|
||||||
// CLI: airtable
|
// CLI: airtable
|
||||||
|
|
||||||
@ -42,91 +42,91 @@
|
|||||||
|
|
||||||
// Получить список баз
|
// Получить список баз
|
||||||
// Получает список доступных баз
|
// Получает список доступных баз
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Отступ - Строка - Идентификатор следующей страницы списка баз из перыдудщего запроса - offset
|
// Отступ - Строка - Идентификатор следующей страницы списка баз из перыдудщего запроса - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьСписокБаз(Знач Токен, Знач Отступ = "") Экспорт
|
Функция ПолучитьСписокБаз(Знач Токен, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Отступ);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Отступ);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить таблицы базы
|
// Получить таблицы базы
|
||||||
// Получает схему таблиц базы
|
// Получает схему таблиц базы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьТаблицыБазы(Знач Токен, Знач База) Экспорт
|
Функция ПолучитьТаблицыБазы(Знач Токен, Знач База) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать базу
|
// Создать базу
|
||||||
// Создает новую базу данных
|
// Создает новую базу данных
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// РабочееПространство - Строка - Идентификатор рабочего пространства - ws
|
// РабочееПространство - Строка - Идентификатор рабочего пространства - ws
|
||||||
// Наименование - Строка - Наименование новой базы - title
|
// Наименование - Строка - Наименование новой базы - title
|
||||||
// КоллекцияТаблиц - Соответствие Из КлючИЗначение - Описание таблиц: Ключ > имя, Значение > массив полей - tablesdata
|
// КоллекцияТаблиц - Соответствие Из КлючИЗначение - Описание таблиц: Ключ > имя, Значение > массив полей - tablesdata
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
||||||
|
|
||||||
Если Не ТипЗнч(КоллекцияТаблиц) = Тип("Структура")
|
Если Не ТипЗнч(КоллекцияТаблиц) = Тип("Структура")
|
||||||
И Не ТипЗнч(КоллекцияТаблиц) = Тип("Соответствие") Тогда
|
И Не ТипЗнч(КоллекцияТаблиц) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
ВызватьИсключение "Ошибка в данных коллекции таблиц";
|
ВызватьИсключение "Ошибка в данных коллекции таблиц";
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases";
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивТаблиц = Новый Массив;
|
МассивТаблиц = Новый Массив;
|
||||||
|
|
||||||
Для Каждого Таблица Из КоллекцияТаблиц Цикл
|
Для Каждого Таблица Из КоллекцияТаблиц Цикл
|
||||||
|
|
||||||
Описание = СформироватьОписаниеТаблицы(Таблица.Ключ, Таблица.Значение);
|
Описание = СформироватьОписаниеТаблицы(Таблица.Ключ, Таблица.Значение);
|
||||||
МассивТаблиц.Добавить(Описание);
|
МассивТаблиц.Добавить(Описание);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("tables" , МассивТаблиц , "Массив", Параметры);
|
OPI_Инструменты.ДобавитьПоле("tables" , МассивТаблиц , "Массив", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("workspaceId", РабочееПространство, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("workspaceId", РабочееПространство, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -137,56 +137,56 @@
|
|||||||
|
|
||||||
// Создать таблицу
|
// Создать таблицу
|
||||||
// Создает новую таблицу в базе
|
// Создает новую таблицу в базе
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
// Наименование - Строка - Наименование новой таблицы - title
|
// Наименование - Строка - Наименование новой таблицы - title
|
||||||
// МассивПолей - Массив Из Структура - Массив описаний полей - fieldsdata
|
// МассивПолей - Массив Из Структура - Массив описаний полей - fieldsdata
|
||||||
// Описание - Строка - Описание таблицы - description
|
// Описание - Строка - Описание таблицы - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьТаблицу(Знач Токен, Знач База, Знач Наименование, Знач МассивПолей, Знач Описание = "") Экспорт
|
Функция СоздатьТаблицу(Знач Токен, Знач База, Знач Наименование, Знач МассивПолей, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Параметры = СформироватьОписаниеТаблицы(Наименование, МассивПолей, Описание);
|
Параметры = СформироватьОписаниеТаблицы(Наименование, МассивПолей, Описание);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить таблицу
|
// Изменить таблицу
|
||||||
// Изменяет наименование и|или описание базы
|
// Изменяет наименование и|или описание базы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
// Описание - Строка - Новое описание - description
|
// Описание - Строка - Новое описание - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ИзменитьТаблицу(Знач Токен, Знач База, Знач Таблица, Знач Наименование = "", Знач Описание = "") Экспорт
|
Функция ИзменитьТаблицу(Знач Токен, Знач База, Знач Таблица, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица;
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -197,40 +197,40 @@
|
|||||||
|
|
||||||
// Создать поле
|
// Создать поле
|
||||||
// Создет новое поле в таблице
|
// Создет новое поле в таблице
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы - base
|
// База - Строка - Идентификатор базы - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// СтруктураПоля - Структура Из КлючИЗначение - Описание нового поля - fielddata
|
// СтруктураПоля - Структура Из КлючИЗначение - Описание нового поля - fielddata
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьПоле(Знач Токен, Знач База, Знач Таблица, Знач СтруктураПоля) Экспорт
|
Функция СоздатьПоле(Знач Токен, Знач База, Знач Таблица, Знач СтруктураПоля) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураПоля);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураПоля);
|
||||||
|
|
||||||
Если Не ТипЗнч(СтруктураПоля) = Тип("Структура")
|
Если Не ТипЗнч(СтруктураПоля) = Тип("Структура")
|
||||||
И Не ТипЗнч(СтруктураПоля) = Тип("Соответствие") Тогда
|
И Не ТипЗнч(СтруктураПоля) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
ВызватьИсключение "Ошибка в данных описания поля";
|
ВызватьИсключение "Ошибка в данных описания поля";
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица + "/fields";
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица + "/fields";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, СтруктураПоля, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, СтруктураПоля, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить поле
|
// Изменить поле
|
||||||
// Изменяет имя и|или описание существующего поля таблицы
|
// Изменяет имя и|или описание существующего поля таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы База - base
|
// База - Строка - Идентификатор базы База - base
|
||||||
@ -238,152 +238,152 @@
|
|||||||
// Поле - Строка - Идентификатор поля - field
|
// Поле - Строка - Идентификатор поля - field
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
// Описание - Строка - Новое описание - description
|
// Описание - Строка - Новое описание - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ИзменитьПоле(Знач Токен, Знач База, Знач Таблица, Знач Поле, Знач Наименование = "", Знач Описание = "") Экспорт
|
Функция ИзменитьПоле(Знач Токен, Знач База, Знач Таблица, Знач Поле, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/meta/bases/"
|
URL = "https://api.airtable.com/v0/meta/bases/"
|
||||||
+ База
|
+ База
|
||||||
+ "/tables/"
|
+ "/tables/"
|
||||||
+ Таблица
|
+ Таблица
|
||||||
+ "/fields/"
|
+ "/fields/"
|
||||||
+ Поле;
|
+ Поле;
|
||||||
|
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (строковое)
|
// Получить поле (строковое)
|
||||||
// Получает описание поля строкового типа
|
// Получает описание поля строкового типа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование нового поля - title
|
// Наименование - Строка - Наименование нового поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "richText");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "richText");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (числовое)
|
// Получить поле (числовое)
|
||||||
// Получает описание поля числового типа
|
// Получает описание поля числового типа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование нового поля - title
|
// Наименование - Строка - Наименование нового поля - title
|
||||||
// Точность - Число,Строка - Число знаков после запятой - precision
|
// Точность - Число,Строка - Число знаков после запятой - precision
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеНомера(Знач Наименование, Знач Точность = 0) Экспорт
|
Функция ПолучитьПолеНомера(Знач Наименование, Знач Точность = 0) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Точность);
|
OPI_ПреобразованиеТипов.ПолучитьЧисло(Точность);
|
||||||
|
|
||||||
СтруктураОпций = Новый Структура("precision", Точность);
|
СтруктураОпций = Новый Структура("precision", Точность);
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "number", СтруктураОпций);
|
Возврат ОписаниеПримитивногоПоля(Наименование, "number", СтруктураОпций);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (файл)
|
// Получить поле (файл)
|
||||||
// Получает описание поля файлового типа
|
// Получает описание поля файлового типа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеВложения(Знач Наименование) Экспорт
|
Функция ПолучитьПолеВложения(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "multipleAttachments");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "multipleAttachments");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (флажок)
|
// Получить поле (флажок)
|
||||||
// Получает описание поля типа булево
|
// Получает описание поля типа булево
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеФлажка(Знач Наименование) Экспорт
|
Функция ПолучитьПолеФлажка(Знач Наименование) Экспорт
|
||||||
|
|
||||||
СтруктураОпций = Новый Структура("icon,color", "check", "yellowBright");
|
СтруктураОпций = Новый Структура("icon,color", "check", "yellowBright");
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "checkbox", СтруктураОпций);
|
Возврат ОписаниеПримитивногоПоля(Наименование, "checkbox", СтруктураОпций);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (дата)
|
// Получить поле (дата)
|
||||||
// Получает описание поля типа дата
|
// Получает описание поля типа дата
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеДаты(Знач Наименование) Экспорт
|
Функция ПолучитьПолеДаты(Знач Наименование) Экспорт
|
||||||
|
|
||||||
СтруктураФормата = Новый Структура("format,name", "YYYY-MM-DD", "iso");
|
СтруктураФормата = Новый Структура("format,name", "YYYY-MM-DD", "iso");
|
||||||
СтруктураОпций = Новый Структура("dateFormat", СтруктураФормата);
|
СтруктураОпций = Новый Структура("dateFormat", СтруктураФормата);
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "date", СтруктураОпций);
|
Возврат ОписаниеПримитивногоПоля(Наименование, "date", СтруктураОпций);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (email)
|
// Получить поле (email)
|
||||||
// Получает описание поля с электронной почтой
|
// Получает описание поля с электронной почтой
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеПочты(Знач Наименование) Экспорт
|
Функция ПолучитьПолеПочты(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "email");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "email");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (телефон)
|
// Получить поле (телефон)
|
||||||
// Получает описание поля с номером телефона
|
// Получает описание поля с номером телефона
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеТелефона(Знач Наименование) Экспорт
|
Функция ПолучитьПолеТелефона(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "phoneNumber");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "phoneNumber");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить поле (url)
|
// Получить поле (url)
|
||||||
// Получает описание поля с URL
|
// Получает описание поля с URL
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Наименование - Строка - Наименование поля - title
|
// Наименование - Строка - Наименование поля - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Описание поля
|
// Структура - Описание поля
|
||||||
Функция ПолучитьПолеСсылки(Знач Наименование) Экспорт
|
Функция ПолучитьПолеСсылки(Знач Наименование) Экспорт
|
||||||
|
|
||||||
Возврат ОписаниеПримитивногоПоля(Наименование, "url");
|
Возврат ОписаниеПримитивногоПоля(Наименование, "url");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -392,67 +392,67 @@
|
|||||||
|
|
||||||
// Получить список записей
|
// Получить список записей
|
||||||
// Получает список записей выбранной таблицы
|
// Получает список записей выбранной таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьСписокЗаписей(Знач Токен, Знач База, Знач Таблица, Знач Отступ = "") Экспорт
|
Функция ПолучитьСписокЗаписей(Знач Токен, Знач База, Знач Таблица, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить запись
|
// Получить запись
|
||||||
// Получает данные строки таблицы по идентификатору
|
// Получает данные строки таблицы по идентификатору
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьЗапись(Знач Токен, Знач База, Знач Таблица, Знач Запись) Экспорт
|
Функция ПолучитьЗапись(Знач Токен, Знач База, Знач Таблица, Знач Запись) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать записи
|
// Создать записи
|
||||||
// Создает одну или массив записей по описанию или массиву описаний значений полей
|
// Создает одну или массив записей по описанию или массиву описаний значений полей
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Данные - Структура, Массив из Структура - Набор или массив наборов пар Ключ : Значение > Поле : Показатель - data
|
// Данные - Структура, Массив из Структура - Набор или массив наборов пар Ключ : Значение > Поле : Показатель - data
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Данные) Экспорт
|
Функция СоздатьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Данные) Экспорт
|
||||||
@ -460,52 +460,52 @@
|
|||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
ДобавитьОписаниеДанных(Данные, Параметры);
|
ДобавитьОписаниеДанных(Данные, Параметры);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить записи
|
// Удалить записи
|
||||||
// Удаляет одну или массив записей по идентификаторам
|
// Удаляет одну или массив записей по идентификаторам
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Записи - Строка, Массив из Строка - Идентификатор или массив индентификаторов записей - records
|
// Записи - Строка, Массив из Строка - Идентификатор или массив индентификаторов записей - records
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция УдалитьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Записи) Экспорт
|
Функция УдалитьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Записи) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьМассив(Записи);
|
OPI_ПреобразованиеТипов.ПолучитьМассив(Записи);
|
||||||
|
|
||||||
СтрокаЗаписей = "";
|
СтрокаЗаписей = "";
|
||||||
|
|
||||||
Для Каждого Запись Из Записи Цикл
|
Для Каждого Запись Из Записи Цикл
|
||||||
СтрокаЗаписей = СтрокаЗаписей
|
СтрокаЗаписей = СтрокаЗаписей
|
||||||
+ ?(ЗначениеЗаполнено(СтрокаЗаписей), "&", "?")
|
+ ?(ЗначениеЗаполнено(СтрокаЗаписей), "&", "?")
|
||||||
+ "records[]="
|
+ "records[]="
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(Запись);
|
+ OPI_Инструменты.ЧислоВСтроку(Запись);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + СтрокаЗаписей;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + СтрокаЗаписей;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -514,67 +514,67 @@
|
|||||||
|
|
||||||
// Получить комментарии
|
// Получить комментарии
|
||||||
// Получает список комментариев к записи в таблице
|
// Получает список комментариев к записи в таблице
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ПолучитьКомментарии(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Отступ = "") Экспорт
|
Функция ПолучитьКомментарии(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать комментарий
|
// Создать комментарий
|
||||||
// Создает комментарий к записи в таблице
|
// Создает комментарий к записи в таблице
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Текст - Строка - Текст комментария - text
|
// Текст - Строка - Текст комментария - text
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция СоздатьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Текст) Экспорт
|
Функция СоздатьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Текст) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments";
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить комментарий
|
// Изменить комментарий
|
||||||
// Изменяет текст существующего комментария
|
// Изменяет текст существующего комментария
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
@ -582,54 +582,54 @@
|
|||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Комментарий - Строка - Идентификатор комментария - comment
|
// Комментарий - Строка - Идентификатор комментария - comment
|
||||||
// Текст - Строка - Новый текст комментария - text
|
// Текст - Строка - Новый текст комментария - text
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция ИзменитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий, Знач Текст) Экспорт
|
Функция ИзменитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий, Знач Текст) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура();
|
Параметры = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить комментарий
|
// Удалить комментарий
|
||||||
// Удаляет комментарий к записи таблицы
|
// Удаляет комментарий к записи таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// База - Строка - Идентификатор базы данных - base
|
// База - Строка - Идентификатор базы данных - base
|
||||||
// Таблица - Строка - Идентификатор таблицы - table
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
// Запись - Строка - Идентификатор записи в таблице - record
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
// Комментарий - Строка - Идентификатор комментария - comment
|
// Комментарий - Строка - Идентификатор комментария - comment
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
Функция УдалитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий) Экспорт
|
Функция УдалитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
||||||
|
|
||||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий;
|
||||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -639,58 +639,58 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
|
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
||||||
|
|
||||||
Возврат Заголовки;
|
Возврат Заголовки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей, Знач Описание = "")
|
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей, Знач Описание = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
||||||
|
|
||||||
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("description", Описание, "Строка", ОписаниеТаблицы);
|
OPI_Инструменты.ДобавитьПоле("description", Описание, "Строка", ОписаниеТаблицы);
|
||||||
|
|
||||||
Возврат ОписаниеТаблицы;
|
Возврат ОписаниеТаблицы;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ОписаниеПримитивногоПоля(Знач Наименование, Знач Тип, Знач Опции = "")
|
Функция ОписаниеПримитивногоПоля(Знач Наименование, Знач Тип, Знач Опции = "")
|
||||||
|
|
||||||
СтруктураПоля = Новый Структура();
|
СтруктураПоля = Новый Структура();
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка" , СтруктураПоля);
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка" , СтруктураПоля);
|
||||||
OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка" , СтруктураПоля);
|
OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка" , СтруктураПоля);
|
||||||
OPI_Инструменты.ДобавитьПоле("options", Опции , "Коллекция", СтруктураПоля);
|
OPI_Инструменты.ДобавитьПоле("options", Опции , "Коллекция", СтруктураПоля);
|
||||||
|
|
||||||
Возврат СтруктураПоля;
|
Возврат СтруктураПоля;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ДобавитьОписаниеДанных(Знач Данные, Параметры)
|
Процедура ДобавитьОписаниеДанных(Знач Данные, Параметры)
|
||||||
|
|
||||||
Если ТипЗнч(Данные) = Тип("Массив") Тогда
|
Если ТипЗнч(Данные) = Тип("Массив") Тогда
|
||||||
|
|
||||||
МассивОтправки = Новый Массив;
|
МассивОтправки = Новый Массив;
|
||||||
|
|
||||||
Для Каждого ОписаниеЗаписи Из Данные Цикл
|
Для Каждого ОписаниеЗаписи Из Данные Цикл
|
||||||
МассивОтправки.Добавить(Новый Структура("fields", ОписаниеЗаписи));
|
МассивОтправки.Добавить(Новый Структура("fields", ОписаниеЗаписи));
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("records", МассивОтправки, "Массив", Параметры);
|
OPI_Инструменты.ДобавитьПоле("records", МассивОтправки, "Массив", Параметры);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("fields", Данные, "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("fields", Данные, "Коллекция", Параметры);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os
|
// OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os
|
||||||
// Lib: Google Calendar
|
// Lib: Google Calendar
|
||||||
// CLI: gcalendar
|
// CLI: gcalendar
|
||||||
|
|
||||||
@ -43,131 +43,131 @@
|
|||||||
|
|
||||||
// Создать календарь
|
// Создать календарь
|
||||||
// Создает пустой календарь
|
// Создает пустой календарь
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Наименование - Строка - Наименование создаваемого календаря - title
|
// Наименование - Строка - Наименование создаваемого календаря - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт
|
Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
URL = "https://www.googleapis.com/calendar/v3/calendars";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("summary" , Наименование);
|
Параметры.Вставить("summary" , Наименование);
|
||||||
Параметры.Вставить("timeZone", "Europe/Moscow");
|
Параметры.Вставить("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить календарь
|
// Получить календарь
|
||||||
// Получает информацию о календаре по ID
|
// Получает информацию о календаре по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить календарь
|
// Изменить календарь
|
||||||
// Изменяет свойства существуещего календаря
|
// Изменяет свойства существуещего календаря
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
// Описание - Строка - Новое описание календаря - description
|
// Описание - Строка - Новое описание календаря - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьМетаданныеКалендаря(Знач Токен
|
Функция ИзменитьМетаданныеКалендаря(Знач Токен
|
||||||
, Знач Календарь
|
, Знач Календарь
|
||||||
, Знач Наименование = ""
|
, Знач Наименование = ""
|
||||||
, Знач Описание = "") Экспорт
|
, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Описание);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Наименование) Тогда
|
Если ЗначениеЗаполнено(Наименование) Тогда
|
||||||
Параметры.Вставить("summary", Наименование);
|
Параметры.Вставить("summary", Наименование);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Описание) Тогда
|
Если ЗначениеЗаполнено(Описание) Тогда
|
||||||
Параметры.Вставить("description", Описание);
|
Параметры.Вставить("description", Описание);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Очистить основной календарь
|
// Очистить основной календарь
|
||||||
// Очищает список событий основного календаря
|
// Очищает список событий основного календаря
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт
|
Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
|
||||||
Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить календарь
|
// Удалить календарь
|
||||||
// Удаляет календарь по ID
|
// Удаляет календарь по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт
|
Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -178,105 +178,105 @@
|
|||||||
|
|
||||||
// Получить список календарей
|
// Получить список календарей
|
||||||
// Получает массив календарей аккаунта
|
// Получает массив календарей аккаунта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий данных календарей
|
// Соответствие Из КлючИЗначение - Массив соответствий данных календарей
|
||||||
Функция ПолучитьСписокКалендарей(Знач Токен) Экспорт
|
Функция ПолучитьСписокКалендарей(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивКалендарей = Новый Массив;
|
МассивКалендарей = Новый Массив;
|
||||||
|
|
||||||
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей);
|
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей);
|
||||||
|
|
||||||
Возврат МассивКалендарей;
|
Возврат МассивКалендарей;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Добавить календарь в список
|
// Добавить календарь в список
|
||||||
// Добавляет существующий календарь в список пользователя
|
// Добавляет существующий календарь в список пользователя
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ДобавитьКалендарьВСписок(Знач Токен, Знач Календарь) Экспорт
|
Функция ДобавитьКалендарьВСписок(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("id", Календарь);
|
Параметры.Вставить("id", Календарь);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить календарь списка
|
// Получить календарь списка
|
||||||
// Получает календарь из списка пользователя по ID
|
// Получает календарь из списка пользователя по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить календарь из списка
|
// Удалить календарь из списка
|
||||||
// Удаляет календарь из списка пользователя
|
// Удаляет календарь из списка пользователя
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт
|
Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить календарь списка
|
// Изменить календарь списка
|
||||||
// Изменяет свойства календаря из списка пользователей
|
// Изменяет свойства календаря из списка пользователей
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// ОсновнойЦвет - Строка - HEX основного цвета (#ffffff) - primary
|
// ОсновнойЦвет - Строка - HEX основного цвета (#ffffff) - primary
|
||||||
// ДополнительныйЦвет - Строка - HEX дополнительного цвета (#ffffff) - secondary
|
// ДополнительныйЦвет - Строка - HEX дополнительного цвета (#ffffff) - secondary
|
||||||
// Скрытый - Булево - Скрытый календарь - hidden
|
// Скрытый - Булево - Скрытый календарь - hidden
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьКалендарьСписка(Знач Токен
|
Функция ИзменитьКалендарьСписка(Знач Токен
|
||||||
@ -284,23 +284,23 @@
|
|||||||
, Знач ОсновнойЦвет
|
, Знач ОсновнойЦвет
|
||||||
, Знач ДополнительныйЦвет
|
, Знач ДополнительныйЦвет
|
||||||
, Знач Скрытый = Ложь) Экспорт
|
, Знач Скрытый = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОсновнойЦвет);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОсновнойЦвет);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДополнительныйЦвет);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДополнительныйЦвет);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Скрытый);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Скрытый);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true";
|
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true";
|
||||||
|
|
||||||
Параметры = Новый Соответствие;
|
Параметры = Новый Соответствие;
|
||||||
Параметры.Вставить("hidden" , Скрытый);
|
Параметры.Вставить("hidden" , Скрытый);
|
||||||
Параметры.Вставить("foregroundColor", ОсновнойЦвет);
|
Параметры.Вставить("foregroundColor", ОсновнойЦвет);
|
||||||
Параметры.Вставить("backgroundColor", ДополнительныйЦвет);
|
Параметры.Вставить("backgroundColor", ДополнительныйЦвет);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Put(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Put(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -310,15 +310,15 @@
|
|||||||
#Область РаботаССобытиями
|
#Область РаботаССобытиями
|
||||||
|
|
||||||
// Получить описание события !NOCLI
|
// Получить описание события !NOCLI
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Пустой макет события
|
// Соответствие Из КлючИЗначение - Пустой макет события
|
||||||
Функция ПолучитьОписаниеСобытия() Экспорт
|
Функция ПолучитьОписаниеСобытия() Экспорт
|
||||||
|
|
||||||
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||||
Час = 3600;
|
Час = 3600;
|
||||||
Событие = Новый Соответствие;
|
Событие = Новый Соответствие;
|
||||||
|
|
||||||
Событие.Вставить("Описание" , ""); // Описание события
|
Событие.Вставить("Описание" , ""); // Описание события
|
||||||
Событие.Вставить("Заголовок" , "Новое событие"); // Заголовок события
|
Событие.Вставить("Заголовок" , "Новое событие"); // Заголовок события
|
||||||
Событие.Вставить("МестоПроведения" , ""); // Строка описание места проведения
|
Событие.Вставить("МестоПроведения" , ""); // Строка описание места проведения
|
||||||
@ -328,149 +328,149 @@
|
|||||||
Событие.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам
|
Событие.Вставить("ОтправлятьУведомления" , Истина); // Признак отправки уведомлений участникам
|
||||||
|
|
||||||
Возврат Событие;
|
Возврат Событие;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список событий
|
// Получить список событий
|
||||||
// Получает список всех событий календаря
|
// Получает список всех событий календаря
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий событий
|
// Соответствие Из КлючИЗначение - Массив соответствий событий
|
||||||
Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт
|
Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивСобытий = Новый Массив;
|
МассивСобытий = Новый Массив;
|
||||||
|
|
||||||
ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий);
|
ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий);
|
||||||
|
|
||||||
Возврат МассивСобытий;
|
Возврат МассивСобытий;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить событие
|
// Получить событие
|
||||||
// Получает событие по ID
|
// Получает событие по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// Событие - Строка - ID события - event
|
// Событие - Строка - ID события - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Календарь
|
+ Календарь
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Событие;
|
+ Событие;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать событие
|
// Создать событие
|
||||||
// Создает новое событие
|
// Создает новое событие
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// ОписаниеСобытия - Соответствие Из КлючИЗначение - Описание события - props
|
// ОписаниеСобытия - Соответствие Из КлючИЗначение - Описание события - props
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
|
||||||
Функция СоздатьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия) Экспорт
|
Функция СоздатьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия) Экспорт
|
||||||
|
|
||||||
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия);
|
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Переместить событие
|
// Переместить событие
|
||||||
// Перемещает событие в другой календарь
|
// Перемещает событие в другой календарь
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// КалендарьИсточник - Строка - ID календаря источника - from
|
// КалендарьИсточник - Строка - ID календаря источника - from
|
||||||
// КалендарьПриемник - Строка - ID календаря приемника - to
|
// КалендарьПриемник - Строка - ID календаря приемника - to
|
||||||
// Событие - Строка - ID события календаря источника - event
|
// Событие - Строка - ID события календаря источника - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт
|
Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьИсточник);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьИсточник);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьПриемник);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КалендарьПриемник);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ КалендарьИсточник
|
+ КалендарьИсточник
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Событие
|
+ Событие
|
||||||
+ "/move?destination="
|
+ "/move?destination="
|
||||||
+ КалендарьПриемник;
|
+ КалендарьПриемник;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить событие
|
// Изменить событие
|
||||||
// Изменяет существующее событие
|
// Изменяет существующее событие
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// ОписаниеСобытия - Строка - Новое описание события - props
|
// ОписаниеСобытия - Строка - Новое описание события - props
|
||||||
// Событие - Строка - ID события - event
|
// Событие - Строка - ID события - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие) Экспорт
|
Функция ИзменитьСобытие(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие) Экспорт
|
||||||
|
|
||||||
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия, Событие);
|
Возврат УправлениеСобытием(Токен, Календарь, ОписаниеСобытия, Событие);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить событие
|
// Удалить событие
|
||||||
// Удаляет событие по ID
|
// Удаляет событие по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Календарь - Строка - ID календаря - calendar
|
// Календарь - Строка - ID календаря - calendar
|
||||||
// Событие - Строка - ID события - event
|
// Событие - Строка - ID события - event
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Календарь
|
+ Календарь
|
||||||
+ "/events/"
|
+ "/events/"
|
||||||
+ Событие;
|
+ Событие;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -482,51 +482,51 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ПреобразоватьДату(Знач Дата)
|
Функция ПреобразоватьДату(Знач Дата)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДату(Дата);
|
OPI_ПреобразованиеТипов.ПолучитьДату(Дата);
|
||||||
|
|
||||||
СтруктураДаты = Новый Структура;
|
СтруктураДаты = Новый Структура;
|
||||||
|
|
||||||
Если Не ТипЗнч(Дата) = Тип("Дата") Тогда
|
Если Не ТипЗнч(Дата) = Тип("Дата") Тогда
|
||||||
Возврат Неопределено;
|
Возврат Неопределено;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Дата = НачалоДня(Дата) Тогда
|
Если Дата = НачалоДня(Дата) Тогда
|
||||||
ФорматДаты = "ДФ=yyyy-MM-dd";
|
ФорматДаты = "ДФ=yyyy-MM-dd";
|
||||||
Поле = "date";
|
Поле = "date";
|
||||||
Иначе
|
Иначе
|
||||||
ФорматДаты = "ДФ=yyyy-MM-ddTHH:mm:ssZ";
|
ФорматДаты = "ДФ=yyyy-MM-ddTHH:mm:ssZ";
|
||||||
Поле = "dateTime";
|
Поле = "dateTime";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Дата = Формат(Дата, ФорматДаты);
|
Дата = Формат(Дата, ФорматДаты);
|
||||||
СтруктураДаты.Вставить(Поле , Дата);
|
СтруктураДаты.Вставить(Поле , Дата);
|
||||||
СтруктураДаты.Вставить("timeZone", "Europe/Moscow");
|
СтруктураДаты.Вставить("timeZone", "Europe/Moscow");
|
||||||
|
|
||||||
Возврат СтруктураДаты;
|
Возврат СтруктураДаты;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПреобразоватьВложения(Знач Вложения)
|
Функция ПреобразоватьВложения(Знач Вложения)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Вложения);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Вложения);
|
||||||
|
|
||||||
МассивВложений = Новый Массив;
|
МассивВложений = Новый Массив;
|
||||||
|
|
||||||
Если ТипЗнч(Вложения) = Тип("Соответствие") Или ТипЗнч(Вложения) = Тип("Структура") Тогда
|
Если ТипЗнч(Вложения) = Тип("Соответствие") Или ТипЗнч(Вложения) = Тип("Структура") Тогда
|
||||||
|
|
||||||
Для Каждого Вложение Из Вложения Цикл
|
Для Каждого Вложение Из Вложения Цикл
|
||||||
|
|
||||||
ТекущеВложение = Новый Структура;
|
ТекущеВложение = Новый Структура;
|
||||||
ТекущеВложение.Вставить("title" , Вложение.Ключ);
|
ТекущеВложение.Вставить("title" , Вложение.Ключ);
|
||||||
ТекущеВложение.Вставить("fileUrl", Вложение.Значение);
|
ТекущеВложение.Вставить("fileUrl", Вложение.Значение);
|
||||||
|
|
||||||
МассивВложений.Добавить(ТекущеВложение);
|
МассивВложений.Добавить(ТекущеВложение);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если МассивВложений.Количество() > 0 Тогда
|
Если МассивВложений.Количество() > 0 Тогда
|
||||||
Возврат МассивВложений;
|
Возврат МассивВложений;
|
||||||
Иначе
|
Иначе
|
||||||
@ -536,19 +536,19 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "")
|
Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Календарь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Событие);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеСобытия);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеСобытия);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
Существующее = ЗначениеЗаполнено(Событие);
|
Существующее = ЗначениеЗаполнено(Событие);
|
||||||
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
URL = "https://www.googleapis.com/calendar/v3/calendars/"
|
||||||
+ Календарь
|
+ Календарь
|
||||||
+ "/events"
|
+ "/events"
|
||||||
+ ?(Существующее, "/" + Событие, "");
|
+ ?(Существующее, "/" + Событие, "");
|
||||||
|
|
||||||
Дата0 = ОписаниеСобытия["ДатаНачала"];
|
Дата0 = ОписаниеСобытия["ДатаНачала"];
|
||||||
Дата1 = ОписаниеСобытия["ДатаОкончания"];
|
Дата1 = ОписаниеСобытия["ДатаОкончания"];
|
||||||
Вложения = ОписаниеСобытия["МассивURLФайловВложений"];
|
Вложения = ОписаниеСобытия["МассивURLФайловВложений"];
|
||||||
@ -556,85 +556,85 @@
|
|||||||
Уведомления = ?(ОписаниеСобытия["ОтправлятьУведомления"] = Неопределено
|
Уведомления = ?(ОписаниеСобытия["ОтправлятьУведомления"] = Неопределено
|
||||||
, Ложь
|
, Ложь
|
||||||
, ОписаниеСобытия["ОтправлятьУведомления"]);
|
, ОписаниеСобытия["ОтправлятьУведомления"]);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("summary" , ОписаниеСобытия["Заголовок"]);
|
Параметры.Вставить("summary" , ОписаниеСобытия["Заголовок"]);
|
||||||
Параметры.Вставить("description", ОписаниеСобытия["Описание"]);
|
Параметры.Вставить("description", ОписаниеСобытия["Описание"]);
|
||||||
Параметры.Вставить("location" , ОписаниеСобытия["МестоПроведения"]);
|
Параметры.Вставить("location" , ОписаниеСобытия["МестоПроведения"]);
|
||||||
Параметры.Вставить("start" , ПреобразоватьДату(Дата0));
|
Параметры.Вставить("start" , ПреобразоватьДату(Дата0));
|
||||||
Параметры.Вставить("end" , ПреобразоватьДату(Дата1));
|
Параметры.Вставить("end" , ПреобразоватьДату(Дата1));
|
||||||
Параметры.Вставить("attachments", Вложения);
|
Параметры.Вставить("attachments", Вложения);
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("sendUpdates" , ?(Уведомления, "all", "none"));
|
ПараметрыURL.Вставить("sendUpdates" , ?(Уведомления , "all" , "none"));
|
||||||
ПараметрыURL.Вставить("supportsAttachments" , ?(ЗначениеЗаполнено(Вложения), "true", "false"));
|
ПараметрыURL.Вставить("supportsAttachments" , ?(ЗначениеЗаполнено(Вложения), "true", "false"));
|
||||||
|
|
||||||
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
||||||
|
|
||||||
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры);
|
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры);
|
||||||
|
|
||||||
Если Существующее Тогда
|
Если Существующее Тогда
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки, Истина);
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки, Истина);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки, Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПолучитьСписокКалендарейРекурсивно(Знач Заголовки, МассивКалендарей, Страница = "")
|
Процедура ПолучитьСписокКалендарейРекурсивно(Знач Заголовки, МассивКалендарей, Страница = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
Параметры.Вставить("pageToken", Страница);
|
Параметры.Вставить("pageToken", Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
||||||
, Параметры
|
, Параметры
|
||||||
, Заголовки);
|
, Заголовки);
|
||||||
|
|
||||||
Календари = Результат[Items];
|
Календари = Результат[Items];
|
||||||
Страница = Результат[NPT];
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
Для Каждого Календарь Из Календари Цикл
|
Для Каждого Календарь Из Календари Цикл
|
||||||
МассивКалендарей.Добавить(Календарь);
|
МассивКалендарей.Добавить(Календарь);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если Календари.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
Если Календари.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
||||||
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей, Страница);
|
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей, Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьСписокСобытийРекурсивно(Знач Заголовки, Знач Календарь, МассивСобытий, Страница = "")
|
Процедура ПолучитьСписокСобытийРекурсивно(Знач Заголовки, Знач Календарь, МассивСобытий, Страница = "")
|
||||||
|
|
||||||
Items = "items";
|
Items = "items";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
Параметры.Вставить("pageToken", Страница);
|
Параметры.Вставить("pageToken", Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events"
|
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events"
|
||||||
, Параметры
|
, Параметры
|
||||||
, Заголовки);
|
, Заголовки);
|
||||||
|
|
||||||
События = Результат[Items];
|
События = Результат[Items];
|
||||||
Страница = Результат[NPT];
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
Для Каждого Событие Из События Цикл
|
Для Каждого Событие Из События Цикл
|
||||||
МассивСобытий.Добавить(Событие);
|
МассивСобытий.Добавить(Событие);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если События.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
Если События.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
||||||
ПолучитьСписокСобытийРекурсивно(Заголовки, МассивСобытий, Страница);
|
ПолучитьСписокСобытийРекурсивно(Заголовки, МассивСобытий, Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os
|
// OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os
|
||||||
// Lib: Google Drive
|
// Lib: Google Drive
|
||||||
// CLI: gdrive
|
// CLI: gdrive
|
||||||
|
|
||||||
@ -43,277 +43,277 @@
|
|||||||
|
|
||||||
// Получить информацию об объекте
|
// Получить информацию об объекте
|
||||||
// Получает информацию о папке или файле по ID
|
// Получает информацию о папке или файле по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор файла или каталога - object
|
// Идентификатор - Строка - Идентификатор файла или каталога - object
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
|
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список каталогов
|
// Получить список каталогов
|
||||||
// Получает список каталогов диска
|
// Получает список каталогов диска
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИмяСодержит - Строка - Отбор по имени - querry
|
// ИмяСодержит - Строка - Отбор по имени - querry
|
||||||
// Подробно - Булево - Добавляет список файлов к полям каталога - depth
|
// Подробно - Булево - Добавляет список файлов к полям каталога - depth
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий каталогов
|
// Соответствие Из КлючИЗначение - Массив соответствий каталогов
|
||||||
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
|
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Подробно);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Подробно);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивОбъектов = Новый Массив;
|
МассивОбъектов = Новый Массив;
|
||||||
Отбор = Новый Массив;
|
Отбор = Новый Массив;
|
||||||
|
|
||||||
Отбор.Добавить("mimeType = 'application/vnd.google-apps.folder'");
|
Отбор.Добавить("mimeType = 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
||||||
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор);
|
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор);
|
||||||
|
|
||||||
Если Подробно Тогда
|
Если Подробно Тогда
|
||||||
РазложитьОбъектыПодробно(Токен, МассивОбъектов);
|
РазложитьОбъектыПодробно(Токен, МассивОбъектов);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат МассивОбъектов;
|
Возврат МассивОбъектов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список файлов
|
// Получить список файлов
|
||||||
// Получает список файлов
|
// Получает список файлов
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИмяСодержит - Строка - Отбор по имени - querry
|
// ИмяСодержит - Строка - Отбор по имени - querry
|
||||||
// Каталог - Строка - Отбор по ID каталога родителя - catalog
|
// Каталог - Строка - Отбор по ID каталога родителя - catalog
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Массив соответствий файлов
|
// Соответствие Из КлючИЗначение - Массив соответствий файлов
|
||||||
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
|
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяСодержит);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Каталог);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Каталог);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
МассивОбъектов = Новый Массив;
|
МассивОбъектов = Новый Массив;
|
||||||
Отбор = Новый Массив;
|
Отбор = Новый Массив;
|
||||||
|
|
||||||
Отбор.Добавить("mimeType != 'application/vnd.google-apps.folder'");
|
Отбор.Добавить("mimeType != 'application/vnd.google-apps.folder'");
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
|
||||||
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Каталог) Тогда
|
Если ЗначениеЗаполнено(Каталог) Тогда
|
||||||
Отбор.Добавить("'" + Каталог + "' in parents");
|
Отбор.Добавить("'" + Каталог + "' in parents");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, , Отбор);
|
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, , Отбор);
|
||||||
|
|
||||||
Возврат МассивОбъектов;
|
Возврат МассивОбъектов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить файл
|
// Загрузить файл
|
||||||
// Загружает файл на диск
|
// Загружает файл на диск
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Файл - ДвоичныеДанные,Строка - Загружаемый файл - file
|
// Файл - ДвоичныеДанные,Строка - Загружаемый файл - file
|
||||||
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла - props - JSON описания или путь к .json
|
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла - props - JSON описания или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Описание) Экспорт
|
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Описание) Экспорт
|
||||||
|
|
||||||
Возврат УправлениеФайлом(Токен, Файл, Описание);
|
Возврат УправлениеФайлом(Токен, Файл, Описание);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать папку
|
// Создать папку
|
||||||
// Создает пустой каталог на диске
|
// Создает пустой каталог на диске
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Имя - Строка - Имя папки - title
|
// Имя - Строка - Имя папки - title
|
||||||
// Родитель - Строка - Родитель - catalog
|
// Родитель - Строка - Родитель - catalog
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьПапку(Знач Токен, Знач Имя, Знач Родитель = "") Экспорт
|
Функция СоздатьПапку(Знач Токен, Знач Имя, Знач Родитель = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Родитель);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Родитель);
|
||||||
|
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
Описание.Вставить("MIME" , "application/vnd.google-apps.folder");
|
Описание.Вставить("MIME" , "application/vnd.google-apps.folder");
|
||||||
Описание.Вставить("Имя" , Имя);
|
Описание.Вставить("Имя" , Имя);
|
||||||
Описание.Вставить("Описание", "");
|
Описание.Вставить("Описание", "");
|
||||||
Описание.Вставить("Родитель", ?(ЗначениеЗаполнено(Родитель), Родитель, "root"));
|
Описание.Вставить("Родитель", ?(ЗначениеЗаполнено(Родитель), Родитель, "root"));
|
||||||
|
|
||||||
Возврат УправлениеФайлом(Токен, , Описание);
|
Возврат УправлениеФайлом(Токен, , Описание);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Скачать файл
|
// Скачать файл
|
||||||
// Получает файл по ID
|
// Получает файл по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор файла - object
|
// Идентификатор - Строка - Идентификатор файла - object
|
||||||
// ПутьСохранения - Строка - Путь сохранения файла - out
|
// ПутьСохранения - Строка - Путь сохранения файла - out
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
||||||
Функция СкачатьФайл(Знач Токен, Знач Идентификатор, Знач ПутьСохранения = "") Экспорт
|
Функция СкачатьФайл(Знач Токен, Знач Идентификатор, Знач ПутьСохранения = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
|
|
||||||
Параметры = Новый Соответствие;
|
Параметры = Новый Соответствие;
|
||||||
Параметры.Вставить("alt", "media");
|
Параметры.Вставить("alt", "media");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры , Заголовки, ПутьСохранения);
|
Ответ = OPI_Инструменты.Get(URL, Параметры , Заголовки, ПутьСохранения);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Скоприровать объект
|
// Скоприровать объект
|
||||||
// Копирует файл или каталог
|
// Копирует файл или каталог
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор объекта - object
|
// Идентификатор - Строка - Идентификатор объекта - object
|
||||||
// НовоеИмя - Строка - Новое имя объекта - title
|
// НовоеИмя - Строка - Новое имя объекта - title
|
||||||
// НовыйРодитель - Строка - Новый каталог размещения - catalog
|
// НовыйРодитель - Строка - Новый каталог размещения - catalog
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СкопироватьОбъект(Знач Токен, Знач Идентификатор, Знач НовоеИмя = "", Знач НовыйРодитель = "") Экспорт
|
Функция СкопироватьОбъект(Знач Токен, Знач Идентификатор, Знач НовоеИмя = "", Знач НовыйРодитель = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовыйРодитель);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовыйРодитель);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/copy";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/copy";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
||||||
Параметры.Вставить("name", НовоеИмя);
|
Параметры.Вставить("name", НовоеИмя);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(НовыйРодитель) Тогда
|
Если ЗначениеЗаполнено(НовыйРодитель) Тогда
|
||||||
|
|
||||||
МассивРодителей = Новый Массив;
|
МассивРодителей = Новый Массив;
|
||||||
МассивРодителей.Добавить(НовыйРодитель);
|
МассивРодителей.Добавить(НовыйРодитель);
|
||||||
Параметры.Вставить("parents", МассивРодителей);
|
Параметры.Вставить("parents", МассивРодителей);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры , Заголовки, Истина);
|
Ответ = OPI_Инструменты.Post(URL, Параметры , Заголовки, Истина);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить файл
|
// Обновить файл
|
||||||
// Обновляет двоичные данные файла
|
// Обновляет двоичные данные файла
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор обновляемого объекта - object
|
// Идентификатор - Строка - Идентификатор обновляемого объекта - object
|
||||||
// Файл - ДвоичныеДанные,Строка - Файл источник обновления - file
|
// Файл - ДвоичныеДанные,Строка - Файл источник обновления - file
|
||||||
// НовоеИмя - Строка - Новое имя файла (если необходимо) - title
|
// НовоеИмя - Строка - Новое имя файла (если необходимо) - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОбновитьФайл(Знач Токен, Знач Идентификатор, Знач Файл, Знач НовоеИмя = "") Экспорт
|
Функция ОбновитьФайл(Знач Токен, Знач Идентификатор, Знач Файл, Знач НовоеИмя = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(НовоеИмя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
Описание.Вставить("Имя", НовоеИмя);
|
Описание.Вставить("Имя", НовоеИмя);
|
||||||
Иначе
|
Иначе
|
||||||
Описание = "";
|
Описание = "";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат УправлениеФайлом(Токен, Файл, Описание, Идентификатор);
|
Возврат УправлениеФайлом(Токен, Файл, Описание, Идентификатор);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить объект
|
// Удалить объект
|
||||||
// Удаляет файл или каталог по ID
|
// Удаляет файл или каталог по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор объекта для удаления - object
|
// Идентификатор - Строка - Идентификатор объекта для удаления - object
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт
|
Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить описание файла !NOCLI
|
// Получить описание файла !NOCLI
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - Описание файла
|
// Соответствие Из КлючИЗначение - Описание файла
|
||||||
Функция ПолучитьОписаниеФайла() Экспорт
|
Функция ПолучитьОписаниеФайла() Экспорт
|
||||||
|
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
Описание.Вставить("MIME" , "image/jpeg"); // MIME-тип загружаемого файла
|
Описание.Вставить("MIME" , "image/jpeg"); // MIME-тип загружаемого файла
|
||||||
Описание.Вставить("Имя" , "Новый файл.jpg"); // Имя файла с расширением
|
Описание.Вставить("Имя" , "Новый файл.jpg"); // Имя файла с расширением
|
||||||
Описание.Вставить("Описание" , "Это новый файл"); // Описание файла
|
Описание.Вставить("Описание" , "Это новый файл"); // Описание файла
|
||||||
Описание.Вставить("Родитель" , "root"); // ID каталога загрузки или "root" для загрузки в корень
|
Описание.Вставить("Родитель" , "root"); // ID каталога загрузки или "root" для загрузки в корень
|
||||||
|
|
||||||
Возврат Описание;
|
Возврат Описание;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -322,107 +322,107 @@
|
|||||||
|
|
||||||
// Создать комментарий
|
// Создать комментарий
|
||||||
// Создает комментарий к файлу или каталогу
|
// Создает комментарий к файлу или каталогу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор объекта, для которого необходим комментарий - object
|
// Идентификатор - Строка - Идентификатор объекта, для которого необходим комментарий - object
|
||||||
// Комментарий - Строка - Текст комментария - text
|
// Комментарий - Строка - Текст комментария - text
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьКомментарий(Знач Токен, Знач Идентификатор, Знач Комментарий) Экспорт
|
Функция СоздатьКомментарий(Знач Токен, Знач Идентификатор, Знач Комментарий) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/comments?fields=*";
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/comments?fields=*";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("content", Комментарий);
|
Параметры.Вставить("content", Комментарий);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.POST(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.POST(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить комментарий
|
// Получить комментарий
|
||||||
// Получает комментарий по ID
|
// Получает комментарий по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
||||||
// ИДКомментария - Строка - Идентификатор комментария - comment
|
// ИДКомментария - Строка - Идентификатор комментария - comment
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
Функция ПолучитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список комментариев
|
// Получить список комментариев
|
||||||
// Получает список всех комментариев объекта
|
// Получает список всех комментариев объекта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИДОбъекта - Строка - Идентификатор объекта - object
|
// ИДОбъекта - Строка - Идентификатор объекта - object
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьСписокКомментариев(Знач Токен, Знач ИДОбъекта) Экспорт
|
Функция ПолучитьСписокКомментариев(Знач Токен, Знач ИДОбъекта) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments";
|
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить комментарий
|
// Удалить комментарий
|
||||||
// Удаляет комментарий по ID
|
// Удаляет комментарий по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария - object
|
||||||
// ИДКомментария - Строка - Идентификатор комментария - comment
|
// ИДКомментария - Строка - Идентификатор комментария - comment
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
Функция УдалитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДОбъекта);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДКомментария);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -433,59 +433,59 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Процедура ПолучитьСписокОбъектовРекурсивно(Знач Заголовки, МассивОбъектов, Подробно = Ложь, Отбор = "", Страница = "")
|
Процедура ПолучитьСписокОбъектовРекурсивно(Знач Заголовки, МассивОбъектов, Подробно = Ложь, Отбор = "", Страница = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/drive/v3/files";
|
URL = "https://www.googleapis.com/drive/v3/files";
|
||||||
Files = "files";
|
Files = "files";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("fields", "*");
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
Параметры.Вставить("pageToken", Страница);
|
Параметры.Вставить("pageToken", Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Отбор) И ТипЗнч(Отбор) = Тип("Массив") Тогда
|
Если ЗначениеЗаполнено(Отбор) И ТипЗнч(Отбор) = Тип("Массив") Тогда
|
||||||
ОтборСтрока = СтрСоединить(Отбор, " and ");
|
ОтборСтрока = СтрСоединить(Отбор, " and ");
|
||||||
Параметры.Вставить("q", ОтборСтрока);
|
Параметры.Вставить("q", ОтборСтрока);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Результат = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
Результат = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Объекты = Результат[Files];
|
Объекты = Результат[Files];
|
||||||
Страница = Результат[NPT];
|
Страница = Результат[NPT];
|
||||||
|
|
||||||
Для Каждого ТекущийОбъект Из Объекты Цикл
|
Для Каждого ТекущийОбъект Из Объекты Цикл
|
||||||
МассивОбъектов.Добавить(ТекущийОбъект);
|
МассивОбъектов.Добавить(ТекущийОбъект);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если Объекты.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
Если Объекты.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
|
||||||
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор, Страница);
|
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор, Страница);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура РазложитьОбъектыПодробно(Знач Токен, МассивОбъектов)
|
Процедура РазложитьОбъектыПодробно(Знач Токен, МассивОбъектов)
|
||||||
|
|
||||||
Для Каждого ТекущийОбъект Из МассивОбъектов Цикл
|
Для Каждого ТекущийОбъект Из МассивОбъектов Цикл
|
||||||
|
|
||||||
МассивФайлов = Новый Массив;
|
МассивФайлов = Новый Массив;
|
||||||
ТекущийИД = ТекущийОбъект["id"];
|
ТекущийИД = ТекущийОбъект["id"];
|
||||||
|
|
||||||
Результат = ПолучитьСписокФайлов(Токен, , ТекущийИД);
|
Результат = ПолучитьСписокФайлов(Токен, , ТекущийИД);
|
||||||
|
|
||||||
Для Каждого Файл Из Результат Цикл
|
Для Каждого Файл Из Результат Цикл
|
||||||
МассивФайлов.Добавить(Файл);
|
МассивФайлов.Добавить(Файл);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ТекущийОбъект.Вставить("files", МассивФайлов);
|
ТекущийОбъект.Вставить("files", МассивФайлов);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура СформироватьПараметрыЗагрузкиФайла(Описание)
|
Процедура СформироватьПараметрыЗагрузкиФайла(Описание)
|
||||||
|
|
||||||
СформированноеОписание = Новый Соответствие;
|
СформированноеОписание = Новый Соответствие;
|
||||||
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Описание);
|
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Описание);
|
||||||
|
|
||||||
@ -495,81 +495,81 @@
|
|||||||
СоответствиеПолей.Вставить("Описание" , "description");
|
СоответствиеПолей.Вставить("Описание" , "description");
|
||||||
СоответствиеПолей.Вставить("Родитель" , "parents");
|
СоответствиеПолей.Вставить("Родитель" , "parents");
|
||||||
СоответствиеПолей.Вставить("Расширение", "fileExtension");
|
СоответствиеПолей.Вставить("Расширение", "fileExtension");
|
||||||
|
|
||||||
Для Каждого Элемент Из Описание Цикл
|
Для Каждого Элемент Из Описание Цикл
|
||||||
|
|
||||||
Если Элемент.Ключ = "Родитель" Тогда
|
Если Элемент.Ключ = "Родитель" Тогда
|
||||||
|
|
||||||
ТекущееЗначение = Новый Массив;
|
ТекущееЗначение = Новый Массив;
|
||||||
ТекущееЗначение.Добавить(Элемент.Значение);
|
ТекущееЗначение.Добавить(Элемент.Значение);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
ТекущееЗначение = Элемент.Значение;
|
ТекущееЗначение = Элемент.Значение;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ИмяПоля = СоответствиеПолей.Получить(Элемент.Ключ);
|
ИмяПоля = СоответствиеПолей.Получить(Элемент.Ключ);
|
||||||
СформированноеОписание.Вставить(ИмяПоля, ТекущееЗначение);
|
СформированноеОписание.Вставить(ИмяПоля, ТекущееЗначение);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Описание = СформированноеОписание;
|
Описание = СформированноеОписание;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Функция УправлениеФайлом(Знач Токен, Знач Файл = "", Знач Описание = "", Знач Идентификатор = "")
|
Функция УправлениеФайлом(Знач Токен, Знач Файл = "", Знач Описание = "", Знач Идентификатор = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Описание) Тогда
|
Если ЗначениеЗаполнено(Описание) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Описание);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Описание);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
MimeType = "mimeType";
|
MimeType = "mimeType";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
||||||
MIME = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор)[MimeType];
|
MIME = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор)[MimeType];
|
||||||
Иначе
|
Иначе
|
||||||
MIME = Описание["MIME"];
|
MIME = Описание["MIME"];
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Описание) Тогда
|
Если Не ЗначениеЗаполнено(Описание) Тогда
|
||||||
Описание = Новый Соответствие;
|
Описание = Новый Соответствие;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
СформироватьПараметрыЗагрузкиФайла(Описание);
|
СформироватьПараметрыЗагрузкиФайла(Описание);
|
||||||
ОписаниеJSON = OPI_Инструменты.JSONСтрокой(Описание);
|
ОписаниеJSON = OPI_Инструменты.JSONСтрокой(Описание);
|
||||||
|
|
||||||
СоответствиеФайла = Новый Соответствие;
|
СоответствиеФайла = Новый Соответствие;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Файл) Тогда
|
Если ЗначениеЗаполнено(Файл) Тогда
|
||||||
|
|
||||||
РазмерЧасти = 268435457;
|
РазмерЧасти = 268435457;
|
||||||
Размер = OPI_Инструменты.ПреобразоватьДанныеСПолучениемРазмера(Файл, РазмерЧасти);
|
Размер = OPI_Инструменты.ПреобразоватьДанныеСПолучениемРазмера(Файл, РазмерЧасти);
|
||||||
|
|
||||||
СоответствиеФайла.Вставить(Файл, MIME);
|
СоответствиеФайла.Вставить(Файл, MIME);
|
||||||
|
|
||||||
Если Размер < РазмерЧасти И ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
Если Размер < РазмерЧасти И ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||||
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = ЗагрузитьБольшойФайл(Описание, СоответствиеФайла, Заголовки, Идентификатор);
|
Ответ = ЗагрузитьБольшойФайл(Описание, СоответствиеФайла, Заголовки, Идентификатор);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
Ответ = ЗагрузитьМалыйФайл(ОписаниеJSON, СоответствиеФайла, Заголовки, Идентификатор);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьМалыйФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
Функция ЗагрузитьМалыйФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
||||||
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
||||||
Ответ = OPI_Инструменты.PatchMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
|
Ответ = OPI_Инструменты.PatchMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
|
||||||
@ -578,149 +578,149 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьБольшойФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
Функция ЗагрузитьБольшойФайл(Знач Описание, Знач СоответствиеФайла, Знач Заголовки, Знач Идентификатор = "")
|
||||||
|
|
||||||
Для Каждого Файл Из СоответствиеФайла Цикл
|
Для Каждого Файл Из СоответствиеФайла Цикл
|
||||||
Двоичные = Файл.Ключ;
|
Двоичные = Файл.Ключ;
|
||||||
Прервать;
|
Прервать;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
Если ЗначениеЗаполнено(Идентификатор) Тогда
|
||||||
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
|
||||||
Ответ = OPI_Инструменты.Patch(URL, Описание, Заголовки, Истина, Истина);
|
Ответ = OPI_Инструменты.Patch(URL, Описание, Заголовки, Истина, Истина);
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = OPI_Инструменты.Post(URL, Описание, Заголовки, Истина, Истина);
|
Ответ = OPI_Инструменты.Post(URL, Описание, Заголовки, Истина, Истина);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
АдресЗагрузки = Ответ.Заголовки["Location"];
|
АдресЗагрузки = Ответ.Заголовки["Location"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(АдресЗагрузки) Тогда
|
Если Не ЗначениеЗаполнено(АдресЗагрузки) Тогда
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ОтветЗагрузки = ЗагрузитьФайлЧастями(Двоичные, АдресЗагрузки);
|
ОтветЗагрузки = ЗагрузитьФайлЧастями(Двоичные, АдресЗагрузки);
|
||||||
Ответ = ?(ЗначениеЗаполнено(ОтветЗагрузки), ОтветЗагрузки, Ответ);
|
Ответ = ?(ЗначениеЗаполнено(ОтветЗагрузки), ОтветЗагрузки, Ответ);
|
||||||
|
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьФайлЧастями(Знач Двоичные, Знач АдресЗагрузки)
|
Функция ЗагрузитьФайлЧастями(Знач Двоичные, Знач АдресЗагрузки)
|
||||||
|
|
||||||
Ответ = "";
|
Ответ = "";
|
||||||
РазмерЧасти = 268435456;
|
РазмерЧасти = 268435456;
|
||||||
ПрочитаноБайт = 0;
|
ПрочитаноБайт = 0;
|
||||||
ТекущаяПозиция = 0;
|
ТекущаяПозиция = 0;
|
||||||
ОбщийРазмер = Двоичные.Размер();
|
ОбщийРазмер = Двоичные.Размер();
|
||||||
СтрОбщийРазмер = OPI_Инструменты.ЧислоВСтроку(ОбщийРазмер);
|
СтрОбщийРазмер = OPI_Инструменты.ЧислоВСтроку(ОбщийРазмер);
|
||||||
ЧтениеДанных = Новый ЧтениеДанных(Двоичные);
|
ЧтениеДанных = Новый ЧтениеДанных(Двоичные);
|
||||||
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
|
ИсходныйПоток = ЧтениеДанных.ИсходныйПоток();
|
||||||
|
|
||||||
Пока ПрочитаноБайт < ОбщийРазмер Цикл
|
Пока ПрочитаноБайт < ОбщийРазмер Цикл
|
||||||
|
|
||||||
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
|
ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция();
|
||||||
Результат = ЧтениеДанных.Прочитать(РазмерЧасти);
|
Результат = ЧтениеДанных.Прочитать(РазмерЧасти);
|
||||||
ТекущиеДанные = Результат.ПолучитьДвоичныеДанные();
|
ТекущиеДанные = Результат.ПолучитьДвоичныеДанные();
|
||||||
РазмерТекущих = ТекущиеДанные.Размер();
|
РазмерТекущих = ТекущиеДанные.Размер();
|
||||||
СледующаяПозиция = ТекущаяПозиция + РазмерТекущих - 1;
|
СледующаяПозиция = ТекущаяПозиция + РазмерТекущих - 1;
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда
|
Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда
|
||||||
Прервать;
|
Прервать;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаголовокПотока = "bytes "
|
ЗаголовокПотока = "bytes "
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(ТекущаяПозиция)
|
+ OPI_Инструменты.ЧислоВСтроку(ТекущаяПозиция)
|
||||||
+ "-"
|
+ "-"
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(СледующаяПозиция)
|
+ OPI_Инструменты.ЧислоВСтроку(СледующаяПозиция)
|
||||||
+ "/"
|
+ "/"
|
||||||
+ СтрОбщийРазмер;
|
+ СтрОбщийРазмер;
|
||||||
|
|
||||||
ДопЗаголовки = Новый Соответствие;
|
ДопЗаголовки = Новый Соответствие;
|
||||||
ДопЗаголовки.Вставить("Content-Length", OPI_Инструменты.ЧислоВСтроку(РазмерТекущих));
|
ДопЗаголовки.Вставить("Content-Length", OPI_Инструменты.ЧислоВСтроку(РазмерТекущих));
|
||||||
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
||||||
ДопЗаголовки.Вставить("Content-Type" , "application/octet-stream");
|
ДопЗаголовки.Вставить("Content-Type" , "application/octet-stream");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Put(АдресЗагрузки, ТекущиеДанные, ДопЗаголовки, Ложь, Истина);
|
Ответ = OPI_Инструменты.Put(АдресЗагрузки, ТекущиеДанные, ДопЗаголовки, Ложь, Истина);
|
||||||
|
|
||||||
РезультатПроверки = ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция);
|
РезультатПроверки = ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(РезультатПроверки) Тогда
|
Если ЗначениеЗаполнено(РезультатПроверки) Тогда
|
||||||
Возврат РезультатПроверки;
|
Возврат РезультатПроверки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
// !OInt КБайт = 1024;
|
// !OInt КБайт = 1024;
|
||||||
// !OInt МБайт = КБайт * КБайт;
|
// !OInt МБайт = КБайт * КБайт;
|
||||||
// !OInt Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт));
|
// !OInt Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт));
|
||||||
|
|
||||||
// !OInt ВыполнитьСборкуМусора();
|
// !OInt ВыполнитьСборкуМусора();
|
||||||
// !OInt ОсвободитьОбъект(ТекущиеДанные);
|
// !OInt ОсвободитьОбъект(ТекущиеДанные);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция)
|
Функция ПроверитьЗагрузкуЧасти(Ответ, СтрОбщийРазмер, ДопЗаголовки, АдресЗагрузки, ТекущаяПозиция)
|
||||||
|
|
||||||
НачалоКодовОшибок = 400;
|
НачалоКодовОшибок = 400;
|
||||||
КонецКодовПадений = 600;
|
КонецКодовПадений = 600;
|
||||||
НачалоКодовУспеха = 200;
|
НачалоКодовУспеха = 200;
|
||||||
КонецКодовУспеха = 300;
|
КонецКодовУспеха = 300;
|
||||||
Перенаправление = 308;
|
Перенаправление = 308;
|
||||||
|
|
||||||
Если Ответ.КодСостояния >= НачалоКодовОшибок И Ответ.КодСостояния < КонецКодовПадений Тогда
|
Если Ответ.КодСостояния >= НачалоКодовОшибок И Ответ.КодСостояния < КонецКодовПадений Тогда
|
||||||
|
|
||||||
ЗаголовокПотока = "bytes */" + СтрОбщийРазмер;
|
ЗаголовокПотока = "bytes */" + СтрОбщийРазмер;
|
||||||
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
ДопЗаголовки.Вставить("Content-Range" , ЗаголовокПотока);
|
||||||
|
|
||||||
ОтветПроверки = OPI_Инструменты.Put(АдресЗагрузки, "", ДопЗаголовки, Ложь, Истина);
|
ОтветПроверки = OPI_Инструменты.Put(АдресЗагрузки, "", ДопЗаголовки, Ложь, Истина);
|
||||||
|
|
||||||
Если ОтветПроверки.КодСостояния >= НачалоКодовУспеха И ОтветПроверки.КодСостояния < КонецКодовУспеха Тогда
|
Если ОтветПроверки.КодСостояния >= НачалоКодовУспеха И ОтветПроверки.КодСостояния < КонецКодовУспеха Тогда
|
||||||
|
|
||||||
OPI_Инструменты.ОбработатьОтвет(ОтветПроверки);
|
OPI_Инструменты.ОбработатьОтвет(ОтветПроверки);
|
||||||
Возврат ОтветПроверки;
|
Возврат ОтветПроверки;
|
||||||
|
|
||||||
ИначеЕсли ОтветПроверки.КодСостояния = Перенаправление Тогда
|
ИначеЕсли ОтветПроверки.КодСостояния = Перенаправление Тогда
|
||||||
|
|
||||||
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
ЗагруженныеДанные = Ответ.Заголовки["Range"];
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(ЗагруженныеДанные) Тогда
|
Если Не ЗначениеЗаполнено(ЗагруженныеДанные) Тогда
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗагруженныеДанные = СтрЗаменить(ЗагруженныеДанные, "bytes=", "");
|
ЗагруженныеДанные = СтрЗаменить(ЗагруженныеДанные, "bytes=", "");
|
||||||
МассивИнформации = СтрРазделить(ЗагруженныеДанные, "-", Ложь);
|
МассивИнформации = СтрРазделить(ЗагруженныеДанные, "-", Ложь);
|
||||||
НеобходимоЧастей = 2;
|
НеобходимоЧастей = 2;
|
||||||
|
|
||||||
Если Не МассивИнформации.Количество() = НеобходимоЧастей Тогда
|
Если Не МассивИнформации.Количество() = НеобходимоЧастей Тогда
|
||||||
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТекущаяПозиция = Число(МассивИнформации[1]) + 1;
|
ТекущаяПозиция = Число(МассивИнформации[1]) + 1;
|
||||||
|
|
||||||
Возврат "";
|
Возврат "";
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os
|
// OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os
|
||||||
// Lib: Google Sheets
|
// Lib: Google Sheets
|
||||||
// CLI: gsheets
|
// CLI: gsheets
|
||||||
|
|
||||||
@ -43,90 +43,90 @@
|
|||||||
|
|
||||||
// Создать книгу
|
// Создать книгу
|
||||||
// Создает новую книгу
|
// Создает новую книгу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Наименование - Строка - Наименование - title
|
// Наименование - Строка - Наименование - title
|
||||||
// МассивИменЛистов - Массив из Строка - Массив имен для добавления новых листов в книгу - sheets
|
// МассивИменЛистов - Массив из Строка - Массив имен для добавления новых листов в книгу - sheets
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция СоздатьКнигу(Знач Токен, Знач Наименование, Знач МассивИменЛистов) Экспорт
|
Функция СоздатьКнигу(Знач Токен, Знач Наименование, Знач МассивИменЛистов) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивИменЛистов);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивИменЛистов);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets";
|
||||||
|
|
||||||
Свойства = Новый Структура("title" , Наименование);
|
Свойства = Новый Структура("title" , Наименование);
|
||||||
Листы = Новый Массив;
|
Листы = Новый Массив;
|
||||||
|
|
||||||
ЗаполнитьМассивЛистов(МассивИменЛистов, Листы);
|
ЗаполнитьМассивЛистов(МассивИменЛистов, Листы);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("properties", Свойства, "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("properties", Свойства, "Коллекция", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("sheets" , Листы , "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("sheets" , Листы , "Коллекция", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить книгу
|
// Получить книгу
|
||||||
// Получает информацию о книге по ID
|
// Получает информацию о книге по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Идентификатор - Строка - Идентификатор книги - spreadsheet
|
// Идентификатор - Строка - Идентификатор книги - spreadsheet
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьКнигу(Знач Токен, Знач Идентификатор) Экспорт
|
Функция ПолучитьКнигу(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Идентификатор;
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Идентификатор;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить наименование книги
|
// Изменить наименование книги
|
||||||
// Изменяет наименование существующей книги
|
// Изменяет наименование существующей книги
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// Наименование - Строка - Новое наименование - title
|
// Наименование - Строка - Новое наименование - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ИзменитьНаименованиеКниги(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
Функция ИзменитьНаименованиеКниги(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
||||||
|
|
||||||
Изменение = Новый Структура("title", Наименование);
|
Изменение = Новый Структура("title", Наименование);
|
||||||
ЗапросИзменения = Новый Структура("properties,fields", Изменение, "title");
|
ЗапросИзменения = Новый Структура("properties,fields", Изменение, "title");
|
||||||
Запрос = Новый Структура("updateSpreadsheetProperties", ЗапросИзменения);
|
Запрос = Новый Структура("updateSpreadsheetProperties", ЗапросИзменения);
|
||||||
|
|
||||||
МассивЗапросов = Новый Массив;
|
МассивЗапросов = Новый Массив;
|
||||||
МассивЗапросов.Добавить(Запрос);
|
МассивЗапросов.Добавить(Запрос);
|
||||||
|
|
||||||
Параметры = Новый Структура("requests", МассивЗапросов);
|
Параметры = Новый Структура("requests", МассивЗапросов);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -135,95 +135,95 @@
|
|||||||
|
|
||||||
// Добавить лист
|
// Добавить лист
|
||||||
// Добавляет новый лист в книгу
|
// Добавляет новый лист в книгу
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - Идентификатор книги - spreadsheet
|
// Книга - Строка - Идентификатор книги - spreadsheet
|
||||||
// Наименование - Строка - Наименование нового листа - title
|
// Наименование - Строка - Наименование нового листа - title
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ДобавитьЛист(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
Функция ДобавитьЛист(Знач Токен, Знач Книга, Знач Наименование) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
||||||
Лист = СоздатьЛист(Наименование);
|
Лист = СоздатьЛист(Наименование);
|
||||||
|
|
||||||
Запросы = Новый Массив;
|
Запросы = Новый Массив;
|
||||||
Изменение = Новый Структура("addSheet", Лист);
|
Изменение = Новый Структура("addSheet", Лист);
|
||||||
Запросы.Добавить(Изменение);
|
Запросы.Добавить(Изменение);
|
||||||
|
|
||||||
Параметры = Новый Структура("requests", Запросы);
|
Параметры = Новый Структура("requests", Запросы);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить лист
|
// Удалить лист
|
||||||
// Удаляет лист из книги
|
// Удаляет лист из книги
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - Идентификатор книги - spreadsheet
|
// Книга - Строка - Идентификатор книги - spreadsheet
|
||||||
// Лист - Строка - Идентификатор удаляемого листа - sheet
|
// Лист - Строка - Идентификатор удаляемого листа - sheet
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УдалитьЛист(Знач Токен, Знач Книга, Знач Лист) Экспорт
|
Функция УдалитьЛист(Знач Токен, Знач Книга, Знач Лист) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + ":batchUpdate";
|
||||||
|
|
||||||
Запросы = Новый Массив;
|
Запросы = Новый Массив;
|
||||||
Лист = Новый Структура("sheetId" , Лист);
|
Лист = Новый Структура("sheetId" , Лист);
|
||||||
Изменение = Новый Структура("deleteSheet", Лист);
|
Изменение = Новый Структура("deleteSheet", Лист);
|
||||||
Запросы.Добавить(Изменение);
|
Запросы.Добавить(Изменение);
|
||||||
|
|
||||||
Параметры = Новый Структура("requests", Запросы);
|
Параметры = Новый Структура("requests", Запросы);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Копировать лист
|
// Копировать лист
|
||||||
// Копирует лист из одной книги в другую
|
// Копирует лист из одной книги в другую
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Откуда - Строка - ID книги источника - from
|
// Откуда - Строка - ID книги источника - from
|
||||||
// Куда - Строка - ID книги приемника - to
|
// Куда - Строка - ID книги приемника - to
|
||||||
// Лист - Строка - ID копируемого листа - sheet
|
// Лист - Строка - ID копируемого листа - sheet
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция КопироватьЛист(Знач Токен, Знач Откуда, Знач Куда, Знач Лист) Экспорт
|
Функция КопироватьЛист(Знач Токен, Знач Откуда, Знач Куда, Знач Лист) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/"
|
||||||
+ Откуда
|
+ Откуда
|
||||||
+ "/sheets/"
|
+ "/sheets/"
|
||||||
+ Лист
|
+ Лист
|
||||||
+ ":copyTo";
|
+ ":copyTo";
|
||||||
|
|
||||||
Параметры = Новый Структура("destinationSpreadsheetId", Куда);
|
Параметры = Новый Структура("destinationSpreadsheetId", Куда);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -232,14 +232,14 @@
|
|||||||
|
|
||||||
// Установить значения ячеек
|
// Установить значения ячеек
|
||||||
// Устанавливает значения ячеек листа
|
// Устанавливает значения ячеек листа
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// СоответствиеЗначений - Соответствие Из КлючИЗначение - Данные заполнения, где ключ это имя ячейки вида A1 - data
|
// СоответствиеЗначений - Соответствие Из КлючИЗначение - Данные заполнения, где ключ это имя ячейки вида A1 - data
|
||||||
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
||||||
// ОсновноеИзмерение - Строка - Основное измерение при заполнении диапазона массивом - dim
|
// ОсновноеИзмерение - Строка - Основное измерение при заполнении диапазона массивом - dim
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция УстановитьЗначенияЯчеек(Знач Токен
|
Функция УстановитьЗначенияЯчеек(Знач Токен
|
||||||
@ -247,90 +247,90 @@
|
|||||||
, Знач СоответствиеЗначений
|
, Знач СоответствиеЗначений
|
||||||
, Знач Лист = ""
|
, Знач Лист = ""
|
||||||
, Знач ОсновноеИзмерение = "COLUMNS") Экспорт
|
, Знач ОсновноеИзмерение = "COLUMNS") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеЗначений);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеЗначений);
|
||||||
|
|
||||||
Если Не ТипЗнч(СоответствиеЗначений) = Тип("Структура")
|
Если Не ТипЗнч(СоответствиеЗначений) = Тип("Структура")
|
||||||
И Не ТипЗнч(СоответствиеЗначений) = Тип("Соответствие") Тогда
|
И Не ТипЗнч(СоответствиеЗначений) = Тип("Соответствие") Тогда
|
||||||
Возврат "Не удалось привести структуру значений к коллекции";
|
Возврат "Не удалось привести структуру значений к коллекции";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchUpdate";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchUpdate";
|
||||||
МассивДанных = СформироватьМассивДанныхЯчеек(СоответствиеЗначений, ОсновноеИзмерение, Лист);
|
МассивДанных = СформироватьМассивДанныхЯчеек(СоответствиеЗначений, ОсновноеИзмерение, Лист);
|
||||||
|
|
||||||
Параметры = Новый Структура("data,valueInputOption", МассивДанных, "USER_ENTERED");
|
Параметры = Новый Структура("data,valueInputOption", МассивДанных, "USER_ENTERED");
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Очистить ячейки
|
// Очистить ячейки
|
||||||
// Очищает значение в ячейках
|
// Очищает значение в ячейках
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для очистки - cells
|
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для очистки - cells
|
||||||
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОчиститьЯчейки(Знач Токен, Знач Книга, Знач МассивЯчеек, Знач Лист = "") Экспорт
|
Функция ОчиститьЯчейки(Знач Токен, Знач Книга, Знач МассивЯчеек, Знач Лист = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchClear";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchClear";
|
||||||
|
|
||||||
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
||||||
|
|
||||||
Параметры = Новый Структура("ranges", МассивЯчеек);
|
Параметры = Новый Структура("ranges", МассивЯчеек);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить значения ячеек
|
// Получить значения ячеек
|
||||||
// Получает значения ячеек таблицы
|
// Получает значения ячеек таблицы
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Книга - Строка - ID книги - spreadsheet
|
// Книга - Строка - ID книги - spreadsheet
|
||||||
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для получения (весь лист, если не заполнено) - cells
|
// МассивЯчеек - Массив из Строка - Массив ячеек вида А1 для получения (весь лист, если не заполнено) - cells
|
||||||
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
// Лист - Строка - Имя листа (первый лист по умолчанию) - sheetname
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьЗначенияЯчеек(Знач Токен, Знач Книга, Знач МассивЯчеек = "", Знач Лист = "") Экспорт
|
Функция ПолучитьЗначенияЯчеек(Знач Токен, Знач Книга, Знач МассивЯчеек = "", Знач Лист = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Книга);
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchGet";
|
URL = "https://sheets.googleapis.com/v4/spreadsheets/" + Книга + "/values:batchGet";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивЯчеек) Тогда
|
Если ЗначениеЗаполнено(МассивЯчеек) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивЯчеек);
|
||||||
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
СформироватьМассивИменЯчеек(МассивЯчеек, Лист);
|
||||||
|
|
||||||
Первый = Истина;
|
Первый = Истина;
|
||||||
Для Каждого Ячейка Из МассивЯчеек Цикл
|
Для Каждого Ячейка Из МассивЯчеек Цикл
|
||||||
Разделитель = ?(Первый, "?", "&");
|
Разделитель = ?(Первый, "?", "&");
|
||||||
URL = URL + Разделитель + "ranges=" + Ячейка;
|
URL = URL + Разделитель + "ranges=" + Ячейка;
|
||||||
Первый = Ложь;
|
Первый = Ложь;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
Иначе
|
Иначе
|
||||||
URL = URL + "?ranges='" + Лист + "'";
|
URL = URL + "?ranges ='" + Лист + "'";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -340,75 +340,75 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Процедура ЗаполнитьМассивЛистов(Знач МассивИмен, МассивЛистов)
|
Процедура ЗаполнитьМассивЛистов(Знач МассивИмен, МассивЛистов)
|
||||||
|
|
||||||
Для Каждого ИмяЛиста Из МассивИмен Цикл
|
Для Каждого ИмяЛиста Из МассивИмен Цикл
|
||||||
|
|
||||||
Лист = СоздатьЛист(ИмяЛиста);
|
Лист = СоздатьЛист(ИмяЛиста);
|
||||||
МассивЛистов.Добавить(Лист);
|
МассивЛистов.Добавить(Лист);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ДобавитьИмяЛиста(Ячейка, Знач Лист)
|
Процедура ДобавитьИмяЛиста(Ячейка, Знач Лист)
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Лист) Тогда
|
Если ЗначениеЗаполнено(Лист) Тогда
|
||||||
Ячейка = "'" + Лист + "'!" + Ячейка;
|
Ячейка = "'" + Лист + "'!" + Ячейка;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Функция СоздатьЛист(Знач Наименование)
|
Функция СоздатьЛист(Знач Наименование)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
|
|
||||||
СвойстваЛиста = Новый Структура("title" , Наименование);
|
СвойстваЛиста = Новый Структура("title" , Наименование);
|
||||||
Лист = Новый Структура("properties", СвойстваЛиста);
|
Лист = Новый Структура("properties", СвойстваЛиста);
|
||||||
|
|
||||||
Возврат Лист;
|
Возврат Лист;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьМассивДанныхЯчеек(Знач СтруктураЗначений, Знач ОсновноеИзмерение, Знач Лист)
|
Функция СформироватьМассивДанныхЯчеек(Знач СтруктураЗначений, Знач ОсновноеИзмерение, Знач Лист)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
МассивДанных = Новый Массив;
|
МассивДанных = Новый Массив;
|
||||||
|
|
||||||
Для Каждого ДанныеЯчейки Из СтруктураЗначений Цикл
|
Для Каждого ДанныеЯчейки Из СтруктураЗначений Цикл
|
||||||
|
|
||||||
ТекущееЗначение = ДанныеЯчейки.Значение;
|
ТекущееЗначение = ДанныеЯчейки.Значение;
|
||||||
ТекущийКлюч = ДанныеЯчейки.Ключ;
|
ТекущийКлюч = ДанныеЯчейки.Ключ;
|
||||||
|
|
||||||
ДобавитьИмяЛиста(ТекущийКлюч, Лист);
|
ДобавитьИмяЛиста(ТекущийКлюч, Лист);
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьМассив(ТекущееЗначение);
|
OPI_ПреобразованиеТипов.ПолучитьМассив(ТекущееЗначение);
|
||||||
|
|
||||||
ТекущиеДанные = Новый Соответствие;
|
ТекущиеДанные = Новый Соответствие;
|
||||||
ТекущийМассив = Новый Массив;
|
ТекущийМассив = Новый Массив;
|
||||||
|
|
||||||
ТекущийМассив.Добавить(ТекущееЗначение);
|
ТекущийМассив.Добавить(ТекущееЗначение);
|
||||||
|
|
||||||
OPI_Инструменты.ДобавитьПоле("range" , ТекущийКлюч , "Строка", ТекущиеДанные);
|
OPI_Инструменты.ДобавитьПоле("range" , ТекущийКлюч , "Строка", ТекущиеДанные);
|
||||||
OPI_Инструменты.ДобавитьПоле("values" , ТекущийМассив , "Массив", ТекущиеДанные);
|
OPI_Инструменты.ДобавитьПоле("values" , ТекущийМассив , "Массив", ТекущиеДанные);
|
||||||
OPI_Инструменты.ДобавитьПоле("majorDimension", ОсновноеИзмерение, "Строка", ТекущиеДанные);
|
OPI_Инструменты.ДобавитьПоле("majorDimension", ОсновноеИзмерение, "Строка", ТекущиеДанные);
|
||||||
|
|
||||||
МассивДанных.Добавить(ТекущиеДанные);
|
МассивДанных.Добавить(ТекущиеДанные);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат МассивДанных;
|
Возврат МассивДанных;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура СформироватьМассивИменЯчеек(Знач МассивИмен, Знач Лист)
|
Процедура СформироватьМассивИменЯчеек(Знач МассивИмен, Знач Лист)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Лист);
|
||||||
|
|
||||||
Для Н = 0 По МассивИмен.ВГраница() Цикл
|
Для Н = 0 По МассивИмен.ВГраница() Цикл
|
||||||
ДобавитьИмяЛиста(МассивИмен[Н], Лист);
|
ДобавитьИмяЛиста(МассивИмен[Н], Лист);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os
|
// OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os
|
||||||
// Lib: Google Workspace
|
// Lib: Google Workspace
|
||||||
// CLI: google
|
// CLI: google
|
||||||
|
|
||||||
@ -41,97 +41,97 @@
|
|||||||
|
|
||||||
// Сформировать ссылку получения кода
|
// Сформировать ссылку получения кода
|
||||||
// Возвращает URL для авторизации в браузере
|
// Возвращает URL для авторизации в браузере
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientID - Строка - Client ID - id
|
// ClientID - Строка - Client ID - id
|
||||||
// Calendar - Булево - разрешение на методы Calendar - calendar
|
// Calendar - Булево - разрешение на методы Calendar - calendar
|
||||||
// Drive - Булево - разрешение на методы Drive - drive
|
// Drive - Булево - разрешение на методы Drive - drive
|
||||||
// Sheets - Булево - разрешение на методы Sheets - sheets
|
// Sheets - Булево - разрешение на методы Sheets - sheets
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка - Ссылка получения кода
|
// Строка - Ссылка получения кода
|
||||||
Функция СформироватьСсылкуПолученияКода(Знач ClientID
|
Функция СформироватьСсылкуПолученияКода(Знач ClientID
|
||||||
, Знач Calendar = Истина
|
, Знач Calendar = Истина
|
||||||
, Знач Drive = Истина
|
, Знач Drive = Истина
|
||||||
, Знач Sheets = Истина) Экспорт
|
, Знач Sheets = Истина) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Calendar);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Calendar);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Sheets);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Sheets);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Drive);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Drive);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/auth";
|
URL = "https://accounts.google.com/o/oauth2/auth";
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("response_type", "code");
|
ПараметрыURL.Вставить("response_type", "code");
|
||||||
ПараметрыURL.Вставить("client_id" , ClientID);
|
ПараметрыURL.Вставить("client_id" , ClientID);
|
||||||
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
||||||
ПараметрыURL.Вставить("access_type" , "offline");
|
ПараметрыURL.Вставить("access_type" , "offline");
|
||||||
ПараметрыURL.Вставить("scope" , ПолучитьСписокРазрешений(Calendar, Drive, Sheets));
|
ПараметрыURL.Вставить("scope" , ПолучитьСписокРазрешений(Calendar, Drive, Sheets));
|
||||||
|
|
||||||
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
||||||
|
|
||||||
Возврат URL;
|
Возврат URL;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить токен по коду
|
// Получить токен по коду
|
||||||
// Получает токен по коду из авторизации в бразуере
|
// Получает токен по коду из авторизации в бразуере
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientID - Строка - Client ID - id
|
// ClientID - Строка - Client ID - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// Code - Строка - Code из браузера - code
|
// Code - Строка - Code из браузера - code
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ПолучитьТокенПоКоду(Знач ClientID, Знач ClientSecret, Знач Code) Экспорт
|
Функция ПолучитьТокенПоКоду(Знач ClientID, Знач ClientSecret, Знач Code) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Code);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Code);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("grant_type" , "authorization_code");
|
ПараметрыURL.Вставить("grant_type" , "authorization_code");
|
||||||
ПараметрыURL.Вставить("client_id" , ClientID);
|
ПараметрыURL.Вставить("client_id" , ClientID);
|
||||||
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
||||||
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
|
||||||
ПараметрыURL.Вставить("code" , Code);
|
ПараметрыURL.Вставить("code" , Code);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить токен
|
// Обновить токен
|
||||||
// Обновляет токен по Refresh token
|
// Обновляет токен по Refresh token
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientID - Строка - Client ID - id
|
// ClientID - Строка - Client ID - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// RefreshToken - Строка - Refresh token - refresh
|
// RefreshToken - Строка - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||||
Функция ОбновитьТокен(Знач ClientID, Знач ClientSecret, Знач RefreshToken) Экспорт
|
Функция ОбновитьТокен(Знач ClientID, Знач ClientSecret, Знач RefreshToken) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
||||||
|
|
||||||
URL = "https://accounts.google.com/o/oauth2/token";
|
URL = "https://accounts.google.com/o/oauth2/token";
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
ПараметрыURL.Вставить("grant_type" , "refresh_token");
|
ПараметрыURL.Вставить("grant_type" , "refresh_token");
|
||||||
ПараметрыURL.Вставить("client_id" , ClientID);
|
ПараметрыURL.Вставить("client_id" , ClientID);
|
||||||
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
ПараметрыURL.Вставить("client_secret", ClientSecret);
|
||||||
ПараметрыURL.Вставить("refresh_token", RefreshToken);
|
ПараметрыURL.Вставить("refresh_token", RefreshToken);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
Ответ = OPI_Инструменты.Post(URL, ПараметрыURL, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -141,14 +141,14 @@
|
|||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
|
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
||||||
|
|
||||||
Возврат Заголовки;
|
Возврат Заголовки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -156,23 +156,23 @@
|
|||||||
#Область СлужебныеПроцедурыИфункции
|
#Область СлужебныеПроцедурыИфункции
|
||||||
|
|
||||||
Функция ПолучитьСписокРазрешений(Calendar, Drive, Sheets)
|
Функция ПолучитьСписокРазрешений(Calendar, Drive, Sheets)
|
||||||
|
|
||||||
МассивРазрешений = Новый Массив;
|
МассивРазрешений = Новый Массив;
|
||||||
|
|
||||||
Если Calendar Тогда
|
Если Calendar Тогда
|
||||||
МассивРазрешений.Добавить("https://www.googleapis.com/auth/calendar");
|
МассивРазрешений.Добавить("https://www.googleapis.com/auth/calendar");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Drive Тогда
|
Если Drive Тогда
|
||||||
МассивРазрешений.Добавить("https://www.googleapis.com/auth/drive");
|
МассивРазрешений.Добавить("https://www.googleapis.com/auth/drive");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Sheets Тогда
|
Если Sheets Тогда
|
||||||
МассивРазрешений.Добавить("https://www.googleapis.com/auth/spreadsheets");
|
МассивРазрешений.Добавить("https://www.googleapis.com/auth/spreadsheets");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат СтрСоединить(МассивРазрешений, " ");
|
Возврат СтрСоединить(МассивРазрешений, " ");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_Twitter.os
|
// OneScript: ./OInt/core/Modules/OPI_Twitter.os
|
||||||
// Lib: Twitter
|
// Lib: Twitter
|
||||||
// CLI: twitter
|
// CLI: twitter
|
||||||
|
|
||||||
@ -48,18 +48,18 @@
|
|||||||
|
|
||||||
// Получить ссылку для авторизации
|
// Получить ссылку для авторизации
|
||||||
// Формирует ссылку для авторизации через браузер
|
// Формирует ссылку для авторизации через браузер
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка - URL для перехода в браузере
|
// Строка - URL для перехода в браузере
|
||||||
Функция ПолучитьСсылкуАвторизации(Параметры = "") Экспорт
|
Функция ПолучитьСсылкуАвторизации(Параметры = "") Экспорт
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
|
||||||
ПараметрыURL = Новый Структура;
|
ПараметрыURL = Новый Структура;
|
||||||
|
|
||||||
ПараметрыURL.Вставить("response_type" , "code");
|
ПараметрыURL.Вставить("response_type" , "code");
|
||||||
ПараметрыURL.Вставить("client_id" , Параметры_["client_id"]);
|
ПараметрыURL.Вставить("client_id" , Параметры_["client_id"]);
|
||||||
ПараметрыURL.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
ПараметрыURL.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
||||||
@ -67,27 +67,27 @@
|
|||||||
ПараметрыURL.Вставить("state" , "state");
|
ПараметрыURL.Вставить("state" , "state");
|
||||||
ПараметрыURL.Вставить("code_challenge" , "challenge");
|
ПараметрыURL.Вставить("code_challenge" , "challenge");
|
||||||
ПараметрыURL.Вставить("code_challenge_method", "plain");
|
ПараметрыURL.Вставить("code_challenge_method", "plain");
|
||||||
|
|
||||||
ПараметрыURL = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
ПараметрыURL = OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
|
||||||
Линк = "https://twitter.com/i/oauth2/authorize" + ПараметрыURL;
|
Линк = "https://twitter.com/i/oauth2/authorize" + ПараметрыURL;
|
||||||
|
|
||||||
Возврат Линк;
|
Возврат Линк;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить токен
|
// Получить токен
|
||||||
// Получает токен по коду, полученному при авторизации по ссылке из ПолучитьСсылкуАвторизации
|
// Получает токен по коду, полученному при авторизации по ссылке из ПолучитьСсылкуАвторизации
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Код - Строка - Код, полученный из авторизации См.ПолучитьСсылкуАвторизации - code
|
// Код - Строка - Код, полученный из авторизации См.ПолучитьСсылкуАвторизации - code
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция ПолучитьТокен(Знач Код, Знач Параметры = "") Экспорт
|
Функция ПолучитьТокен(Знач Код, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Код);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Код);
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
|
||||||
ПараметрыЗапроса = Новый Структура;
|
ПараметрыЗапроса = Новый Структура;
|
||||||
@ -96,35 +96,35 @@
|
|||||||
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
||||||
ПараметрыЗапроса.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
ПараметрыЗапроса.Вставить("redirect_uri" , Параметры_["redirect_uri"]);
|
||||||
ПараметрыЗапроса.Вставить("code_verifier", "challenge");
|
ПараметрыЗапроса.Вставить("code_verifier", "challenge");
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, ПараметрыЗапроса, , Ложь);
|
, ПараметрыЗапроса, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить токен
|
// Обновить токен
|
||||||
// Обновляет v2 токен при помощи refresh_token
|
// Обновляет v2 токен при помощи refresh_token
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция ОбновитьТокен(Знач Параметры = "") Экспорт
|
Функция ОбновитьТокен(Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Refresh = "refresh_token";
|
Refresh = "refresh_token";
|
||||||
|
|
||||||
ПараметрыЗапроса = Новый Структура;
|
ПараметрыЗапроса = Новый Структура;
|
||||||
ПараметрыЗапроса.Вставить(Refresh , Параметры_[Refresh]);
|
ПараметрыЗапроса.Вставить(Refresh , Параметры_[Refresh]);
|
||||||
ПараметрыЗапроса.Вставить("grant_type" , Refresh);
|
ПараметрыЗапроса.Вставить("grant_type" , Refresh);
|
||||||
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
, ПараметрыЗапроса, , Ложь);
|
, ПараметрыЗапроса, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -133,23 +133,23 @@
|
|||||||
// Метод для вставки в http-сервис, адрес которого указывается в redirect_uri
|
// Метод для вставки в http-сервис, адрес которого указывается в redirect_uri
|
||||||
// Вызывает метод получения токена, так как для получения токена из кода, приходящего
|
// Вызывает метод получения токена, так как для получения токена из кода, приходящего
|
||||||
// на redirect_uri после авторизации через браузер есть всего 30 секунд
|
// на redirect_uri после авторизации через браузер есть всего 30 секунд
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Запрос - HTTPСервисЗапрос - Запрос, приходящий на http-сервис
|
// Запрос - HTTPСервисЗапрос - Запрос, приходящий на http-сервис
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// HTTPОтвет, Произвольный, ДвоичныеДанные - Результат чтения JSON ответа сервера
|
// HTTPОтвет, Произвольный, ДвоичныеДанные - Результат чтения JSON ответа сервера
|
||||||
Функция ОбработкаВходящегоЗапросаПослеАвторизации(Запрос) Экспорт
|
Функция ОбработкаВходящегоЗапросаПослеАвторизации(Запрос) Экспорт
|
||||||
|
|
||||||
Код = Запрос.ПараметрыЗапроса["code"];
|
Код = Запрос.ПараметрыЗапроса["code"];
|
||||||
ОтветТокен = ПолучитьТокен(Код);
|
ОтветТокен = ПолучитьТокен(Код);
|
||||||
|
|
||||||
// BSLLS:CommentedCode-off
|
// BSLLS:CommentedCode-off
|
||||||
// Предпочтительное хранение токенов
|
// Предпочтительное хранение токенов
|
||||||
// Константы.TwitterRefresh.Установить(ОтветТокен["refresh_token"]);
|
// Константы.TwitterRefresh.Установить(ОтветТокен["refresh_token"]);
|
||||||
// Константы.TwitterToken.Установить(ОтветТокен["access_token"]);
|
// Константы.TwitterToken.Установить(ОтветТокен["access_token"]);
|
||||||
// BSLLS:CommentedCode-on
|
// BSLLS:CommentedCode-on
|
||||||
|
|
||||||
Возврат ОтветТокен;
|
Возврат ОтветТокен;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -160,189 +160,189 @@
|
|||||||
|
|
||||||
// !NOCLI
|
// !NOCLI
|
||||||
// Создать произвольный твит
|
// Создать произвольный твит
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита
|
// Текст - Строка - Текст твита
|
||||||
// МассивМедиа - Массив из Строка,ДвоичныеДанные - Массив двоичных данных или путей к файлам
|
// МассивМедиа - Массив из Строка,ДвоичныеДанные - Массив двоичных данных или путей к файлам
|
||||||
// МассивВариантовОпроса - Массив из Строка - Массив вариантов опроса, если необходимо
|
// МассивВариантовОпроса - Массив из Строка - Массив вариантов опроса, если необходимо
|
||||||
// ДлительностьОпроса - Строка,Число - Длительность опроса, если необходимо (опрос без длительности не создается)
|
// ДлительностьОпроса - Строка,Число - Длительность опроса, если необходимо (опрос без длительности не создается)
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьПроизвольныйТвит(Знач Текст = ""
|
Функция СоздатьПроизвольныйТвит(Знач Текст = ""
|
||||||
, Знач МассивМедиа = ""
|
, Знач МассивМедиа = ""
|
||||||
, Знач МассивВариантовОпроса = ""
|
, Знач МассивВариантовОпроса = ""
|
||||||
, Знач ДлительностьОпроса = ""
|
, Знач ДлительностьОпроса = ""
|
||||||
, Знач Параметры = "") Экспорт
|
, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДлительностьОпроса);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ДлительностьОпроса);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивМедиа) Тогда
|
Если ЗначениеЗаполнено(МассивМедиа) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивМедиа);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивМедиа);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивВариантовОпроса) Тогда
|
Если ЗначениеЗаполнено(МассивВариантовОпроса) Тогда
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивВариантовОпроса);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивВариантовОпроса);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
URL = "https://api.twitter.com/2/tweets";
|
URL = "https://api.twitter.com/2/tweets";
|
||||||
Массив = "Массив";
|
Массив = "Массив";
|
||||||
Поля = Новый Соответствие;
|
Поля = Новый Соответствие;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Текст) Тогда
|
Если ЗначениеЗаполнено(Текст) Тогда
|
||||||
Поля.Вставить("text", Текст);
|
Поля.Вставить("text", Текст);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(МассивВариантовОпроса) = Тип(Массив) И ЗначениеЗаполнено(ДлительностьОпроса) Тогда
|
Если ТипЗнч(МассивВариантовОпроса) = Тип(Массив) И ЗначениеЗаполнено(ДлительностьОпроса) Тогда
|
||||||
|
|
||||||
ДлительностьОпроса = Число(ДлительностьОпроса);
|
ДлительностьОпроса = Число(ДлительностьОпроса);
|
||||||
|
|
||||||
Если МассивВариантовОпроса.Количество() > 0 Тогда
|
Если МассивВариантовОпроса.Количество() > 0 Тогда
|
||||||
|
|
||||||
СтруктураВарианта = Новый Структура("options,duration_minutes", МассивВариантовОпроса, ДлительностьОпроса);
|
СтруктураВарианта = Новый Структура("options,duration_minutes", МассивВариантовОпроса, ДлительностьОпроса);
|
||||||
Поля.Вставить("poll", СтруктураВарианта);
|
Поля.Вставить("poll", СтруктураВарианта);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(МассивМедиа) = Тип(Массив) Тогда
|
Если ТипЗнч(МассивМедиа) = Тип(Массив) Тогда
|
||||||
Если МассивМедиа.Количество() > 0 Тогда
|
Если МассивМедиа.Количество() > 0 Тогда
|
||||||
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать текстовый твит
|
// Создать текстовый твит
|
||||||
// Создает твит без вложений
|
// Создает твит без вложений
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТекстовыйТвит(Знач Текст, Знач Параметры = "") Экспорт
|
Функция СоздатьТекстовыйТвит(Знач Текст, Знач Параметры = "") Экспорт
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, , , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, , , , Параметры);
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит картинки
|
// Создать твит картинки
|
||||||
// Создает твит с картинкой вложением
|
// Создает твит с картинкой вложением
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивКартинок - Массив из Строка,ДвоичныеДанные - Массив файлов картинок - pictures
|
// МассивКартинок - Массив из Строка,ДвоичныеДанные - Массив файлов картинок - pictures
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитКартинки(Знач Текст, Знач МассивКартинок, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитКартинки(Знач Текст, Знач МассивКартинок, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
МассивМедиа = ЗагрузитьМассивВложений(МассивКартинок, "photo", Параметры);
|
МассивМедиа = ЗагрузитьМассивВложений(МассивКартинок, "photo", Параметры);
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит гифки
|
// Создать твит гифки
|
||||||
// Создает твит с вложением-гифкой
|
// Создает твит с вложением-гифкой
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивГифок - Массив из Строка,ДвоичныеДанные - Массив файлов гифок - gifs
|
// МассивГифок - Массив из Строка,ДвоичныеДанные - Массив файлов гифок - gifs
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитГифки(Знач Текст, Знач МассивГифок, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитГифки(Знач Текст, Знач МассивГифок, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
МассивМедиа = ЗагрузитьМассивВложений(МассивГифок, "animated_gif", Параметры);
|
МассивМедиа = ЗагрузитьМассивВложений(МассивГифок, "animated_gif", Параметры);
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит видео
|
// Создать твит видео
|
||||||
// Создает твит с видеовложением
|
// Создает твит с видеовложением
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивВидео - Массив из Строка,ДвоичныеДанные - Массив файлов видео - videos
|
// МассивВидео - Массив из Строка,ДвоичныеДанные - Массив файлов видео - videos
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитВидео(Знач Текст, Знач МассивВидео, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитВидео(Знач Текст, Знач МассивВидео, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
МассивМедиа = ЗагрузитьМассивВложений(МассивВидео, "video", Параметры);
|
МассивМедиа = ЗагрузитьМассивВложений(МассивВидео, "video", Параметры);
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, , , Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать твит опрос
|
// Создать твит опрос
|
||||||
// Создает твит с опросом
|
// Создает твит с опросом
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Текст - Строка - Текст твита - text
|
// Текст - Строка - Текст твита - text
|
||||||
// МассивВариантов - Массив из Строка - Массив вариантов опроса - options
|
// МассивВариантов - Массив из Строка - Массив вариантов опроса - options
|
||||||
// Длительность - Строка,Число - Длительность опроса - duration
|
// Длительность - Строка,Число - Длительность опроса - duration
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Twitter
|
||||||
Функция СоздатьТвитОпрос(Знач Текст, Знач МассивВариантов, Знач Длительность, Знач Параметры = "") Экспорт
|
Функция СоздатьТвитОпрос(Знач Текст, Знач МассивВариантов, Знач Длительность, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
Возврат СоздатьПроизвольныйТвит(Текст, , МассивВариантов, Длительность, Параметры);
|
Возврат СоздатьПроизвольныйТвит(Текст, , МассивВариантов, Длительность, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить массив вложений !NOCLI
|
// Загрузить массив вложений !NOCLI
|
||||||
// Загружает файлы на сервер и возвращает их ID
|
// Загружает файлы на сервер и возвращает их ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// МассивФайлов - Массив из Строка, ДвоичныеДанные - Массив файлов
|
// МассивФайлов - Массив из Строка, ДвоичныеДанные - Массив файлов
|
||||||
// ТипВложений - Строка - Тип вложений
|
// ТипВложений - Строка - Тип вложений
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Массив Из Строка - Массив ID медиа
|
// Массив Из Строка - Массив ID медиа
|
||||||
Функция ЗагрузитьМассивВложений(Знач МассивФайлов, Знач ТипВложений, Знач Параметры = "") Экспорт
|
Функция ЗагрузитьМассивВложений(Знач МассивФайлов, Знач ТипВложений, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТипВложений);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТипВложений);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивФайлов);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивФайлов);
|
||||||
|
|
||||||
МассивМедиа = Новый Массив;
|
МассивМедиа = Новый Массив;
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
||||||
|
|
||||||
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ФайлОтправки);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ФайлОтправки);
|
||||||
|
|
||||||
Ответ = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_);
|
Ответ = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_);
|
||||||
IDМедиа = Ответ[MIS];
|
IDМедиа = Ответ[MIS];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(IDМедиа) Тогда
|
Если Не ЗначениеЗаполнено(IDМедиа) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
МассивМедиа.Добавить(IDМедиа);
|
МассивМедиа.Добавить(IDМедиа);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат МассивМедиа;
|
Возврат МассивМедиа;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -351,70 +351,70 @@
|
|||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||||
|
|
||||||
ВидЗапроса = "POST";
|
ВидЗапроса = "POST";
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
||||||
|
|
||||||
Если Тип = "photo" Тогда
|
Если Тип = "photo" Тогда
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить("media_data" , Base64Строка(Файл));
|
Поля.Вставить("media_data" , Base64Строка(Файл));
|
||||||
Поля.Вставить("media_category", Тип);
|
Поля.Вставить("media_category", Тип);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Ответ = ЗагрузитьМедиаЧастями(Файл, Тип, ВидЗапроса, URL, Параметры_);
|
Ответ = ЗагрузитьМедиаЧастями(Файл, Тип, ВидЗапроса, URL, Параметры_);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЗагрузитьМедиаЧастями(Знач Файл, Знач Тип, Знач ВидЗапроса, Знач URL, Параметры)
|
Функция ЗагрузитьМедиаЧастями(Знач Файл, Знач Тип, Знач ВидЗапроса, Знач URL, Параметры)
|
||||||
|
|
||||||
Единица = 1024;
|
Единица = 1024;
|
||||||
Количество = 4;
|
Количество = 4;
|
||||||
MediaKey = "media_key";
|
MediaKey = "media_key";
|
||||||
MIS = "media_id_string";
|
MIS = "media_id_string";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Размер = Файл.Размер();
|
Размер = Файл.Размер();
|
||||||
|
|
||||||
СоответствиеMIME = Новый Соответствие;
|
СоответствиеMIME = Новый Соответствие;
|
||||||
СоответствиеMIME.Вставить("photo" , "image/jpeg");
|
СоответствиеMIME.Вставить("photo" , "image/jpeg");
|
||||||
СоответствиеMIME.Вставить("video" , "video/mp4");
|
СоответствиеMIME.Вставить("video" , "video/mp4");
|
||||||
СоответствиеMIME.Вставить("animated_gif", "image/gif");
|
СоответствиеMIME.Вставить("animated_gif", "image/gif");
|
||||||
|
|
||||||
РазмерЧасти = Количество * Единица * Единица;
|
РазмерЧасти = Количество * Единица * Единица;
|
||||||
МассивЧтения = РазделитьДвоичныеДанные(Файл, РазмерЧасти);
|
МассивЧтения = РазделитьДвоичныеДанные(Файл, РазмерЧасти);
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить(Command , "INIT");
|
Поля.Вставить(Command , "INIT");
|
||||||
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
||||||
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
||||||
Поля.Вставить("media_category" , Тип);
|
Поля.Вставить("media_category" , Тип);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, ВидЗапроса, URL);
|
||||||
|
|
||||||
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
KeyИнициализации = ОтветИнициализации[MediaKey];
|
KeyИнициализации = ОтветИнициализации[MediaKey];
|
||||||
IDИнициализации = ОтветИнициализации[MIS];
|
IDИнициализации = ОтветИнициализации[MIS];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(KeyИнициализации) Или Не ЗначениеЗаполнено(IDИнициализации) Тогда
|
Если Не ЗначениеЗаполнено(KeyИнициализации) Или Не ЗначениеЗаполнено(IDИнициализации) Тогда
|
||||||
Возврат ОтветИнициализации;
|
Возврат ОтветИнициализации;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Счетчик = 0;
|
Счетчик = 0;
|
||||||
|
|
||||||
Для Каждого Часть Из МассивЧтения Цикл
|
Для Каждого Часть Из МассивЧтения Цикл
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить(Command , "APPEND");
|
Поля.Вставить(Command , "APPEND");
|
||||||
Поля.Вставить("media_key" , KeyИнициализации);
|
Поля.Вставить("media_key" , KeyИнициализации);
|
||||||
@ -422,111 +422,111 @@
|
|||||||
Поля.Вставить("media" , Часть);
|
Поля.Вставить("media" , Часть);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Новый Структура, ВидЗапроса, URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Новый Структура, ВидЗапроса, URL);
|
||||||
|
|
||||||
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
|
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
|
||||||
|
|
||||||
Счетчик = Счетчик + 1;
|
Счетчик = Счетчик + 1;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить(Command , "FINALIZE");
|
Поля.Вставить(Command , "FINALIZE");
|
||||||
Поля.Вставить("media_id", IDИнициализации);
|
Поля.Вставить("media_id", IDИнициализации);
|
||||||
|
|
||||||
СтатусОбработки = ПолучитьСтатусОбработки(Параметры, Поля, URL);
|
СтатусОбработки = ПолучитьСтатусОбработки(Параметры, Поля, URL);
|
||||||
|
|
||||||
Если Не ТипЗнч(СтатусОбработки) = Тип("Строка") Тогда
|
Если Не ТипЗнч(СтатусОбработки) = Тип("Строка") Тогда
|
||||||
Возврат СтатусОбработки;
|
Возврат СтатусОбработки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = ОжидатьЗавершенияОбработки(СтатусОбработки, IDИнициализации, URL, Параметры);
|
Ответ = ОжидатьЗавершенияОбработки(СтатусОбработки, IDИнициализации, URL, Параметры);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ОжидатьЗавершенияОбработки(Знач СтатусОбработки, Знач IDИнициализации, Знач URL, Знач Параметры)
|
Функция ОжидатьЗавершенияОбработки(Знач СтатусОбработки, Знач IDИнициализации, Знач URL, Знач Параметры)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Command = "command";
|
Command = "command";
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
|
|
||||||
Поля.Вставить(Command , "STATUS");
|
Поля.Вставить(Command , "STATUS");
|
||||||
Поля.Вставить("media_id", IDИнициализации);
|
Поля.Вставить("media_id", IDИнициализации);
|
||||||
|
|
||||||
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
|
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "GET", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "GET", URL);
|
||||||
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
|
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
|
||||||
Информация = Ответ[ProcessingInfo];
|
Информация = Ответ[ProcessingInfo];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Информация) Тогда
|
Если Не ЗначениеЗаполнено(Информация) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
СтатусОбработки = Информация["state"];
|
СтатусОбработки = Информация["state"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Если СтатусОбработки = "failed" Тогда
|
Если СтатусОбработки = "failed" Тогда
|
||||||
ВызватьИсключение "Твиттер не смог обработать загруженное вами видео";
|
ВызватьИсключение "Твиттер не смог обработать загруженное вами видео";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
|
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
|
||||||
|
|
||||||
// Здесь собрано определение данных, необходимых для работы.
|
// Здесь собрано определение данных, необходимых для работы.
|
||||||
// Для Twitter это довольно значительный набор, что обсуловлено наличием сразу 2-х API,
|
// Для Twitter это довольно значительный набор, что обсуловлено наличием сразу 2-х API,
|
||||||
// которые, при этом, созданы не для разныз задач, но просто являются версиями друг друга.
|
// которые, при этом, созданы не для разныз задач, но просто являются версиями друг друга.
|
||||||
// Актуальной версией API является v2 и она требует получения временных токенов. Несмотря на то,
|
// Актуальной версией API является v2 и она требует получения временных токенов. Несмотря на то,
|
||||||
// что Twitter настаивает на использовании этой актуальной версии, они как-то умудрились не перенести
|
// что Twitter настаивает на использовании этой актуальной версии, они как-то умудрились не перенести
|
||||||
// механизм загрузки файлов и некоторые другие из старой версии - v1.1. Поэтому что-то нужно делать
|
// механизм загрузки файлов и некоторые другие из старой версии - v1.1. Поэтому что-то нужно делать
|
||||||
// на версии 1.1, а что-то на 2: вплоть до того что они убрали возможность постить твиты из v1.1,
|
// на версии 1.1, а что-то на 2: вплоть до того что они убрали возможность постить твиты из v1.1,
|
||||||
// но только через нее в твит можно добавить картинку. При этом способы авторизации и токены у них разные
|
// но только через нее в твит можно добавить картинку. При этом способы авторизации и токены у них разные
|
||||||
|
|
||||||
// Мировая гигокорпорация Илона Маска, кстати, напоминаю ;)
|
// Мировая гигокорпорация Илона Маска, кстати, напоминаю ;)
|
||||||
|
|
||||||
// P.S Далее часто упоминается "страница настроек Twitter Developer" - это
|
// P.S Далее часто упоминается "страница настроек Twitter Developer" - это
|
||||||
// https://developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем)
|
// https://developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем)
|
||||||
|
|
||||||
Параметры_ = Новый Соответствие;
|
Параметры_ = Новый Соответствие;
|
||||||
Разрешения = "tweet.read tweet.write tweet.moderate.write users.read "
|
Разрешения = "tweet.read tweet.write tweet.moderate.write users.read "
|
||||||
+ "follows.read follows.write offline.access space.read mute.read "
|
+ "follows.read follows.write offline.access space.read mute.read "
|
||||||
+ "mute.write like.read like.write list.read list.write block.read "
|
+ "mute.write like.read like.write list.read list.write block.read "
|
||||||
+ "block.write bookmark.read bookmark.write";
|
+ "block.write bookmark.read bookmark.write";
|
||||||
|
|
||||||
// Данные для API v2
|
// Данные для API v2
|
||||||
|
|
||||||
// redirect_uri - URL вашего http-сервиса (или другого обработчика запросов) для авторизации
|
// redirect_uri - URL вашего http-сервиса (или другого обработчика запросов) для авторизации
|
||||||
// scope - набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен
|
// scope - набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен
|
||||||
// client_id - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
// client_id - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
||||||
// client_secret - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
// client_secret - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
||||||
// access_token - ПолучитьСсылкуАвторизации() -> Браузер -> code придет на redirect_uri -> ПолучитьТокен(code)
|
// access_token - ПолучитьСсылкуАвторизации() -> Браузер -> code придет на redirect_uri -> ПолучитьТокен(code)
|
||||||
// refresh_token - Приходит вместе с access_token и используется для его обновления (время жизни access_token - 2 ч)
|
// refresh_token - Приходит вместе с access_token и используется для его обновления (время жизни access_token - 2 ч)
|
||||||
// Обновление происходит методом ОбновитьТокен с новыми access_token и refresh_token.
|
// Обновление происходит методом ОбновитьТокен с новыми access_token и refresh_token.
|
||||||
// При следующем обновлении нужно использовать уже новый refresh_token, так что захардкодить
|
// При следующем обновлении нужно использовать уже новый refresh_token, так что захардкодить
|
||||||
// не получится (access_token тоже не получится)
|
// не получится (access_token тоже не получится)
|
||||||
|
|
||||||
// |--> ОбновитьТокен() ->|access_token --> Используется в т-нии 2-х часов для запросов
|
// |--> ОбновитьТокен() ->|access_token --> Используется в т-нии 2-х часов для запросов
|
||||||
// | |refresh_token --|
|
// | |refresh_token --|
|
||||||
// |--------[через 2 ч.]-------------------|
|
// |--------[через 2 ч.]-------------------|
|
||||||
|
|
||||||
// Данные для API v1.1
|
// Данные для API v1.1
|
||||||
|
|
||||||
// oauth_token - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_token - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
// oauth_token_secret - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_token_secret - Из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
// oauth_consumer_key - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_consumer_key - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
// oauth_consumer_secret - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_consumer_secret - Из Consumer Keys -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
|
|
||||||
// Эти токены обновлять не надо
|
// Эти токены обновлять не надо
|
||||||
|
|
||||||
Параметры_.Вставить("redirect_uri" , "");
|
Параметры_.Вставить("redirect_uri" , "");
|
||||||
Параметры_.Вставить("scope" , Разрешения);
|
Параметры_.Вставить("scope" , Разрешения);
|
||||||
Параметры_.Вставить("client_id" , "");
|
Параметры_.Вставить("client_id" , "");
|
||||||
@ -537,9 +537,9 @@
|
|||||||
Параметры_.Вставить("oauth_token_secret" , "");
|
Параметры_.Вставить("oauth_token_secret" , "");
|
||||||
Параметры_.Вставить("oauth_consumer_key" , "");
|
Параметры_.Вставить("oauth_consumer_key" , "");
|
||||||
Параметры_.Вставить("oauth_consumer_secret", "");
|
Параметры_.Вставить("oauth_consumer_secret", "");
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Параметры);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Параметры);
|
||||||
|
|
||||||
Если ТипЗнч(Параметры) = Тип("Структура") Или ТипЗнч(Параметры) = Тип("Соответствие") Тогда
|
Если ТипЗнч(Параметры) = Тип("Структура") Или ТипЗнч(Параметры) = Тип("Соответствие") Тогда
|
||||||
Для Каждого ПереданныйПараметр Из Параметры Цикл
|
Для Каждого ПереданныйПараметр Из Параметры Цикл
|
||||||
Параметры_.Вставить(ПереданныйПараметр.Ключ, OPI_Инструменты.ЧислоВСтроку(ПереданныйПараметр.Значение));
|
Параметры_.Вставить(ПереданныйПараметр.Ключ, OPI_Инструменты.ЧислоВСтроку(ПереданныйПараметр.Значение));
|
||||||
@ -551,7 +551,7 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьЗаголовокАвторизацииV1(Знач Параметры, Знач Поля, Знач ВидЗапроса, Знач URL)
|
Функция СоздатьЗаголовокАвторизацииV1(Знач Параметры, Знач Поля, Знач ВидЗапроса, Знач URL)
|
||||||
|
|
||||||
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||||
ЗаголовокАвторизации = "";
|
ЗаголовокАвторизации = "";
|
||||||
МетодХэширования = "HMAC-SHA1";
|
МетодХэширования = "HMAC-SHA1";
|
||||||
@ -565,123 +565,123 @@
|
|||||||
ТаблицаПараметров = Новый ТаблицаЗначений;
|
ТаблицаПараметров = Новый ТаблицаЗначений;
|
||||||
ТаблицаПараметров.Колонки.Добавить("Ключ");
|
ТаблицаПараметров.Колонки.Добавить("Ключ");
|
||||||
ТаблицаПараметров.Колонки.Добавить("Значение");
|
ТаблицаПараметров.Колонки.Добавить("Значение");
|
||||||
|
|
||||||
Для Каждого Поле Из Поля Цикл
|
Для Каждого Поле Из Поля Цикл
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = Поле.Ключ;
|
НоваяСтрока.Ключ = Поле.Ключ;
|
||||||
НоваяСтрока.Значение = Поле.Значение;
|
НоваяСтрока.Значение = Поле.Значение;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = OCK;
|
НоваяСтрока.Ключ = OCK;
|
||||||
НоваяСтрока.Значение = Параметры[OCK];
|
НоваяСтрока.Значение = Параметры[OCK];
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = OTK;
|
НоваяСтрока.Ключ = OTK;
|
||||||
НоваяСтрока.Значение = Параметры[OTK];
|
НоваяСтрока.Значение = Параметры[OTK];
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_version";
|
НоваяСтрока.Ключ = "oauth_version";
|
||||||
НоваяСтрока.Значение = ВерсияАпи;
|
НоваяСтрока.Значение = ВерсияАпи;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_signature_method";
|
НоваяСтрока.Ключ = "oauth_signature_method";
|
||||||
НоваяСтрока.Значение = МетодХэширования;
|
НоваяСтрока.Значение = МетодХэширования;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_timestamp";
|
НоваяСтрока.Ключ = "oauth_timestamp";
|
||||||
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_nonce";
|
НоваяСтрока.Ключ = "oauth_nonce";
|
||||||
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
НоваяСтрока.Значение = ТекущаяДатаUNIX;
|
||||||
|
|
||||||
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
||||||
|
|
||||||
СтрокаТаблицы.Ключ = КодироватьСтроку(СтрокаТаблицы.Ключ, СпособКодированияСтроки.КодировкаURL);
|
СтрокаТаблицы.Ключ = КодироватьСтроку(СтрокаТаблицы.Ключ, СпособКодированияСтроки.КодировкаURL);
|
||||||
СтрокаТаблицы.Значение = КодироватьСтроку(СтрокаТаблицы.Значение, СпособКодированияСтроки.КодировкаURL);
|
СтрокаТаблицы.Значение = КодироватьСтроку(СтрокаТаблицы.Значение, СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ТаблицаПараметров.Сортировать("Ключ");
|
ТаблицаПараметров.Сортировать("Ключ");
|
||||||
|
|
||||||
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
|
||||||
|
|
||||||
СтрокаСигнатуры = СтрокаСигнатуры
|
СтрокаСигнатуры = СтрокаСигнатуры
|
||||||
+ СтрокаТаблицы.Ключ
|
+ СтрокаТаблицы.Ключ
|
||||||
+ "="
|
+ " ="
|
||||||
+ СтрокаТаблицы.Значение
|
+ СтрокаТаблицы.Значение
|
||||||
+ "&";
|
+ "&";
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтрокаСигнатуры = Лев(СтрокаСигнатуры, СтрДлина(СтрокаСигнатуры) - 1);
|
СтрокаСигнатуры = Лев(СтрокаСигнатуры, СтрДлина(СтрокаСигнатуры) - 1);
|
||||||
СтрокаСигнатуры = вРег(ВидЗапроса)
|
СтрокаСигнатуры = вРег(ВидЗапроса)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ КодироватьСтроку(URL, СпособКодированияСтроки.КодировкаURL)
|
+ КодироватьСтроку(URL , СпособКодированияСтроки.КодировкаURL)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ КодироватьСтроку(СтрокаСигнатуры, СпособКодированияСтроки.КодировкаURL);
|
+ КодироватьСтроку(СтрокаСигнатуры, СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
Подпись = КодироватьСтроку(Параметры["oauth_consumer_secret"], СпособКодированияСтроки.КодировкаURL)
|
Подпись = КодироватьСтроку(Параметры["oauth_consumer_secret"], СпособКодированияСтроки.КодировкаURL)
|
||||||
+ "&"
|
+ "&"
|
||||||
+ КодироватьСтроку(Параметры["oauth_token_secret"], СпособКодированияСтроки.КодировкаURL);
|
+ КодироватьСтроку(Параметры["oauth_token_secret"], СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
Сигнатура = OPI_Криптография.HMAC(ПолучитьДвоичныеДанныеИзСтроки(Подпись)
|
Сигнатура = OPI_Криптография.HMAC(ПолучитьДвоичныеДанныеИзСтроки(Подпись)
|
||||||
, ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры)
|
, ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры)
|
||||||
, ХешФункция.SHA1
|
, ХешФункция.SHA1
|
||||||
, 64);
|
, 64);
|
||||||
|
|
||||||
Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL);
|
Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
Разделитель = """,";
|
Разделитель = """,";
|
||||||
ЗаголовокАвторизации = ЗаголовокАвторизации
|
ЗаголовокАвторизации = ЗаголовокАвторизации
|
||||||
+ "OAuth "
|
+ "OAuth "
|
||||||
+ "oauth_consumer_key=""" + Параметры[OCK] + Разделитель
|
+ "oauth_consumer_key =""" + Параметры[OCK] + Разделитель
|
||||||
+ "oauth_token=""" + Параметры[OTK] + Разделитель
|
+ "oauth_token =""" + Параметры[OTK] + Разделитель
|
||||||
+ "oauth_signature_method=""" + МетодХэширования + Разделитель
|
+ "oauth_signature_method=""" + МетодХэширования + Разделитель
|
||||||
+ "oauth_timestamp=""" + ТекущаяДатаUNIX + Разделитель
|
+ "oauth_timestamp =""" + ТекущаяДатаUNIX + Разделитель
|
||||||
+ "oauth_nonce=""" + ТекущаяДатаUNIX + Разделитель
|
+ "oauth_nonce =""" + ТекущаяДатаUNIX + Разделитель
|
||||||
+ "oauth_version=""" + ВерсияАпи + Разделитель
|
+ "oauth_version =""" + ВерсияАпи + Разделитель
|
||||||
+ "oauth_signature=""" + Сигнатура;
|
+ "oauth_signature =""" + Сигнатура;
|
||||||
|
|
||||||
СоответствиеЗаголовка = Новый Соответствие;
|
СоответствиеЗаголовка = Новый Соответствие;
|
||||||
СоответствиеЗаголовка.Вставить("authorization", ЗаголовокАвторизации);
|
СоответствиеЗаголовка.Вставить("authorization", ЗаголовокАвторизации);
|
||||||
|
|
||||||
Возврат СоответствиеЗаголовка;
|
Возврат СоответствиеЗаголовка;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьЗаголовокАвторизацииV2(Знач Параметры)
|
Функция СоздатьЗаголовокАвторизацииV2(Знач Параметры)
|
||||||
|
|
||||||
СоответствиеВозврата = Новый Соответствие;
|
СоответствиеВозврата = Новый Соответствие;
|
||||||
СоответствиеВозврата.Вставить("Authorization", "Bearer " + Параметры["access_token"]);
|
СоответствиеВозврата.Вставить("Authorization", "Bearer " + Параметры["access_token"]);
|
||||||
|
|
||||||
Возврат СоответствиеВозврата;
|
Возврат СоответствиеВозврата;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьСтатусОбработки(Знач Параметры, Знач Поля, Знач URL)
|
Функция ПолучитьСтатусОбработки(Знач Параметры, Знач Поля, Знач URL)
|
||||||
|
|
||||||
ProcessingInfo = "processing_info";
|
ProcessingInfo = "processing_info";
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "POST", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "POST", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
Информация = Ответ[ProcessingInfo];
|
Информация = Ответ[ProcessingInfo];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Информация) Тогда
|
Если Не ЗначениеЗаполнено(Информация) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
СтатусОбработки = Информация["state"];
|
СтатусОбработки = Информация["state"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
Иначе
|
Иначе
|
||||||
Возврат СтатусОбработки;
|
Возврат СтатусОбработки;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_Viber.os
|
// OneScript: ./OInt/core/Modules/OPI_Viber.os
|
||||||
// Lib: Viber
|
// Lib: Viber
|
||||||
// CLI: viber
|
// CLI: viber
|
||||||
|
|
||||||
@ -23,7 +23,7 @@
|
|||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
// 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
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||||
@ -46,55 +46,55 @@
|
|||||||
// который будет возвращать 200 и подлинный SSL сертификат. Если есть сертификат и база опубликована
|
// который будет возвращать 200 и подлинный SSL сертификат. Если есть сертификат и база опубликована
|
||||||
// на сервере - можно использовать http-сервис. Туда же будет приходить и информация о новых сообщениях
|
// на сервере - можно использовать http-сервис. Туда же будет приходить и информация о новых сообщениях
|
||||||
// Viber периодически стучит по адресу Webhook, так что если он будет неактивен, то все перестанет работать
|
// Viber периодически стучит по адресу Webhook, так что если он будет неактивен, то все перестанет работать
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен Viber - token
|
// Токен - Строка - Токен Viber - token
|
||||||
// URL - Строка - URL для установки Webhook - url
|
// URL - Строка - URL для установки Webhook - url
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("auth_token" , Токен, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("auth_token" , Токен, "Строка", Параметры);
|
||||||
|
|
||||||
Возврат OPI_Инструменты.Post("https://chatapi.viber.com/pa/set_webhook", Параметры);
|
Возврат OPI_Инструменты.Post("https://chatapi.viber.com/pa/set_webhook", Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить информацию о канале
|
// Получить информацию о канале
|
||||||
// Тут можно получить ID пользователей канала. ID для бота необходимо получать из прилетов на Webhook
|
// Тут можно получить ID пользователей канала. ID для бота необходимо получать из прилетов на Webhook
|
||||||
// ID пользователя из информации о канале не подойдет для отправки сообщений через бота - они разные
|
// ID пользователя из информации о канале не подойдет для отправки сообщений через бота - они разные
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ПолучитьИнформациюОКанале(Знач Токен) Экспорт
|
Функция ПолучитьИнформациюОКанале(Знач Токен) Экспорт
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_account_info";
|
URL = "https://chatapi.viber.com/pa/get_account_info";
|
||||||
Возврат OPI_Инструменты.Get(URL, , ТокенВЗаголовки(Токен));
|
Возврат OPI_Инструменты.Get(URL, , ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить данные пользователя
|
// Получить данные пользователя
|
||||||
// Получает информацию о пользователе по ID
|
// Получает информацию о пользователе по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// IDПользователя - Строка, Число - ID пользователя Viber - user
|
// IDПользователя - Строка, Число - ID пользователя Viber - user
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ПолучитьДанныеПользователя(Знач Токен, Знач IDПользователя) Экспорт
|
Функция ПолучитьДанныеПользователя(Знач Токен, Знач IDПользователя) Экспорт
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_user_details";
|
URL = "https://chatapi.viber.com/pa/get_user_details";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("id", IDПользователя, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("id", IDПользователя, "Строка", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
@ -103,22 +103,22 @@
|
|||||||
|
|
||||||
// Получить онлайн пользователей
|
// Получить онлайн пользователей
|
||||||
// Получает статус пользователя или нескольких пользователей по ID
|
// Получает статус пользователя или нескольких пользователей по ID
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен Viber - token
|
// Токен - Строка - Токен Viber - token
|
||||||
// IDПользователей - Строка,Число,Массив из Строка,Число - ID пользователей(я) Viber - users
|
// IDПользователей - Строка,Число,Массив из Строка,Число - ID пользователей(я) Viber - users
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ПолучитьОнлайнПользователей(Знач Токен, Знач IDПользователей) Экспорт
|
Функция ПолучитьОнлайнПользователей(Знач Токен, Знач IDПользователей) Экспорт
|
||||||
|
|
||||||
URL = "https://chatapi.viber.com/pa/get_online";
|
URL = "https://chatapi.viber.com/pa/get_online";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("ids", IDПользователей, "Коллекция", Параметры);
|
OPI_Инструменты.ДобавитьПоле("ids", IDПользователей, "Коллекция", Параметры);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -129,14 +129,14 @@
|
|||||||
|
|
||||||
// Отправить текстовое сообщение
|
// Отправить текстовое сообщение
|
||||||
// Отправляет текстовое сообщение в чат или канал
|
// Отправляет текстовое сообщение в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Текст - Строка - Текст сообщения - text
|
// Текст - Строка - Текст сообщения - text
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
// Клавиатура - Структура из Строка - См. СформироватьКлавиатуруИзМассиваКнопок - keyboard
|
// Клавиатура - Структура из Строка - См. СформироватьКлавиатуруИзМассиваКнопок - keyboard
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьТекстовоеСообщение(Знач Токен
|
Функция ОтправитьТекстовоеСообщение(Знач Токен
|
||||||
@ -144,40 +144,40 @@
|
|||||||
, Знач IDПользователя
|
, Знач IDПользователя
|
||||||
, Знач ОтправкаВКанал
|
, Знач ОтправкаВКанал
|
||||||
, Знач Клавиатура = "") Экспорт
|
, Знач Клавиатура = "") Экспорт
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "text", IDПользователя, ОтправкаВКанал, , Текст, Клавиатура);
|
Возврат ОтправитьСообщение(Токен, "text", IDПользователя, ОтправкаВКанал, , Текст, Клавиатура);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить картинку
|
// Отправить картинку
|
||||||
// Отправляет картинку в чат или канал
|
// Отправляет картинку в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - URL картинки - picture
|
// URL - Строка - URL картинки - picture
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - булево - Отправка в канал или в чат бота - ischannel
|
||||||
// Описание - Строка - Аннотация к картинке - description
|
// Описание - Строка - Аннотация к картинке - description
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьКартинку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал, Знач Описание = "") Экспорт
|
Функция ОтправитьКартинку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "picture", IDПользователя, ОтправкаВКанал, URL, Описание);
|
Возврат ОтправитьСообщение(Токен, "picture", IDПользователя, ОтправкаВКанал, URL, Описание);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить файл
|
// Отправить файл
|
||||||
// Отправляет файл (документ) в чат или канал
|
// Отправляет файл (документ) в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - URL файла - file
|
// URL - Строка - URL файла - file
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
// Расширение - Строка - Расширение файла - ext
|
// Расширение - Строка - Расширение файла - ext
|
||||||
// Размер - Число - Размер файла. Если не заполнен > определяется автоматически скачиванием файла - size
|
// Размер - Число - Размер файла. Если не заполнен > определяется автоматически скачиванием файла - size
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьФайл(Знач Токен
|
Функция ОтправитьФайл(Знач Токен
|
||||||
@ -186,36 +186,36 @@
|
|||||||
, Знач ОтправкаВКанал
|
, Знач ОтправкаВКанал
|
||||||
, Знач Расширение
|
, Знач Расширение
|
||||||
, Знач Размер = "") Экспорт
|
, Знач Размер = "") Экспорт
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Размер) Тогда
|
Если Не ЗначениеЗаполнено(Размер) Тогда
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL);
|
Ответ = OPI_Инструменты.Get(URL);
|
||||||
Размер = Ответ.Размер();
|
Размер = Ответ.Размер();
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Строка_ = "Строка";
|
Строка_ = "Строка";
|
||||||
Расширение = СтрЗаменить(Расширение, ".", "");
|
Расширение = СтрЗаменить(Расширение, ".", "");
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("URL" , URL , Строка_, Параметры);
|
OPI_Инструменты.ДобавитьПоле("URL" , URL , Строка_, Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("Размер" , Размер , Строка_, Параметры);
|
OPI_Инструменты.ДобавитьПоле("Размер" , Размер , Строка_, Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("Расширение", Расширение, Строка_, Параметры);
|
OPI_Инструменты.ДобавитьПоле("Расширение", Расширение, Строка_, Параметры);
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "file", IDПользователя, ОтправкаВКанал, Параметры);
|
Возврат ОтправитьСообщение(Токен, "file", IDПользователя, ОтправкаВКанал, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить контакт
|
// Отправить контакт
|
||||||
// Отправляет контакт с номером телефона в чат или канал
|
// Отправляет контакт с номером телефона в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// ИмяКонтакта - Строка - Имя контакта - name
|
// ИмяКонтакта - Строка - Имя контакта - name
|
||||||
// НомерТелефона - Строка - Номер телефона - phone
|
// НомерТелефона - Строка - Номер телефона - phone
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьКонтакт(Знач Токен
|
Функция ОтправитьКонтакт(Знач Токен
|
||||||
@ -223,91 +223,91 @@
|
|||||||
, Знач НомерТелефона
|
, Знач НомерТелефона
|
||||||
, Знач IDПользователя
|
, Знач IDПользователя
|
||||||
, Знач ОтправкаВКанал) Экспорт
|
, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("name" , ИмяКонтакта , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("name" , ИмяКонтакта , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("phone_number", НомерТелефона, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("phone_number", НомерТелефона, "Строка", Параметры);
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "contact", IDПользователя, ОтправкаВКанал, Параметры);
|
Возврат ОтправитьСообщение(Токен, "contact", IDПользователя, ОтправкаВКанал, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить локацию
|
// Отправить локацию
|
||||||
// Отправляет географические координаты в чат или канал
|
// Отправляет географические координаты в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Широта - Строка,Число - Географическая широта - lat
|
// Широта - Строка,Число - Географическая широта - lat
|
||||||
// Долгота - Строка,Число - Географическая долгота - long
|
// Долгота - Строка,Число - Географическая долгота - long
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
OPI_Инструменты.ДобавитьПоле("lat", Широта , "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("lat", Широта , "Строка", Параметры);
|
||||||
OPI_Инструменты.ДобавитьПоле("lon", Долгота, "Строка", Параметры);
|
OPI_Инструменты.ДобавитьПоле("lon", Долгота, "Строка", Параметры);
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, Параметры);
|
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, Параметры);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отправить ссылку
|
// Отправить ссылку
|
||||||
// Отправляет URL с предпросмотром в чат или канал
|
// Отправляет URL с предпросмотром в чат или канал
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Отправляемая ссылка - url
|
// URL - Строка - Отправляемая ссылка - url
|
||||||
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
// IDПользователя - Строка,Число - ID пользователя. Для канала > администратора, для бота > получателя - user
|
||||||
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
// ОтправкаВКанал - Булево - Отправка в канал или в чат бота - ischannel
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
|
||||||
Функция ОтправитьСсылку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
Функция ОтправитьСсылку(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "url", IDПользователя, ОтправкаВКанал, URL);
|
Возврат ОтправитьСообщение(Токен, "url", IDПользователя, ОтправкаВКанал, URL);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Сформировать клавиатуру из массива кнопок
|
// Сформировать клавиатуру из массива кнопок
|
||||||
// Возвращает структура клавиатуры для сообщений
|
// Возвращает структура клавиатуры для сообщений
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// МассивКнопок - Массив из Строка - Массив кнопок - buttons
|
// МассивКнопок - Массив из Строка - Массив кнопок - buttons
|
||||||
// ЦветКнопок - Строка - HEX цвет кнопок с # в начале - color
|
// ЦветКнопок - Строка - HEX цвет кнопок с # в начале - color
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - Сформировать клавиатуру из массива кнопок:
|
// Структура - Сформировать клавиатуру из массива кнопок:
|
||||||
// * Buttons - Массив из Структура - Массив сформированных кнопок
|
// * Buttons - Массив из Структура - Массив сформированных кнопок
|
||||||
// * Type - Строка - Тип клавиатуры
|
// * Type - Строка - Тип клавиатуры
|
||||||
Функция СформироватьКлавиатуруИзМассиваКнопок(Знач МассивКнопок, Знач ЦветКнопок = "#2db9b9") Экспорт
|
Функция СформироватьКлавиатуруИзМассиваКнопок(Знач МассивКнопок, Знач ЦветКнопок = "#2db9b9") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ЦветКнопок);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ЦветКнопок);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКнопок);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКнопок);
|
||||||
|
|
||||||
МассивСтруктурКнопок = Новый Массив;
|
МассивСтруктурКнопок = Новый Массив;
|
||||||
СтруктураКлавиатуры = Новый Структура;
|
СтруктураКлавиатуры = Новый Структура;
|
||||||
|
|
||||||
Для Каждого ТекстКнопки Из МассивКнопок Цикл
|
Для Каждого ТекстКнопки Из МассивКнопок Цикл
|
||||||
|
|
||||||
СтруктураКнопки = Новый Структура;
|
СтруктураКнопки = Новый Структура;
|
||||||
СтруктураКнопки.Вставить("ActionType", "reply");
|
СтруктураКнопки.Вставить("ActionType", "reply");
|
||||||
СтруктураКнопки.Вставить("ActionBody", ТекстКнопки);
|
СтруктураКнопки.Вставить("ActionBody", ТекстКнопки);
|
||||||
СтруктураКнопки.Вставить("Text" , ТекстКнопки);
|
СтруктураКнопки.Вставить("Text" , ТекстКнопки);
|
||||||
СтруктураКнопки.Вставить("BgColor" , ЦветКнопок);
|
СтруктураКнопки.Вставить("BgColor" , ЦветКнопок);
|
||||||
СтруктураКнопки.Вставить("Coloumns" , 3);
|
СтруктураКнопки.Вставить("Coloumns" , 3);
|
||||||
|
|
||||||
МассивСтруктурКнопок.Добавить(СтруктураКнопки);
|
МассивСтруктурКнопок.Добавить(СтруктураКнопки);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтруктураКлавиатуры.Вставить("Buttons", МассивСтруктурКнопок);
|
СтруктураКлавиатуры.Вставить("Buttons", МассивСтруктурКнопок);
|
||||||
СтруктураКлавиатуры.Вставить("Type" , "keyboard");
|
СтруктураКлавиатуры.Вставить("Type" , "keyboard");
|
||||||
|
|
||||||
Возврат СтруктураКлавиатуры;
|
Возврат СтруктураКлавиатуры;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -317,7 +317,7 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
// Отправить сообщение.
|
// Отправить сообщение.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен
|
// Токен - Строка - Токен
|
||||||
// Тип - Строка - Тип отправляемого сообщения
|
// Тип - Строка - Тип отправляемого сообщения
|
||||||
@ -328,8 +328,8 @@
|
|||||||
// * Размер - Число, Строка - Размер файла в случае отправке
|
// * Размер - Число, Строка - Размер файла в случае отправке
|
||||||
// * Расширение - Строка - Расширение файла в случае отправки
|
// * Расширение - Строка - Расширение файла в случае отправки
|
||||||
// Текст - Строка - Текст сообщения
|
// Текст - Строка - Текст сообщения
|
||||||
// Клавиатура - Структура из Строка - Клавиатура, если нужна, см. СформироватьКлавиатуруИзМассиваКнопок
|
// Клавиатура - Структура из Строка - Клавиатура, если нужна, см. СформироватьКлавиатуруИзМассиваКнопок
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Произвольный, HTTPОтвет - Отправить сообщение
|
// Произвольный, HTTPОтвет - Отправить сообщение
|
||||||
Функция ОтправитьСообщение(Знач Токен
|
Функция ОтправитьСообщение(Знач Токен
|
||||||
@ -339,28 +339,28 @@
|
|||||||
, Знач Значение = ""
|
, Знач Значение = ""
|
||||||
, Знач Текст = ""
|
, Знач Текст = ""
|
||||||
, Знач Клавиатура = "")
|
, Знач Клавиатура = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ЭтоКанал);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(ЭтоКанал);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Клавиатура);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Клавиатура);
|
||||||
|
|
||||||
СтруктураПараметров = ВернутьСтандартныеПараметры();
|
СтруктураПараметров = ВернутьСтандартныеПараметры();
|
||||||
СтруктураПараметров.Вставить("type", Тип);
|
СтруктураПараметров.Вставить("type", Тип);
|
||||||
|
|
||||||
Если (Тип = "text" Или Тип = "picture") И ЗначениеЗаполнено(Текст) Тогда
|
Если (Тип = "text" Или Тип = "picture") И ЗначениеЗаполнено(Текст) Тогда
|
||||||
СтруктураПараметров.Вставить("text", Текст);
|
СтруктураПараметров.Вставить("text", Текст);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Клавиатура) = Тип("Структура") Тогда
|
Если ТипЗнч(Клавиатура) = Тип("Структура") Тогда
|
||||||
СтруктураПараметров.Вставить("keyboard", Клавиатура);
|
СтруктураПараметров.Вставить("keyboard", Клавиатура);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Значение) Тогда
|
Если ЗначениеЗаполнено(Значение) Тогда
|
||||||
|
|
||||||
Если Тип = "file" Тогда
|
Если Тип = "file" Тогда
|
||||||
СтруктураПараметров.Вставить("media" , Значение["URL"]);
|
СтруктураПараметров.Вставить("media" , Значение["URL"]);
|
||||||
СтруктураПараметров.Вставить("size" , Значение["Размер"]);
|
СтруктураПараметров.Вставить("size" , Значение["Размер"]);
|
||||||
СтруктураПараметров.Вставить("file_name", "Файл." + Значение["Расширение"]);
|
СтруктураПараметров.Вставить("file_name", "Файл." + Значение["Расширение"]);
|
||||||
@ -371,49 +371,49 @@
|
|||||||
Иначе
|
Иначе
|
||||||
СтруктураПараметров.Вставить("media" , Значение);
|
СтруктураПараметров.Вставить("media" , Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЭтоКанал Тогда
|
Если ЭтоКанал Тогда
|
||||||
СтруктураПараметров.Вставить("from", IDПользователя);
|
СтруктураПараметров.Вставить("from" , IDПользователя);
|
||||||
URL = "https://chatapi.viber.com/pa/post";
|
URL = "https://chatapi.viber.com/pa/post";
|
||||||
Иначе
|
Иначе
|
||||||
СтруктураПараметров.Вставить("receiver", IDПользователя);
|
СтруктураПараметров.Вставить("receiver", IDПользователя);
|
||||||
URL = "https://chatapi.viber.com/pa/send_message";
|
URL = "https://chatapi.viber.com/pa/send_message";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
|
Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
|
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
|
||||||
Исключение
|
Исключение
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ВернутьСтандартныеПараметры()
|
Функция ВернутьСтандартныеПараметры()
|
||||||
|
|
||||||
СтруктураОтправителя = Новый Структура;
|
СтруктураОтправителя = Новый Структура;
|
||||||
СтруктураОтправителя.Вставить("name" , "Bot");
|
СтруктураОтправителя.Вставить("name" , "Bot");
|
||||||
СтруктураОтправителя.Вставить("avatar", "");
|
СтруктураОтправителя.Вставить("avatar", "");
|
||||||
|
|
||||||
СтруктураПараметров = Новый Структура;
|
СтруктураПараметров = Новый Структура;
|
||||||
СтруктураПараметров.Вставить("sender", СтруктураОтправителя);
|
СтруктураПараметров.Вставить("sender" , СтруктураОтправителя);
|
||||||
СтруктураПараметров.Вставить("min_api_version", 1);
|
СтруктураПараметров.Вставить("min_api_version", 1);
|
||||||
|
|
||||||
Возврат СтруктураПараметров;
|
Возврат СтруктураПараметров;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ТокенВЗаголовки(Знач Токен)
|
Функция ТокенВЗаголовки(Знач Токен)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
СтруктураЗаголовков = Новый Соответствие;
|
СтруктураЗаголовков = Новый Соответствие;
|
||||||
СтруктураЗаголовков.Вставить("X-Viber-Auth-Token", Токен);
|
СтруктураЗаголовков.Вставить("X-Viber-Auth-Token", Токен);
|
||||||
Возврат СтруктураЗаголовков;
|
Возврат СтруктураЗаголовков;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_YandexDisk.os
|
// OneScript: ./OInt/core/Modules/OPI_YandexDisk.os
|
||||||
// Lib: Yandex Disk
|
// Lib: Yandex Disk
|
||||||
// CLI: yadisk
|
// CLI: yadisk
|
||||||
|
|
||||||
@ -37,7 +37,7 @@
|
|||||||
//@skip-check wrong-string-literal-content
|
//@skip-check wrong-string-literal-content
|
||||||
|
|
||||||
// Раскомментировать, если выполняется OneScript
|
// Раскомментировать, если выполняется OneScript
|
||||||
// #Использовать "../../tools"
|
// #Использовать "../../tools"
|
||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
@ -45,217 +45,217 @@
|
|||||||
|
|
||||||
// Получить информацию о диске
|
// Получить информацию о диске
|
||||||
// Получает информацию о текущем диске
|
// Получает информацию о текущем диске
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьИнформациюОДиске(Знач Токен) Экспорт
|
Функция ПолучитьИнформациюОДиске(Знач Токен) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk", , Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk", , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать папку
|
// Создать папку
|
||||||
// Создает каталог на диске
|
// Создает каталог на диске
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к созаваемой папке - path
|
// Путь - Строка - Путь к созаваемой папке - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт
|
Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить объект
|
// Получить объект
|
||||||
// Получает информацию об объекте диска по заданному пути
|
// Получает информацию об объекте диска по заданному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к папке или файлу - path
|
// Путь - Строка - Путь к папке или файлу - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьОбъект(Знач Токен, Знач Путь) Экспорт
|
Функция ПолучитьОбъект(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Удалить объект
|
// Удалить объект
|
||||||
// Удаляет объект по заданному пути
|
// Удаляет объект по заданному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к удаляемой папке или файлу - path
|
// Путь - Строка - Путь к удаляемой папке или файлу - path
|
||||||
// ВКорзину - Булево - В корзину - can
|
// ВКорзину - Булево - В корзину - can
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач ВКорзину = Истина) Экспорт
|
Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач ВКорзину = Истина) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ВКорзину);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(ВКорзину);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("permanently", Не ВКорзину);
|
Параметры.Вставить("permanently", Не ВКорзину);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Delete("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Delete("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Создать копию объекта
|
// Создать копию объекта
|
||||||
// Создает копию объекта по заданному пути и пути к оригиналу
|
// Создает копию объекта по заданному пути и пути к оригиналу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Оригинал - Строка - Путь к оригинальному файлу или каталогу - from
|
// Оригинал - Строка - Путь к оригинальному файлу или каталогу - from
|
||||||
// Путь - Строка - Путь назначения для копии - to
|
// Путь - Строка - Путь назначения для копии - to
|
||||||
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция СоздатьКопиюОбъекта(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
Функция СоздатьКопиюОбъекта(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("from" , Оригинал);
|
Параметры.Вставить("from" , Оригинал);
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("overwrite" , Перезаписывать);
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить ссылку для скачивания
|
// Получить ссылку для скачивания
|
||||||
// Получает ссылку для скачивания файла
|
// Получает ссылку для скачивания файла
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к файлу для скачивания - path
|
// Путь - Строка - Путь к файлу для скачивания - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСсылкуДляСкачивания(Знач Токен, Знач Путь) Экспорт
|
Функция ПолучитьСсылкуДляСкачивания(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Скачать файл
|
// Скачать файл
|
||||||
// Скачивает файл по указанному пути
|
// Скачивает файл по указанному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к файлу для скачивания - path
|
// Путь - Строка - Путь к файлу для скачивания - path
|
||||||
// ПутьСохранения - Строка - Путь сохранения файла - out
|
// ПутьСохранения - Строка - Путь сохранения файла - out
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
// ДвоичныеДанные,Строка - Двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
||||||
Функция СкачатьФайл(Знач Токен, Знач Путь, Знач ПутьСохранения = "") Экспорт
|
Функция СкачатьФайл(Знач Токен, Знач Путь, Знач ПутьСохранения = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьСохранения);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ПутьСохранения);
|
||||||
Ответ = ПолучитьСсылкуДляСкачивания(Токен, Путь);
|
Ответ = ПолучитьСсылкуДляСкачивания(Токен, Путь);
|
||||||
URL = Ответ["href"];
|
URL = Ответ["href"];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URL) Тогда
|
Если Не ЗначениеЗаполнено(URL) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URL, , , ПутьСохранения);
|
Ответ = OPI_Инструменты.Get(URL, , , ПутьСохранения);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список файлов
|
// Получить список файлов
|
||||||
// Получает список файлов с или без отбора по типу
|
// Получает список файлов с или без отбора по типу
|
||||||
// Список доступных типов: audio, backup, book, compressed, data, development,
|
// Список доступных типов: audio, backup, book, compressed, data, development,
|
||||||
// diskimage, document, encoded, executable, flash, font,
|
// diskimage, document, encoded, executable, flash, font,
|
||||||
// mage, settings, spreadsheet, text, unknown, video, web
|
// mage, settings, spreadsheet, text, unknown, video, web
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Количество - Число,Строка - Количество возвращаемых объектов - amount
|
// Количество - Число,Строка - Количество возвращаемых объектов - amount
|
||||||
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
||||||
// ОтборПоТипу - Строка - Отбор по типу файла - type
|
// ОтборПоТипу - Строка - Отбор по типу файла - type
|
||||||
// СортироватьПоДате - Булево - Истина > сортировать по дате, Ложь > по алфавиту - datesort
|
// СортироватьПоДате - Булево - Истина > сортировать по дате, Ложь > по алфавиту - datesort
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСписокФайлов(Знач Токен
|
Функция ПолучитьСписокФайлов(Знач Токен
|
||||||
@ -263,50 +263,50 @@
|
|||||||
, Знач СмещениеОтНачала = 0
|
, Знач СмещениеОтНачала = 0
|
||||||
, Знач ОтборПоТипу = ""
|
, Знач ОтборПоТипу = ""
|
||||||
, Знач СортироватьПоДате = Ложь) Экспорт
|
, Знач СортироватьПоДате = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОтборПоТипу);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ОтборПоТипу);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(СортироватьПоДате);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(СортироватьПоДате);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Количество) Тогда
|
Если ЗначениеЗаполнено(Количество) Тогда
|
||||||
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
||||||
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(ОтборПоТипу) Тогда
|
Если ЗначениеЗаполнено(ОтборПоТипу) Тогда
|
||||||
Параметры.Вставить("media_type", ОтборПоТипу);
|
Параметры.Вставить("media_type", ОтборПоТипу);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если СортироватьПоДате Тогда
|
Если СортироватьПоДате Тогда
|
||||||
Назначение = "last-uploaded";
|
Назначение = "last-uploaded";
|
||||||
Иначе
|
Иначе
|
||||||
Назначение = "files";
|
Назначение = "files";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Назначение, Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Назначение, Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Переместить объект
|
// Переместить объект
|
||||||
// Перемещает объект по заданному пути и пути к оригиналу
|
// Перемещает объект по заданному пути и пути к оригиналу
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Оригинал - Строка - Путь к оригинальному файлу или папке - from
|
// Оригинал - Строка - Путь к оригинальному файлу или папке - from
|
||||||
// Путь - Строка - Путь назначение для перемещения - to
|
// Путь - Строка - Путь назначение для перемещения - to
|
||||||
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует - rewrite
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПереместитьОбъект(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
Функция ПереместитьОбъект(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
||||||
@ -315,97 +315,97 @@
|
|||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Оригинал);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("from" , Оригинал);
|
Параметры.Вставить("from" , Оригинал);
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("overwrite" , Перезаписывать);
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить файл
|
// Загрузить файл
|
||||||
// Загружает файл на диск по заданному пути
|
// Загружает файл на диск по заданному пути
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь для сохранение файла на Диске - path
|
// Путь - Строка - Путь для сохранение файла на Диске - path
|
||||||
// Файл - Строка,ДвоичныеДанные - Файл для загрузки - file
|
// Файл - Строка,ДвоичныеДанные - Файл для загрузки - file
|
||||||
// Перезаписывать - Булево - Перезаписывать, если файл с таким именем уже существует - rewrite
|
// Перезаписывать - Булево - Перезаписывать, если файл с таким именем уже существует - rewrite
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Файл, Знач Перезаписывать = Ложь) Экспорт
|
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Файл, Знач Перезаписывать = Ложь) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Href = "href";
|
Href = "href";
|
||||||
Файл = Новый Структура("file", Файл);
|
Файл = Новый Структура("file", Файл);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path" , Путь);
|
Параметры.Вставить("path" , Путь);
|
||||||
Параметры.Вставить("overwrite" , Перезаписывать);
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Параметры, Заголовки);
|
||||||
URL = Ответ[Href];
|
URL = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URL) Тогда
|
Если Не ЗначениеЗаполнено(URL) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.PutMultipart(URL, Новый Структура(), Файл, "multipart", Заголовки);
|
Ответ = OPI_Инструменты.PutMultipart(URL, Новый Структура(), Файл, "multipart", Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Загрузить файл по URL
|
// Загрузить файл по URL
|
||||||
// Загружает файл на диск, забирая его по заданному URL
|
// Загружает файл на диск, забирая его по заданному URL
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь помещения загруженного файла - path
|
// Путь - Строка - Путь помещения загруженного файла - path
|
||||||
// Адрес - Строка - URL файла - url
|
// Адрес - Строка - URL файла - url
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ЗагрузитьФайлПоURL(Знач Токен, Знач Путь, Знач Адрес) Экспорт
|
Функция ЗагрузитьФайлПоURL(Знач Токен, Знач Путь, Знач Адрес) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("url" , КодироватьСтроку(Адрес, СпособКодированияСтроки.КодировкаURL));
|
Параметры.Вставить("url" , КодироватьСтроку(Адрес, СпособКодированияСтроки.КодировкаURL));
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -414,186 +414,186 @@
|
|||||||
|
|
||||||
// Опубликовать объект
|
// Опубликовать объект
|
||||||
// Публикует объект диска в публичный доступ
|
// Публикует объект диска в публичный доступ
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к публикуемому объекту - path
|
// Путь - Строка - Путь к публикуемому объекту - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ОпубликоватьОбъект(Знач Токен, Знач Путь) Экспорт
|
Функция ОпубликоватьОбъект(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Истина);
|
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Истина);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Отменить публикацию объекта
|
// Отменить публикацию объекта
|
||||||
// Отменяет публикацию ранее опубликованного объекта
|
// Отменяет публикацию ранее опубликованного объекта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Путь - Строка - Путь к опубликованному ранее объекту - path
|
// Путь - Строка - Путь к опубликованному ранее объекту - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ОтменитьПубликациюОбъекта(Знач Токен, Знач Путь) Экспорт
|
Функция ОтменитьПубликациюОбъекта(Знач Токен, Знач Путь) Экспорт
|
||||||
|
|
||||||
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Ложь);
|
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Ложь);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить список опубликованных объектов.
|
// Получить список опубликованных объектов.
|
||||||
// Получает список опубликованных объектов
|
// Получает список опубликованных объектов
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// Количество - Число - Количество возвращаемых объектов - amount
|
// Количество - Число - Количество возвращаемых объектов - amount
|
||||||
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСписокОпубликованныхОбъектов(Знач Токен, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
Функция ПолучитьСписокОпубликованныхОбъектов(Знач Токен, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Количество) Тогда
|
Если ЗначениеЗаполнено(Количество) Тогда
|
||||||
Параметры.Вставить("limit", Количество);
|
Параметры.Вставить("limit", Количество);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
||||||
Параметры.Вставить("offset", СмещениеОтНачала);
|
Параметры.Вставить("offset", СмещениеОтНачала);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить публичный объект
|
// Получить публичный объект
|
||||||
// Получает информацию об опубликованном объекте по его URL
|
// Получает информацию об опубликованном объекте по его URL
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Адрес объекта - url
|
// URL - Строка - Адрес объекта - url
|
||||||
// Количество - Число - Количество возвращаемых вложенных объектов (для каталога) - amount
|
// Количество - Число - Количество возвращаемых вложенных объектов (для каталога) - amount
|
||||||
// СмещениеОтНачала - Число - Смещение для получение вложенных объектов не из начала списка - offset
|
// СмещениеОтНачала - Число - Смещение для получение вложенных объектов не из начала списка - offset
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьПубличныйОбъект(Знач Токен, Знач URL, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
Функция ПолучитьПубличныйОбъект(Знач Токен, Знач URL, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Количество);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(СмещениеОтНачала);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Количество) Тогда
|
Если ЗначениеЗаполнено(Количество) Тогда
|
||||||
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
||||||
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры.Вставить("public_key", URL);
|
Параметры.Вставить("public_key", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить ссылку скачивания публичного объекта
|
// Получить ссылку скачивания публичного объекта
|
||||||
// Получает прямую ссылку для скачивания публичного объекта
|
// Получает прямую ссылку для скачивания публичного объекта
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Адрес объекта - url
|
// URL - Строка - Адрес объекта - url
|
||||||
// Путь - Строка - Путь внутри объекта - path
|
// Путь - Строка - Путь внутри объекта - path
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьСсылкуСкачиванияПубличногоОбъекта(Знач Токен, Знач URL, Знач Путь = "") Экспорт
|
Функция ПолучитьСсылкуСкачиванияПубличногоОбъекта(Знач Токен, Знач URL, Знач Путь = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Путь) Тогда
|
Если ЗначениеЗаполнено(Путь) Тогда
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры.Вставить("public_key", URL);
|
Параметры.Вставить("public_key", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Параметры, Заголовки);
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Параметры, Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Сохранить публичный объект на диск
|
// Сохранить публичный объект на диск
|
||||||
// Сохраняет публичный объект на ваш диск
|
// Сохраняет публичный объект на ваш диск
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// Токен - Строка - Токен - token
|
// Токен - Строка - Токен - token
|
||||||
// URL - Строка - Адрес объекта - url
|
// URL - Строка - Адрес объекта - url
|
||||||
// Откуда - Строка - Путь внутри публичного каталога (только для папок) - from
|
// Откуда - Строка - Путь внутри публичного каталога (только для папок) - from
|
||||||
// Куда - Строка - Путь сохранения файла - to
|
// Куда - Строка - Путь сохранения файла - to
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция СохранитьПубличныйОбъектНаДиск(Знач Токен, Знач URL, Откуда = "", Куда = "") Экспорт
|
Функция СохранитьПубличныйОбъектНаДиск(Знач Токен, Знач URL, Откуда = "", Куда = "") Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Откуда);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Куда);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Адрес = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
Адрес = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("public_key", КодироватьСтроку(URL, СпособКодированияСтроки.КодировкаURL));
|
Параметры.Вставить("public_key", КодироватьСтроку(URL, СпособКодированияСтроки.КодировкаURL));
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Откуда) Тогда
|
Если ЗначениеЗаполнено(Откуда) Тогда
|
||||||
Параметры.Вставить("path", Откуда);
|
Параметры.Вставить("path", Откуда);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Куда) Тогда
|
Если ЗначениеЗаполнено(Куда) Тогда
|
||||||
Параметры.Вставить("save_path", Куда);
|
Параметры.Вставить("save_path", Куда);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Post(Адрес + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Post(Адрес + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -601,42 +601,42 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ЗаголовокАвторизации(Знач Токен)
|
Функция ЗаголовокАвторизации(Знач Токен)
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Authorization", "OAuth " + Токен);
|
Заголовки.Вставить("Authorization", "OAuth " + Токен);
|
||||||
|
|
||||||
Возврат Заголовки;
|
Возврат Заголовки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПереключениеОбщегоДоступа(Знач Токен, Знач Путь, Знач ОбщийДоступ)
|
Функция ПереключениеОбщегоДоступа(Знач Токен, Знач Путь, Знач ОбщийДоступ)
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ОбщийДоступ);
|
OPI_ПреобразованиеТипов.ПолучитьБулево(ОбщийДоступ);
|
||||||
|
|
||||||
Заголовки = ЗаголовокАвторизации(Токен);
|
Заголовки = ЗаголовокАвторизации(Токен);
|
||||||
Назначение = ?(ОбщийДоступ, "publish", "unpublish");
|
Назначение = ?(ОбщийДоступ, "publish", "unpublish");
|
||||||
Href = "href";
|
Href = "href";
|
||||||
|
|
||||||
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Назначение;
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Назначение;
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("path", Путь);
|
Параметры.Вставить("path", Путь);
|
||||||
|
|
||||||
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
||||||
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
||||||
|
|
||||||
URLОтвета = Ответ[Href];
|
URLОтвета = Ответ[Href];
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
Если Не ЗначениеЗаполнено(URLОтвета) Тогда
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/core/Modules/OPI_YandexID.os
|
// OneScript: ./OInt/core/Modules/OPI_YandexID.os
|
||||||
// Lib: Yandex ID
|
// Lib: Yandex ID
|
||||||
// CLI: yandex
|
// CLI: yandex
|
||||||
|
|
||||||
@ -41,77 +41,77 @@
|
|||||||
|
|
||||||
// Получить код подтверждения
|
// Получить код подтверждения
|
||||||
// Получает код подтверждения и адрес страницы, на которой его необходимо ввести
|
// Получает код подтверждения и адрес страницы, на которой его необходимо ввести
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientId - Строка - Client id - id
|
// ClientId - Строка - Client id - id
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПолучитьКодПодтверждения(Знач ClientId) Экспорт
|
Функция ПолучитьКодПодтверждения(Знач ClientId) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
||||||
|
|
||||||
Параметры = Новый Структура("client_id", ClientId);
|
Параметры = Новый Структура("client_id", ClientId);
|
||||||
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/device/code", Параметры, , Ложь);
|
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/device/code", Параметры, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Преобразовать код в токен
|
// Преобразовать код в токен
|
||||||
// Преобразовывает код в токен после ввода кода при выполнении ПолучитьКодПодтверждения
|
// Преобразовывает код в токен после ввода кода при выполнении ПолучитьКодПодтверждения
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientId - Строка - Client id - id
|
// ClientId - Строка - Client id - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// КодУстройства - Строка - device_code из ПолучитьКодПодтверждения() - device
|
// КодУстройства - Строка - device_code из ПолучитьКодПодтверждения() - device
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ПреобразоватьКодВТокен(Знач ClientId, Знач ClientSecret, Знач КодУстройства) Экспорт
|
Функция ПреобразоватьКодВТокен(Знач ClientId, Знач ClientSecret, Знач КодУстройства) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КодУстройства);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КодУстройства);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("grant_type" , "device_code");
|
Параметры.Вставить("grant_type" , "device_code");
|
||||||
Параметры.Вставить("code" , КодУстройства);
|
Параметры.Вставить("code" , КодУстройства);
|
||||||
Параметры.Вставить("client_id" , ClientId);
|
Параметры.Вставить("client_id" , ClientId);
|
||||||
Параметры.Вставить("client_secret" , ClientSecret);
|
Параметры.Вставить("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Обновить токен
|
// Обновить токен
|
||||||
// Обновляет токен по Refresh token
|
// Обновляет токен по Refresh token
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// ClientId - Строка - Client id - id
|
// ClientId - Строка - Client id - id
|
||||||
// ClientSecret - Строка - Client secret - secret
|
// ClientSecret - Строка - Client secret - secret
|
||||||
// RefreshToken - Строка - Refresh token - refresh
|
// RefreshToken - Строка - Refresh token - refresh
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Yandex
|
||||||
Функция ОбновитьТокен(Знач ClientId, Знач ClientSecret, Знач RefreshToken) Экспорт
|
Функция ОбновитьТокен(Знач ClientId, Знач ClientSecret, Знач RefreshToken) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientId);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientSecret);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(RefreshToken);
|
||||||
|
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
Параметры.Вставить("grant_type" , "refresh_token");
|
Параметры.Вставить("grant_type" , "refresh_token");
|
||||||
Параметры.Вставить("refresh_token" , RefreshToken);
|
Параметры.Вставить("refresh_token" , RefreshToken);
|
||||||
Параметры.Вставить("client_id" , ClientId);
|
Параметры.Вставить("client_id" , ClientId);
|
||||||
Параметры.Вставить("client_secret" , ClientSecret);
|
Параметры.Вставить("client_secret" , ClientSecret);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os
|
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os
|
||||||
|
|
||||||
// MIT License
|
// MIT License
|
||||||
|
|
||||||
@ -39,75 +39,75 @@
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Copyright (c) 2019, ООО 1С-Софт
|
// Copyright (c) 2019, ООО 1С-Софт
|
||||||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||||||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||||||
// Текст лицензии доступен по ссылке:
|
// Текст лицензии доступен по ссылке:
|
||||||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Функция HMACSHA256(Знач Ключ, Знач Данные) Экспорт
|
Функция HMACSHA256(Знач Ключ, Знач Данные) Экспорт
|
||||||
|
|
||||||
Возврат HMAC(Ключ, Данные, ХешФункция.SHA256, 64);
|
Возврат HMAC(Ключ, Данные, ХешФункция.SHA256, 64);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция Хеш(ДвоичныеДанные, Тип) Экспорт
|
Функция Хеш(ДвоичныеДанные, Тип) Экспорт
|
||||||
|
|
||||||
Хеширование = Новый ХешированиеДанных(Тип);
|
Хеширование = Новый ХешированиеДанных(Тип);
|
||||||
Хеширование.Добавить(ДвоичныеДанные);
|
Хеширование.Добавить(ДвоичныеДанные);
|
||||||
|
|
||||||
Возврат Хеширование.ХешСумма;
|
Возврат Хеширование.ХешСумма;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция HMAC(Знач Ключ, Знач Данные, Тип, РазмерБлока) Экспорт
|
Функция HMAC(Знач Ключ, Знач Данные, Тип, РазмерБлока) Экспорт
|
||||||
|
|
||||||
Дважды = 2;
|
Дважды = 2;
|
||||||
|
|
||||||
Если Ключ.Размер() > РазмерБлока Тогда
|
Если Ключ.Размер() > РазмерБлока Тогда
|
||||||
Ключ = Хеш(Ключ, Тип);
|
Ключ = Хеш(Ключ, Тип);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Ключ.Размер() <= РазмерБлока Тогда
|
Если Ключ.Размер() <= РазмерБлока Тогда
|
||||||
Ключ = ПолучитьHexСтрокуИзДвоичныхДанных(Ключ);
|
Ключ = ПолучитьHexСтрокуИзДвоичныхДанных(Ключ);
|
||||||
Ключ = Лев(Ключ + ПовторитьСтроку("00", РазмерБлока), РазмерБлока * Дважды);
|
Ключ = Лев(Ключ + ПовторитьСтроку("00", РазмерБлока), РазмерБлока * Дважды);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ключ = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзHexСтроки(Ключ));
|
Ключ = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзHexСтроки(Ключ));
|
||||||
|
|
||||||
Ipad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("36", РазмерБлока));
|
Ipad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("36", РазмерБлока));
|
||||||
Opad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("5c", РазмерБлока));
|
Opad = ПолучитьБуферДвоичныхДанныхИзHexСтроки(ПовторитьСтроку("5c", РазмерБлока));
|
||||||
|
|
||||||
Ipad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
Ipad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
||||||
Ikeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ipad);
|
Ikeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ipad);
|
||||||
|
|
||||||
Opad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
Opad.ЗаписатьПобитовоеИсключительноеИли(0, Ключ);
|
||||||
Okeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(opad);
|
Okeypad = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(opad);
|
||||||
|
|
||||||
Возврат Хеш(СклеитьДвоичныеДанные(okeypad, Хеш(СклеитьДвоичныеДанные(ikeypad, Данные), Тип)), Тип);
|
Возврат Хеш(СклеитьДвоичныеДанные(okeypad, Хеш(СклеитьДвоичныеДанные(ikeypad, Данные), Тип)), Тип);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СклеитьДвоичныеДанные(ДвоичныеДанные1, ДвоичныеДанные2) Экспорт
|
Функция СклеитьДвоичныеДанные(ДвоичныеДанные1, ДвоичныеДанные2) Экспорт
|
||||||
|
|
||||||
МассивДвоичныхДанных = Новый Массив;
|
МассивДвоичныхДанных = Новый Массив;
|
||||||
МассивДвоичныхДанных.Добавить(ДвоичныеДанные1);
|
МассивДвоичныхДанных.Добавить(ДвоичныеДанные1);
|
||||||
МассивДвоичныхДанных.Добавить(ДвоичныеДанные2);
|
МассивДвоичныхДанных.Добавить(ДвоичныеДанные2);
|
||||||
|
|
||||||
Возврат СоединитьДвоичныеДанные(МассивДвоичныхДанных);
|
Возврат СоединитьДвоичныеДанные(МассивДвоичныхДанных);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПовторитьСтроку(Строка, Количество) Экспорт
|
Функция ПовторитьСтроку(Строка, Количество) Экспорт
|
||||||
|
|
||||||
Части = Новый Массив(Количество);
|
Части = Новый Массив(Количество);
|
||||||
|
|
||||||
Для К = 1 По Количество Цикл
|
Для К = 1 По Количество Цикл
|
||||||
Части.Добавить(Строка);
|
Части.Добавить(Строка);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат СтрСоединить(Части, "");
|
Возврат СтрСоединить(Части, "");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
|
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
|
||||||
|
|
||||||
// MIT License
|
// MIT License
|
||||||
|
|
||||||
@ -46,10 +46,10 @@
|
|||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Функция ПолучитьСоответствиеРазделовТестирования() Экспорт
|
Функция ПолучитьСоответствиеРазделовТестирования() Экспорт
|
||||||
|
|
||||||
СтандартныеЗависимости = "[Decode, Build]";
|
СтандартныеЗависимости = "[Decode, Build]";
|
||||||
ЗависимостиГугл = "Testing-GoogleWorkspace";
|
ЗависимостиГугл = "Testing-GoogleWorkspace";
|
||||||
|
|
||||||
Разделы = Новый Структура;
|
Разделы = Новый Структура;
|
||||||
Разделы.Вставить("Telegram" , СтандартныеЗависимости);
|
Разделы.Вставить("Telegram" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("VK" , СтандартныеЗависимости);
|
Разделы.Вставить("VK" , СтандартныеЗависимости);
|
||||||
@ -57,7 +57,7 @@
|
|||||||
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
|
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("YandexDisk" , СтандартныеЗависимости);
|
Разделы.Вставить("YandexDisk" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
||||||
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
||||||
@ -65,13 +65,13 @@
|
|||||||
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("Dropbox" , СтандартныеЗависимости);
|
Разделы.Вставить("Dropbox" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("Bitrix24" , СтандартныеЗависимости);
|
Разделы.Вставить("Bitrix24" , СтандартныеЗависимости);
|
||||||
|
|
||||||
Возврат Разделы;
|
Возврат Разделы;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьТаблицуТестов() Экспорт
|
Функция ПолучитьТаблицуТестов() Экспорт
|
||||||
|
|
||||||
Телеграм = "Telegram";
|
Телеграм = "Telegram";
|
||||||
ВКонтакте = "VK";
|
ВКонтакте = "VK";
|
||||||
ЯДиск = "YandexDisk";
|
ЯДиск = "YandexDisk";
|
||||||
@ -86,13 +86,13 @@
|
|||||||
АирТ = "Airtable";
|
АирТ = "Airtable";
|
||||||
ДропБокс = "Dropbox";
|
ДропБокс = "Dropbox";
|
||||||
Битрикс = "Bitrix24";
|
Битрикс = "Bitrix24";
|
||||||
|
|
||||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||||
ТаблицаТестов.Колонки.Добавить("Синоним");
|
ТаблицаТестов.Колонки.Добавить("Синоним");
|
||||||
ТаблицаТестов.Колонки.Добавить("Раздел");
|
ТаблицаТестов.Колонки.Добавить("Раздел");
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм);
|
||||||
@ -114,7 +114,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм);
|
||||||
НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм);
|
НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_СоздатьСоставнойПост" , "Создать/Удалить составной пост" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_СоздатьСоставнойПост" , "Создать/Удалить составной пост" , ВКонтакте);
|
||||||
@ -135,7 +135,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокСвойств" , "Получить список свойств" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокСвойств" , "Получить список свойств" , ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокЗаказов" , "Получить список заказов" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокЗаказов" , "Получить список заказов" , ВКонтакте);
|
||||||
НовыйТест(ТаблицаТестов, "ВК_ЗагрузитьВидео" , "Загрузить видео" , ВКонтакте);
|
НовыйТест(ТаблицаТестов, "ВК_ЗагрузитьВидео" , "Загрузить видео" , ВКонтакте);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске" , ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьПапку" , "Создать папку" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьПапку" , "Создать папку" , ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект", "Загрузить по URL и получить" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект", "Загрузить по URL и получить" , ЯДиск);
|
||||||
@ -146,25 +146,25 @@
|
|||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ПереместитьОбъект" , "Переместить объект" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ПереместитьОбъект" , "Переместить объект" , ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск);
|
||||||
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск);
|
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс);
|
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс);
|
||||||
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс);
|
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс);
|
||||||
НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс);
|
НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь);
|
||||||
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь);
|
||||||
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь);
|
||||||
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
|
||||||
НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв);
|
||||||
НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв);
|
||||||
НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГТ_СоздатьТаблицу" , "Создать таблицу" , Таблицы);
|
НовыйТест(ТаблицаТестов, "ГТ_СоздатьТаблицу" , "Создать таблицу" , Таблицы);
|
||||||
НовыйТест(ТаблицаТестов, "ГТ_ПолучитьТаблицу" , "Получить таблицу" , Таблицы);
|
НовыйТест(ТаблицаТестов, "ГТ_ПолучитьТаблицу" , "Получить таблицу" , Таблицы);
|
||||||
НовыйТест(ТаблицаТестов, "ГТ_ЗаполнитьОчиститьЯчейки" , "Заполнить/Очистить ячейки" , Таблицы);
|
НовыйТест(ТаблицаТестов, "ГТ_ЗаполнитьОчиститьЯчейки" , "Заполнить/Очистить ячейки" , Таблицы);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер);
|
||||||
@ -172,7 +172,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСВидео" , "Твит с видео" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСВидео" , "Твит с видео" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСГиф" , "Твит с гиф" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСГиф" , "Твит с гиф" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСОпросом" , "Твит с опросом" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСОпросом" , "Твит с опросом" , Твиттер);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьИнформациюОКанале" , "Получить информацию канала" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьИнформациюОКанале" , "Получить информацию канала" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьОнлайнПользователей" , "Получить онлайн пользователей" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьОнлайнПользователей" , "Получить онлайн пользователей" , Вайбер);
|
||||||
@ -182,7 +182,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКонтакт" , "Отправить контакт" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКонтакт" , "Отправить контакт" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер);
|
||||||
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер);
|
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн);
|
||||||
@ -192,7 +192,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн);
|
||||||
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн);
|
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокПользователей" , "Получить список пользователей" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокПользователей" , "Получить список пользователей" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак);
|
||||||
@ -206,12 +206,12 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьОбновитьТокен" , "Получить/Обновить токен" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьОбновитьТокен" , "Получить/Обновить токен" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайл" , "Загрузить файл" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайл" , "Загрузить файл" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайлПоURL" , "Загрузить файл по URL" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ЗагрузитьФайлПоURL" , "Загрузить файл по URL" , ДропБокс);
|
||||||
@ -220,7 +220,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьАккаунт" , "Получить данные аккаунта" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьАккаунт" , "Получить данные аккаунта" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_РаботаСДоступами" , "Работа с доступами" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_РаботаСДоступами" , "Работа с доступами" , ДропБокс);
|
||||||
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьСписокФайловПапки" , "Получить список файлов папки" , ДропБокс);
|
НовыйТест(ТаблицаТестов, "ДропБокс_ПолучитьСписокФайловПапки" , "Получить список файлов папки" , ДропБокс);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСТокеном" , "Работа с токеном" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСТокеном" , "Работа с токеном" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_СерверноеВремя" , "Серверное время" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_СерверноеВремя" , "Серверное время" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСНовостями" , "Работа с новостями" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСНовостями" , "Работа с новостями" , Битрикс);
|
||||||
@ -231,215 +231,215 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Б24_УчетРабочегоВремени" , "Учет рабочего времени" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_УчетРабочегоВремени" , "Учет рабочего времени" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСЧатами" , "Работа с чатами" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСЧатами" , "Работа с чатами" , Битрикс);
|
||||||
НовыйТест(ТаблицаТестов, "Б24_РаботаСУведомлениями" , "Работа с уведомлениями" , Битрикс);
|
НовыйТест(ТаблицаТестов, "Б24_РаботаСУведомлениями" , "Работа с уведомлениями" , Битрикс);
|
||||||
|
|
||||||
Возврат ТаблицаТестов;
|
Возврат ТаблицаТестов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ОжидаетЧто(Значение) Экспорт
|
Функция ОжидаетЧто(Значение) Экспорт
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Модуль = ПолучитьОбщийМодуль("ЮТест");
|
Модуль = ПолучитьОбщийМодуль("ЮТест");
|
||||||
Ожидаем = ТипЗнч(Модуль) = Тип("ОбщийМодуль");
|
Ожидаем = ТипЗнч(Модуль) = Тип("ОбщийМодуль");
|
||||||
Возврат Модуль.ОжидаетЧто(Значение);
|
Возврат Модуль.ОжидаетЧто(Значение);
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
Возврат Ожидаем.Что(Значение);
|
Возврат Ожидаем.Что(Значение);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьТестыЯкс() Экспорт
|
Функция СформироватьТестыЯкс() Экспорт
|
||||||
|
|
||||||
Модуль = ПолучитьОбщийМодуль("ЮТТесты");
|
Модуль = ПолучитьОбщийМодуль("ЮТТесты");
|
||||||
Разделы = ПолучитьСоответствиеРазделовТестирования();
|
Разделы = ПолучитьСоответствиеРазделовТестирования();
|
||||||
ТаблицаТестов = ПолучитьТаблицуТестов();
|
ТаблицаТестов = ПолучитьТаблицуТестов();
|
||||||
|
|
||||||
Для Каждого Раздел Из Разделы Цикл
|
Для Каждого Раздел Из Разделы Цикл
|
||||||
|
|
||||||
ТекущийРаздел = Раздел.Ключ;
|
ТекущийРаздел = Раздел.Ключ;
|
||||||
Отбор = Новый Структура("Раздел", ТекущийРаздел);
|
Отбор = Новый Структура("Раздел", ТекущийРаздел);
|
||||||
ТестыРаздела = ТаблицаТестов.НайтиСтроки(Отбор);
|
ТестыРаздела = ТаблицаТестов.НайтиСтроки(Отбор);
|
||||||
|
|
||||||
Набор = Модуль.ДобавитьТестовыйНабор(ТекущийРаздел);
|
Набор = Модуль.ДобавитьТестовыйНабор(ТекущийРаздел);
|
||||||
|
|
||||||
Для Каждого Тест Из ТестыРаздела Цикл
|
Для Каждого Тест Из ТестыРаздела Цикл
|
||||||
Набор.ДобавитьСерверныйТест(Тест.Метод, Тест.Синоним);
|
Набор.ДобавитьСерверныйТест(Тест.Метод, Тест.Синоним);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат "";
|
Возврат "";
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьТестыАссертс() Экспорт
|
Функция СформироватьТестыАссертс() Экспорт
|
||||||
|
|
||||||
ТаблицаТестов = ПолучитьТаблицуТестов();
|
ТаблицаТестов = ПолучитьТаблицуТестов();
|
||||||
МассивТестов = Новый Массив;
|
МассивТестов = Новый Массив;
|
||||||
|
|
||||||
Для Каждого Тест Из ТаблицаТестов Цикл
|
Для Каждого Тест Из ТаблицаТестов Цикл
|
||||||
МассивТестов.Добавить(Тест.Метод);
|
МассивТестов.Добавить(Тест.Метод);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат МассивТестов;
|
Возврат МассивТестов;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьПараметр(Параметр) Экспорт
|
Функция ПолучитьПараметр(Параметр) Экспорт
|
||||||
|
|
||||||
Путь = ПутьКФайлуДанных();
|
Путь = ПутьКФайлуДанных();
|
||||||
Возврат ПолучитьЗначениеИзФайла(Параметр, Путь);
|
Возврат ПолучитьЗначениеИзФайла(Параметр, Путь);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьДвоичные(Параметр) Экспорт
|
Функция ПолучитьДвоичные(Параметр) Экспорт
|
||||||
|
|
||||||
Путь = ПутьКФайлуДанных();
|
Путь = ПутьКФайлуДанных();
|
||||||
ПараметрЛокальный = Параметр + "Local";
|
ПараметрЛокальный = Параметр + "Local";
|
||||||
ЗначениеОсновной = ПолучитьЗначениеИзФайла(Параметр , Путь);
|
ЗначениеОсновной = ПолучитьЗначениеИзФайла(Параметр , Путь);
|
||||||
ЗначениеЛокальный = ПолучитьЗначениеИзФайла(ПараметрЛокальный, Путь);
|
ЗначениеЛокальный = ПолучитьЗначениеИзФайла(ПараметрЛокальный, Путь);
|
||||||
|
|
||||||
ФайлЛокальный = Новый Файл(ЗначениеЛокальный);
|
ФайлЛокальный = Новый Файл(ЗначениеЛокальный);
|
||||||
|
|
||||||
Если ФайлЛокальный.Существует() Тогда
|
Если ФайлЛокальный.Существует() Тогда
|
||||||
Значение = Новый ДвоичныеДанные(ЗначениеЛокальный);
|
Значение = Новый ДвоичныеДанные(ЗначениеЛокальный);
|
||||||
Иначе
|
Иначе
|
||||||
Значение = ЗначениеОсновной;
|
Значение = ЗначениеОсновной;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Строка") Тогда
|
Если ТипЗнч(Значение) = Тип("Строка") Тогда
|
||||||
Значение = ПолучитьФайлПути(Значение, ПараметрЛокальный);
|
Значение = ПолучитьФайлПути(Значение, ПараметрЛокальный);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Значение;
|
Возврат Значение;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьФайлПути(Знач Путь, ПараметрЛокальный, Знач СохранятьЛокально = Истина) Экспорт
|
Функция ПолучитьФайлПути(Знач Путь, ПараметрЛокальный, Знач СохранятьЛокально = Истина) Экспорт
|
||||||
|
|
||||||
Если СтрНайти(Путь, "http") > 0
|
Если СтрНайти(Путь, "http") > 0
|
||||||
Или СтрНайти(Путь, "www") > 0 Тогда
|
Или СтрНайти(Путь, "www") > 0 Тогда
|
||||||
|
|
||||||
ИВФ = ПолучитьИмяВременногоФайла();
|
ИВФ = ПолучитьИмяВременногоФайла();
|
||||||
КопироватьФайл(Путь, ИВФ);
|
КопироватьФайл(Путь, ИВФ);
|
||||||
Путь = ИВФ;
|
Путь = ИВФ;
|
||||||
Двоичные = Новый ДвоичныеДанные(Путь);
|
Двоичные = Новый ДвоичныеДанные(Путь);
|
||||||
|
|
||||||
Если СохранятьЛокально Тогда
|
Если СохранятьЛокально Тогда
|
||||||
ЗаписатьПараметр(ПараметрЛокальный, ИВФ);
|
ЗаписатьПараметр(ПараметрЛокальный, ИВФ);
|
||||||
Иначе
|
Иначе
|
||||||
УдалитьФайлы(ИВФ);
|
УдалитьФайлы(ИВФ);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Двоичные = Новый ДвоичныеДанные(Путь);
|
Двоичные = Новый ДвоичныеДанные(Путь);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат Двоичные;
|
Возврат Двоичные;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура ПараметрВКоллекцию(Параметр, Коллекция) Экспорт
|
Процедура ПараметрВКоллекцию(Параметр, Коллекция) Экспорт
|
||||||
|
|
||||||
Значение = ПолучитьПараметр(Параметр);
|
Значение = ПолучитьПараметр(Параметр);
|
||||||
Коллекция.Вставить(Параметр, Значение);
|
Коллекция.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ДвоичныеВКоллекцию(Параметр, Коллекция) Экспорт
|
Процедура ДвоичныеВКоллекцию(Параметр, Коллекция) Экспорт
|
||||||
|
|
||||||
Значение = ПолучитьДвоичные(Параметр);
|
Значение = ПолучитьДвоичные(Параметр);
|
||||||
Коллекция.Вставить(Параметр, Значение);
|
Коллекция.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьПараметр(Параметр, Значение) Экспорт
|
Процедура ЗаписатьПараметр(Параметр, Значение) Экспорт
|
||||||
|
|
||||||
Путь = ПутьКФайлуДанных();
|
Путь = ПутьКФайлуДанных();
|
||||||
ЗаписатьПараметрВФайл(Параметр, Значение, Путь);
|
ЗаписатьПараметрВФайл(Параметр, Значение, Путь);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьЛог(Знач Результат, Знач Метод, Знач Библиотека = "") Экспорт
|
Процедура ЗаписатьЛог(Знач Результат, Знач Метод, Знач Библиотека = "") Экспорт
|
||||||
|
|
||||||
Шапка = Строка(OPI_Инструменты.ПолучитьТекущуюДату()) + " | " + Метод;
|
Шапка = Строка(OPI_Инструменты.ПолучитьТекущуюДату()) + " | " + Метод;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
Данные = OPI_Инструменты.JSONСтрокой(Результат);
|
Данные = OPI_Инструменты.JSONСтрокой(Результат);
|
||||||
Исключение
|
Исключение
|
||||||
Данные = "Не JSON: " + Строка(Результат);
|
Данные = "Не JSON: " + Строка(Результат);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
Данные = " " + Данные;
|
Данные = " " + Данные;
|
||||||
|
|
||||||
Сообщить(Шапка);
|
Сообщить(Шапка);
|
||||||
Сообщить(Символы.ПС);
|
Сообщить(Символы.ПС);
|
||||||
Сообщить(Данные);
|
Сообщить(Данные);
|
||||||
Сообщить(Символы.ПС);
|
Сообщить(Символы.ПС);
|
||||||
Сообщить("---------------------------------");
|
Сообщить("---------------------------------");
|
||||||
Сообщить(Символы.ПС);
|
Сообщить(Символы.ПС);
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Библиотека) Тогда
|
Если ЗначениеЗаполнено(Библиотека) Тогда
|
||||||
ЗаписатьФайлЛога(Данные, Метод, Библиотека);
|
ЗаписатьФайлЛога(Данные, Метод, Библиотека);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ПолучитьЗначениеИзФайла(Параметр, Путь)
|
Функция ПолучитьЗначениеИзФайла(Параметр, Путь)
|
||||||
|
|
||||||
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
||||||
Возврат ?(Значения.Свойство(Параметр), Значения[Параметр], "");
|
Возврат ?(Значения.Свойство(Параметр), Значения[Параметр], "");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПутьКФайлуДанных()
|
Функция ПутьКФайлуДанных()
|
||||||
|
|
||||||
Путь = "";
|
Путь = "";
|
||||||
ВозможныеПути = Новый Массив;
|
ВозможныеПути = Новый Массив;
|
||||||
ВозможныеПути.Добавить("./data.json");
|
ВозможныеПути.Добавить("./data.json");
|
||||||
ВозможныеПути.Добавить("C:\GDrive\Мой диск\data.json");
|
ВозможныеПути.Добавить("C:\GDrive\Мой диск\data.json");
|
||||||
ВозможныеПути.Добавить("D:\GD\Мой диск\data.json");
|
ВозможныеПути.Добавить("D:\GD\Мой диск\data.json");
|
||||||
|
|
||||||
Для Каждого ВозможныйПуть Из ВозможныеПути Цикл
|
Для Каждого ВозможныйПуть Из ВозможныеПути Цикл
|
||||||
|
|
||||||
ФайлРепозитория = Новый Файл(ВозможныйПуть);
|
ФайлРепозитория = Новый Файл(ВозможныйПуть);
|
||||||
|
|
||||||
Если ФайлРепозитория.Существует() Тогда
|
Если ФайлРепозитория.Существует() Тогда
|
||||||
Путь = ВозможныйПуть;
|
Путь = ВозможныйПуть;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Возврат Путь;
|
Возврат Путь;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||||
УстановитьБезопасныйРежим(Истина);
|
УстановитьБезопасныйРежим(Истина);
|
||||||
Модуль = Вычислить(Имя);
|
Модуль = Вычислить(Имя);
|
||||||
УстановитьБезопасныйРежим(Ложь);
|
УстановитьБезопасныйРежим(Ложь);
|
||||||
Возврат Модуль;
|
Возврат Модуль;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура НовыйТест(ТаблицаЗначений, Знач Метод, Знач Синоним, Знач Раздел)
|
Процедура НовыйТест(ТаблицаЗначений, Знач Метод, Знач Синоним, Знач Раздел)
|
||||||
|
|
||||||
НовыйТест = ТаблицаЗначений.Добавить();
|
НовыйТест = ТаблицаЗначений.Добавить();
|
||||||
НовыйТест.Метод = Метод;
|
НовыйТест.Метод = Метод;
|
||||||
НовыйТест.Синоним = Синоним;
|
НовыйТест.Синоним = Синоним;
|
||||||
НовыйТест.Раздел = Раздел;
|
НовыйТест.Раздел = Раздел;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьПараметрВФайл(Знач Параметр, Знач Значение, Знач Путь)
|
Процедура ЗаписатьПараметрВФайл(Знач Параметр, Знач Значение, Знач Путь)
|
||||||
|
|
||||||
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь);
|
||||||
Значения.Вставить(Параметр, Значение);
|
Значения.Вставить(Параметр, Значение);
|
||||||
|
|
||||||
@ -452,37 +452,37 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ЗаписатьФайлЛога(Знач Данные, Знач Метод, Знач Библиотека)
|
Процедура ЗаписатьФайлЛога(Знач Данные, Знач Метод, Знач Библиотека)
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
ПутьЛогов = "./docs/ru/results";
|
ПутьЛогов = "./docs/ru/results";
|
||||||
ПутьЛоговБиблиотеки = ПутьЛогов + "/" + Библиотека;
|
ПутьЛоговБиблиотеки = ПутьЛогов + "/" + Библиотека;
|
||||||
|
|
||||||
КаталогЛогов = Новый Файл(ПутьЛогов);
|
КаталогЛогов = Новый Файл(ПутьЛогов);
|
||||||
|
|
||||||
Если Не КаталогЛогов.Существует() Тогда
|
Если Не КаталогЛогов.Существует() Тогда
|
||||||
СоздатьКаталог(ПутьЛогов);
|
СоздатьКаталог(ПутьЛогов);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КаталогЛоговБиблиотеки = Новый Файл(ПутьЛоговБиблиотеки);
|
КаталогЛоговБиблиотеки = Новый Файл(ПутьЛоговБиблиотеки);
|
||||||
|
|
||||||
Если Не КаталогЛоговБиблиотеки.Существует() Тогда
|
Если Не КаталогЛоговБиблиотеки.Существует() Тогда
|
||||||
СоздатьКаталог(ПутьЛоговБиблиотеки);
|
СоздатьКаталог(ПутьЛоговБиблиотеки);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ПутьКФайлу = ПутьЛоговБиблиотеки + "/" + Метод + ".log";
|
ПутьКФайлу = ПутьЛоговБиблиотеки + "/" + Метод + ".log";
|
||||||
ФайлЛога = Новый Файл(ПутьКФайлу);
|
ФайлЛога = Новый Файл(ПутьКФайлу);
|
||||||
|
|
||||||
Если Не ФайлЛога.Существует() Тогда
|
Если Не ФайлЛога.Существует() Тогда
|
||||||
ДокументЛога = Новый ТекстовыйДокумент;
|
ДокументЛога = Новый ТекстовыйДокумент;
|
||||||
ДокументЛога.УстановитьТекст(Данные);
|
ДокументЛога.УстановитьТекст(Данные);
|
||||||
ДокументЛога.Записать(ПутьКФайлу);
|
ДокументЛога.Записать(ПутьКФайлу);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
Сообщить("Не удалось записать файл лога!: " + ОписаниеОшибки());
|
Сообщить("Не удалось записать файл лога!: " + ОписаниеОшибки());
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os
|
// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os
|
||||||
|
|
||||||
// MIT License
|
// MIT License
|
||||||
|
|
||||||
@ -39,268 +39,268 @@
|
|||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
Процедура ПолучитьДвоичныеДанные(Значение) Экспорт
|
Процедура ПолучитьДвоичныеДанные(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
Значение = Новый ДвоичныеДанные(Значение);
|
Значение = Новый ДвоичныеДанные(Значение);
|
||||||
|
|
||||||
ИначеЕсли СтрНайти(Значение, "//") Тогда
|
ИначеЕсли СтрНайти(Значение, "//") Тогда
|
||||||
|
|
||||||
Значение = OPI_Инструменты.Get(Значение);
|
Значение = OPI_Инструменты.Get(Значение);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Значение = Base64Значение(Значение);
|
Значение = Base64Значение(Значение);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
ВызватьИсключение "Ошибка получения двоичных данных из параметра: " + ОписаниеОшибки();
|
ВызватьИсключение "Ошибка получения двоичных данных из параметра: " + ОписаниеОшибки();
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьДвоичныеИлиПоток(Значение) Экспорт
|
Процедура ПолучитьДвоичныеИлиПоток(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
|
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
|
||||||
ПолучитьДвоичныеДанные(Значение);
|
ПолучитьДвоичныеДанные(Значение);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
Значение = Новый ФайловыйПоток(Значение, РежимОткрытияФайла.Открыть);
|
Значение = Новый ФайловыйПоток(Значение, РежимОткрытияФайла.Открыть);
|
||||||
Иначе
|
Иначе
|
||||||
ПолучитьДвоичныеДанные(Значение);
|
ПолучитьДвоичныеДанные(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьКоллекцию(Значение) Экспорт
|
Процедура ПолучитьКоллекцию(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
ИсходноеЗначение = Значение;
|
ИсходноеЗначение = Значение;
|
||||||
|
|
||||||
Если ЭтоКоллекция(Значение) Тогда
|
Если ЭтоКоллекция(Значение) Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
||||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||||
Иначе
|
Иначе
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
ЧтениеJSON = Новый ЧтениеJSON;
|
ЧтениеJSON = Новый ЧтениеJSON;
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
|
|
||||||
ЧтениеJSON.ОткрытьФайл(Значение);
|
ЧтениеJSON.ОткрытьФайл(Значение);
|
||||||
|
|
||||||
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
||||||
|
|
||||||
ИВФ = ПолучитьИмяВременногоФайла();
|
ИВФ = ПолучитьИмяВременногоФайла();
|
||||||
КопироватьФайл(Значение, ИВФ);
|
КопироватьФайл(Значение, ИВФ);
|
||||||
ЧтениеJSON.ОткрытьФайл(ИВФ);
|
ЧтениеJSON.ОткрытьФайл(ИВФ);
|
||||||
ЧтениеJSON.Прочитать();
|
ЧтениеJSON.Прочитать();
|
||||||
|
|
||||||
УдалитьФайлы(ИВФ);
|
УдалитьФайлы(ИВФ);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
ЧтениеJSON.УстановитьСтроку(СокрЛП(Значение));
|
ЧтениеJSON.УстановитьСтроку(СокрЛП(Значение));
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Значение = ПрочитатьJSON(ЧтениеJSON, Истина, Неопределено, ФорматДатыJSON.ISO);
|
Значение = ПрочитатьJSON(ЧтениеJSON, Истина, Неопределено, ФорматДатыJSON.ISO);
|
||||||
ЧтениеJSON.Закрыть();
|
ЧтениеJSON.Закрыть();
|
||||||
|
|
||||||
Если (Не ЭтоКоллекция(Значение)) Или Не ЗначениеЗаполнено(Значение) Тогда
|
Если (Не ЭтоКоллекция(Значение)) Или Не ЗначениеЗаполнено(Значение) Тогда
|
||||||
|
|
||||||
Значение = ИсходноеЗначение;
|
Значение = ИсходноеЗначение;
|
||||||
ПолучитьМассив(Значение);
|
ПолучитьМассив(Значение);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
|
|
||||||
Значение = ИсходноеЗначение;
|
Значение = ИсходноеЗначение;
|
||||||
ПолучитьМассив(Значение);
|
ПолучитьМассив(Значение);
|
||||||
|
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьМассив(Значение) Экспорт
|
Процедура ПолучитьМассив(Значение) Экспорт
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Строка")
|
Если ТипЗнч(Значение) = Тип("Строка")
|
||||||
И СтрНачинаетсяС(Значение, "[")
|
И СтрНачинаетсяС(Значение, "[")
|
||||||
И СтрЗаканчиваетсяНа(Значение, "]") Тогда
|
И СтрЗаканчиваетсяНа(Значение, "]") Тогда
|
||||||
|
|
||||||
ЗапятаяВКавычках = "','";
|
ЗапятаяВКавычках = "','";
|
||||||
|
|
||||||
Значение = СтрЗаменить(Значение, "['" , "");
|
Значение = СтрЗаменить(Значение, "['" , "");
|
||||||
Значение = СтрЗаменить(Значение, "']" , "");
|
Значение = СтрЗаменить(Значение, "']" , "");
|
||||||
Значение = СтрЗаменить(Значение, "', '" , ЗапятаяВКавычках);
|
Значение = СтрЗаменить(Значение, "', '" , ЗапятаяВКавычках);
|
||||||
Значение = СтрЗаменить(Значение, "' , '", ЗапятаяВКавычках);
|
Значение = СтрЗаменить(Значение, "' , '", ЗапятаяВКавычках);
|
||||||
Значение = СтрЗаменить(Значение, "' ,'" , ЗапятаяВКавычках);
|
Значение = СтрЗаменить(Значение, "' ,'" , ЗапятаяВКавычках);
|
||||||
|
|
||||||
Значение = СтрРазделить(Значение, ЗапятаяВКавычках, Ложь);
|
Значение = СтрРазделить(Значение, ЗапятаяВКавычках, Ложь);
|
||||||
|
|
||||||
Для Н = 0 По Значение.ВГраница() Цикл
|
Для Н = 0 По Значение.ВГраница() Цикл
|
||||||
Значение[Н] = СокрЛП(Значение[Н]);
|
Значение[Н] = СокрЛП(Значение[Н]);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Число") Тогда
|
Если ТипЗнч(Значение) = Тип("Число") Тогда
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
OPI_Инструменты.ЗначениеВМассив(Значение);
|
OPI_Инструменты.ЗначениеВМассив(Значение);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьБулево(Значение) Экспорт
|
Процедура ПолучитьБулево(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип("Булево") Тогда
|
Если ТипЗнч(Значение) = Тип("Булево") Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
Значение = Булево(Значение);
|
Значение = Булево(Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
ВызватьИсключение "Ошибка получения данных булево из параметра";
|
ВызватьИсключение "Ошибка получения данных булево из параметра";
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьСтроку(Значение, Знач ИзИсточника = Ложь) Экспорт
|
Процедура ПолучитьСтроку(Значение, Знач ИзИсточника = Ложь) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ЭтоСимвольное(Значение) Тогда
|
Если ЭтоСимвольное(Значение) Тогда
|
||||||
|
|
||||||
Если Не ИзИсточника Тогда
|
Если Не ИзИсточника Тогда
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
Значение = OPI_Инструменты.ЧислоВСтроку(Значение);
|
||||||
Файл = Новый Файл(Значение);
|
Файл = Новый Файл(Значение);
|
||||||
|
|
||||||
Если Файл.Существует() Тогда
|
Если Файл.Существует() Тогда
|
||||||
|
|
||||||
ЧтениеТекста = Новый ЧтениеТекста(Значение);
|
ЧтениеТекста = Новый ЧтениеТекста(Значение);
|
||||||
Значение = ЧтениеТекста.Прочитать();
|
Значение = ЧтениеТекста.Прочитать();
|
||||||
ЧтениеТекста.Закрыть();
|
ЧтениеТекста.Закрыть();
|
||||||
|
|
||||||
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
ИначеЕсли СтрНачинаетсяС(нРег(Значение), "http") Тогда
|
||||||
|
|
||||||
ИВФ = ПолучитьИмяВременногоФайла();
|
ИВФ = ПолучитьИмяВременногоФайла();
|
||||||
КопироватьФайл(Значение, ИВФ);
|
КопироватьФайл(Значение, ИВФ);
|
||||||
|
|
||||||
ЧтениеТекста = Новый ЧтениеТекста(ИВФ);
|
ЧтениеТекста = Новый ЧтениеТекста(ИВФ);
|
||||||
Значение = ЧтениеТекста.Прочитать();
|
Значение = ЧтениеТекста.Прочитать();
|
||||||
ЧтениеТекста.Закрыть();
|
ЧтениеТекста.Закрыть();
|
||||||
|
|
||||||
УдалитьФайлы(ИВФ);
|
УдалитьФайлы(ИВФ);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Возврат;
|
Возврат;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ИначеЕсли ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
ИначеЕсли ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
||||||
|
|
||||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||||
|
|
||||||
ИначеЕсли ЭтоКоллекция(Значение) Тогда
|
ИначеЕсли ЭтоКоллекция(Значение) Тогда
|
||||||
|
|
||||||
Значение = OPI_Инструменты.JSONСтрокой(Значение);
|
Значение = OPI_Инструменты.JSONСтрокой(Значение);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
Значение = Строка(Значение);
|
Значение = Строка(Значение);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьДату(Значение) Экспорт
|
Процедура ПолучитьДату(Значение) Экспорт
|
||||||
|
|
||||||
Если Значение = Неопределено Тогда
|
Если Значение = Неопределено Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Дата = "Дата";
|
Дата = "Дата";
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
|
|
||||||
Если ТипЗнч(Значение) = Тип(Дата) Тогда
|
Если ТипЗнч(Значение) = Тип(Дата) Тогда
|
||||||
Возврат;
|
Возврат;
|
||||||
Иначе
|
Иначе
|
||||||
Значение = XMLЗначение(Тип(Дата), Значение);
|
Значение = XMLЗначение(Тип(Дата), Значение);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
ООД = Новый ОписаниеТипов(Дата);
|
ООД = Новый ОписаниеТипов(Дата);
|
||||||
Значение = ООД.ПривестиЗначение(Значение);
|
Значение = ООД.ПривестиЗначение(Значение);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПолучитьЧисло(Значение) Экспорт
|
Процедура ПолучитьЧисло(Значение) Экспорт
|
||||||
|
|
||||||
ОписаниеТипа = Новый ОписаниеТипов("Число");
|
ОписаниеТипа = Новый ОписаниеТипов("Число");
|
||||||
Значение = ОписаниеТипа.ПривестиЗначение(Значение);
|
Значение = ОписаниеТипа.ПривестиЗначение(Значение);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -308,19 +308,19 @@
|
|||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
Функция ЭтоКоллекция(Знач Значение)
|
Функция ЭтоКоллекция(Знач Значение)
|
||||||
|
|
||||||
Возврат ТипЗнч(Значение) = Тип("Массив")
|
Возврат ТипЗнч(Значение) = Тип("Массив")
|
||||||
Или ТипЗнч(Значение) = Тип("Структура")
|
Или ТипЗнч(Значение) = Тип("Структура")
|
||||||
Или ТипЗнч(Значение) = Тип("Соответствие");
|
Или ТипЗнч(Значение) = Тип("Соответствие");
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ЭтоСимвольное(Знач Значение)
|
Функция ЭтоСимвольное(Знач Значение)
|
||||||
|
|
||||||
Возврат ТипЗнч(Значение) = Тип("Строка")
|
|
||||||
Или ТипЗнч(Значение) = Тип("Число")
|
|
||||||
Или ТипЗнч(Значение) = Тип("Дата");
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
#КонецОбласти
|
Возврат ТипЗнч(Значение) = Тип("Строка")
|
||||||
|
Или ТипЗнч(Значение) = Тип("Число")
|
||||||
|
Или ТипЗнч(Значение) = Тип("Дата");
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user