2024-05-19 12:20:10 +02:00
|
|
|
// Расположение OS: ./OInt/core/Modules/OPI_Dropbox.os
|
|
|
|
// Библиотека: Dropbox
|
|
|
|
// Команда CLI: dropbox
|
|
|
|
|
|
|
|
// 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:IncorrectLineBreak-off
|
|
|
|
|
|
|
|
// Раскомментировать, если выполняется OneScript
|
|
|
|
#Использовать "../../tools"
|
|
|
|
|
|
|
|
#Область ПрограммныйИнтерфейс
|
|
|
|
|
|
|
|
#Область Авторизация
|
|
|
|
|
|
|
|
// Получить ссылку авторизации
|
|
|
|
// Генерирует ссылку авторизации для перехода в браузере
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// КлючПриложения - Строка - Ключ приложения - appkey
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Строка - URL для перехода в браузере
|
|
|
|
Функция ПолучитьСсылкуАвторизации(Знач КлючПриложения) Экспорт
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючПриложения);
|
|
|
|
Возврат "https://www.dropbox.com/oauth2/authorize?client_id="
|
|
|
|
+ КлючПриложения
|
|
|
|
+ "&response_type=code&token_access_type=offline";
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
// Получить токен
|
|
|
|
// Полеучает токен на основе кода со страницы ПолучитьСсылкуАвторизации
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// КлючПриложения - Строка - Ключ приложения - appkey
|
|
|
|
// СекретПриложения - Строка - Секрет приложения - appsecret
|
|
|
|
// Код - Строка - Код со страницы авторизации - code
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ПолучитьТокен(Знач КлючПриложения, Знач СекретПриложения, Знач Код) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropbox.com/oauth2/token";
|
|
|
|
ТипДанных = "application/x-www-form-urlencoded; charset=utf-8";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("code" , Код , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("grant_type", "authorization_code", "Строка", Параметры);
|
|
|
|
|
|
|
|
СтруктураURL = OPI_Инструменты.РазбитьURL(URL);
|
|
|
|
Сервер = СтруктураURL["Сервер"];
|
|
|
|
Адрес = СтруктураURL["Адрес"];
|
|
|
|
|
|
|
|
Запрос = OPI_Инструменты.СоздатьЗапрос(Адрес, , ТипДанных);
|
|
|
|
Соединение = OPI_Инструменты.СоздатьСоединение(Сервер, КлючПриложения, СекретПриложения);
|
|
|
|
|
|
|
|
СтрокаПараметров = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
|
|
|
|
Данные = Прав(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
|
|
|
|
|
|
|
Запрос.УстановитьТелоИзСтроки(Данные);
|
|
|
|
|
|
|
|
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
|
|
|
|
OPI_Инструменты.ОбработатьОтвет(Ответ);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
// Обновить токен
|
|
|
|
// Получает новый токен на основе рефреш токена
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// КлючПриложения - Строка - Ключ приложения - appkey
|
|
|
|
// СекретПриложения - Строка - Секрет приложения - appsecret
|
|
|
|
// РефрешТокен - Строка - Рефреш токен - refresh
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ОбновитьТокен(Знач КлючПриложения, Знач СекретПриложения, Знач РефрешТокен) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropbox.com/oauth2/token";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("refresh_token", РефрешТокен , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("grant_type" , "refresh_token" , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("client_id" , КлючПриложения , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("client_secret", СекретПриложения, "Строка", Параметры);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, , Ложь);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
#КонецОбласти
|
|
|
|
|
2024-05-24 22:25:42 +02:00
|
|
|
#Область РаботаСФайламиИКаталогами
|
2024-05-19 12:20:10 +02:00
|
|
|
|
2024-05-25 11:19:55 +02:00
|
|
|
// Получить информацию об объекте
|
|
|
|
// Получает информацию о файле или каталоге
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь к объекту - path
|
|
|
|
// Подробно - Булево - Добавляет дополнительные поля информации для медиафайлов - detail
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Путь, Знач Подробно = Ложь) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/get_metadata";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path" , Путь , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("include_media_info", Подробно, "Булево", Параметры);
|
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
// Получить список файлов папки
|
|
|
|
// Получает список первых файлов каталога или продолжает получение следующих при указании курсора
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь к каталогу. Необязателен, если указан курсор - path
|
|
|
|
// Подробно - Булево - Добавляет дополнительные поля информации для медиафайлов - detail
|
|
|
|
// Курсор - Строка - Курсор из предыдущего запроса для получения следующего набора файлов - cursor
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// HTTPОтвет - Получить список файлов папки
|
|
|
|
Функция ПолучитьСписокФайловПапки(Знач Токен, Знач Путь = "", Знач Подробно = Ложь, Знач Курсор = "") Экспорт
|
|
|
|
|
|
|
|
Если Не ЗначениеЗаполнено(Курсор) Тогда
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/list_folder";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path" , Путь , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("include_media_info", Подробно , "Булево", Параметры);
|
|
|
|
|
|
|
|
Иначе
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/list_folder/continue";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("cursor", Курсор, "Строка", Параметры);
|
|
|
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
// Получить превью
|
|
|
|
// Получает PDF или HTML превью объекта (только для токументов)
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь к объекту - path
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ПолучитьПревью(Знач Токен, Знач Путь) Экспорт
|
|
|
|
|
|
|
|
URL = "https://content.dropboxapi.com/2/files/get_preview";
|
|
|
|
Ответ = ОбработатьОбъект(Токен, URL, Путь, Истина);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-05-19 12:20:10 +02:00
|
|
|
// Загрузить файл
|
|
|
|
// Загружает файл на облачный диск
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Файл - Строка, ДвоичныеДанные - Данные файл для загрузки - file
|
|
|
|
// Путь - Строка - Путь сохранения на Dropbox - path
|
|
|
|
// Перезаписывать - Булево - Перезаписывать файл при конфликте путей - overwrite
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Путь, Знач Перезаписывать = Ложь) Экспорт
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Перезаписывать);
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
|
|
|
|
|
|
|
Режим = ?(Перезаписывать, "overwrite", "add");
|
|
|
|
Размер = Файл.Размер();
|
|
|
|
Граница = 100000000;
|
|
|
|
|
|
|
|
Если Размер > Граница Тогда
|
|
|
|
Ответ = ЗагрузитьБольшойФайл(Токен, Файл, Путь, Режим);
|
|
|
|
Иначе
|
|
|
|
Ответ = ЗагрузитьМалыйФайл(Токен, Файл, Путь, Режим);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-05-25 13:27:51 +02:00
|
|
|
// Загрузить файл по URL
|
|
|
|
// Загружает файл на облачный диск, получая его по указанному URL
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// URL - Строка - URL источник файла - file
|
|
|
|
// Путь - Строка - Путь сохранения на Dropbox - path
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ЗагрузитьФайлПоURL(Знач Токен, Знач URL, Знач Путь) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/save_url";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", Параметры);
|
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-05-24 22:25:42 +02:00
|
|
|
// Удалить объект
|
|
|
|
// Удаляет объект с облачного диска
|
|
|
|
//
|
|
|
|
// Параметры:
|
2024-05-25 11:19:55 +02:00
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь к объекту удаления - path
|
|
|
|
// БезВозвратно - Строка - Удалить объект без возможности востановления - permanently
|
2024-05-24 22:25:42 +02:00
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
2024-05-25 11:19:55 +02:00
|
|
|
Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач Безвозвратно = Ложь) Экспорт
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьБулево(Безвозвратно);
|
|
|
|
|
|
|
|
Если Безвозвратно Тогда
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/permanently_delete";
|
|
|
|
Иначе
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/delete_v2";
|
|
|
|
КонецЕсли;
|
2024-05-24 22:25:42 +02:00
|
|
|
|
|
|
|
Ответ = ОбработатьОбъект(Токен, URL, Путь);
|
2024-05-19 12:20:10 +02:00
|
|
|
|
2024-05-24 22:25:42 +02:00
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
// Копировать объект
|
|
|
|
// Копирует файл или каталог по выбранному пути
|
|
|
|
//
|
|
|
|
// Параметры:
|
2024-05-25 11:19:55 +02:00
|
|
|
// Токен - Строка - Токен - token
|
2024-05-24 22:25:42 +02:00
|
|
|
// Откуда - Строка - Путь к объекту оригинала - form
|
|
|
|
// Куда - Строка - Целевой путь для нового объекта - to
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция КопироватьОбъект(Знач Токен, Знач Откуда, Знач Куда) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/copy_v2";
|
2024-05-19 12:20:10 +02:00
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
2024-05-24 22:25:42 +02:00
|
|
|
OPI_Инструменты.ДобавитьПоле("from_path", Откуда, "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("to_path" , Куда , "Строка", Параметры);
|
2024-05-19 12:20:10 +02:00
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
2024-05-24 22:25:42 +02:00
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-05-25 11:19:55 +02:00
|
|
|
// Переместить объект
|
|
|
|
// Перемещает объект по выбранному пути
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Откуда - Строка - Путь к объекту оригинала - form
|
|
|
|
// Куда - Строка - Целевой путь для нового объекта - to
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ПереместитьОбъект(Знач Токен, Знач Откуда, Знач Куда) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/move_v2";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("from_path", Откуда, "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("to_path" , Куда , "Строка", Параметры);
|
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-05-24 22:25:42 +02:00
|
|
|
// Создать папку
|
|
|
|
// Создает пустой каталог по выбранному пути
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Целевой путь создания каталога - path
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/create_folder_v2";
|
|
|
|
Ответ = ОбработатьОбъект(Токен, URL, Путь);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
// Скачать файл
|
|
|
|
// Скачивает файл по указанному пути или ID
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь или ID файла - path
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция СкачатьФайл(Знач Токен, Знач Путь) Экспорт
|
|
|
|
|
2024-05-25 11:19:55 +02:00
|
|
|
URL = "https://content.dropboxapi.com/2/files/download";
|
2024-05-24 22:25:42 +02:00
|
|
|
Ответ = ОбработатьОбъект(Токен, URL, Путь, Истина);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
2024-05-19 12:20:10 +02:00
|
|
|
|
2024-05-24 22:25:42 +02:00
|
|
|
// Скачать папку
|
|
|
|
// Скачивает zip архив с содержимым указанного каталога
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь или ID каталога - path
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция СкачатьПапку(Знач Токен, Знач Путь) Экспорт
|
|
|
|
|
2024-05-25 11:19:55 +02:00
|
|
|
URL = "https://content.dropboxapi.com/2/files/download_zip";
|
2024-05-24 22:25:42 +02:00
|
|
|
Ответ = ОбработатьОбъект(Токен, URL, Путь, Истина);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
2024-05-19 12:20:10 +02:00
|
|
|
КонецФункции
|
|
|
|
|
2024-05-25 11:19:55 +02:00
|
|
|
// Получить список версий объекта
|
|
|
|
// Получает список версий (ревизий) объекта
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь к объекту - path
|
|
|
|
// Количество - Строка, Число - Число последних версий объекта для отображения - amount
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ПолучитьСписокВерсийОбъекта(Знач Токен, Знач Путь, Знач Количество = 10) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/list_revisions";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path" , Путь , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("limit", Количество, "Число" , Параметры);
|
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
// Востановить объект к версии
|
|
|
|
// Востанавливает состояние объекта к необходимой версии (ревизии)
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен - token
|
|
|
|
// Путь - Строка - Путь к объекту - path
|
|
|
|
// Версия - Строка - ID версии (ревизии) для востановления - rev
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
|
|
|
Функция ВостановитьОбъектКВерсии(Знач Токен, Знач Путь, Знач Версия) Экспорт
|
|
|
|
|
|
|
|
URL = "https://api.dropboxapi.com/2/files/restore";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path", Путь , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("rev" , Версия, "Строка", Параметры);
|
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-05-19 12:20:10 +02:00
|
|
|
#КонецОбласти
|
|
|
|
|
|
|
|
#КонецОбласти
|
|
|
|
|
|
|
|
#Область СлужебныеПроцедурыИФункции
|
|
|
|
|
2024-05-24 22:25:42 +02:00
|
|
|
Функция ОбработатьОбъект(Знач Токен, Знач URL, Знач Путь, Знач ВЗаголовках = Ложь)
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Параметры);
|
|
|
|
|
|
|
|
Если ВЗаголовках Тогда
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
|
2024-05-25 11:19:55 +02:00
|
|
|
Ответ = OPI_Инструменты.PostBinary(URL, ПолучитьДвоичныеДанныеИзСтроки(""), Заголовки);
|
2024-05-24 22:25:42 +02:00
|
|
|
Иначе
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-05-19 12:20:10 +02:00
|
|
|
Функция ПолучитьЗаголовкиЗапроса(Знач Токен, Знач Параметры = "")
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
|
|
|
|
|
|
|
Заголовки = Новый Соответствие;
|
|
|
|
Заголовки.Вставить("Authorization" , "Bearer " + Токен);
|
|
|
|
|
|
|
|
Если ЗначениеЗаполнено(Параметры) Тогда
|
|
|
|
|
|
|
|
JSON = OPI_Инструменты.JSONСтрокой(Параметры, "Нет");
|
|
|
|
JSON = СтрЗаменить(JSON, Символы.ВК + Символы.ПС, "");
|
|
|
|
|
|
|
|
Заголовки.Вставить("Dropbox-API-Arg", JSON);
|
|
|
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Возврат Заголовки;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
Функция ЗагрузитьБольшойФайл(Знач Токен, Знач Файл, Знач Путь, Знач Режим)
|
|
|
|
|
|
|
|
URL = "https://content.dropboxapi.com/2/files/upload_session/append_v2";
|
|
|
|
|
|
|
|
РазмерЧасти = 100000000;
|
|
|
|
ТекущаяПозиция = 0;
|
|
|
|
ПрочитаноБайт = 0;
|
|
|
|
ОбщийРазмер = Файл.Размер();
|
|
|
|
Сессия = ОткрытьСессию(Токен);
|
|
|
|
|
|
|
|
Пока ПрочитаноБайт < ОбщийРазмер Цикл
|
|
|
|
|
|
|
|
Отступ = ТекущаяПозиция;
|
|
|
|
Курсор = Новый Структура("offset,session_id", Отступ, Сессия);
|
|
|
|
|
|
|
|
Параметры = Новый Структура("cursor", Курсор);
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
|
|
|
|
|
|
|
|
ЧтениеДанных = Новый ЧтениеДанных(Файл);
|
|
|
|
ПрочитаноБайт = ЧтениеДанных.Пропустить(ТекущаяПозиция);
|
|
|
|
Результат = ЧтениеДанных.Прочитать(РазмерЧасти);
|
|
|
|
ТекущиеДанные = Результат.ПолучитьДвоичныеДанные();
|
|
|
|
РазмерТекущих = ТекущиеДанные.Размер();
|
|
|
|
СледующаяПозиция = ТекущаяПозиция + РазмерТекущих;
|
|
|
|
|
|
|
|
Если Не ЗначениеЗаполнено(ТекущиеДанные) Тогда
|
|
|
|
Прервать;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.PostBinary(URL, ТекущиеДанные, Заголовки);
|
|
|
|
|
|
|
|
ТекущаяПозиция = СледующаяПозиция;
|
|
|
|
|
|
|
|
КБайт = 1024;
|
|
|
|
МБайт = КБайт * КБайт;
|
|
|
|
Сообщить(OPI_Инструменты.ИнформацияОПрогрессе(ТекущаяПозиция, ОбщийРазмер, "МБ", МБайт));
|
|
|
|
|
|
|
|
ВыполнитьСборкуМусора();
|
|
|
|
ОсвободитьОбъект(ТекущиеДанные);
|
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
Ответ = ЗакрытьСессию(Токен, Путь, Режим, ОбщийРазмер, Сессия);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
Функция ЗагрузитьМалыйФайл(Знач Токен, Знач Файл, Знач Путь, Знач Режим)
|
|
|
|
|
|
|
|
URL = "https://content.dropboxapi.com/2/files/upload";
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
|
|
|
|
OPI_Инструменты.ДобавитьПоле("autorename" , Ложь , "Булево", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("mode" , Режим, "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("mute" , Ложь , "Булево", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path" , Путь , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("strict_conflict", Ложь , "Булево", Параметры);
|
|
|
|
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.PostBinary(URL, Файл, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
Функция ОткрытьСессию(Знач Токен)
|
|
|
|
|
|
|
|
SessionId = "session_id";
|
|
|
|
URL = "https://content.dropboxapi.com/2/files/upload_session/start";
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.PostBinary(URL, ПолучитьДвоичныеДанныеИзСтроки(""), Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ[SessionId];
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
Функция ЗакрытьСессию(Знач Токен, Знач Путь, Знач Режим, Знач ОбщийРазмер, Знач Сессия)
|
|
|
|
|
|
|
|
URL = "https://content.dropboxapi.com/2/files/upload_session/finish";
|
|
|
|
|
|
|
|
Коммит = Новый Структура();
|
|
|
|
OPI_Инструменты.ДобавитьПоле("mode", Режим, "Строка", Коммит);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("path", Путь, "Строка", Коммит);
|
|
|
|
|
|
|
|
Курсор = Новый Структура("offset,session_id", ОбщийРазмер, Сессия);
|
|
|
|
|
|
|
|
Параметры = Новый Структура("commit,cursor", Коммит, Курсор);
|
|
|
|
Заголовки = ПолучитьЗаголовкиЗапроса(Токен, Параметры);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.PostBinary(URL, ПолучитьДвоичныеДанныеИзСтроки(""), Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
#КонецОбласти
|