mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-12 11:15:07 +02:00
504 lines
25 KiB
Plaintext
504 lines
25 KiB
Plaintext
// MIT License
|
|
|
|
// Copyright (c) 2023 Anton Tsitavets
|
|
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
|
|
// The above copyright notice and this permission notice shall be included in all
|
|
// copies or substantial portions of the Software.
|
|
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
// SOFTWARE.
|
|
|
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
|
|
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
|
// BSLLS:IncorrectLineBreak-off
|
|
|
|
// Раскомментировать, если выполняется OneScript
|
|
#Использовать "../../tools"
|
|
|
|
#Область ПрограммныйИнтерфейс
|
|
|
|
#Область РаботаСФайламиИПапками
|
|
|
|
// Получить информацию о диске.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
//
|
|
// Возвращаемое значение:
|
|
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex
|
|
Функция ПолучитьИнформациюОДиске(Знач Токен) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk", , Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Создать папку.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь к созаваемой папке
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
URL = "https://cloud-api.yandex.net/v1/disk/resources";
|
|
Href = "href";
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("path", Путь);
|
|
|
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
|
|
|
URLОтвета = Ответ[Href];
|
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить объект.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь к папке или файлу, о котором необходимо получить информацию
|
|
//
|
|
// Возвращаемое значение:
|
|
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex
|
|
Функция ПолучитьОбъект(Знач Токен, Знач Путь) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("path", Путь);
|
|
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Удалить объект.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь к удаляемой папке или файлу
|
|
// ВКорзину - Булево - В корзину
|
|
//
|
|
// Возвращаемое значение:
|
|
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex
|
|
Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач ВКорзину = Истина) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("path" , Путь);
|
|
Параметры.Вставить("permanently", Не ВКорзину);
|
|
|
|
Ответ = OPI_Инструменты.Delete("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Создать копию объекта.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Оригинал - Строка - Путь к оригинальному файлу или каталогу
|
|
// Путь - Строка - Путь-назначение для копии
|
|
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция СоздатьКопиюОбъекта(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/copy";
|
|
Href = "href";
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("from" , Оригинал);
|
|
Параметры.Вставить("path" , Путь);
|
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
|
|
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
|
|
|
URLОтвета = Ответ[Href];
|
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить ссылку для скачивания.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь к файлу для скачивания
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция ПолучитьСсылкуДляСкачивания(Знач Токен, Знач Путь) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("path", Путь);
|
|
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/download", Параметры, Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить список файлов.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Количество - Число,Строка - Количество возвращаемых объектов
|
|
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка
|
|
// ОтборПоТипу - Строка - Отбор по типу файла
|
|
// Список доступных вариантов: audio, backup, book, compressed, data, development,
|
|
// diskimage, document, encoded, executable, flash, font,
|
|
// image, settings, spreadsheet, text, unknown, video, web
|
|
// СортироватьПоДате - Булево - Истина - сортировать по дате, Ложь - по алфавиту
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
//@skip-check method-too-many-params
|
|
// BSLLS:NumberOfOptionalParams-off
|
|
Функция ПолучитьСписокФайлов(Знач Токен
|
|
, Знач Количество = 0
|
|
, Знач СмещениеОтНачала = 0
|
|
, Знач ОтборПоТипу = ""
|
|
, Знач СортироватьПоДате = Ложь) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
Если ЗначениеЗаполнено(Количество) Тогда
|
|
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
|
КонецЕсли;
|
|
|
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
|
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
|
КонецЕсли;
|
|
|
|
Если ЗначениеЗаполнено(ОтборПоТипу) Тогда
|
|
Параметры.Вставить("media_type", ОтборПоТипу);
|
|
КонецЕсли;
|
|
|
|
Если СортироватьПоДате Тогда
|
|
Назначение = "last-uploaded";
|
|
Иначе
|
|
Назначение = "files";
|
|
КонецЕсли;
|
|
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/" + Назначение, Параметры, Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
// BSLLS:NumberOfOptionalParams-on
|
|
|
|
// Переместить объект.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Оригинал - Строка - Путь к оригинальному файлу или папке
|
|
// Путь - Строка - Путь-назначение для перемещения
|
|
// Перезаписывать - Булево - Перезаписывать если файл с таким именем уже существует
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция ПереместитьОбъект(Знач Токен, Знач Оригинал, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/move";
|
|
Href = "href";
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("from" , Оригинал);
|
|
Параметры.Вставить("path" , Путь);
|
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
|
|
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
|
|
|
URLОтвета = Ответ[Href];
|
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить ссылку загрузки файла.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь для сохранение файла на Диске
|
|
// Файл - Строка,ДвоичныеДанные - Файл для загрузки
|
|
// Перезаписывать - Булево - Перезаписывать, если файл с таким именем уже существует
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция ЗагрузитьФайл(Знач Токен, Знач Путь, Знач Файл, Знач Перезаписывать = Ложь) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
Href = "href";
|
|
|
|
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
|
Файл = Новый ДвоичныеДанные(Файл);
|
|
КонецЕсли;
|
|
|
|
Файл = Новый Структура("file", Файл);
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("path" , Путь);
|
|
Параметры.Вставить("overwrite" , Перезаписывать);
|
|
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/upload", Параметры, Заголовки);
|
|
URL = Ответ[Href];
|
|
Ответ = OPI_Инструменты.PutMultipart(URL, Новый Структура(), Файл, "multipart", Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Загрузить файл по URL.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь помещения загруженного файла
|
|
// Адрес - Строка - URL файла
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - Ответ сервера Yandex
|
|
Функция ЗагрузитьФайлПоURL(Знач Токен, Знач Путь, Знач Адрес) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("url" , КодироватьСтроку(Адрес, СпособКодированияСтроки.URLВКодировкеURL));
|
|
Параметры.Вставить("path" , Путь);
|
|
|
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
|
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#Область УправлениеПубличнымДоступом
|
|
|
|
// Опубликовать объект.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь к публикуемому объекту
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция ОпубликоватьОбъект(Знач Токен, Знач Путь) Экспорт
|
|
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Истина);
|
|
КонецФункции
|
|
|
|
// Отменить публикацию объекта.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Путь - Строка - Путь к опубликованному ранее объекту
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция ОтменитьПубликациюОбъекта(Знач Токен, Знач Путь) Экспорт
|
|
Возврат ПереключениеОбщегоДоступа(Токен, Путь, Ложь);
|
|
КонецФункции
|
|
|
|
// Получить список опубликованных объектов.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// Количество - Число - Количество возвращаемых объектов
|
|
// СмещениеОтНачала - Число - Смещение для получение объектов не из начала списка
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
|
|
Функция ПолучитьСписокОпубликованныхОбъектов(Знач Токен, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
Если ЗначениеЗаполнено(Количество) Тогда
|
|
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
|
КонецЕсли;
|
|
|
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
|
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
|
КонецЕсли;
|
|
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources/public", Параметры, Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить публичный объект.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// URL - Строка - Адрес объекта
|
|
// Количество - Число - Количество возвращаемых вложенных объектов (для каталога)
|
|
// СмещениеОтНачала - Число - Смещение для получение вложенных объектов не из начала списка
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено - Ответ сервера Yandex
|
|
Функция ПолучитьПубличныйОбъект(Знач Токен, Знач URL, Знач Количество = 0, Знач СмещениеОтНачала = 0) Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
Если ЗначениеЗаполнено(Количество) Тогда
|
|
Параметры.Вставить("limit", OPI_Инструменты.ЧислоВСтроку(Количество));
|
|
КонецЕсли;
|
|
|
|
Если ЗначениеЗаполнено(СмещениеОтНачала) Тогда
|
|
Параметры.Вставить("offset", OPI_Инструменты.ЧислоВСтроку(СмещениеОтНачала));
|
|
КонецЕсли;
|
|
|
|
Параметры.Вставить("public_key", URL);
|
|
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources", Параметры, Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Получить ссылку скачивания публичного объекта.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// URL - Строка - Адрес объекта
|
|
// Путь - Строка - Путь
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено - Ответ сервера Yandex
|
|
Функция ПолучитьСсылкуСкачиванияПубличногоОбъекта(Знач Токен, Знач URL, Знач Путь = "") Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
Если ЗначениеЗаполнено(Путь) Тогда
|
|
Параметры.Вставить("path", Путь);
|
|
КонецЕсли;
|
|
|
|
Параметры.Вставить("public_key", URL);
|
|
|
|
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/public/resources/download", Параметры, Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
// Сохранить публичный объект на диск.
|
|
//
|
|
// Параметры:
|
|
// Токен - Строка - Токен
|
|
// URL - Строка - Адрес объекта
|
|
// Откуда - Строка - Путь внутри публичного каталога (только для папок)
|
|
// Куда - Строка - Путь сохранения файла
|
|
//
|
|
// Возвращаемое значение:
|
|
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - Ответ сервера Yandex
|
|
Функция СохранитьПубличныйОбъектНаДиск(Знач Токен, Знач URL, Откуда = "", Куда = "") Экспорт
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
Адрес = "https://cloud-api.yandex.net/v1/disk/public/resources/save-to-disk";
|
|
Href = "href";
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("public_key", URL);
|
|
|
|
Если ЗначениеЗаполнено(Откуда) Тогда
|
|
Параметры.Вставить("path", Откуда);
|
|
КонецЕсли;
|
|
|
|
Если ЗначениеЗаполнено(Куда) Тогда
|
|
Параметры.Вставить("save_path", Куда);
|
|
КонецЕсли;
|
|
|
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
|
Ответ = OPI_Инструменты.Post(Адрес + Параметры, , Заголовки, Ложь);
|
|
|
|
URLОтвета = Ответ[Href];
|
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
#КонецОбласти
|
|
|
|
#Область СлужебныеПроцедурыИФункции
|
|
|
|
Функция ЗаголовокАвторизации(Знач Токен)
|
|
|
|
Заголовки = Новый Соответствие;
|
|
Заголовки.Вставить("Authorization", "OAuth " + Токен);
|
|
|
|
Возврат Заголовки;
|
|
|
|
КонецФункции
|
|
|
|
Функция ПереключениеОбщегоДоступа(Знач Токен, Знач Путь, Знач ОбщийДоступ)
|
|
|
|
Заголовки = ЗаголовокАвторизации(Токен);
|
|
Назначение = ?(ОбщийДоступ, "publish", "unpublish");
|
|
Href = "href";
|
|
|
|
URL = "https://cloud-api.yandex.net/v1/disk/resources/" + Назначение;
|
|
|
|
Параметры = Новый Структура;
|
|
Параметры.Вставить("path", Путь);
|
|
|
|
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
|
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
|
|
|
|
URLОтвета = Ответ[Href];
|
|
|
|
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|