You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-06-20 09:19:27 +02:00
Возможность сохранения рез-та запроса сразу в файл
This commit is contained in:
@@ -174,12 +174,13 @@
|
||||
// Получает файл по ID
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// Идентификатор - Строка - Идентификатор файла - object
|
||||
// Токен - Строка - Токен - token
|
||||
// Идентификатор - Строка - Идентификатор файла - object
|
||||
// ПутьСохранения - Строка - Путь сохранения файла - out
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Google
|
||||
Функция СкачатьФайл(Знач Токен, Знач Идентификатор) Экспорт
|
||||
// ДвоичныеДанные,Строка - двоичные данные или путь к файлу при указании параметра ПутьСохранения
|
||||
Функция СкачатьФайл(Знач Токен, Знач Идентификатор, Знач ПутьСохранения = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Идентификатор);
|
||||
@@ -190,7 +191,7 @@
|
||||
Параметры = Новый Соответствие;
|
||||
Параметры.Вставить("alt", "media");
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры , Заголовки);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры , Заголовки, ПутьСохранения);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
|
||||
@@ -37,11 +37,11 @@
|
||||
|
||||
#Область ЗапросыБезТела
|
||||
|
||||
Функция Get(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "") Экспорт
|
||||
Функция Get(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач ФайлОтвета = "") Экспорт
|
||||
Возврат ВыполнитьЗапросБезТела(URL, "GET", Параметры, ДопЗаголовки);
|
||||
КонецФункции
|
||||
|
||||
Функция Delete(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "") Экспорт
|
||||
Функция Delete(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач ФайлОтвета = "") Экспорт
|
||||
Возврат ВыполнитьЗапросБезТела(URL, "DELETE", Параметры, ДопЗаголовки);
|
||||
КонецФункции
|
||||
|
||||
@@ -49,16 +49,37 @@
|
||||
|
||||
#Область ЗапросыСТелом
|
||||
|
||||
Функция Post(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина, Знач ПолныйОтвет = Ложь) Экспорт
|
||||
Функция Post(Знач URL
|
||||
, Знач Параметры = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач JSON = Истина
|
||||
, Знач ПолныйОтвет = Ложь
|
||||
, Знач ФайлОтвета = "") Экспорт
|
||||
|
||||
Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON, ПолныйОтвет);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Patch(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина, Знач ПолныйОтвет = Ложь) Экспорт
|
||||
Функция Patch(Знач URL
|
||||
, Знач Параметры = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач JSON = Истина
|
||||
, Знач ПолныйОтвет = Ложь
|
||||
, Знач ФайлОтвета = "") Экспорт
|
||||
|
||||
Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON, ПолныйОтвет);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Put(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина, Знач ПолныйОтвет = Ложь) Экспорт
|
||||
Функция Put(Знач URL
|
||||
, Знач Параметры = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач JSON = Истина
|
||||
, Знач ПолныйОтвет = Ложь
|
||||
, Знач ФайлОтвета = "") Экспорт
|
||||
|
||||
Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON, ПолныйОтвет);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -69,7 +90,8 @@
|
||||
, Знач Параметры
|
||||
, Знач Файлы = ""
|
||||
, Знач ТипКонтента = "image/jpeg"
|
||||
, Знач ДопЗаголовки = "") Экспорт
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач ФайлОтвета = "") Экспорт
|
||||
|
||||
Возврат ВыполнитьЗапросМультипарт(URL, "POST", Параметры, Файлы, ТипКонтента, ДопЗаголовки);
|
||||
|
||||
@@ -79,18 +101,31 @@
|
||||
, Знач Параметры
|
||||
, Знач Файлы = ""
|
||||
, Знач ТипКонтента = "image/jpeg"
|
||||
, Знач ДопЗаголовки = "") Экспорт
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач ФайлОтвета = "") Экспорт
|
||||
|
||||
Возврат ВыполнитьЗапросМультипарт(URL, "PUT", Параметры, Файлы, ТипКонтента, ДопЗаголовки);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция PostMultipartRelated(Знач URL, Знач JSON = "", Знач Файлы = "", Знач ДопЗаголовки = "") Экспорт
|
||||
Функция PostMultipartRelated(Знач URL
|
||||
, Знач JSON = ""
|
||||
, Знач Файлы = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач ФайлОтвета = "") Экспорт
|
||||
|
||||
Возврат ВыполнитьЗапросМультипартРелэйтед(URL, "POST", JSON, Файлы, ДопЗаголовки);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция PatchMultipartRelated(Знач URL, Знач JSON = "", Знач Файлы = "", Знач ДопЗаголовки = "") Экспорт
|
||||
Функция PatchMultipartRelated(Знач URL
|
||||
, Знач JSON = ""
|
||||
, Знач Файлы = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач ФайлОтвета = "") Экспорт
|
||||
|
||||
Возврат ВыполнитьЗапросМультипартРелэйтед(URL, "PATCH", JSON, Файлы, ДопЗаголовки);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -103,6 +138,13 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ФайлТела = Ответ.ПолучитьИмяФайлаТела();
|
||||
|
||||
Если Не ФайлТела = Неопределено Тогда
|
||||
Ответ = ФайлТела;
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
GZip = "gzip";
|
||||
НужнаРаспаковка =
|
||||
Ответ.Заголовки.Получить("Content-Encoding") = GZip
|
||||
@@ -334,7 +376,13 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ВыполнитьЗапросСТелом(Знач URL, Знач Вид, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина, Знач ПолныйОтвет = Ложь)
|
||||
Функция ВыполнитьЗапросСТелом(Знач URL
|
||||
, Знач Вид
|
||||
, Знач Параметры = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач JSON = Истина
|
||||
, Знач ПолныйОтвет = Ложь
|
||||
, Знач ФайлОтвета = "")
|
||||
|
||||
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
||||
Параметры = Новый Структура;
|
||||
@@ -350,10 +398,16 @@
|
||||
|
||||
УстановитьТелоЗапроса(Запрос, Параметры, JSON);
|
||||
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос, ФайлОтвета);
|
||||
|
||||
Если ЭтоПереадресация(Ответ) Тогда
|
||||
Ответ = ВыполнитьЗапросСТелом(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки, JSON);
|
||||
Ответ = ВыполнитьЗапросСТелом(Ответ.Заголовки["Location"]
|
||||
, Вид
|
||||
, Параметры
|
||||
, ДопЗаголовки
|
||||
, JSON
|
||||
, ПолныйОтвет
|
||||
, ФайлОтвета);
|
||||
Иначе
|
||||
ОбработатьОтвет(Ответ, ПолныйОтвет);
|
||||
КонецЕсли;
|
||||
@@ -362,7 +416,11 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьЗапросБезТела(Знач URL, Знач Вид, Знач Параметры = "", Знач ДопЗаголовки = "")
|
||||
Функция ВыполнитьЗапросБезТела(Знач URL
|
||||
, Знач Вид
|
||||
, Знач Параметры = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач ФайлОтвета = "")
|
||||
|
||||
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
||||
Параметры = Новый Структура;
|
||||
@@ -374,10 +432,10 @@
|
||||
|
||||
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос, ФайлОтвета);
|
||||
|
||||
Если ЭтоПереадресация(Ответ) Тогда
|
||||
Ответ = ВыполнитьЗапросБезТела(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки);
|
||||
Ответ = ВыполнитьЗапросБезТела(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки, ФайлОтвета);
|
||||
Иначе
|
||||
ОбработатьОтвет(Ответ);
|
||||
КонецЕсли;
|
||||
@@ -391,7 +449,8 @@
|
||||
, Знач Параметры
|
||||
, Знач Файлы = ""
|
||||
, Знач ТипКонтента = "image/jpeg"
|
||||
, Знач ДопЗаголовки = "")
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач ФайлОтвета = "")
|
||||
|
||||
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
||||
Параметры = Новый Структура;
|
||||
@@ -414,7 +473,13 @@
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
|
||||
ТелоЗапроса = ПолучитьИмяВременногоФайла();
|
||||
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", Ложь, "", Ложь);
|
||||
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса
|
||||
, КодировкаТекста.UTF8
|
||||
, ПорядокБайтов.LittleEndian
|
||||
, ""
|
||||
, Ложь
|
||||
, ""
|
||||
, Ложь);
|
||||
|
||||
ЗаписатьПараметрыМультипарт(ЗаписьТекста, Boundary, Параметры);
|
||||
ЗаписатьФайлыМультипарт(ЗаписьТекста, Boundary, ТипКонтента, Файлы);
|
||||
@@ -424,7 +489,7 @@
|
||||
|
||||
Запрос.УстановитьИмяФайлаТела(ТелоЗапроса);
|
||||
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос, ФайлОтвета);
|
||||
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||
|
||||
Если ЭтоПереадресация Тогда
|
||||
@@ -433,7 +498,8 @@
|
||||
, Параметры
|
||||
, Файлы
|
||||
, ТипКонтента
|
||||
, ДопЗаголовки);
|
||||
, ДопЗаголовки
|
||||
, ФайлОтвета);
|
||||
Иначе
|
||||
ОбработатьОтвет(Ответ);
|
||||
КонецЕсли;
|
||||
@@ -446,7 +512,12 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьЗапросМультипартРелэйтед(URL, Вид, JSON = "", Файлы = "", ДопЗаголовки = "")
|
||||
Функция ВыполнитьЗапросМультипартРелэйтед(Знач URL
|
||||
, Знач Вид
|
||||
, Знач JSON = ""
|
||||
, Знач Файлы = ""
|
||||
, Знач ДопЗаголовки = ""
|
||||
, Знач ФайлОтвета = "")
|
||||
|
||||
Переадресация = 300;
|
||||
Ошибка = 400;
|
||||
@@ -461,7 +532,13 @@
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
|
||||
ТелоЗапроса = ПолучитьИмяВременногоФайла();
|
||||
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", Ложь, "", Ложь);
|
||||
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса
|
||||
, КодировкаТекста.UTF8
|
||||
, ПорядокБайтов.LittleEndian
|
||||
, ""
|
||||
, Ложь
|
||||
, ""
|
||||
, Ложь);
|
||||
|
||||
ЗаписатьJSONМультипарт(ЗаписьТекста, Boundary, JSON);
|
||||
ЗаписатьФайлыРелэйтед(ЗаписьТекста, Boundary, Файлы);
|
||||
@@ -473,11 +550,16 @@
|
||||
|
||||
Запрос.УстановитьИмяФайлаТела(ТелоЗапроса);
|
||||
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос, ФайлОтвета);
|
||||
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||
|
||||
Если ЭтоПереадресация Тогда
|
||||
Ответ = ВыполнитьЗапросМультипартРелэйтед(Ответ.Заголовки["Location"], "POST", JSON, Файлы, ДопЗаголовки);
|
||||
Ответ = ВыполнитьЗапросМультипартРелэйтед(Ответ.Заголовки["Location"]
|
||||
, Вид
|
||||
, JSON
|
||||
, Файлы
|
||||
, ДопЗаголовки
|
||||
, ФайлОтвета);
|
||||
Иначе
|
||||
ОбработатьОтвет(Ответ);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -283,13 +283,22 @@
|
||||
|
||||
СтандартнаяЕдиница = 1024;
|
||||
ЕдиницаДанных = СтандартнаяЕдиница * СтандартнаяЕдиница;
|
||||
Значение = ?(ТипЗнч(Значение) = Тип("ДвоичныеДанные"), Значение, Строка(Значение));
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
|
||||
Значение.Записать(Путь);
|
||||
Иначе
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент();
|
||||
ТекстовыйДокумент.УстановитьТекст(Значение);
|
||||
ТекстовыйДокумент.Записать(Путь);
|
||||
|
||||
ВозможныйФайл = Новый Файл(Значение);
|
||||
|
||||
Если ВозможныйФайл.Существует() Тогда
|
||||
Путь = Значение;
|
||||
Иначе
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент();
|
||||
ТекстовыйДокумент.УстановитьТекст(Значение);
|
||||
ТекстовыйДокумент.Записать(Путь);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписанныйФайл = Новый Файл(Путь);
|
||||
|
||||
Reference in New Issue
Block a user